)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4ebb96d732e627ff0d6510876eaedd79f10e725b","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2021-07-25 22:38:40 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow migrating PMEM\u0027s data"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ib0bb391f6586db348d49f96665057ac332ce4e3e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dfa01be3_96ff9055","line":8,"updated":"2021-07-27 13:13:26.000000000","message":"Implements: blueprint allow-migrate-pmem-data\nyou also need to add a release note.","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":30077,"name":"Qiu Fossen","display_name":"fossnqiu","email":"qiujunting@inspur.com","username":"qiufossen"},"change_message_id":"3295fb284d0023e6420a660500838cbd1927aef8","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2021-07-25 22:38:40 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow migrating PMEM\u0027s data"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ib0bb391f6586db348d49f96665057ac332ce4e3e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"8917bd97_2e2a57ab","line":8,"in_reply_to":"dfa01be3_96ff9055","updated":"2021-07-29 09:57:00.000000000","message":"Done","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4e308b8742fc51c06d93a5595f2f127827eaa80e","unresolved":true,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2021-08-27 10:32:40 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow migrating PMEM\u0027s data"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements: blueprint allow-migrate-pmem-data"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ib0bb391f6586db348d49f96665057ac332ce4e3e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"be8e6ae3_75748154","line":8,"updated":"2021-09-16 09:57:13.000000000","message":"you shoudl expalin breifly what the feature is and in addtion to unit/function test we shoudl include a release note and doc updated in this change too.","commit_id":"f770ea8d35d7a5f714ebd9ff12ee564efd67df2b"}],"nova/api/openstack/compute/migrate_server.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4ebb96d732e627ff0d6510876eaedd79f10e725b","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            copy_pmem_devices \u003d body[\u0027migrate\u0027].get(\u0027copy_pmem_devices\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            self.compute_api.resize(req.environ[\u0027nova.context\u0027], instance,"},{"line_number":66,"context_line":"                                    host_name\u003dhost_name,"},{"line_number":67,"context_line":"                                    copy_pmem_devices \u003d copy_pmem_devices)"},{"line_number":68,"context_line":"        except (exception.TooManyInstances, exception.QuotaError,"},{"line_number":69,"context_line":"                exception.ForbiddenWithAccelerators) as e:"},{"line_number":70,"context_line":"            raise exc.HTTPForbidden(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":1,"id":"b1e20eb7_89f42817","line":67,"range":{"start_line":65,"start_character":13,"end_line":67,"end_character":74},"updated":"2021-07-27 13:13:26.000000000","message":"nit: please format this like this\n\n            self.compute_api.resize(\n                req.environ[\u0027nova.context\u0027], instance,\n                host_name\u003dhost_name,\n                copy_pmem_devices\u003dcopy_pmem_devices)","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4aab84792beb09f548a3db783416d87f0b02d96d","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            copy_pmem_devices \u003d body[\u0027migrate\u0027].get(\u0027copy_pmem_devices\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        try:"},{"line_number":65,"context_line":"            self.compute_api.resize(req.environ[\u0027nova.context\u0027], instance,"},{"line_number":66,"context_line":"                                    host_name\u003dhost_name,"},{"line_number":67,"context_line":"                                    copy_pmem_devices \u003d copy_pmem_devices)"},{"line_number":68,"context_line":"        except (exception.TooManyInstances, exception.QuotaError,"},{"line_number":69,"context_line":"                exception.ForbiddenWithAccelerators) as e:"},{"line_number":70,"context_line":"            raise exc.HTTPForbidden(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":1,"id":"eb0f6c12_8cf650e0","line":67,"range":{"start_line":65,"start_character":13,"end_line":67,"end_character":74},"in_reply_to":"b1e20eb7_89f42817","updated":"2021-07-29 12:31:11.000000000","message":"Done","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"}],"nova/compute/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4ebb96d732e627ff0d6510876eaedd79f10e725b","unresolved":true,"context_lines":[{"line_number":5598,"context_line":"            timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":5599,"context_line":"                instance, clean_shutdown)"},{"line_number":5600,"context_line":""},{"line_number":5601,"context_line":"            old_devpaths \u003d list()"},{"line_number":5602,"context_line":"            new_devpaths \u003d list()"},{"line_number":5603,"context_line":"            if copy_pmem_devices:"},{"line_number":5604,"context_line":"                old_vpmems \u003d self.driver.get_instance_vpmems("},{"line_number":5605,"context_line":"                    context, instance, prefix\u003d\u0027old\u0027)"},{"line_number":5606,"context_line":"                new_vpmems \u003d compute_rpcapi.get_instance_vpmems("},{"line_number":5607,"context_line":"                    context, instance, migration, migration.dest_compute,"},{"line_number":5608,"context_line":"                    prefix\u003d\u0027new\u0027)"},{"line_number":5609,"context_line":"                if old_vpmems and new_vpmems:"},{"line_number":5610,"context_line":"                    for old_vpmem in old_vpmems:"},{"line_number":5611,"context_line":"                        old_devpath \u003d old_vpmem.devpath"},{"line_number":5612,"context_line":"                        old_devpaths.append(old_devpath)"},{"line_number":5613,"context_line":"                    for new_vpmem in new_vpmems:"},{"line_number":5614,"context_line":"                        new_devpath \u003d new_vpmem.devpath"},{"line_number":5615,"context_line":"                        new_devpaths.append(new_devpath)"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"            disk_info \u003d self.driver.migrate_disk_and_power_off("},{"line_number":5618,"context_line":"                context, instance, migration.dest_host,"}],"source_content_type":"text/x-python","patch_set":1,"id":"74191bb8_2e3ba388","line":5615,"range":{"start_line":5601,"start_character":12,"end_line":5615,"end_character":56},"updated":"2021-07-27 13:13:26.000000000","message":"this should be done in prep_resize\n\nas stated in the spec\nhttps://review.opendev.org/c/openstack/nova-specs/+/785563/14/specs/xena/approved/allow-migrate-pmem-data.rst#57","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":30077,"name":"Qiu Fossen","display_name":"fossnqiu","email":"qiujunting@inspur.com","username":"qiufossen"},"change_message_id":"55abb0507ec59a09e4caaa4445cbedb497535458","unresolved":true,"context_lines":[{"line_number":5598,"context_line":"            timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":5599,"context_line":"                instance, clean_shutdown)"},{"line_number":5600,"context_line":""},{"line_number":5601,"context_line":"            old_devpaths \u003d list()"},{"line_number":5602,"context_line":"            new_devpaths \u003d list()"},{"line_number":5603,"context_line":"            if copy_pmem_devices:"},{"line_number":5604,"context_line":"                old_vpmems \u003d self.driver.get_instance_vpmems("},{"line_number":5605,"context_line":"                    context, instance, prefix\u003d\u0027old\u0027)"},{"line_number":5606,"context_line":"                new_vpmems \u003d compute_rpcapi.get_instance_vpmems("},{"line_number":5607,"context_line":"                    context, instance, migration, migration.dest_compute,"},{"line_number":5608,"context_line":"                    prefix\u003d\u0027new\u0027)"},{"line_number":5609,"context_line":"                if old_vpmems and new_vpmems:"},{"line_number":5610,"context_line":"                    for old_vpmem in old_vpmems:"},{"line_number":5611,"context_line":"                        old_devpath \u003d old_vpmem.devpath"},{"line_number":5612,"context_line":"                        old_devpaths.append(old_devpath)"},{"line_number":5613,"context_line":"                    for new_vpmem in new_vpmems:"},{"line_number":5614,"context_line":"                        new_devpath \u003d new_vpmem.devpath"},{"line_number":5615,"context_line":"                        new_devpaths.append(new_devpath)"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"            disk_info \u003d self.driver.migrate_disk_and_power_off("},{"line_number":5618,"context_line":"                context, instance, migration.dest_host,"}],"source_content_type":"text/x-python","patch_set":1,"id":"8323e74a_e460dadc","line":5615,"range":{"start_line":5601,"start_character":12,"end_line":5615,"end_character":56},"in_reply_to":"07c104a9_775712ef","updated":"2021-08-06 01:46:12.000000000","message":"In the spec, Copy the PMEM data from old PMEM device to new PMEM device at migtate_disk_and_power_off.\n\nhttps://review.opendev.org/c/openstack/nova-specs/+/785563/14/specs/xena/approved/allow-migrate-pmem-data.rst#65","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9309f26cfe0b2dfe6733ab86e61a989376d38e2c","unresolved":true,"context_lines":[{"line_number":5598,"context_line":"            timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":5599,"context_line":"                instance, clean_shutdown)"},{"line_number":5600,"context_line":""},{"line_number":5601,"context_line":"            old_devpaths \u003d list()"},{"line_number":5602,"context_line":"            new_devpaths \u003d list()"},{"line_number":5603,"context_line":"            if copy_pmem_devices:"},{"line_number":5604,"context_line":"                old_vpmems \u003d self.driver.get_instance_vpmems("},{"line_number":5605,"context_line":"                    context, instance, prefix\u003d\u0027old\u0027)"},{"line_number":5606,"context_line":"                new_vpmems \u003d compute_rpcapi.get_instance_vpmems("},{"line_number":5607,"context_line":"                    context, instance, migration, migration.dest_compute,"},{"line_number":5608,"context_line":"                    prefix\u003d\u0027new\u0027)"},{"line_number":5609,"context_line":"                if old_vpmems and new_vpmems:"},{"line_number":5610,"context_line":"                    for old_vpmem in old_vpmems:"},{"line_number":5611,"context_line":"                        old_devpath \u003d old_vpmem.devpath"},{"line_number":5612,"context_line":"                        old_devpaths.append(old_devpath)"},{"line_number":5613,"context_line":"                    for new_vpmem in new_vpmems:"},{"line_number":5614,"context_line":"                        new_devpath \u003d new_vpmem.devpath"},{"line_number":5615,"context_line":"                        new_devpaths.append(new_devpath)"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"            disk_info \u003d self.driver.migrate_disk_and_power_off("},{"line_number":5618,"context_line":"                context, instance, migration.dest_host,"}],"source_content_type":"text/x-python","patch_set":1,"id":"07c104a9_775712ef","line":5615,"range":{"start_line":5601,"start_character":12,"end_line":5615,"end_character":56},"in_reply_to":"365c0917_9316c939","updated":"2021-07-29 12:21:33.000000000","message":"we the affect is not the same. right now the code deviats form the spec in a fundimental way so it cannot merge in its current state without updating the spec.\n\nwe also want to fail as early as possible by doing it in prep_resize so that if we cant claim the pmem devices in prep_resize we should abort the migration at that point before we send the notification that we have started resize or updated the instance task state.","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":30077,"name":"Qiu Fossen","display_name":"fossnqiu","email":"qiujunting@inspur.com","username":"qiufossen"},"change_message_id":"3295fb284d0023e6420a660500838cbd1927aef8","unresolved":true,"context_lines":[{"line_number":5598,"context_line":"            timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":5599,"context_line":"                instance, clean_shutdown)"},{"line_number":5600,"context_line":""},{"line_number":5601,"context_line":"            old_devpaths \u003d list()"},{"line_number":5602,"context_line":"            new_devpaths \u003d list()"},{"line_number":5603,"context_line":"            if copy_pmem_devices:"},{"line_number":5604,"context_line":"                old_vpmems \u003d self.driver.get_instance_vpmems("},{"line_number":5605,"context_line":"                    context, instance, prefix\u003d\u0027old\u0027)"},{"line_number":5606,"context_line":"                new_vpmems \u003d compute_rpcapi.get_instance_vpmems("},{"line_number":5607,"context_line":"                    context, instance, migration, migration.dest_compute,"},{"line_number":5608,"context_line":"                    prefix\u003d\u0027new\u0027)"},{"line_number":5609,"context_line":"                if old_vpmems and new_vpmems:"},{"line_number":5610,"context_line":"                    for old_vpmem in old_vpmems:"},{"line_number":5611,"context_line":"                        old_devpath \u003d old_vpmem.devpath"},{"line_number":5612,"context_line":"                        old_devpaths.append(old_devpath)"},{"line_number":5613,"context_line":"                    for new_vpmem in new_vpmems:"},{"line_number":5614,"context_line":"                        new_devpath \u003d new_vpmem.devpath"},{"line_number":5615,"context_line":"                        new_devpaths.append(new_devpath)"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"            disk_info \u003d self.driver.migrate_disk_and_power_off("},{"line_number":5618,"context_line":"                context, instance, migration.dest_host,"}],"source_content_type":"text/x-python","patch_set":1,"id":"365c0917_9316c939","line":5615,"range":{"start_line":5601,"start_character":12,"end_line":5615,"end_character":56},"in_reply_to":"74191bb8_2e3ba388","updated":"2021-07-29 09:57:00.000000000","message":"Hi sean, in the prep_resize the claimed PMEM resources include \"resource_class\",\"provider_uuid\",\"identifier\",\"metadata\", accord to \"identifier\" we can find unique pmem namespace \"devpath\". Because the \"identifier\" is unique in a same \"resource_class\".\n\nIf this is done in the prep_resize, need extend code to pass the \"devpath\", in this needn\u0027t to extend code, and the effect is same.","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2f29c3e7dc3d3d25d927ea424efa539250f1cf3f","unresolved":true,"context_lines":[{"line_number":5598,"context_line":"            timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":5599,"context_line":"                instance, clean_shutdown)"},{"line_number":5600,"context_line":""},{"line_number":5601,"context_line":"            old_devpaths \u003d list()"},{"line_number":5602,"context_line":"            new_devpaths \u003d list()"},{"line_number":5603,"context_line":"            if copy_pmem_devices:"},{"line_number":5604,"context_line":"                old_vpmems \u003d self.driver.get_instance_vpmems("},{"line_number":5605,"context_line":"                    context, instance, prefix\u003d\u0027old\u0027)"},{"line_number":5606,"context_line":"                new_vpmems \u003d compute_rpcapi.get_instance_vpmems("},{"line_number":5607,"context_line":"                    context, instance, migration, migration.dest_compute,"},{"line_number":5608,"context_line":"                    prefix\u003d\u0027new\u0027)"},{"line_number":5609,"context_line":"                if old_vpmems and new_vpmems:"},{"line_number":5610,"context_line":"                    for old_vpmem in old_vpmems:"},{"line_number":5611,"context_line":"                        old_devpath \u003d old_vpmem.devpath"},{"line_number":5612,"context_line":"                        old_devpaths.append(old_devpath)"},{"line_number":5613,"context_line":"                    for new_vpmem in new_vpmems:"},{"line_number":5614,"context_line":"                        new_devpath \u003d new_vpmem.devpath"},{"line_number":5615,"context_line":"                        new_devpaths.append(new_devpath)"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"            disk_info \u003d self.driver.migrate_disk_and_power_off("},{"line_number":5618,"context_line":"                context, instance, migration.dest_host,"}],"source_content_type":"text/x-python","patch_set":1,"id":"c1c33823_36453c35","line":5615,"range":{"start_line":5601,"start_character":12,"end_line":5615,"end_character":56},"in_reply_to":"8323e74a_e460dadc","updated":"2021-08-23 10:27:41.000000000","message":"yes the copy of the data should happen in migtate_disk_and_power_off\n\nbut the claim of the devices should happen in prep_resize,and the information regarding the new and old pmem devics should be be stored in the migration so that you are not intoduceing an addtional RPC to the destination here. pre_resize happens on the destiantion so it avoid the addtional rpc required by \n\n                new_vpmems \u003d compute_rpcapi.get_instance_vpmems(\n                    context, instance, migration, migration.dest_compute,\n                    prefix\u003d\u0027new\u0027)","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":30077,"name":"Qiu Fossen","display_name":"fossnqiu","email":"qiujunting@inspur.com","username":"qiufossen"},"change_message_id":"c9ae2fc0d0d35f05891f1f8ed00083cd909efd4b","unresolved":true,"context_lines":[{"line_number":5598,"context_line":"            timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":5599,"context_line":"                instance, clean_shutdown)"},{"line_number":5600,"context_line":""},{"line_number":5601,"context_line":"            old_devpaths \u003d list()"},{"line_number":5602,"context_line":"            new_devpaths \u003d list()"},{"line_number":5603,"context_line":"            if copy_pmem_devices:"},{"line_number":5604,"context_line":"                old_vpmems \u003d self.driver.get_instance_vpmems("},{"line_number":5605,"context_line":"                    context, instance, prefix\u003d\u0027old\u0027)"},{"line_number":5606,"context_line":"                new_vpmems \u003d compute_rpcapi.get_instance_vpmems("},{"line_number":5607,"context_line":"                    context, instance, migration, migration.dest_compute,"},{"line_number":5608,"context_line":"                    prefix\u003d\u0027new\u0027)"},{"line_number":5609,"context_line":"                if old_vpmems and new_vpmems:"},{"line_number":5610,"context_line":"                    for old_vpmem in old_vpmems:"},{"line_number":5611,"context_line":"                        old_devpath \u003d old_vpmem.devpath"},{"line_number":5612,"context_line":"                        old_devpaths.append(old_devpath)"},{"line_number":5613,"context_line":"                    for new_vpmem in new_vpmems:"},{"line_number":5614,"context_line":"                        new_devpath \u003d new_vpmem.devpath"},{"line_number":5615,"context_line":"                        new_devpaths.append(new_devpath)"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"            disk_info \u003d self.driver.migrate_disk_and_power_off("},{"line_number":5618,"context_line":"                context, instance, migration.dest_host,"}],"source_content_type":"text/x-python","patch_set":1,"id":"993a35ea_0c24f5e4","line":5615,"range":{"start_line":5601,"start_character":12,"end_line":5615,"end_character":56},"in_reply_to":"c1c33823_36453c35","updated":"2021-08-23 10:49:51.000000000","message":"I understand, I should get the new PMEM device and the old PMEM device in prep_size, and then pass them as parameters, copy the PMEM data in at migtate_disk_and_power_off. This leaves the rpc call.","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e487a79c90ead3d2aa1ec041652a0a0e6e46ddec","unresolved":true,"context_lines":[{"line_number":5598,"context_line":"            timeout, retry_interval \u003d self._get_power_off_values("},{"line_number":5599,"context_line":"                instance, clean_shutdown)"},{"line_number":5600,"context_line":""},{"line_number":5601,"context_line":"            old_devpaths \u003d list()"},{"line_number":5602,"context_line":"            new_devpaths \u003d list()"},{"line_number":5603,"context_line":"            if copy_pmem_devices:"},{"line_number":5604,"context_line":"                old_vpmems \u003d self.driver.get_instance_vpmems("},{"line_number":5605,"context_line":"                    context, instance, prefix\u003d\u0027old\u0027)"},{"line_number":5606,"context_line":"                new_vpmems \u003d compute_rpcapi.get_instance_vpmems("},{"line_number":5607,"context_line":"                    context, instance, migration, migration.dest_compute,"},{"line_number":5608,"context_line":"                    prefix\u003d\u0027new\u0027)"},{"line_number":5609,"context_line":"                if old_vpmems and new_vpmems:"},{"line_number":5610,"context_line":"                    for old_vpmem in old_vpmems:"},{"line_number":5611,"context_line":"                        old_devpath \u003d old_vpmem.devpath"},{"line_number":5612,"context_line":"                        old_devpaths.append(old_devpath)"},{"line_number":5613,"context_line":"                    for new_vpmem in new_vpmems:"},{"line_number":5614,"context_line":"                        new_devpath \u003d new_vpmem.devpath"},{"line_number":5615,"context_line":"                        new_devpaths.append(new_devpath)"},{"line_number":5616,"context_line":""},{"line_number":5617,"context_line":"            disk_info \u003d self.driver.migrate_disk_and_power_off("},{"line_number":5618,"context_line":"                context, instance, migration.dest_host,"}],"source_content_type":"text/x-python","patch_set":2,"id":"0421ad5e_5128d9e1","line":5615,"range":{"start_line":5601,"start_character":8,"end_line":5615,"end_character":56},"updated":"2021-07-29 12:22:56.000000000","message":"im still -1 on doing this here.\ni dont think you have made a stong enough argument for changign the design form what was approved.","commit_id":"c962881bd049d4570a40a86eddc20ea3934d0e6d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aa520ddcf0c5a1df8be9903562b3f11397186e88","unresolved":true,"context_lines":[{"line_number":5601,"context_line":"            old_devpaths \u003d list()"},{"line_number":5602,"context_line":"            new_devpaths \u003d list()"},{"line_number":5603,"context_line":"            if copy_pmem_devices:"},{"line_number":5604,"context_line":"                old_vpmems \u003d self.driver.get_instance_vpmems("},{"line_number":5605,"context_line":"                    context, instance, prefix\u003d\u0027old\u0027)"},{"line_number":5606,"context_line":"                new_vpmems \u003d compute_rpcapi.get_instance_vpmems("},{"line_number":5607,"context_line":"                    context, instance, migration, migration.dest_compute,"}],"source_content_type":"text/x-python","patch_set":3,"id":"0cd5f984_1543d382","line":5604,"range":{"start_line":5604,"start_character":41,"end_line":5604,"end_character":60},"updated":"2021-08-23 10:38:20.000000000","message":"actully  i dont see this function where is it defined?\ni dont see it in the compute api either by the way","commit_id":"e567f4d88b58c49544ac65139ea61c0ea6b8e853"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aa520ddcf0c5a1df8be9903562b3f11397186e88","unresolved":true,"context_lines":[{"line_number":5603,"context_line":"            if copy_pmem_devices:"},{"line_number":5604,"context_line":"                old_vpmems \u003d self.driver.get_instance_vpmems("},{"line_number":5605,"context_line":"                    context, instance, prefix\u003d\u0027old\u0027)"},{"line_number":5606,"context_line":"                new_vpmems \u003d compute_rpcapi.get_instance_vpmems("},{"line_number":5607,"context_line":"                    context, instance, migration, migration.dest_compute,"},{"line_number":5608,"context_line":"                    prefix\u003d\u0027new\u0027)"},{"line_number":5609,"context_line":"                if old_vpmems and new_vpmems:"},{"line_number":5610,"context_line":"                    for old_vpmem in old_vpmems:"},{"line_number":5611,"context_line":"                        old_devpath \u003d old_vpmem.devpath"}],"source_content_type":"text/x-python","patch_set":3,"id":"27da4822_97824785","line":5608,"range":{"start_line":5606,"start_character":10,"end_line":5608,"end_character":33},"updated":"2021-08-23 10:38:20.000000000","message":"this is still intoducing extra rpc calls by not doing this in pre_resize and you have not extende the move claim to claim the pmem devices in prep_resize.","commit_id":"e567f4d88b58c49544ac65139ea61c0ea6b8e853"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4e308b8742fc51c06d93a5595f2f127827eaa80e","unresolved":true,"context_lines":[{"line_number":5203,"context_line":"            self.compute_rpcapi.resize_instance("},{"line_number":5204,"context_line":"                context, instance, claim.migration, image,"},{"line_number":5205,"context_line":"                flavor, request_spec, clean_shutdown,"},{"line_number":5206,"context_line":"                old_devpaths, new_devpaths)"},{"line_number":5207,"context_line":""},{"line_number":5208,"context_line":"    def _send_prep_resize_notifications("},{"line_number":5209,"context_line":"            self, context, instance, phase, flavor):"}],"source_content_type":"text/x-python","patch_set":5,"id":"091090e1_5950a405","line":5206,"range":{"start_line":5206,"start_character":16,"end_line":5206,"end_character":42},"updated":"2021-09-16 09:57:13.000000000","message":"-1 this is not inline with the spec.\n\ninstead of modifying the  rpc call you should store this info in the migration context or migration object.","commit_id":"f770ea8d35d7a5f714ebd9ff12ee564efd67df2b"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b1881461a9518e55fae38bba8972143c1df9eab6","unresolved":true,"context_lines":[{"line_number":10748,"context_line":"    def _migrate_vpmem_data(self, old_devpaths, new_devpaths, dest):"},{"line_number":10749,"context_line":"        if old_devpaths and new_devpaths and \\"},{"line_number":10750,"context_line":"                len(old_devpaths) \u003d\u003d len(new_devpaths):"},{"line_number":10751,"context_line":"            for i in range(len(old_devpaths)):"},{"line_number":10752,"context_line":"                pmem_cmd1 \u003d [\u0027daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpaths[i]]"},{"line_number":10753,"context_line":"                processutils.execute(*pmem_cmd1)"},{"line_number":10754,"context_line":"                pmem_cmd2 \u003d [\u0027ssh\u0027, dest]"}],"source_content_type":"text/x-python","patch_set":1,"id":"2f0c8c28_1d5c16e6","line":10751,"range":{"start_line":10751,"start_character":12,"end_line":10751,"end_character":46},"updated":"2021-07-27 13:36:00.000000000","message":"by the way this works but it proably nice to zip the old_paths and new paths and iterate over the resultent touples to aovid needign ot use i and index\n\ne.g. for old, new in zip(old_devpaths, new_devpaths):","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4aab84792beb09f548a3db783416d87f0b02d96d","unresolved":false,"context_lines":[{"line_number":10748,"context_line":"    def _migrate_vpmem_data(self, old_devpaths, new_devpaths, dest):"},{"line_number":10749,"context_line":"        if old_devpaths and new_devpaths and \\"},{"line_number":10750,"context_line":"                len(old_devpaths) \u003d\u003d len(new_devpaths):"},{"line_number":10751,"context_line":"            for i in range(len(old_devpaths)):"},{"line_number":10752,"context_line":"                pmem_cmd1 \u003d [\u0027daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpaths[i]]"},{"line_number":10753,"context_line":"                processutils.execute(*pmem_cmd1)"},{"line_number":10754,"context_line":"                pmem_cmd2 \u003d [\u0027ssh\u0027, dest]"}],"source_content_type":"text/x-python","patch_set":1,"id":"4b6bd707_f112c799","line":10751,"range":{"start_line":10751,"start_character":12,"end_line":10751,"end_character":46},"in_reply_to":"1ec86550_653fcfb4","updated":"2021-07-29 12:31:11.000000000","message":"Done","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":30077,"name":"Qiu Fossen","display_name":"fossnqiu","email":"qiujunting@inspur.com","username":"qiufossen"},"change_message_id":"3295fb284d0023e6420a660500838cbd1927aef8","unresolved":true,"context_lines":[{"line_number":10748,"context_line":"    def _migrate_vpmem_data(self, old_devpaths, new_devpaths, dest):"},{"line_number":10749,"context_line":"        if old_devpaths and new_devpaths and \\"},{"line_number":10750,"context_line":"                len(old_devpaths) \u003d\u003d len(new_devpaths):"},{"line_number":10751,"context_line":"            for i in range(len(old_devpaths)):"},{"line_number":10752,"context_line":"                pmem_cmd1 \u003d [\u0027daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpaths[i]]"},{"line_number":10753,"context_line":"                processutils.execute(*pmem_cmd1)"},{"line_number":10754,"context_line":"                pmem_cmd2 \u003d [\u0027ssh\u0027, dest]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ec86550_653fcfb4","line":10751,"range":{"start_line":10751,"start_character":12,"end_line":10751,"end_character":46},"in_reply_to":"2f0c8c28_1d5c16e6","updated":"2021-07-29 09:57:00.000000000","message":"yeah, i will change this","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4ebb96d732e627ff0d6510876eaedd79f10e725b","unresolved":true,"context_lines":[{"line_number":10749,"context_line":"        if old_devpaths and new_devpaths and \\"},{"line_number":10750,"context_line":"                len(old_devpaths) \u003d\u003d len(new_devpaths):"},{"line_number":10751,"context_line":"            for i in range(len(old_devpaths)):"},{"line_number":10752,"context_line":"                pmem_cmd1 \u003d [\u0027daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpaths[i]]"},{"line_number":10753,"context_line":"                processutils.execute(*pmem_cmd1)"},{"line_number":10754,"context_line":"                pmem_cmd2 \u003d [\u0027ssh\u0027, dest]"},{"line_number":10755,"context_line":"                processutils.execute(*pmem_cmd2)"},{"line_number":10756,"context_line":"                pmem_cmd3 \u003d [\u0027daxio\u0027, \u0027-i\u0027, \u0027%s\u0027 % new_devpaths[i]]"},{"line_number":10757,"context_line":"                processutils.execute(*pmem_cmd3)"},{"line_number":10758,"context_line":""},{"line_number":10759,"context_line":"    def _cleanup_new_vpmem(self, new_devpaths, dest):"},{"line_number":10760,"context_line":"        if not new_devpaths:"}],"source_content_type":"text/x-python","patch_set":1,"id":"f8b7b7b8_7b58a894","line":10757,"range":{"start_line":10752,"start_character":16,"end_line":10757,"end_character":48},"updated":"2021-07-27 13:13:26.000000000","message":"does this require elevated privileges.\nalso this look like its wont work you should be piping the command together.\n\nthis is effectivly doing \n\"daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpaths[i]\" then ssh in a second shell\nthen  [\u0027daxio\u0027, \u0027-i\u0027, \u0027%s\u0027 % new_devpaths[i]] in a third.\n\nhttps://github.com/openstack/oslo.concurrency/blob/master/oslo_concurrency/processutils.py#L200\n\neach time the command is executed it spawnas a new sub process\nhttps://github.com/openstack/oslo.concurrency/blob/master/oslo_concurrency/processutils.py#L395-L403\n\n-1","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":30077,"name":"Qiu Fossen","display_name":"fossnqiu","email":"qiujunting@inspur.com","username":"qiufossen"},"change_message_id":"3295fb284d0023e6420a660500838cbd1927aef8","unresolved":true,"context_lines":[{"line_number":10749,"context_line":"        if old_devpaths and new_devpaths and \\"},{"line_number":10750,"context_line":"                len(old_devpaths) \u003d\u003d len(new_devpaths):"},{"line_number":10751,"context_line":"            for i in range(len(old_devpaths)):"},{"line_number":10752,"context_line":"                pmem_cmd1 \u003d [\u0027daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpaths[i]]"},{"line_number":10753,"context_line":"                processutils.execute(*pmem_cmd1)"},{"line_number":10754,"context_line":"                pmem_cmd2 \u003d [\u0027ssh\u0027, dest]"},{"line_number":10755,"context_line":"                processutils.execute(*pmem_cmd2)"},{"line_number":10756,"context_line":"                pmem_cmd3 \u003d [\u0027daxio\u0027, \u0027-i\u0027, \u0027%s\u0027 % new_devpaths[i]]"},{"line_number":10757,"context_line":"                processutils.execute(*pmem_cmd3)"},{"line_number":10758,"context_line":""},{"line_number":10759,"context_line":"    def _cleanup_new_vpmem(self, new_devpaths, dest):"},{"line_number":10760,"context_line":"        if not new_devpaths:"}],"source_content_type":"text/x-python","patch_set":1,"id":"cc0cb0cd_0ce11ad3","line":10757,"range":{"start_line":10752,"start_character":16,"end_line":10757,"end_character":48},"in_reply_to":"6d4ae130_64e1890f","updated":"2021-07-29 09:57:00.000000000","message":"i will change this","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4aab84792beb09f548a3db783416d87f0b02d96d","unresolved":true,"context_lines":[{"line_number":10749,"context_line":"        if old_devpaths and new_devpaths and \\"},{"line_number":10750,"context_line":"                len(old_devpaths) \u003d\u003d len(new_devpaths):"},{"line_number":10751,"context_line":"            for i in range(len(old_devpaths)):"},{"line_number":10752,"context_line":"                pmem_cmd1 \u003d [\u0027daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpaths[i]]"},{"line_number":10753,"context_line":"                processutils.execute(*pmem_cmd1)"},{"line_number":10754,"context_line":"                pmem_cmd2 \u003d [\u0027ssh\u0027, dest]"},{"line_number":10755,"context_line":"                processutils.execute(*pmem_cmd2)"},{"line_number":10756,"context_line":"                pmem_cmd3 \u003d [\u0027daxio\u0027, \u0027-i\u0027, \u0027%s\u0027 % new_devpaths[i]]"},{"line_number":10757,"context_line":"                processutils.execute(*pmem_cmd3)"},{"line_number":10758,"context_line":""},{"line_number":10759,"context_line":"    def _cleanup_new_vpmem(self, new_devpaths, dest):"},{"line_number":10760,"context_line":"        if not new_devpaths:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5448b68f_e2947f78","line":10757,"range":{"start_line":10752,"start_character":16,"end_line":10757,"end_character":48},"in_reply_to":"cc0cb0cd_0ce11ad3","updated":"2021-07-29 12:31:11.000000000","message":"this is not done in v2","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d394c809fcdf56a2071f6794482f74acdd5847fc","unresolved":true,"context_lines":[{"line_number":10749,"context_line":"        if old_devpaths and new_devpaths and \\"},{"line_number":10750,"context_line":"                len(old_devpaths) \u003d\u003d len(new_devpaths):"},{"line_number":10751,"context_line":"            for i in range(len(old_devpaths)):"},{"line_number":10752,"context_line":"                pmem_cmd1 \u003d [\u0027daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpaths[i]]"},{"line_number":10753,"context_line":"                processutils.execute(*pmem_cmd1)"},{"line_number":10754,"context_line":"                pmem_cmd2 \u003d [\u0027ssh\u0027, dest]"},{"line_number":10755,"context_line":"                processutils.execute(*pmem_cmd2)"},{"line_number":10756,"context_line":"                pmem_cmd3 \u003d [\u0027daxio\u0027, \u0027-i\u0027, \u0027%s\u0027 % new_devpaths[i]]"},{"line_number":10757,"context_line":"                processutils.execute(*pmem_cmd3)"},{"line_number":10758,"context_line":""},{"line_number":10759,"context_line":"    def _cleanup_new_vpmem(self, new_devpaths, dest):"},{"line_number":10760,"context_line":"        if not new_devpaths:"}],"source_content_type":"text/x-python","patch_set":1,"id":"6d4ae130_64e1890f","line":10757,"range":{"start_line":10752,"start_character":16,"end_line":10757,"end_character":48},"in_reply_to":"f8b7b7b8_7b58a894","updated":"2021-07-27 13:31:19.000000000","message":"this is the correct way to do this https://security.openstack.org/guidelines/dg_avoid-shell-true.html#correct\n\n\n    read_pmem \u003d [\u0027daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpaths[i]]\n    write_pmem \u003d [\u0027ssh\u0027, dest, \u0027daxio\u0027, \u0027-i\u0027, \u0027%s\u0027 % new_devpaths[i]]\n    process_read \u003d subprocess.Popen(read_pmem, stdout\u003dsubprocess.PIPE,\n                                    shell\u003dFalse)\n    process_write \u003d subprocess.Popen(write_pmem, stdin\u003dprocess_read.stdout,\n                                  stdout\u003dsubprocess.PIPE, shell\u003dFalse)\n    # Allow process_read to receive a SIGPIPE if process_wc exits.\n    process_read.stdout.close()\n    result \u003d process_write.communicate() # you can discard result if we dont need it.","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d394c809fcdf56a2071f6794482f74acdd5847fc","unresolved":true,"context_lines":[{"line_number":10762,"context_line":"        pmem_ssh_cmd \u003d [\u0027ssh\u0027, dest]"},{"line_number":10763,"context_line":"        for i in range(len(new_devpaths)):"},{"line_number":10764,"context_line":"            try:"},{"line_number":10765,"context_line":"                processutils.execute(*pmem_ssh_cmd)"},{"line_number":10766,"context_line":"                daxio_cmd \u003d [\u0027daxio\u0027, \u0027-z\u0027, \u0027-o\u0027, \u0027%s\u0027 % new_devpaths[i]]"},{"line_number":10767,"context_line":"                processutils.execute(*daxio_cmd)"},{"line_number":10768,"context_line":"            except:"},{"line_number":10769,"context_line":"                LOG.error(\"cleanup vpmem (%s) data failed\", new_devpaths[i])"},{"line_number":10770,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"0520309f_82727d90","line":10767,"range":{"start_line":10765,"start_character":15,"end_line":10767,"end_character":48},"updated":"2021-07-27 13:31:19.000000000","message":"same as above you cant just execute ssh then execute another command.","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":30077,"name":"Qiu Fossen","display_name":"fossnqiu","email":"qiujunting@inspur.com","username":"qiufossen"},"change_message_id":"3295fb284d0023e6420a660500838cbd1927aef8","unresolved":true,"context_lines":[{"line_number":10762,"context_line":"        pmem_ssh_cmd \u003d [\u0027ssh\u0027, dest]"},{"line_number":10763,"context_line":"        for i in range(len(new_devpaths)):"},{"line_number":10764,"context_line":"            try:"},{"line_number":10765,"context_line":"                processutils.execute(*pmem_ssh_cmd)"},{"line_number":10766,"context_line":"                daxio_cmd \u003d [\u0027daxio\u0027, \u0027-z\u0027, \u0027-o\u0027, \u0027%s\u0027 % new_devpaths[i]]"},{"line_number":10767,"context_line":"                processutils.execute(*daxio_cmd)"},{"line_number":10768,"context_line":"            except:"},{"line_number":10769,"context_line":"                LOG.error(\"cleanup vpmem (%s) data failed\", new_devpaths[i])"},{"line_number":10770,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8fee7a08_639f54de","line":10767,"range":{"start_line":10765,"start_character":15,"end_line":10767,"end_character":48},"in_reply_to":"0520309f_82727d90","updated":"2021-07-29 09:57:00.000000000","message":"i will change this","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4aab84792beb09f548a3db783416d87f0b02d96d","unresolved":false,"context_lines":[{"line_number":10762,"context_line":"        pmem_ssh_cmd \u003d [\u0027ssh\u0027, dest]"},{"line_number":10763,"context_line":"        for i in range(len(new_devpaths)):"},{"line_number":10764,"context_line":"            try:"},{"line_number":10765,"context_line":"                processutils.execute(*pmem_ssh_cmd)"},{"line_number":10766,"context_line":"                daxio_cmd \u003d [\u0027daxio\u0027, \u0027-z\u0027, \u0027-o\u0027, \u0027%s\u0027 % new_devpaths[i]]"},{"line_number":10767,"context_line":"                processutils.execute(*daxio_cmd)"},{"line_number":10768,"context_line":"            except:"},{"line_number":10769,"context_line":"                LOG.error(\"cleanup vpmem (%s) data failed\", new_devpaths[i])"},{"line_number":10770,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"73820300_9b49abd7","line":10767,"range":{"start_line":10765,"start_character":15,"end_line":10767,"end_character":48},"in_reply_to":"8fee7a08_639f54de","updated":"2021-07-29 12:31:11.000000000","message":"Done","commit_id":"0608bf69c562513fe9e3b0582c5949473158de9a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4aab84792beb09f548a3db783416d87f0b02d96d","unresolved":true,"context_lines":[{"line_number":10749,"context_line":"        if old_devpaths and new_devpaths and \\"},{"line_number":10750,"context_line":"                len(old_devpaths) \u003d\u003d len(new_devpaths):"},{"line_number":10751,"context_line":"            for old_devpath, new_devpath in zip(old_devpaths, new_devpaths):"},{"line_number":10752,"context_line":"                read_pmem \u003d [\u0027daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpath]"},{"line_number":10753,"context_line":"                processutils.execute(*read_pmem)"},{"line_number":10754,"context_line":"                write_pmem \u003d [\u0027ssh\u0027, dest, [\u0027daxio\u0027, \u0027-i\u0027, \u0027%s\u0027 % new_devpath]"},{"line_number":10755,"context_line":"                processutils.execute(*write_pmem)"},{"line_number":10756,"context_line":""},{"line_number":10757,"context_line":"    def _cleanup_new_vpmem(self, new_devpaths, dest):"},{"line_number":10758,"context_line":"        if not new_devpaths:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1e30ed92_1996c34d","line":10755,"range":{"start_line":10752,"start_character":16,"end_line":10755,"end_character":49},"updated":"2021-07-29 12:31:11.000000000","message":"read_pmem \u003d [\u0027daxio\u0027, \u0027-o\u0027, \u0027%s\u0027 % old_devpath]\n    write_pmem \u003d [\u0027ssh\u0027, dest, \u0027daxio\u0027, \u0027-i\u0027, \u0027%s\u0027 % new_devpath]\n    process_read \u003d subprocess.Popen(\n        read_pmem, stdout\u003dsubprocess.PIPE, shell\u003dFalse)\n    process_write \u003d subprocess.Popen(\n        write_pmem, stdin\u003dprocess_read.stdout, stdout\u003dsubprocess.PIPE, shell\u003dFalse)\n    # Allow process_read to receive a SIGPIPE if process_wc exits.\n    process_read.stdout.close()\n    process_write.communicate()\n\nyou still have the same issue  \nprocessutils.execute(*read_pmem) will not forward the output to   processutils.execute(*write_pmem)","commit_id":"c962881bd049d4570a40a86eddc20ea3934d0e6d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4aab84792beb09f548a3db783416d87f0b02d96d","unresolved":true,"context_lines":[{"line_number":10764,"context_line":"                processutils.execute(*clean_pmem)"},{"line_number":10765,"context_line":"                except Exception:"},{"line_number":10766,"context_line":"                LOG.error(\"cleanup vpmem (%s) data failed\", new_devpaths[i])"},{"line_number":10767,"context_line":"                raise"},{"line_number":10768,"context_line":""},{"line_number":10769,"context_line":"    def migrate_disk_and_power_off(self, context, instance, dest,"},{"line_number":10770,"context_line":"                                   flavor, network_info,"}],"source_content_type":"text/x-python","patch_set":2,"id":"42ef39de_5fd71cc3","line":10767,"range":{"start_line":10767,"start_character":16,"end_line":10767,"end_character":21},"updated":"2021-07-29 12:31:11.000000000","message":"where will this be handeled?","commit_id":"c962881bd049d4570a40a86eddc20ea3934d0e6d"},{"author":{"_account_id":30077,"name":"Qiu Fossen","display_name":"fossnqiu","email":"qiujunting@inspur.com","username":"qiufossen"},"change_message_id":"55abb0507ec59a09e4caaa4445cbedb497535458","unresolved":true,"context_lines":[{"line_number":10764,"context_line":"                processutils.execute(*clean_pmem)"},{"line_number":10765,"context_line":"                except Exception:"},{"line_number":10766,"context_line":"                LOG.error(\"cleanup vpmem (%s) data failed\", new_devpaths[i])"},{"line_number":10767,"context_line":"                raise"},{"line_number":10768,"context_line":""},{"line_number":10769,"context_line":"    def migrate_disk_and_power_off(self, context, instance, dest,"},{"line_number":10770,"context_line":"                                   flavor, network_info,"}],"source_content_type":"text/x-python","patch_set":2,"id":"6eeee4ef_96836de2","line":10767,"range":{"start_line":10767,"start_character":16,"end_line":10767,"end_character":21},"in_reply_to":"42ef39de_5fd71cc3","updated":"2021-08-06 01:46:12.000000000","message":"this need not raise.","commit_id":"c962881bd049d4570a40a86eddc20ea3934d0e6d"}]}
