)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"68ce2e068f858f603fab94871a85945d0dec9424","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Delete traces of in-progress snapshot on VM being deleted"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When user tries to create snapshot of instance and at the same time"},{"line_number":10,"context_line":"if another request tries to delete the instance.At that time image"},{"line_number":11,"context_line":"goes in saving status for forever because of race condition between"},{"line_number":12,"context_line":"delete and snapshot reqeusts."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1af94dfe_3b2f2540","line":10,"updated":"2016-03-18 16:40:42.000000000","message":"s/instance.At/instance. At/","commit_id":"3ce5545519ddfb882e8448562e578bf942688a0c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"68ce2e068f858f603fab94871a85945d0dec9424","unresolved":false,"context_lines":[{"line_number":12,"context_line":"delete and snapshot reqeusts."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Caught exceptions (InstanceNotFound and UnexpectedDeletingTaskStateError)"},{"line_number":15,"context_line":"and in except block deleting the image which got stuck in saving status."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: If0b918dc951030e6b6ffba147443225e0e4a370a"},{"line_number":18,"context_line":"Closes-Bug: #1555065"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1af94dfe_1b3229a7","line":15,"updated":"2016-03-18 16:40:42.000000000","message":"s/and in except/in except/","commit_id":"3ce5545519ddfb882e8448562e578bf942688a0c"}],"nova/compute/api.py":[{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"db494be8f4ec13d8fb3a8cd2efc8e3c693aae3b2","unresolved":false,"context_lines":[{"line_number":2239,"context_line":"            instance.save(expected_task_state\u003d[None])"},{"line_number":2240,"context_line":"        except (exception.InstanceNotFound,"},{"line_number":2241,"context_line":"                exception.UnexpectedDeletingTaskStateError):"},{"line_number":2242,"context_line":"            msg \u003d \u0027Instance disappeared during snapshot\u0027"},{"line_number":2243,"context_line":"            LOG.debug(msg, instance\u003dinstance)"},{"line_number":2244,"context_line":"            try:"},{"line_number":2245,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1af94dfe_b90194b1","line":2242,"updated":"2016-03-18 11:13:16.000000000","message":"Why you use msg for message? Why not just to\n\nLOG.debug(\u0027Instance %(instance)s disappeared during snapshot\u0027, instance)","commit_id":"f8028c244679472de05a07f651aaafab50c80ca7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"68ce2e068f858f603fab94871a85945d0dec9424","unresolved":false,"context_lines":[{"line_number":2239,"context_line":"            instance.save(expected_task_state\u003d[None])"},{"line_number":2240,"context_line":"        except (exception.InstanceNotFound,"},{"line_number":2241,"context_line":"                exception.UnexpectedDeletingTaskStateError):"},{"line_number":2242,"context_line":"            msg \u003d \u0027Instance disappeared during snapshot\u0027"},{"line_number":2243,"context_line":"            LOG.debug(msg, instance\u003dinstance)"},{"line_number":2244,"context_line":"            try:"},{"line_number":2245,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1af94dfe_7b252d5a","line":2242,"updated":"2016-03-18 16:40:42.000000000","message":"Couple things...\n\n1) I would make this a LOG.info() and change the message to say \"Instance disappeared during snapshot. Deleted snapshot image record.\"\n2) I would put this *after* the call to image_api.delete","commit_id":"3ce5545519ddfb882e8448562e578bf942688a0c"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"1d3320b133c53e843c9299d0a1fdace348b21400","unresolved":false,"context_lines":[{"line_number":2249,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2250,"context_line":""},{"line_number":2251,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2252,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2253,"context_line":"        return image_meta"},{"line_number":2254,"context_line":""},{"line_number":2255,"context_line":"    def _create_image(self, context, instance, name, image_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_a8afc028","line":2252,"updated":"2016-03-30 18:27:44.000000000","message":"By calling this even in the failure case you are guaranteeing that this:https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L3195 will be hit. The image has already been deleted, and so a failure will be caused here. This means that the logs will always have an \"Error while trying to clean up image\" even when the image has been cleaned up.","commit_id":"15e8ed196fbd725b0e44117d61082daebd419fdc"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"1d3320b133c53e843c9299d0a1fdace348b21400","unresolved":false,"context_lines":[{"line_number":2250,"context_line":""},{"line_number":2251,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2252,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2253,"context_line":"        return image_meta"},{"line_number":2254,"context_line":""},{"line_number":2255,"context_line":"    def _create_image(self, context, instance, name, image_type,"},{"line_number":2256,"context_line":"                      extra_properties\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba0121b8_e8d6d8ef","line":2253,"updated":"2016-03-30 18:27:44.000000000","message":"In the error case haven\u0027t we deleted this image? We are now returning an \u0027image_meta\u0027 that doesn\u0027t have an associated image. What happens in the api when this returns?\n\nIs it possible that this line https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L1124 would fail?","commit_id":"15e8ed196fbd725b0e44117d61082daebd419fdc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce146937fba94ca0081a65349db0b1476d5415fa","unresolved":false,"context_lines":[{"line_number":2244,"context_line":"                     instance\u003dinstance)"},{"line_number":2245,"context_line":"            try:"},{"line_number":2246,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2247,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2248,"context_line":"                LOG.info(_LI(\u0027Deleted snapshot image record\u0027),"},{"line_number":2249,"context_line":"                         image\u003dimage_id)"},{"line_number":2250,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_07c06b7a","line":2247,"updated":"2016-04-13 22:36:07.000000000","message":"Well, deleting a correct image if the race is done only when saving the task state is a bit bad IMHO. Just wondering if we should rather notify the user that the snapshot could be maybe bad, so their would remove the image by their own.","commit_id":"a0f2951709598c4ae23dff81f66d3ededb83dbd5"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"edf90697f80d4f68dad780a44746a29026d68863","unresolved":false,"context_lines":[{"line_number":2244,"context_line":"                     instance\u003dinstance)"},{"line_number":2245,"context_line":"            try:"},{"line_number":2246,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2247,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2248,"context_line":"                LOG.info(_LI(\u0027Deleted snapshot image record\u0027),"},{"line_number":2249,"context_line":"                         image\u003dimage_id)"},{"line_number":2250,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_ce04c24b","line":2247,"in_reply_to":"5a18252c_07c06b7a","updated":"2016-04-14 07:15:02.000000000","message":"The similar behavior of deleting the bad images is common across nova, please refer https://bugs.launchpad.net/nova/+bug/1064386. We have two options, either deleting the image or reporting, but to make the behavior consistent we should go for deleting.","commit_id":"a0f2951709598c4ae23dff81f66d3ededb83dbd5"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce146937fba94ca0081a65349db0b1476d5415fa","unresolved":false,"context_lines":[{"line_number":2247,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2248,"context_line":"                LOG.info(_LI(\u0027Deleted snapshot image record\u0027),"},{"line_number":2249,"context_line":"                         image\u003dimage_id)"},{"line_number":2250,"context_line":"            except Exception:"},{"line_number":2251,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2252,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2253,"context_line":"            raise exc.HTTPForbidden(explanation\u003derror.format_message())"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_6724bfae","line":2250,"range":{"start_line":2250,"start_character":13,"end_line":2250,"end_character":29},"updated":"2016-04-13 22:36:07.000000000","message":"I don\u0027t like excepting any error. If we have a problem with deleting the snapshot, then we should make sure why we have a problem.","commit_id":"a0f2951709598c4ae23dff81f66d3ededb83dbd5"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"edf90697f80d4f68dad780a44746a29026d68863","unresolved":false,"context_lines":[{"line_number":2247,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2248,"context_line":"                LOG.info(_LI(\u0027Deleted snapshot image record\u0027),"},{"line_number":2249,"context_line":"                         image\u003dimage_id)"},{"line_number":2250,"context_line":"            except Exception:"},{"line_number":2251,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2252,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2253,"context_line":"            raise exc.HTTPForbidden(explanation\u003derror.format_message())"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_ee7c1eb7","line":2250,"range":{"start_line":2250,"start_character":13,"end_line":2250,"end_character":29},"in_reply_to":"5a18252c_6724bfae","updated":"2016-04-14 07:15:02.000000000","message":"If we have a handling through code, the best we can do is we communicate the user that this is what has happened and that is what I have done.","commit_id":"a0f2951709598c4ae23dff81f66d3ededb83dbd5"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce146937fba94ca0081a65349db0b1476d5415fa","unresolved":false,"context_lines":[{"line_number":2250,"context_line":"            except Exception:"},{"line_number":2251,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2252,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2253,"context_line":"            raise exc.HTTPForbidden(explanation\u003derror.format_message())"},{"line_number":2254,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2255,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2256,"context_line":"        return image_meta"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_cc0df83f","line":2253,"updated":"2016-04-13 22:36:07.000000000","message":"getting a HTTP403 for a race condition is terrible IMO.\nIf user A wants to snapshot an instance but user B deletes it, then user A would have 403 for something he doesn\u0027t know...\n\nI think a 409 would be better.","commit_id":"a0f2951709598c4ae23dff81f66d3ededb83dbd5"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"edf90697f80d4f68dad780a44746a29026d68863","unresolved":false,"context_lines":[{"line_number":2250,"context_line":"            except Exception:"},{"line_number":2251,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2252,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2253,"context_line":"            raise exc.HTTPForbidden(explanation\u003derror.format_message())"},{"line_number":2254,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2255,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2256,"context_line":"        return image_meta"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_0e57da26","line":2253,"in_reply_to":"5a18252c_cc0df83f","updated":"2016-04-14 07:15:02.000000000","message":"I too agree, 409 would be better. I would make it 409.","commit_id":"a0f2951709598c4ae23dff81f66d3ededb83dbd5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb8db1ea3376b41ea0d732073d68c11e008b15ae","unresolved":false,"context_lines":[{"line_number":2246,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2247,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2248,"context_line":"                LOG.info(_LI(\u0027Deleted snapshot image record\u0027),"},{"line_number":2249,"context_line":"                         image\u003dimage_id)"},{"line_number":2250,"context_line":"            except Exception:"},{"line_number":2251,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2252,"context_line":"                            image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_c0331912","line":2249,"range":{"start_line":2249,"start_character":25,"end_line":2249,"end_character":39},"updated":"2016-06-28 18:23:30.000000000","message":"This kwarg doesn\u0027t do anything, did you mean to put the image id in the message as a variable?","commit_id":"08397c3e1ea6cb01c9cc7ea3b03b97e3a4e62d31"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"aaf09416f678e3114028b906649193a96a5439ce","unresolved":false,"context_lines":[{"line_number":2246,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2247,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2248,"context_line":"                LOG.info(_LI(\u0027Deleted snapshot image record\u0027),"},{"line_number":2249,"context_line":"                         image\u003dimage_id)"},{"line_number":2250,"context_line":"            except Exception:"},{"line_number":2251,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2252,"context_line":"                            image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_9df7938a","line":2249,"range":{"start_line":2249,"start_character":25,"end_line":2249,"end_character":39},"in_reply_to":"3aaa91ec_c0331912","updated":"2016-08-10 10:25:16.000000000","message":"Yes :), I had missed that, thanks for pointing it out.","commit_id":"08397c3e1ea6cb01c9cc7ea3b03b97e3a4e62d31"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb8db1ea3376b41ea0d732073d68c11e008b15ae","unresolved":false,"context_lines":[{"line_number":2250,"context_line":"            except Exception:"},{"line_number":2251,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2252,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2253,"context_line":"            raise exc.HTTPConflict(explanation\u003derror.format_message())"},{"line_number":2254,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2255,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2256,"context_line":"        return image_meta"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_b328e586","line":2253,"range":{"start_line":2253,"start_character":22,"end_line":2253,"end_character":34},"updated":"2016-06-28 18:23:30.000000000","message":"Hmm, do we normally raise HTTP exceptions out of the compute API code? Seems we should raise a NovaException that is handled in the REST API and that would return the 409. We should probably raise InstanceInvalidState from this method which is handled in the REST API and returns a 409.","commit_id":"08397c3e1ea6cb01c9cc7ea3b03b97e3a4e62d31"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb8db1ea3376b41ea0d732073d68c11e008b15ae","unresolved":false,"context_lines":[{"line_number":2250,"context_line":"            except Exception:"},{"line_number":2251,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2252,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2253,"context_line":"            raise exc.HTTPConflict(explanation\u003derror.format_message())"},{"line_number":2254,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2255,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2256,"context_line":"        return image_meta"}],"source_content_type":"text/x-python","patch_set":8,"id":"3aaa91ec_00152148","line":2253,"range":{"start_line":2253,"start_character":47,"end_line":2253,"end_character":69},"updated":"2016-06-28 18:23:30.000000000","message":"I might just do six.text_type(error) here.","commit_id":"08397c3e1ea6cb01c9cc7ea3b03b97e3a4e62d31"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"aaf09416f678e3114028b906649193a96a5439ce","unresolved":false,"context_lines":[{"line_number":2250,"context_line":"            except Exception:"},{"line_number":2251,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2252,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2253,"context_line":"            raise exc.HTTPConflict(explanation\u003derror.format_message())"},{"line_number":2254,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2255,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2256,"context_line":"        return image_meta"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_1d32835f","line":2253,"range":{"start_line":2253,"start_character":47,"end_line":2253,"end_character":69},"in_reply_to":"3aaa91ec_00152148","updated":"2016-08-10 10:25:16.000000000","message":"Done","commit_id":"08397c3e1ea6cb01c9cc7ea3b03b97e3a4e62d31"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"aaf09416f678e3114028b906649193a96a5439ce","unresolved":false,"context_lines":[{"line_number":2250,"context_line":"            except Exception:"},{"line_number":2251,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2252,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2253,"context_line":"            raise exc.HTTPConflict(explanation\u003derror.format_message())"},{"line_number":2254,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2255,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2256,"context_line":"        return image_meta"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_7dcf3f29","line":2253,"range":{"start_line":2253,"start_character":22,"end_line":2253,"end_character":34},"in_reply_to":"3aaa91ec_b328e586","updated":"2016-08-10 10:25:16.000000000","message":"Matt, when I try to use InstanceInvalidState exception, the error message blurted out is \n\u0027Cannot \u0027createImage\u0027 instance df652e0f-2f4b-40e7-bdc1-fb0a87165735 while it is in vm_state active (HTTP 409)\u0027\nwhich is wrong. The VM is being deleted at this point of time. So as such I have to use a HTTP exception which tells the correct state as deleting.","commit_id":"08397c3e1ea6cb01c9cc7ea3b03b97e3a4e62d31"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"a2fd47c36a71910e45bb361d958c89848248d303","unresolved":false,"context_lines":[{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2324,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2325,"context_line":""},{"line_number":2326,"context_line":"        return image_meta"},{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"    def _create_image(self, context, instance, name, image_type,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_54405034","side":"PARENT","line":2325,"range":{"start_line":2325,"start_character":0,"end_line":2325,"end_character":0},"updated":"2016-08-29 17:54:48.000000000","message":"please don\u0027t remove empty lines","commit_id":"b01f359ffd40014be10d0d54563fae31a1b3119a"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"a6b86ba2f7f27663bde4fe493824c90f44794410","unresolved":false,"context_lines":[{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2324,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2325,"context_line":""},{"line_number":2326,"context_line":"        return image_meta"},{"line_number":2327,"context_line":""},{"line_number":2328,"context_line":"    def _create_image(self, context, instance, name, image_type,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_5243e741","side":"PARENT","line":2325,"range":{"start_line":2325,"start_character":0,"end_line":2325,"end_character":0},"in_reply_to":"fa7ab95a_54405034","updated":"2016-08-30 04:58:37.000000000","message":"Done","commit_id":"b01f359ffd40014be10d0d54563fae31a1b3119a"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"a2fd47c36a71910e45bb361d958c89848248d303","unresolved":false,"context_lines":[{"line_number":2322,"context_line":"            instance.save(expected_task_state\u003d[None])"},{"line_number":2323,"context_line":"        except (exception.InstanceNotFound,"},{"line_number":2324,"context_line":"                exception.UnexpectedDeletingTaskStateError):"},{"line_number":2325,"context_line":"            instance.task_state \u003d task_states.DELETING"},{"line_number":2326,"context_line":"            LOG.info(_LI(\u0027Instance disappeared during snapshot.\u0027),"},{"line_number":2327,"context_line":"                     instance\u003dinstance)"},{"line_number":2328,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_147fa866","line":2325,"range":{"start_line":2325,"start_character":12,"end_line":2325,"end_character":54},"updated":"2016-08-29 17:54:48.000000000","message":"could you please explain the purpose of setting task_state to DELETING, I think this line deserves a note.","commit_id":"0cf385e58f0fec780c9db010d16e300b4bc38ce8"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"a6b86ba2f7f27663bde4fe493824c90f44794410","unresolved":false,"context_lines":[{"line_number":2322,"context_line":"            instance.save(expected_task_state\u003d[None])"},{"line_number":2323,"context_line":"        except (exception.InstanceNotFound,"},{"line_number":2324,"context_line":"                exception.UnexpectedDeletingTaskStateError):"},{"line_number":2325,"context_line":"            instance.task_state \u003d task_states.DELETING"},{"line_number":2326,"context_line":"            LOG.info(_LI(\u0027Instance disappeared during snapshot.\u0027),"},{"line_number":2327,"context_line":"                     instance\u003dinstance)"},{"line_number":2328,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_1255dff8","line":2325,"range":{"start_line":2325,"start_character":12,"end_line":2325,"end_character":54},"in_reply_to":"fa7ab95a_147fa866","updated":"2016-08-30 04:58:37.000000000","message":"Done","commit_id":"0cf385e58f0fec780c9db010d16e300b4bc38ce8"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"487754688294a2d3f58f7b17d3c23eb118f27826","unresolved":false,"context_lines":[{"line_number":2322,"context_line":"            instance.save(expected_task_state\u003d[None])"},{"line_number":2323,"context_line":"        except (exception.InstanceNotFound,"},{"line_number":2324,"context_line":"                exception.UnexpectedDeletingTaskStateError):"},{"line_number":2325,"context_line":"            instance.task_state \u003d task_states.DELETING"},{"line_number":2326,"context_line":"            LOG.info(_LI(\u0027Instance disappeared during snapshot.\u0027),"},{"line_number":2327,"context_line":"                     instance\u003dinstance)"},{"line_number":2328,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_f706c61a","line":2325,"range":{"start_line":2325,"start_character":12,"end_line":2325,"end_character":54},"in_reply_to":"fa7ab95a_147fa866","updated":"2016-08-29 18:10:41.000000000","message":"Timofey\nSince the instance is being deleted and while beginning the method we had set the state as IMAGE_SNAPSHOT_PENDING, we would need the correct instance task state while raising the exception. Hence it has been done so","commit_id":"0cf385e58f0fec780c9db010d16e300b4bc38ce8"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"281f81e049236b373b9a2d1ddd321565fbc7249d","unresolved":false,"context_lines":[{"line_number":2323,"context_line":""},{"line_number":2324,"context_line":"        except (exception.InstanceNotFound,"},{"line_number":2325,"context_line":"                exception.UnexpectedDeletingTaskStateError):"},{"line_number":2326,"context_line":"            # Changing the instance task state to use in raising the"},{"line_number":2327,"context_line":"            # InstanceInvalidException below"},{"line_number":2328,"context_line":"            instance.task_state \u003d task_states.DELETING"},{"line_number":2329,"context_line":"            LOG.info(_LI(\u0027Instance disappeared during snapshot.\u0027),"},{"line_number":2330,"context_line":"                     instance\u003dinstance)"},{"line_number":2331,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_58003d66","line":2328,"range":{"start_line":2326,"start_character":0,"end_line":2328,"end_character":54},"updated":"2016-09-08 13:59:48.000000000","message":"Why not just do state\u003dtask_states.DELETING below, rather than do this.\n\nIt makes me look for the instance.save() and worry why its not here.","commit_id":"20736b6910b73f400eae7db1454f14d87822ec46"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"b313336a49e9d20904688e971e5cfa8cfc83d842","unresolved":false,"context_lines":[{"line_number":2323,"context_line":""},{"line_number":2324,"context_line":"        except (exception.InstanceNotFound,"},{"line_number":2325,"context_line":"                exception.UnexpectedDeletingTaskStateError):"},{"line_number":2326,"context_line":"            # Changing the instance task state to use in raising the"},{"line_number":2327,"context_line":"            # InstanceInvalidException below"},{"line_number":2328,"context_line":"            instance.task_state \u003d task_states.DELETING"},{"line_number":2329,"context_line":"            LOG.info(_LI(\u0027Instance disappeared during snapshot.\u0027),"},{"line_number":2330,"context_line":"                     instance\u003dinstance)"},{"line_number":2331,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_250b287f","line":2328,"range":{"start_line":2326,"start_character":0,"end_line":2328,"end_character":54},"in_reply_to":"9a89bdaa_58003d66","updated":"2016-09-09 07:06:05.000000000","message":"Done","commit_id":"20736b6910b73f400eae7db1454f14d87822ec46"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b3f452624bd34800dfe9f4cc32977b1da723d5f8","unresolved":false,"context_lines":[{"line_number":2327,"context_line":"            # InstanceInvalidException below"},{"line_number":2328,"context_line":"            instance.task_state \u003d task_states.DELETING"},{"line_number":2329,"context_line":"            LOG.info(_LI(\u0027Instance disappeared during snapshot.\u0027),"},{"line_number":2330,"context_line":"                     instance\u003dinstance)"},{"line_number":2331,"context_line":"            try:"},{"line_number":2332,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2333,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_c57625a3","line":2330,"updated":"2016-09-08 14:03:44.000000000","message":"I think this is better being debug","commit_id":"20736b6910b73f400eae7db1454f14d87822ec46"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"b313336a49e9d20904688e971e5cfa8cfc83d842","unresolved":false,"context_lines":[{"line_number":2327,"context_line":"            # InstanceInvalidException below"},{"line_number":2328,"context_line":"            instance.task_state \u003d task_states.DELETING"},{"line_number":2329,"context_line":"            LOG.info(_LI(\u0027Instance disappeared during snapshot.\u0027),"},{"line_number":2330,"context_line":"                     instance\u003dinstance)"},{"line_number":2331,"context_line":"            try:"},{"line_number":2332,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2333,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_45102ca9","line":2330,"in_reply_to":"9a89bdaa_c57625a3","updated":"2016-09-09 07:06:05.000000000","message":"Done","commit_id":"20736b6910b73f400eae7db1454f14d87822ec46"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"281f81e049236b373b9a2d1ddd321565fbc7249d","unresolved":false,"context_lines":[{"line_number":2330,"context_line":"                     instance\u003dinstance)"},{"line_number":2331,"context_line":"            try:"},{"line_number":2332,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2333,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2334,"context_line":"                LOG.info(_LI(\u0027Deleted snapshot image record %s\u0027),"},{"line_number":2335,"context_line":"                         image_id)"},{"line_number":2336,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_ef8dc831","line":2333,"updated":"2016-09-08 13:59:48.000000000","message":"This seems to be the same as delete_image_on_error, except for the error handling: https://github.com/openstack/nova/blob/master/nova/compute/manager.py#L222\n\nBut raising the different error makes sense in this case.","commit_id":"20736b6910b73f400eae7db1454f14d87822ec46"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b3f452624bd34800dfe9f4cc32977b1da723d5f8","unresolved":false,"context_lines":[{"line_number":2331,"context_line":"            try:"},{"line_number":2332,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2333,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2334,"context_line":"                LOG.info(_LI(\u0027Deleted snapshot image record %s\u0027),"},{"line_number":2335,"context_line":"                         image_id)"},{"line_number":2336,"context_line":"            except Exception:"},{"line_number":2337,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2338,"context_line":"                            image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_6570f972","line":2335,"range":{"start_line":2334,"start_character":16,"end_line":2335,"end_character":34},"updated":"2016-09-08 14:03:44.000000000","message":"Can you add instance\u003dinstance into this log message, for extra context.\n\nI think the wording here could be better to include better context on the one line, like \"Image %s deleted because instance was deleted before snapshot had started\".","commit_id":"20736b6910b73f400eae7db1454f14d87822ec46"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"b313336a49e9d20904688e971e5cfa8cfc83d842","unresolved":false,"context_lines":[{"line_number":2331,"context_line":"            try:"},{"line_number":2332,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2333,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2334,"context_line":"                LOG.info(_LI(\u0027Deleted snapshot image record %s\u0027),"},{"line_number":2335,"context_line":"                         image_id)"},{"line_number":2336,"context_line":"            except Exception:"},{"line_number":2337,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2338,"context_line":"                            image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_e5778006","line":2335,"range":{"start_line":2334,"start_character":16,"end_line":2335,"end_character":34},"in_reply_to":"9a89bdaa_6570f972","updated":"2016-09-09 07:06:05.000000000","message":"Done","commit_id":"20736b6910b73f400eae7db1454f14d87822ec46"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b3f452624bd34800dfe9f4cc32977b1da723d5f8","unresolved":false,"context_lines":[{"line_number":2334,"context_line":"                LOG.info(_LI(\u0027Deleted snapshot image record %s\u0027),"},{"line_number":2335,"context_line":"                         image_id)"},{"line_number":2336,"context_line":"            except Exception:"},{"line_number":2337,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2338,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2339,"context_line":"            raise exception.InstanceInvalidState(attr\u003d\u0027task_state\u0027,"},{"line_number":2340,"context_line":"                                           instance_uuid\u003dinstance.uuid,"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_023ac3e6","line":2337,"updated":"2016-09-08 14:03:44.000000000","message":"We should add a unit test for this case, ensuring the correct exception gets raised even when the delete fails.","commit_id":"20736b6910b73f400eae7db1454f14d87822ec46"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b3f452624bd34800dfe9f4cc32977b1da723d5f8","unresolved":false,"context_lines":[{"line_number":2338,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2339,"context_line":"            raise exception.InstanceInvalidState(attr\u003d\u0027task_state\u0027,"},{"line_number":2340,"context_line":"                                           instance_uuid\u003dinstance.uuid,"},{"line_number":2341,"context_line":"                                           state\u003dinstance.task_state,"},{"line_number":2342,"context_line":"                                           method\u003d\u0027snapshot\u0027)"},{"line_number":2343,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2344,"context_line":"                                              image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_e52b2980","line":2341,"range":{"start_line":2341,"start_character":49,"end_line":2341,"end_character":68},"updated":"2016-09-08 14:03:44.000000000","message":"see above.","commit_id":"20736b6910b73f400eae7db1454f14d87822ec46"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"b313336a49e9d20904688e971e5cfa8cfc83d842","unresolved":false,"context_lines":[{"line_number":2338,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2339,"context_line":"            raise exception.InstanceInvalidState(attr\u003d\u0027task_state\u0027,"},{"line_number":2340,"context_line":"                                           instance_uuid\u003dinstance.uuid,"},{"line_number":2341,"context_line":"                                           state\u003dinstance.task_state,"},{"line_number":2342,"context_line":"                                           method\u003d\u0027snapshot\u0027)"},{"line_number":2343,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2344,"context_line":"                                              image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_45874cd7","line":2341,"range":{"start_line":2341,"start_character":49,"end_line":2341,"end_character":68},"in_reply_to":"9a89bdaa_e52b2980","updated":"2016-09-09 07:06:05.000000000","message":"Done","commit_id":"20736b6910b73f400eae7db1454f14d87822ec46"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cc4db6f127fdb2d455f897dc83bfbd40e5f9182c","unresolved":false,"context_lines":[{"line_number":2325,"context_line":"                exception.UnexpectedDeletingTaskStateError):"},{"line_number":2326,"context_line":"            # Changing the instance task state to use in raising the"},{"line_number":2327,"context_line":"            # InstanceInvalidException below"},{"line_number":2328,"context_line":"            LOG.debug(_LI(\u0027Instance disappeared during snapshot.\u0027),"},{"line_number":2329,"context_line":"                     instance\u003dinstance)"},{"line_number":2330,"context_line":"            try:"},{"line_number":2331,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_c013210c","line":2328,"range":{"start_line":2328,"start_character":22,"end_line":2328,"end_character":25},"updated":"2016-09-09 19:07:32.000000000","message":"this is no need","commit_id":"ebc5d96b1832c893c38c71de46040d902ff6e42b"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"6af1f1be0a02dc59b4fbd0b4147aa7e9eadf0d86","unresolved":false,"context_lines":[{"line_number":2325,"context_line":"                exception.UnexpectedDeletingTaskStateError):"},{"line_number":2326,"context_line":"            # Changing the instance task state to use in raising the"},{"line_number":2327,"context_line":"            # InstanceInvalidException below"},{"line_number":2328,"context_line":"            LOG.debug(_LI(\u0027Instance disappeared during snapshot.\u0027),"},{"line_number":2329,"context_line":"                     instance\u003dinstance)"},{"line_number":2330,"context_line":"            try:"},{"line_number":2331,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_82181886","line":2328,"range":{"start_line":2328,"start_character":22,"end_line":2328,"end_character":25},"in_reply_to":"9a89bdaa_c013210c","updated":"2016-09-12 07:51:30.000000000","message":"Suppose instance is disappears while snapshot and image delete fails in line 2332, then you would have nothing to tell that, so that is why it is needed","commit_id":"ebc5d96b1832c893c38c71de46040d902ff6e42b"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"cc4db6f127fdb2d455f897dc83bfbd40e5f9182c","unresolved":false,"context_lines":[{"line_number":2338,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2339,"context_line":"            raise exception.InstanceInvalidState(attr\u003d\u0027task_state\u0027,"},{"line_number":2340,"context_line":"                                           instance_uuid\u003dinstance.uuid,"},{"line_number":2341,"context_line":"                                           state\u003dtask_states.DELETING,"},{"line_number":2342,"context_line":"                                           method\u003d\u0027snapshot\u0027)"},{"line_number":2343,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2344,"context_line":"                                              image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_201a0d18","line":2341,"range":{"start_line":2341,"start_character":61,"end_line":2341,"end_character":69},"updated":"2016-09-09 19:07:32.000000000","message":"this will make exception message:\n\nInstance in deleting state, is it right?","commit_id":"ebc5d96b1832c893c38c71de46040d902ff6e42b"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"6af1f1be0a02dc59b4fbd0b4147aa7e9eadf0d86","unresolved":false,"context_lines":[{"line_number":2338,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2339,"context_line":"            raise exception.InstanceInvalidState(attr\u003d\u0027task_state\u0027,"},{"line_number":2340,"context_line":"                                           instance_uuid\u003dinstance.uuid,"},{"line_number":2341,"context_line":"                                           state\u003dtask_states.DELETING,"},{"line_number":2342,"context_line":"                                           method\u003d\u0027snapshot\u0027)"},{"line_number":2343,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2344,"context_line":"                                              image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_a21b5c7f","line":2341,"range":{"start_line":2341,"start_character":61,"end_line":2341,"end_character":69},"in_reply_to":"9a89bdaa_201a0d18","updated":"2016-09-12 07:51:30.000000000","message":"Yes","commit_id":"ebc5d96b1832c893c38c71de46040d902ff6e42b"},{"author":{"_account_id":19156,"name":"Leehom Li","email":"feli5_li@163.com","username":"leehom"},"change_message_id":"ad0d2ef0a8ded9f5e65c0854c7eef0f71d052320","unresolved":false,"context_lines":[{"line_number":2339,"context_line":"            raise exception.InstanceInvalidState(attr\u003d\u0027task_state\u0027,"},{"line_number":2340,"context_line":"                                           instance_uuid\u003dinstance.uuid,"},{"line_number":2341,"context_line":"                                           state\u003dtask_states.DELETING,"},{"line_number":2342,"context_line":"                                           method\u003d\u0027snapshot\u0027)"},{"line_number":2343,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2344,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2345,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_12446372","line":2342,"updated":"2016-09-11 14:54:26.000000000","message":"Instance may have already deleted or still in deleting state.\nSo handle the exceptions separately would be better.","commit_id":"ebc5d96b1832c893c38c71de46040d902ff6e42b"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"6af1f1be0a02dc59b4fbd0b4147aa7e9eadf0d86","unresolved":false,"context_lines":[{"line_number":2339,"context_line":"            raise exception.InstanceInvalidState(attr\u003d\u0027task_state\u0027,"},{"line_number":2340,"context_line":"                                           instance_uuid\u003dinstance.uuid,"},{"line_number":2341,"context_line":"                                           state\u003dtask_states.DELETING,"},{"line_number":2342,"context_line":"                                           method\u003d\u0027snapshot\u0027)"},{"line_number":2343,"context_line":"        self.compute_rpcapi.snapshot_instance(context, instance,"},{"line_number":2344,"context_line":"                                              image_meta[\u0027id\u0027])"},{"line_number":2345,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a89bdaa_4dbac124","line":2342,"in_reply_to":"9a89bdaa_12446372","updated":"2016-09-12 07:51:30.000000000","message":"Done","commit_id":"ebc5d96b1832c893c38c71de46040d902ff6e42b"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"28b3fe2d2d6bb007fc297c264c6e3f4b778a83e6","unresolved":false,"context_lines":[{"line_number":2324,"context_line":"                exception.UnexpectedDeletingTaskStateError) as ex:"},{"line_number":2325,"context_line":"            # Changing the instance task state to use in raising the"},{"line_number":2326,"context_line":"            # InstanceInvalidException below"},{"line_number":2327,"context_line":"            LOG.debug(_LI(\u0027Instance disappeared during snapshot.\u0027),"},{"line_number":2328,"context_line":"                     instance\u003dinstance)"},{"line_number":2329,"context_line":"            try:"},{"line_number":2330,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a8ec9b2_c290a998","line":2327,"range":{"start_line":2327,"start_character":22,"end_line":2327,"end_character":25},"updated":"2016-09-14 07:59:33.000000000","message":"This marker function is not necessary in debug level.","commit_id":"ffd33f96d01019411deb00783e8f584dff2b520b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0ba3d605f89cab40df427a1eaa1228c4ce684fae","unresolved":false,"context_lines":[{"line_number":2335,"context_line":"            except Exception:"},{"line_number":2336,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2337,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2338,"context_line":"            if ex.__class__.__name__ \u003d\u003d \u0027InstanceNotFound\u0027:"},{"line_number":2339,"context_line":"                raise exception.InstanceInvalidState(attr\u003d\u0027vm_state\u0027,"},{"line_number":2340,"context_line":"                                               instance_uuid\u003dinstance.uuid,"},{"line_number":2341,"context_line":"                                               state\u003dvm_states.DELETED,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a8ec9b2_a95cf67d","line":2338,"range":{"start_line":2338,"start_character":12,"end_line":2338,"end_character":59},"updated":"2016-09-21 12:56:13.000000000","message":"I don\u0027t really like this, if I am honest. I think this would read better:\n\n   state \u003d task_states.DELETING\n   if type(ex) \u003d\u003d exception.InstanceNotFound:\n     state \u003d vm_states.DELETED\n   raise exception.InstanceInvalidState(attr\u003d\u0027task_state\u0027,\n                                           instance_uuid\u003dinstance.uuid,\n                                           state\u003dstate,\n                                           method\u003d\u0027snapshot\u0027)\n\nI wondered about changing the expect clause and a helper method, but I think thats messier.","commit_id":"8dd6a3210e60ab936c0f5ffc47b8054d8a9f8e28"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"970e78acef679bd3e4ffc0f764f2cd9d7f6653c5","unresolved":false,"context_lines":[{"line_number":2335,"context_line":"            except Exception:"},{"line_number":2336,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2337,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2338,"context_line":"            if ex.__class__.__name__ \u003d\u003d \u0027InstanceNotFound\u0027:"},{"line_number":2339,"context_line":"                raise exception.InstanceInvalidState(attr\u003d\u0027vm_state\u0027,"},{"line_number":2340,"context_line":"                                               instance_uuid\u003dinstance.uuid,"},{"line_number":2341,"context_line":"                                               state\u003dvm_states.DELETED,"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a8ec9b2_dfdbb47a","line":2338,"range":{"start_line":2338,"start_character":12,"end_line":2338,"end_character":59},"in_reply_to":"7a8ec9b2_a95cf67d","updated":"2016-09-21 13:29:10.000000000","message":"John,\nwhat you wrote is definitely more elegant than what I did, so building upon that so I am passing the attr along with the states","commit_id":"8dd6a3210e60ab936c0f5ffc47b8054d8a9f8e28"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d3502dfdc2ba20b66cfff119c04dea7d88ab08d9","unresolved":false,"context_lines":[{"line_number":2325,"context_line":"            # Changing the instance task state to use in raising the"},{"line_number":2326,"context_line":"            # InstanceInvalidException below"},{"line_number":2327,"context_line":"            LOG.debug(\u0027Instance disappeared during snapshot.\u0027,"},{"line_number":2328,"context_line":"                     instance\u003dinstance)"},{"line_number":2329,"context_line":"            try:"},{"line_number":2330,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2331,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_f3ea2bda","line":2328,"updated":"2016-09-27 00:50:07.000000000","message":"nit: alignment is a bit off here","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"c786c052636f6a81094abca686a182c80d227c5c","unresolved":false,"context_lines":[{"line_number":2325,"context_line":"            # Changing the instance task state to use in raising the"},{"line_number":2326,"context_line":"            # InstanceInvalidException below"},{"line_number":2327,"context_line":"            LOG.debug(\u0027Instance disappeared during snapshot.\u0027,"},{"line_number":2328,"context_line":"                     instance\u003dinstance)"},{"line_number":2329,"context_line":"            try:"},{"line_number":2330,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2331,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_01d9e156","line":2328,"in_reply_to":"5a8bc5a2_f3ea2bda","updated":"2016-09-27 13:21:06.000000000","message":"Done","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d3502dfdc2ba20b66cfff119c04dea7d88ab08d9","unresolved":false,"context_lines":[{"line_number":2328,"context_line":"                     instance\u003dinstance)"},{"line_number":2329,"context_line":"            try:"},{"line_number":2330,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2331,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2332,"context_line":"                LOG.info(_LI(\u0027Image %s deleted because instance\u0027"},{"line_number":2333,"context_line":"                         \u0027 deleted before snapshot started.\u0027), image_id,"},{"line_number":2334,"context_line":"                         instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_53ecbff2","line":2331,"range":{"start_line":2331,"start_character":47,"end_line":2331,"end_character":63},"updated":"2016-09-27 00:50:07.000000000","message":"You could re-use your image_id variable.","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"c786c052636f6a81094abca686a182c80d227c5c","unresolved":false,"context_lines":[{"line_number":2328,"context_line":"                     instance\u003dinstance)"},{"line_number":2329,"context_line":"            try:"},{"line_number":2330,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2331,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2332,"context_line":"                LOG.info(_LI(\u0027Image %s deleted because instance\u0027"},{"line_number":2333,"context_line":"                         \u0027 deleted before snapshot started.\u0027), image_id,"},{"line_number":2334,"context_line":"                         instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_c11459ea","line":2331,"range":{"start_line":2331,"start_character":47,"end_line":2331,"end_character":63},"in_reply_to":"5a8bc5a2_53ecbff2","updated":"2016-09-27 13:21:06.000000000","message":"Done","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d3502dfdc2ba20b66cfff119c04dea7d88ab08d9","unresolved":false,"context_lines":[{"line_number":2329,"context_line":"            try:"},{"line_number":2330,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2331,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2332,"context_line":"                LOG.info(_LI(\u0027Image %s deleted because instance\u0027"},{"line_number":2333,"context_line":"                         \u0027 deleted before snapshot started.\u0027), image_id,"},{"line_number":2334,"context_line":"                         instance\u003dinstance)"},{"line_number":2335,"context_line":"            except Exception:"},{"line_number":2336,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_93c00752","line":2333,"range":{"start_line":2332,"start_character":29,"end_line":2333,"end_character":60},"updated":"2016-09-27 00:50:07.000000000","message":"nit: I generally line the strings up for the log message.","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"c786c052636f6a81094abca686a182c80d227c5c","unresolved":false,"context_lines":[{"line_number":2329,"context_line":"            try:"},{"line_number":2330,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2331,"context_line":"                self.image_api.delete(context, image_meta[\u0027id\u0027])"},{"line_number":2332,"context_line":"                LOG.info(_LI(\u0027Image %s deleted because instance\u0027"},{"line_number":2333,"context_line":"                         \u0027 deleted before snapshot started.\u0027), image_id,"},{"line_number":2334,"context_line":"                         instance\u003dinstance)"},{"line_number":2335,"context_line":"            except Exception:"},{"line_number":2336,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_811ed109","line":2333,"range":{"start_line":2332,"start_character":29,"end_line":2333,"end_character":60},"in_reply_to":"5a8bc5a2_93c00752","updated":"2016-09-27 13:21:06.000000000","message":"Looks more aesthetic that way,Done","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"95ad87a12a6a6c99c50517b699731b1f97377a30","unresolved":false,"context_lines":[{"line_number":2332,"context_line":"                LOG.info(_LI(\u0027Image %s deleted because instance\u0027"},{"line_number":2333,"context_line":"                         \u0027 deleted before snapshot started.\u0027), image_id,"},{"line_number":2334,"context_line":"                         instance\u003dinstance)"},{"line_number":2335,"context_line":"            except Exception:"},{"line_number":2336,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2337,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2338,"context_line":"            attr \u003d \u0027task_state\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_b398a36b","line":2335,"range":{"start_line":2335,"start_character":19,"end_line":2335,"end_character":28},"updated":"2016-09-27 00:50:35.000000000","message":"What if this is ImageNotFound? In that case we don\u0027t need a warning.","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5931e65bf16af9b8022d1b6211f2fa201a8caa8a","unresolved":false,"context_lines":[{"line_number":2332,"context_line":"                LOG.info(_LI(\u0027Image %s deleted because instance\u0027"},{"line_number":2333,"context_line":"                         \u0027 deleted before snapshot started.\u0027), image_id,"},{"line_number":2334,"context_line":"                         instance\u003dinstance)"},{"line_number":2335,"context_line":"            except Exception:"},{"line_number":2336,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2337,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2338,"context_line":"            attr \u003d \u0027task_state\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_a6f8274b","line":2335,"range":{"start_line":2335,"start_character":19,"end_line":2335,"end_character":28},"in_reply_to":"5a8bc5a2_815c114c","updated":"2016-10-06 21:25:55.000000000","message":"I\u0027m thinking in the case of an out of band delete, i.e. the user is doing a snapshot, then deletes the instances before it\u0027s done but at the same time deletes the pending snapshot/image upload in glance, so when we try to cleanup here the image is already gone.","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"c786c052636f6a81094abca686a182c80d227c5c","unresolved":false,"context_lines":[{"line_number":2332,"context_line":"                LOG.info(_LI(\u0027Image %s deleted because instance\u0027"},{"line_number":2333,"context_line":"                         \u0027 deleted before snapshot started.\u0027), image_id,"},{"line_number":2334,"context_line":"                         instance\u003dinstance)"},{"line_number":2335,"context_line":"            except Exception:"},{"line_number":2336,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2337,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2338,"context_line":"            attr \u003d \u0027task_state\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_815c114c","line":2335,"range":{"start_line":2335,"start_character":19,"end_line":2335,"end_character":28},"in_reply_to":"5a8bc5a2_b398a36b","updated":"2016-09-27 13:21:06.000000000","message":"Matt\nFor ImageNotFound error to be thrown while deleting the image, that means snapshot didn\u0027t start even though we issued the call for it, _create_image in line 2320. The function call in line 2320 does not check instance state so can\u0027t be that _create_image deleted the image or didnt start.\n\nAm i missing something or there is a way you can think of we can reach such a state or we can perhaps add the except and pass code to be super careful ?","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d3502dfdc2ba20b66cfff119c04dea7d88ab08d9","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"                         \u0027 deleted before snapshot started.\u0027), image_id,"},{"line_number":2334,"context_line":"                         instance\u003dinstance)"},{"line_number":2335,"context_line":"            except Exception:"},{"line_number":2336,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2337,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2338,"context_line":"            attr \u003d \u0027task_state\u0027"},{"line_number":2339,"context_line":"            state \u003d task_states.DELETING"},{"line_number":2340,"context_line":"            if type(ex) \u003d\u003d exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_738b7b1f","line":2337,"range":{"start_line":2336,"start_character":16,"end_line":2337,"end_character":45},"updated":"2016-09-27 00:50:07.000000000","message":"This doesn\u0027t have the error message in it for context, I\u0027d add that, e.g.:\n\n  except Exception as ex:\n    LOG.warning(_LW(\"Error while trying to clean up image %s. Error: %s\"),\n                image_meta[\u0027id\u0027], six.text_type(ex))","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"214e5bc38575cd5bd37eeba65aab203ff1c39d26","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"                         \u0027 deleted before snapshot started.\u0027), image_id,"},{"line_number":2334,"context_line":"                         instance\u003dinstance)"},{"line_number":2335,"context_line":"            except Exception:"},{"line_number":2336,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2337,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2338,"context_line":"            attr \u003d \u0027task_state\u0027"},{"line_number":2339,"context_line":"            state \u003d task_states.DELETING"},{"line_number":2340,"context_line":"            if type(ex) \u003d\u003d exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":20,"id":"1a95cdbc_3adad617","line":2337,"range":{"start_line":2336,"start_character":16,"end_line":2337,"end_character":45},"in_reply_to":"5a8bc5a2_41284933","updated":"2016-10-07 10:30:02.000000000","message":"I missed that, good call.","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"c786c052636f6a81094abca686a182c80d227c5c","unresolved":false,"context_lines":[{"line_number":2333,"context_line":"                         \u0027 deleted before snapshot started.\u0027), image_id,"},{"line_number":2334,"context_line":"                         instance\u003dinstance)"},{"line_number":2335,"context_line":"            except Exception:"},{"line_number":2336,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s\"),"},{"line_number":2337,"context_line":"                            image_meta[\u0027id\u0027])"},{"line_number":2338,"context_line":"            attr \u003d \u0027task_state\u0027"},{"line_number":2339,"context_line":"            state \u003d task_states.DELETING"},{"line_number":2340,"context_line":"            if type(ex) \u003d\u003d exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_41284933","line":2337,"range":{"start_line":2336,"start_character":16,"end_line":2337,"end_character":45},"in_reply_to":"5a8bc5a2_738b7b1f","updated":"2016-09-27 13:21:06.000000000","message":"Thanks for pointing it out, Done","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7249e7860a6702bec03acc2efc7be0f67fd7e1c0","unresolved":false,"context_lines":[{"line_number":2325,"context_line":"            # Changing the instance task state to use in raising the"},{"line_number":2326,"context_line":"            # InstanceInvalidException below"},{"line_number":2327,"context_line":"            LOG.debug(\u0027Instance disappeared during snapshot.\u0027,"},{"line_number":2328,"context_line":"                       instance\u003dinstance)"},{"line_number":2329,"context_line":"            try:"},{"line_number":2330,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2331,"context_line":"                self.image_api.delete(context, image_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5a8bc5a2_26d5f7b8","line":2328,"updated":"2016-09-27 20:42:24.000000000","message":"nit: alignment, please line up instance\u003dinstance with \u0027Instance...\u0027 on the line above.","commit_id":"bd6e0a7b808d446be49bfd3a665b15b99484faac"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"3629e123959ef053e6989e4a6bea84c64b3ae52b","unresolved":false,"context_lines":[{"line_number":2325,"context_line":"            # Changing the instance task state to use in raising the"},{"line_number":2326,"context_line":"            # InstanceInvalidException below"},{"line_number":2327,"context_line":"            LOG.debug(\u0027Instance disappeared during snapshot.\u0027,"},{"line_number":2328,"context_line":"                       instance\u003dinstance)"},{"line_number":2329,"context_line":"            try:"},{"line_number":2330,"context_line":"                image_id \u003d image_meta[\u0027id\u0027]"},{"line_number":2331,"context_line":"                self.image_api.delete(context, image_id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a98d1f4_dcb074f7","line":2328,"in_reply_to":"5a8bc5a2_26d5f7b8","updated":"2016-09-29 09:44:37.000000000","message":"Done","commit_id":"bd6e0a7b808d446be49bfd3a665b15b99484faac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e59773a4a741908f1fcee5f305934c11244b7ee4","unresolved":false,"context_lines":[{"line_number":2331,"context_line":"                self.image_api.delete(context, image_id)"},{"line_number":2332,"context_line":"                LOG.info(_LI(\u0027Image %s deleted because instance \u0027"},{"line_number":2333,"context_line":"                             \u0027deleted before snapshot started.\u0027),"},{"line_number":2334,"context_line":"                             image_id, instance\u003dinstance)"},{"line_number":2335,"context_line":"            except exception.ImageNotFound:"},{"line_number":2336,"context_line":"                pass"},{"line_number":2337,"context_line":"            except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":23,"id":"5a8bc5a2_e61b0f7f","line":2334,"updated":"2016-09-27 20:44:49.000000000","message":"nit: image_id and instance\u003dinstance are args/kwargs to LOG.info so they should be aligned with other parameters to that method, _LI in this case.","commit_id":"bd6e0a7b808d446be49bfd3a665b15b99484faac"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"3629e123959ef053e6989e4a6bea84c64b3ae52b","unresolved":false,"context_lines":[{"line_number":2331,"context_line":"                self.image_api.delete(context, image_id)"},{"line_number":2332,"context_line":"                LOG.info(_LI(\u0027Image %s deleted because instance \u0027"},{"line_number":2333,"context_line":"                             \u0027deleted before snapshot started.\u0027),"},{"line_number":2334,"context_line":"                             image_id, instance\u003dinstance)"},{"line_number":2335,"context_line":"            except exception.ImageNotFound:"},{"line_number":2336,"context_line":"                pass"},{"line_number":2337,"context_line":"            except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a98d1f4_fc953040","line":2334,"in_reply_to":"5a8bc5a2_e61b0f7f","updated":"2016-09-29 09:44:37.000000000","message":"Done","commit_id":"bd6e0a7b808d446be49bfd3a665b15b99484faac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8679a6c9d719bf8098657796864769e364a185f3","unresolved":false,"context_lines":[{"line_number":2335,"context_line":"            except exception.ImageNotFound:"},{"line_number":2336,"context_line":"                pass"},{"line_number":2337,"context_line":"            except Exception as exc:"},{"line_number":2338,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s. \""},{"line_number":2339,"context_line":"                                \"Error %s\"), image_meta[\u0027id\u0027],"},{"line_number":2340,"context_line":"                                 six.text_type(exc))"},{"line_number":2341,"context_line":"            attr \u003d \u0027task_state\u0027"},{"line_number":2342,"context_line":"            state \u003d task_states.DELETING"}],"source_content_type":"text/x-python","patch_set":23,"id":"5a8bc5a2_49af742b","line":2339,"range":{"start_line":2338,"start_character":32,"end_line":2339,"end_character":42},"updated":"2016-09-27 21:08:55.000000000","message":"This is failing hacking rule H703, see:\n\nhttp://docs.openstack.org/developer/hacking/","commit_id":"bd6e0a7b808d446be49bfd3a665b15b99484faac"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"3629e123959ef053e6989e4a6bea84c64b3ae52b","unresolved":false,"context_lines":[{"line_number":2335,"context_line":"            except exception.ImageNotFound:"},{"line_number":2336,"context_line":"                pass"},{"line_number":2337,"context_line":"            except Exception as exc:"},{"line_number":2338,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s. \""},{"line_number":2339,"context_line":"                                \"Error %s\"), image_meta[\u0027id\u0027],"},{"line_number":2340,"context_line":"                                 six.text_type(exc))"},{"line_number":2341,"context_line":"            attr \u003d \u0027task_state\u0027"},{"line_number":2342,"context_line":"            state \u003d task_states.DELETING"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a98d1f4_bc82c8fe","line":2339,"range":{"start_line":2338,"start_character":32,"end_line":2339,"end_character":42},"in_reply_to":"5a8bc5a2_49af742b","updated":"2016-09-29 09:44:37.000000000","message":"Thanks for letting me know about that. Done","commit_id":"bd6e0a7b808d446be49bfd3a665b15b99484faac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e59773a4a741908f1fcee5f305934c11244b7ee4","unresolved":false,"context_lines":[{"line_number":2336,"context_line":"                pass"},{"line_number":2337,"context_line":"            except Exception as exc:"},{"line_number":2338,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s. \""},{"line_number":2339,"context_line":"                                \"Error %s\"), image_meta[\u0027id\u0027],"},{"line_number":2340,"context_line":"                                 six.text_type(exc))"},{"line_number":2341,"context_line":"            attr \u003d \u0027task_state\u0027"},{"line_number":2342,"context_line":"            state \u003d task_states.DELETING"},{"line_number":2343,"context_line":"            if type(ex) \u003d\u003d exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":23,"id":"5a8bc5a2_2616d755","line":2340,"range":{"start_line":2339,"start_character":45,"end_line":2340,"end_character":52},"updated":"2016-09-27 20:44:49.000000000","message":"ditto","commit_id":"bd6e0a7b808d446be49bfd3a665b15b99484faac"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"3629e123959ef053e6989e4a6bea84c64b3ae52b","unresolved":false,"context_lines":[{"line_number":2336,"context_line":"                pass"},{"line_number":2337,"context_line":"            except Exception as exc:"},{"line_number":2338,"context_line":"                LOG.warning(_LW(\"Error while trying to clean up image %s. \""},{"line_number":2339,"context_line":"                                \"Error %s\"), image_meta[\u0027id\u0027],"},{"line_number":2340,"context_line":"                                 six.text_type(exc))"},{"line_number":2341,"context_line":"            attr \u003d \u0027task_state\u0027"},{"line_number":2342,"context_line":"            state \u003d task_states.DELETING"},{"line_number":2343,"context_line":"            if type(ex) \u003d\u003d exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a98d1f4_dc87940d","line":2340,"range":{"start_line":2339,"start_character":45,"end_line":2340,"end_character":52},"in_reply_to":"5a8bc5a2_2616d755","updated":"2016-09-29 09:44:37.000000000","message":"Done","commit_id":"bd6e0a7b808d446be49bfd3a665b15b99484faac"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"486a6ec9a54057f41b51f47350fa4f000acb294f","unresolved":false,"context_lines":[{"line_number":2335,"context_line":"            except exception.ImageNotFound:"},{"line_number":2336,"context_line":"                pass"},{"line_number":2337,"context_line":"            except Exception as exc:"},{"line_number":2338,"context_line":"                msg \u003d _LW(\"Error while trying to clean up image %(img_id)s.\""},{"line_number":2339,"context_line":"                          \"Error %(error_msg)s\")"},{"line_number":2340,"context_line":"                LOG.warning(msg, {\"img_id\": image_meta[\u0027id\u0027],"},{"line_number":2341,"context_line":"                                 \"error_msg\": six.text_type(exc)})"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a95cdbc_d7a2bf98","line":2338,"range":{"start_line":2338,"start_character":75,"end_line":2338,"end_character":76},"updated":"2016-10-06 21:26:21.000000000","message":"Also need a space between the sentences.","commit_id":"a78fa13459dee1ed51492e71a166260e541d2912"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ed58f6b8fc8ce2645a594afb75b775d7797408d","unresolved":false,"context_lines":[{"line_number":2338,"context_line":"                msg \u003d _LW(\"Error while trying to clean up image %(img_id)s.\""},{"line_number":2339,"context_line":"                          \"Error %(error_msg)s\")"},{"line_number":2340,"context_line":"                LOG.warning(msg, {\"img_id\": image_meta[\u0027id\u0027],"},{"line_number":2341,"context_line":"                                 \"error_msg\": six.text_type(exc)})"},{"line_number":2342,"context_line":"            attr \u003d \u0027task_state\u0027"},{"line_number":2343,"context_line":"            state \u003d task_states.DELETING"},{"line_number":2344,"context_line":"            if type(ex) \u003d\u003d exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":24,"id":"1a95cdbc_f7c6db66","line":2341,"updated":"2016-10-06 21:23:54.000000000","message":"nit: alignment","commit_id":"a78fa13459dee1ed51492e71a166260e541d2912"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dbfbcb876b3076a40d7aea53d9fb17610aa33bad","unresolved":false,"context_lines":[{"line_number":2332,"context_line":"                LOG.info(_LI(\u0027Image %s deleted because instance \u0027"},{"line_number":2333,"context_line":"                             \u0027deleted before snapshot started.\u0027),"},{"line_number":2334,"context_line":"                         image_id, instance\u003dinstance)"},{"line_number":2335,"context_line":"            except exception.ImageNotFound:"},{"line_number":2336,"context_line":"                pass"},{"line_number":2337,"context_line":"            except Exception as exc:"},{"line_number":2338,"context_line":"                msg \u003d _LW(\"Error while trying to clean up image %(img_id)s: \""},{"line_number":2339,"context_line":"                          \"%(error_msg)s\")"}],"source_content_type":"text/x-python","patch_set":25,"id":"1a95cdbc_174507b2","line":2336,"range":{"start_line":2335,"start_character":12,"end_line":2336,"end_character":20},"updated":"2016-10-06 21:29:14.000000000","message":"Just noticed that we don\u0027t have a unit test for this, but I\u0027m not sure how much I care to block this for it.","commit_id":"d8e695cb900ad71996e6cf970894bc2e3f2df8b4"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d3502dfdc2ba20b66cfff119c04dea7d88ab08d9","unresolved":false,"context_lines":[{"line_number":2536,"context_line":"                                                        snapshot_instance,"},{"line_number":2537,"context_line":"                                                        _create_image, save):"},{"line_number":2538,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":2539,"context_line":"        save.side_effect \u003d exception.UnexpectedDeletingTaskStateError("},{"line_number":2540,"context_line":"            \"Exception\")"},{"line_number":2541,"context_line":"        _create_image.return_value \u003d dict(id\u003d\u0027fake-image-id\u0027)"},{"line_number":2542,"context_line":"        with mock.patch.object(self.compute_api.image_api,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_f37f8b12","line":2539,"range":{"start_line":2539,"start_character":37,"end_line":2539,"end_character":69},"updated":"2016-09-27 00:50:07.000000000","message":"nit: the test is called \u0027vm_deleted\u0027 so this would really be InstanceNotFound","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"c786c052636f6a81094abca686a182c80d227c5c","unresolved":false,"context_lines":[{"line_number":2536,"context_line":"                                                        snapshot_instance,"},{"line_number":2537,"context_line":"                                                        _create_image, save):"},{"line_number":2538,"context_line":"        instance \u003d self._create_instance_obj()"},{"line_number":2539,"context_line":"        save.side_effect \u003d exception.UnexpectedDeletingTaskStateError("},{"line_number":2540,"context_line":"            \"Exception\")"},{"line_number":2541,"context_line":"        _create_image.return_value \u003d dict(id\u003d\u0027fake-image-id\u0027)"},{"line_number":2542,"context_line":"        with mock.patch.object(self.compute_api.image_api,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_17b3e30a","line":2539,"range":{"start_line":2539,"start_character":37,"end_line":2539,"end_character":69},"in_reply_to":"5a8bc5a2_f37f8b12","updated":"2016-09-27 13:21:06.000000000","message":"Done","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d3502dfdc2ba20b66cfff119c04dea7d88ab08d9","unresolved":false,"context_lines":[{"line_number":2541,"context_line":"        _create_image.return_value \u003d dict(id\u003d\u0027fake-image-id\u0027)"},{"line_number":2542,"context_line":"        with mock.patch.object(self.compute_api.image_api,"},{"line_number":2543,"context_line":"                               \u0027delete\u0027) as image_delete:"},{"line_number":2544,"context_line":"            image_delete.side_effect \u003d Exception()"},{"line_number":2545,"context_line":"            self.assertRaises(exception.InstanceInvalidState,"},{"line_number":2546,"context_line":"                              self.compute_api.snapshot,"},{"line_number":2547,"context_line":"                              self.context,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_3376533e","line":2544,"range":{"start_line":2544,"start_character":39,"end_line":2544,"end_character":48},"updated":"2016-09-27 00:50:07.000000000","message":"nit: I\u0027d normally use nova.test.TestingException for something like this.","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"},{"author":{"_account_id":20734,"name":"Prateek Arora","email":"1192prateek@gmail.com","username":"prateek_a"},"change_message_id":"c786c052636f6a81094abca686a182c80d227c5c","unresolved":false,"context_lines":[{"line_number":2541,"context_line":"        _create_image.return_value \u003d dict(id\u003d\u0027fake-image-id\u0027)"},{"line_number":2542,"context_line":"        with mock.patch.object(self.compute_api.image_api,"},{"line_number":2543,"context_line":"                               \u0027delete\u0027) as image_delete:"},{"line_number":2544,"context_line":"            image_delete.side_effect \u003d Exception()"},{"line_number":2545,"context_line":"            self.assertRaises(exception.InstanceInvalidState,"},{"line_number":2546,"context_line":"                              self.compute_api.snapshot,"},{"line_number":2547,"context_line":"                              self.context,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a8bc5a2_d7bc1bde","line":2544,"range":{"start_line":2544,"start_character":39,"end_line":2544,"end_character":48},"in_reply_to":"5a8bc5a2_3376533e","updated":"2016-09-27 13:21:06.000000000","message":"Done","commit_id":"4fbb7a459acab13b10d53c2403bcbbe882231444"}]}
