)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"fca029e72151ce0af28636ffb93ce188506982d4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Bartosz Fic \u003cbartosz.fic@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-27 12:54:07 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rollback on dest host after deleting vm during live migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If the VM is deleted during live migration process, there are "},{"line_number":10,"context_line":"remaining garbage on destination host. This patch improves "}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a016987_dae7ca10","line":7,"updated":"2015-05-27 15:27:21.000000000","message":"this is for libvirt, so we can say libvirt: xxxx","commit_id":"c91037999fd05279cae01238048228114022be35"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"fca029e72151ce0af28636ffb93ce188506982d4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rollback on dest host after deleting vm during live migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If the VM is deleted during live migration process, there are "},{"line_number":10,"context_line":"remaining garbage on destination host. This patch improves "},{"line_number":11,"context_line":"live_migration_monitor to handle \u0027deletion process during live "},{"line_number":12,"context_line":"migration\u0027 by calling proper rollback. This functionality are "}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7a016987_7afe96af","line":9,"updated":"2015-05-27 15:27:21.000000000","message":"remove the blank if you can","commit_id":"c91037999fd05279cae01238048228114022be35"}],"nova/compute/manager.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"fca029e72151ce0af28636ffb93ce188506982d4","unresolved":false,"context_lines":[{"line_number":5117,"context_line":"        #             necessary to do any rollback on source host (only on"},{"line_number":5118,"context_line":"        #             destination host)."},{"line_number":5119,"context_line":"        if (not instance.deleted"},{"line_number":5120,"context_line":"            and instance.task_state !\u003d task_states.DELETING):"},{"line_number":5121,"context_line":"            instance.task_state \u003d None"},{"line_number":5122,"context_line":"            instance.save(expected_task_state\u003d[task_states.MIGRATING])"},{"line_number":5123,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_3f15b09a","line":5120,"updated":"2015-05-27 15:27:21.000000000","message":"SOFT_DELETING?","commit_id":"c91037999fd05279cae01238048228114022be35"},{"author":{"_account_id":12814,"name":"Bartosz Fic","email":"bartosz.fic@intel.com","username":"bartosz-fic"},"change_message_id":"872f03d6af3afb75af18c9db0bcaa1752e679bf9","unresolved":false,"context_lines":[{"line_number":5117,"context_line":"        #             necessary to do any rollback on source host (only on"},{"line_number":5118,"context_line":"        #             destination host)."},{"line_number":5119,"context_line":"        if (not instance.deleted"},{"line_number":5120,"context_line":"            and instance.task_state !\u003d task_states.DELETING):"},{"line_number":5121,"context_line":"            instance.task_state \u003d None"},{"line_number":5122,"context_line":"            instance.save(expected_task_state\u003d[task_states.MIGRATING])"},{"line_number":5123,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_002150b4","line":5120,"in_reply_to":"7a016987_3f15b09a","updated":"2015-05-28 10:04:25.000000000","message":"Thx mate !!! I realised that setting \u0027reclaim_instance_interval\u0027 in nova.conf as non negative value and then launch live-migration and delete instance in meantime, leads to having the same instance in both hosts (source and destination) with state power_off. After deleting instance, it should be in power_off state only on source host (because it could be restored later), but on destination host it should be cleaned (rolled back). I am going to fix it in next patchset.","commit_id":"c91037999fd05279cae01238048228114022be35"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"c611b64530217f6839de6604aa5fa7453a764f60","unresolved":false,"context_lines":[{"line_number":5324,"context_line":"            # NOTE(tr3buchet): setup networks on source host"},{"line_number":5325,"context_line":"            # (really it\u0027s re-setup)"},{"line_number":5326,"context_line":"            self.network_api.setup_networks_on_host(context, instance,"},{"line_number":5327,"context_line":"                                                    self.host)"},{"line_number":5328,"context_line":""},{"line_number":5329,"context_line":"            bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":5330,"context_line":"                    context, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_4ce3a9d8","line":5327,"updated":"2015-09-11 11:34:46.000000000","message":"If instance is being deleted, why we setting up networks on source node again?","commit_id":"7aeb07ec6ea6deeda9b3bd4429b8dd999170d392"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"aca87e7f222606421e099a497030c3b82b547db9","unresolved":false,"context_lines":[{"line_number":5324,"context_line":"            # NOTE(tr3buchet): setup networks on source host"},{"line_number":5325,"context_line":"            # (really it\u0027s re-setup)"},{"line_number":5326,"context_line":"            self.network_api.setup_networks_on_host(context, instance,"},{"line_number":5327,"context_line":"                                                    self.host)"},{"line_number":5328,"context_line":""},{"line_number":5329,"context_line":"            bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":5330,"context_line":"                    context, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_b3f8287e","line":5327,"in_reply_to":"ba15a1d1_10b54acc","updated":"2015-09-14 07:12:14.000000000","message":"Delete operation will cleanup only a source host, so we need to trigger cleanup on destination host (the same cleanup that is done when live migration fails, nothing differs here).","commit_id":"7aeb07ec6ea6deeda9b3bd4429b8dd999170d392"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"cfc40ae5f62246b4a0e996634294db54242b13c7","unresolved":false,"context_lines":[{"line_number":5324,"context_line":"            # NOTE(tr3buchet): setup networks on source host"},{"line_number":5325,"context_line":"            # (really it\u0027s re-setup)"},{"line_number":5326,"context_line":"            self.network_api.setup_networks_on_host(context, instance,"},{"line_number":5327,"context_line":"                                                    self.host)"},{"line_number":5328,"context_line":""},{"line_number":5329,"context_line":"            bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":5330,"context_line":"                    context, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_10b54acc","line":5327,"in_reply_to":"ba15a1d1_706cc69c","updated":"2015-09-14 06:20:11.000000000","message":"OK, what about cleanup on line 5343? Do we really need that?","commit_id":"7aeb07ec6ea6deeda9b3bd4429b8dd999170d392"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"e8b7cd72e81eefaf819eb58c5133a6027f4d5e9c","unresolved":false,"context_lines":[{"line_number":5324,"context_line":"            # NOTE(tr3buchet): setup networks on source host"},{"line_number":5325,"context_line":"            # (really it\u0027s re-setup)"},{"line_number":5326,"context_line":"            self.network_api.setup_networks_on_host(context, instance,"},{"line_number":5327,"context_line":"                                                    self.host)"},{"line_number":5328,"context_line":""},{"line_number":5329,"context_line":"            bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":5330,"context_line":"                    context, instance.uuid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba15a1d1_706cc69c","line":5327,"in_reply_to":"da20952f_4ce3a9d8","updated":"2015-09-14 06:04:53.000000000","message":"Few lines above (line 5318) there is if statement that will prevent such scenario.","commit_id":"7aeb07ec6ea6deeda9b3bd4429b8dd999170d392"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"fca029e72151ce0af28636ffb93ce188506982d4","unresolved":false,"context_lines":[{"line_number":5585,"context_line":"                try:"},{"line_number":5586,"context_line":"                    instance.refresh()"},{"line_number":5587,"context_line":"                except exception.InstanceNotFound:"},{"line_number":5588,"context_line":"                    instance.deleted \u003d True"},{"line_number":5589,"context_line":"                    info.type \u003d libvirt.VIR_DOMAIN_JOB_CANCELLED"},{"line_number":5590,"context_line":""},{"line_number":5591,"context_line":"            if info.type \u003d\u003d libvirt.VIR_DOMAIN_JOB_NONE:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_da722a7c","line":5588,"updated":"2015-05-27 15:27:21.000000000","message":"concern on whether this will have side effect....\nseems we don\u0027t do the setting in other cases","commit_id":"c91037999fd05279cae01238048228114022be35"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"af5dd560bd9b4b1741ba75d60fe9ea7c02395b79","unresolved":false,"context_lines":[{"line_number":5585,"context_line":"                try:"},{"line_number":5586,"context_line":"                    instance.refresh()"},{"line_number":5587,"context_line":"                except exception.InstanceNotFound:"},{"line_number":5588,"context_line":"                    instance.deleted \u003d True"},{"line_number":5589,"context_line":"                    info.type \u003d libvirt.VIR_DOMAIN_JOB_CANCELLED"},{"line_number":5590,"context_line":""},{"line_number":5591,"context_line":"            if info.type \u003d\u003d libvirt.VIR_DOMAIN_JOB_NONE:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_25723a12","line":5588,"in_reply_to":"7a016987_da722a7c","updated":"2015-05-27 16:43:17.000000000","message":"The point is that there is no option to pass any argument to .refresh() and it will only look for existing VMs in database (deleted\u003dFalse). In case VM has been deleted we need such information in compute manager so that we will be able to skip rollback on a source host and perform rollback only on a destination host.\n\nSo instead of doing .refresh() twice we decided to set property. Rollback on destination does not care about .deleted property inside instance.","commit_id":"c91037999fd05279cae01238048228114022be35"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"fca029e72151ce0af28636ffb93ce188506982d4","unresolved":false,"context_lines":[{"line_number":5645,"context_line":"                #             recover_method should be called to cleanup on"},{"line_number":5646,"context_line":"                #             destination host."},{"line_number":5647,"context_line":"                if instance.task_state \u003d\u003d task_states.DELETING:"},{"line_number":5648,"context_line":"                    LOG.warn(_LW(\"Migrated instance has been deleted\"),"},{"line_number":5649,"context_line":"                              instance\u003dinstance)"},{"line_number":5650,"context_line":"                    recover_method(context, instance, dest, block_migration,"},{"line_number":5651,"context_line":"                                   migrate_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_1a41e20b","line":5648,"updated":"2015-05-27 15:27:21.000000000","message":"guess we can say \u0027is deleting\u0027?","commit_id":"c91037999fd05279cae01238048228114022be35"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"af5dd560bd9b4b1741ba75d60fe9ea7c02395b79","unresolved":false,"context_lines":[{"line_number":5645,"context_line":"                #             recover_method should be called to cleanup on"},{"line_number":5646,"context_line":"                #             destination host."},{"line_number":5647,"context_line":"                if instance.task_state \u003d\u003d task_states.DELETING:"},{"line_number":5648,"context_line":"                    LOG.warn(_LW(\"Migrated instance has been deleted\"),"},{"line_number":5649,"context_line":"                              instance\u003dinstance)"},{"line_number":5650,"context_line":"                    recover_method(context, instance, dest, block_migration,"},{"line_number":5651,"context_line":"                                   migrate_data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_654f12bf","line":5648,"in_reply_to":"7a016987_1a41e20b","updated":"2015-05-27 16:43:17.000000000","message":"Yup, should be something like \"is deleting or has been deleted\", there are two different cases.","commit_id":"c91037999fd05279cae01238048228114022be35"}]}
