)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b417a15eb0ff1ee9a0bb8ea4da4f8cd89b9dcc06","unresolved":false,"context_lines":[{"line_number":4018,"context_line":"            ctxt, instance, bdms\u003dbdms)"},{"line_number":4019,"context_line":"        LOG.debug(\u0027Destroying guest from source hypervisor including disks.\u0027,"},{"line_number":4020,"context_line":"                  instance\u003dinstance)"},{"line_number":4021,"context_line":"        # Note that this will also unplug VIFs and disconnect volumes from"},{"line_number":4022,"context_line":"        # this source host."},{"line_number":4023,"context_line":"        self.driver.destroy("},{"line_number":4024,"context_line":"            ctxt, instance, network_info, block_device_info\u003dblock_device_info,"},{"line_number":4025,"context_line":"            destroy_disks\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_487e8caf","line":4022,"range":{"start_line":4021,"start_character":8,"end_line":4022,"end_character":27},"updated":"2019-02-15 13:28:27.000000000","message":"Which we already did during finish_snapshot_based_resize_at_source_host.","commit_id":"24c8a397a43bef0c45760b06622dbdec2b919557"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b417a15eb0ff1ee9a0bb8ea4da4f8cd89b9dcc06","unresolved":false,"context_lines":[{"line_number":4020,"context_line":"                  instance\u003dinstance)"},{"line_number":4021,"context_line":"        # Note that this will also unplug VIFs and disconnect volumes from"},{"line_number":4022,"context_line":"        # this source host."},{"line_number":4023,"context_line":"        self.driver.destroy("},{"line_number":4024,"context_line":"            ctxt, instance, network_info, block_device_info\u003dblock_device_info,"},{"line_number":4025,"context_line":"            destroy_disks\u003dTrue)"},{"line_number":4026,"context_line":""},{"line_number":4027,"context_line":"        # Delete port bindings for the source host. This relies on the"},{"line_number":4028,"context_line":"        # instance.host not being the same as the host we pass in, so we"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_084e4496","line":4025,"range":{"start_line":4023,"start_character":8,"end_line":4025,"end_character":31},"updated":"2019-02-15 13:28:27.000000000","message":"This might raise InstanceNotFound since we already destroyed the guest in finish_snapshot_based_resize_at_source_host. Need to dig into what happens if the guest is already gone since we still need to cleanup the disks.","commit_id":"24c8a397a43bef0c45760b06622dbdec2b919557"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ad810ae08de8e3e47be75947657e74f1778a7056","unresolved":false,"context_lines":[{"line_number":4020,"context_line":"                  instance\u003dinstance)"},{"line_number":4021,"context_line":"        # Note that this will also unplug VIFs and disconnect volumes from"},{"line_number":4022,"context_line":"        # this source host."},{"line_number":4023,"context_line":"        self.driver.destroy("},{"line_number":4024,"context_line":"            ctxt, instance, network_info, block_device_info\u003dblock_device_info,"},{"line_number":4025,"context_line":"            destroy_disks\u003dTrue)"},{"line_number":4026,"context_line":""},{"line_number":4027,"context_line":"        # Delete port bindings for the source host. This relies on the"},{"line_number":4028,"context_line":"        # instance.host not being the same as the host we pass in, so we"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_2db1cd44","line":4025,"range":{"start_line":4023,"start_character":8,"end_line":4025,"end_character":31},"in_reply_to":"9fdfeff1_084e4496","updated":"2019-02-15 21:29:17.000000000","message":"Use the driver.cleanup() method which is perfect for this.","commit_id":"24c8a397a43bef0c45760b06622dbdec2b919557"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"af1aaa7ad285c31e35c90a9f753679f3a43e70f1","unresolved":false,"context_lines":[{"line_number":3996,"context_line":"            self, ctxt, instance, migration):"},{"line_number":3997,"context_line":"        \"\"\"Private version of confirm_snapshot_based_resize_at_source"},{"line_number":3998,"context_line":""},{"line_number":3999,"context_line":"        This allows the main method to be decorator with error handlers."},{"line_number":4000,"context_line":""},{"line_number":4001,"context_line":"        :param ctxt: nova auth request context target at the source cell"},{"line_number":4002,"context_line":"        :param instance: Instance object being resized which should have the"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_04ca846d","line":3999,"range":{"start_line":3999,"start_character":42,"end_line":3999,"end_character":51},"updated":"2019-02-18 20:32:07.000000000","message":"decorated","commit_id":"ff4bf03246ae71d1d6d85205f43d9726d6b499a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3822bc2f310104136a7aebb6b8cd70d54658813f","unresolved":false,"context_lines":[{"line_number":3996,"context_line":"            self, ctxt, instance, migration):"},{"line_number":3997,"context_line":"        \"\"\"Private version of confirm_snapshot_based_resize_at_source"},{"line_number":3998,"context_line":""},{"line_number":3999,"context_line":"        This allows the main method to be decorator with error handlers."},{"line_number":4000,"context_line":""},{"line_number":4001,"context_line":"        :param ctxt: nova auth request context target at the source cell"},{"line_number":4002,"context_line":"        :param instance: Instance object being resized which should have the"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_91c0d87e","line":3999,"range":{"start_line":3999,"start_character":42,"end_line":3999,"end_character":51},"in_reply_to":"9fdfeff1_04ca846d","updated":"2019-02-19 20:28:11.000000000","message":"Done","commit_id":"ff4bf03246ae71d1d6d85205f43d9726d6b499a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b64a39f56b9774d4af5050cfec8657cf158d49a5","unresolved":false,"context_lines":[{"line_number":3998,"context_line":""},{"line_number":3999,"context_line":"        This allows the main method to be decorator with error handlers."},{"line_number":4000,"context_line":""},{"line_number":4001,"context_line":"        :param ctxt: nova auth request context target at the source cell"},{"line_number":4002,"context_line":"        :param instance: Instance object being resized which should have the"},{"line_number":4003,"context_line":"            \"old_flavor\" attribute set"},{"line_number":4004,"context_line":"        :param migration: Migration object for the resize operation"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_84a3d4b1","line":4001,"range":{"start_line":4001,"start_character":47,"end_line":4001,"end_character":53},"updated":"2019-02-18 20:33:05.000000000","message":"targeted","commit_id":"ff4bf03246ae71d1d6d85205f43d9726d6b499a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3822bc2f310104136a7aebb6b8cd70d54658813f","unresolved":false,"context_lines":[{"line_number":3998,"context_line":""},{"line_number":3999,"context_line":"        This allows the main method to be decorator with error handlers."},{"line_number":4000,"context_line":""},{"line_number":4001,"context_line":"        :param ctxt: nova auth request context target at the source cell"},{"line_number":4002,"context_line":"        :param instance: Instance object being resized which should have the"},{"line_number":4003,"context_line":"            \"old_flavor\" attribute set"},{"line_number":4004,"context_line":"        :param migration: Migration object for the resize operation"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_31bd6c02","line":4001,"range":{"start_line":4001,"start_character":47,"end_line":4001,"end_character":53},"in_reply_to":"9fdfeff1_84a3d4b1","updated":"2019-02-19 20:28:11.000000000","message":"Done","commit_id":"ff4bf03246ae71d1d6d85205f43d9726d6b499a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"febaf330bb8624f5ed03f426729a27e9478a7623","unresolved":false,"context_lines":[{"line_number":4051,"context_line":"        # Free up the old_flavor usage from the resource tracker for this host."},{"line_number":4052,"context_line":"        self.rt.drop_move_claim("},{"line_number":4053,"context_line":"            ctxt, instance, migration.source_node, instance.old_flavor,"},{"line_number":4054,"context_line":"            prefix\u003d\u0027old_\u0027)"},{"line_number":4055,"context_line":""},{"line_number":4056,"context_line":"        # Free up the old_flavor usage in placement for this host."},{"line_number":4057,"context_line":"        # TODO(mriedem): Should we catch and ignore AllocationDeleteFailed?"}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_bc8596af","line":4054,"updated":"2019-03-07 20:33:54.000000000","message":"We should probably call instance.drop_migration_context() here as well - granted, conductor is going to delete this instance, but it\u0027s probably good to get rid of it for data consistency reasons in case something fails in conductor.","commit_id":"f93e535f52e37944b1fa64358c0f1d058a47cbe7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9deeb22a8e2dcdcd764b222db09554e5dfa4bdc7","unresolved":false,"context_lines":[{"line_number":4051,"context_line":"        # Free up the old_flavor usage from the resource tracker for this host."},{"line_number":4052,"context_line":"        self.rt.drop_move_claim("},{"line_number":4053,"context_line":"            ctxt, instance, migration.source_node, instance.old_flavor,"},{"line_number":4054,"context_line":"            prefix\u003d\u0027old_\u0027)"},{"line_number":4055,"context_line":""},{"line_number":4056,"context_line":"        # Free up the old_flavor usage in placement for this host."},{"line_number":4057,"context_line":"        # TODO(mriedem): Should we catch and ignore AllocationDeleteFailed?"}],"source_content_type":"text/x-python","patch_set":7,"id":"5fc1f717_6d7d36b0","line":4054,"in_reply_to":"5fc1f717_bc8596af","updated":"2019-03-10 20:06:49.000000000","message":"Done","commit_id":"f93e535f52e37944b1fa64358c0f1d058a47cbe7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0dc9ae1157d0d853e0658c3534a9df7f00601827","unresolved":false,"context_lines":[{"line_number":4148,"context_line":"        instance.drop_migration_context()"},{"line_number":4149,"context_line":""},{"line_number":4150,"context_line":"        # Free up the old_flavor usage in placement for this host."},{"line_number":4151,"context_line":"        # TODO(mriedem): Should we catch and ignore AllocationDeleteFailed?"},{"line_number":4152,"context_line":"        # What is the user\u0027s recourse if we got this far but this fails? At"},{"line_number":4153,"context_line":"        # this point the instance is on the target host and the allocations"},{"line_number":4154,"context_line":"        # could just be manually cleaned up by the operator."},{"line_number":4155,"context_line":"        self._delete_allocation_after_move(ctxt, instance, migration)"},{"line_number":4156,"context_line":""},{"line_number":4157,"context_line":"        migration.status \u003d \u0027confirmed\u0027"},{"line_number":4158,"context_line":"        migration.save()"}],"source_content_type":"text/x-python","patch_set":15,"id":"5fc1f717_4607cfca","line":4155,"range":{"start_line":4151,"start_character":8,"end_line":4155,"end_character":69},"updated":"2019-04-04 15:15:13.000000000","message":"Should move this to the outer method and handle like in this change:\n\nhttps://review.openstack.org/#/c/647566/\n\nWe want to try and cleanup allocations during confirm regardless of something like driver.cleanup failing.","commit_id":"5eedd33f5692c05dc31d927109cae16e3acabe27"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4ee4eac49acdba89fee7bf3946d22448e4217af5","unresolved":false,"context_lines":[{"line_number":4148,"context_line":"        instance.drop_migration_context()"},{"line_number":4149,"context_line":""},{"line_number":4150,"context_line":"        # Free up the old_flavor usage in placement for this host."},{"line_number":4151,"context_line":"        # TODO(mriedem): Should we catch and ignore AllocationDeleteFailed?"},{"line_number":4152,"context_line":"        # What is the user\u0027s recourse if we got this far but this fails? At"},{"line_number":4153,"context_line":"        # this point the instance is on the target host and the allocations"},{"line_number":4154,"context_line":"        # could just be manually cleaned up by the operator."},{"line_number":4155,"context_line":"        self._delete_allocation_after_move(ctxt, instance, migration)"},{"line_number":4156,"context_line":""},{"line_number":4157,"context_line":"        migration.status \u003d \u0027confirmed\u0027"},{"line_number":4158,"context_line":"        migration.save()"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fce034c_b096d03d","line":4155,"range":{"start_line":4151,"start_character":8,"end_line":4155,"end_character":69},"in_reply_to":"5fc1f717_4607cfca","updated":"2019-04-17 22:00:02.000000000","message":"Done","commit_id":"5eedd33f5692c05dc31d927109cae16e3acabe27"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6316f8e2ad87c23cb3937239b8be7e220a3449ff","unresolved":false,"context_lines":[{"line_number":4183,"context_line":"        # already destroyed on this host. block_device_info\u003dNone and"},{"line_number":4184,"context_line":"        # destroy_vifs\u003dFalse means cleanup() will not try to disconnect volumes"},{"line_number":4185,"context_line":"        # or unplug VIFs."},{"line_number":4186,"context_line":"        self.driver.cleanup("},{"line_number":4187,"context_line":"            ctxt, instance, network_info, destroy_disks\u003dTrue,"},{"line_number":4188,"context_line":"            destroy_vifs\u003dFalse)"},{"line_number":4189,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"bfb3d3c7_28921558","line":4186,"updated":"2019-05-31 14:26:12.000000000","message":"Looks like we need to update to mirror this now:\n\nhttps://review.opendev.org/#/c/643024/6/nova/compute/manager.py","commit_id":"f37e602a845777555767c75c99e5eda64e58b377"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c7f6a9651b2e7429e4192fbbc303767867f425ea","unresolved":false,"context_lines":[{"line_number":4183,"context_line":"        # already destroyed on this host. block_device_info\u003dNone and"},{"line_number":4184,"context_line":"        # destroy_vifs\u003dFalse means cleanup() will not try to disconnect volumes"},{"line_number":4185,"context_line":"        # or unplug VIFs."},{"line_number":4186,"context_line":"        self.driver.cleanup("},{"line_number":4187,"context_line":"            ctxt, instance, network_info, destroy_disks\u003dTrue,"},{"line_number":4188,"context_line":"            destroy_vifs\u003dFalse)"},{"line_number":4189,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"9fb8cfa7_68a2a8ff","line":4186,"in_reply_to":"bfb3d3c7_28921558","updated":"2019-06-10 21:42:33.000000000","message":"Leaving a FIXME for now, I\u0027m going to have to talk with Sean Mooney and adrianc about that one.","commit_id":"f37e602a845777555767c75c99e5eda64e58b377"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8eb528164158b93ee61648776909dd3d5f7fdb3f","unresolved":false,"context_lines":[{"line_number":4437,"context_line":"            self, ctxt, instance, migration):"},{"line_number":4438,"context_line":"        \"\"\"Private version of confirm_snapshot_based_resize_at_source"},{"line_number":4439,"context_line":""},{"line_number":4440,"context_line":"        This allows the main method to be decorated with error handlers."},{"line_number":4441,"context_line":""},{"line_number":4442,"context_line":"        :param ctxt: nova auth request context targeted at the source cell"},{"line_number":4443,"context_line":"        :param instance: Instance object being resized which should have the"}],"source_content_type":"text/x-python","patch_set":57,"id":"3fa7e38b_93e0b499","line":4440,"updated":"2019-12-03 12:10:46.000000000","message":"nit: for me more importantly it runs under the instance.uuid lock","commit_id":"c741258f8fc069f223d233f46598f790834eb37b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"26e8b4c6bdd5f7962925950a8016f69eb5e690f2","unresolved":false,"context_lines":[{"line_number":4437,"context_line":"            self, ctxt, instance, migration):"},{"line_number":4438,"context_line":"        \"\"\"Private version of confirm_snapshot_based_resize_at_source"},{"line_number":4439,"context_line":""},{"line_number":4440,"context_line":"        This allows the main method to be decorated with error handlers."},{"line_number":4441,"context_line":""},{"line_number":4442,"context_line":"        :param ctxt: nova auth request context targeted at the source cell"},{"line_number":4443,"context_line":"        :param instance: Instance object being resized which should have the"}],"source_content_type":"text/x-python","patch_set":57,"id":"3fa7e38b_cf467ca8","line":4440,"in_reply_to":"3fa7e38b_93e0b499","updated":"2019-12-03 16:25:04.000000000","message":"Sure, except at this point the instance.host is pointed at the dest host and it\u0027s running there (and that\u0027s where the instance mapping is pointing) so I\u0027m not sure how much the lock buys us, but maybe against periodics or something. Anyway, it was copied from the same-cell confirm_resize method.","commit_id":"c741258f8fc069f223d233f46598f790834eb37b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8eb528164158b93ee61648776909dd3d5f7fdb3f","unresolved":false,"context_lines":[{"line_number":4495,"context_line":"        :param instance: Instance object that was resized/cold migrated"},{"line_number":4496,"context_line":"        :param migration: Migration object for the resize/cold migrate"},{"line_number":4497,"context_line":"        \"\"\""},{"line_number":4498,"context_line":"        # setup_networks_on_host relies on the instance.host not being the same"},{"line_number":4499,"context_line":"        # as the host we pass in, so we have to mutate the instance to"},{"line_number":4500,"context_line":"        # effectively trick this code."},{"line_number":4501,"context_line":"        with utils.temporary_mutation(instance, host\u003dmigration.dest_compute):"},{"line_number":4502,"context_line":"            LOG.debug(\u0027Deleting port bindings for source host.\u0027,"},{"line_number":4503,"context_line":"                      instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":57,"id":"3fa7e38b_33130068","line":4500,"range":{"start_line":4498,"start_character":0,"end_line":4500,"end_character":38},"updated":"2019-12-03 12:10:46.000000000","message":"If you say \"trick this code\" then I feel that this is a hack. In the other hand if you could say that in reality the instance is already on the dest host we just having access to the instance object from the source host as we are on the source node and therefore we need a temporary mutation, then I fell better about this code. :)","commit_id":"c741258f8fc069f223d233f46598f790834eb37b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"26e8b4c6bdd5f7962925950a8016f69eb5e690f2","unresolved":false,"context_lines":[{"line_number":4495,"context_line":"        :param instance: Instance object that was resized/cold migrated"},{"line_number":4496,"context_line":"        :param migration: Migration object for the resize/cold migrate"},{"line_number":4497,"context_line":"        \"\"\""},{"line_number":4498,"context_line":"        # setup_networks_on_host relies on the instance.host not being the same"},{"line_number":4499,"context_line":"        # as the host we pass in, so we have to mutate the instance to"},{"line_number":4500,"context_line":"        # effectively trick this code."},{"line_number":4501,"context_line":"        with utils.temporary_mutation(instance, host\u003dmigration.dest_compute):"},{"line_number":4502,"context_line":"            LOG.debug(\u0027Deleting port bindings for source host.\u0027,"},{"line_number":4503,"context_line":"                      instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":57,"id":"3fa7e38b_ea9326a3","line":4500,"range":{"start_line":4498,"start_character":0,"end_line":4500,"end_character":38},"in_reply_to":"3fa7e38b_33130068","updated":"2019-12-03 16:25:04.000000000","message":"It is a hack because setup_networks_on_host is very hacky. I go into quite a bit of detail about that here:\n\nhttps://review.opendev.org/#/c/594139/1/nova/network/neutronv2/api.py@431\n\nWhich is for a patch that used a similar hack for a post-live migration rollback scenario.\n\nLooking at how same-cell confirm_resize handles this, it doesn\u0027t require the hack because the instance.host is pointing at the dest host but for cross-cell resize the instance we\u0027re working with here is in the source cell and still pointing at the source host because we don\u0027t update it in case we need to hard reboot/rebuild the source cell instance in case the cross-cell resize fails.\n\nThe alternative would be to write a new network API method (delete_port_bindings) which does what setup_networks_on_host does on teardown\u003dTrue when the port_migrating variable in there is True (and the port_migrating variable is only true if the instance.host and the host passed into the method are different). Or rather than adding a new delete_port_bindings method, we could just implement cleanup_instance_network_on_host which is a pass today for neutron and is only used in the shelve offload case, but maybe that work be OK if it just deleted the port bindings when shelve offloading - otherwise I think we only update the port bindings for a shelved offloaded server when we later unshelve it and update the port binding to the new host on which the server was unshelved.\n\nAnyway, I can try stacking a change on top of the series to see what that might look like and if there would be any fallout.","commit_id":"c741258f8fc069f223d233f46598f790834eb37b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"66061fe9813e472b7bcc0467e1d0cea9fa22321f","unresolved":false,"context_lines":[{"line_number":4495,"context_line":"        :param instance: Instance object that was resized/cold migrated"},{"line_number":4496,"context_line":"        :param migration: Migration object for the resize/cold migrate"},{"line_number":4497,"context_line":"        \"\"\""},{"line_number":4498,"context_line":"        # setup_networks_on_host relies on the instance.host not being the same"},{"line_number":4499,"context_line":"        # as the host we pass in, so we have to mutate the instance to"},{"line_number":4500,"context_line":"        # effectively trick this code."},{"line_number":4501,"context_line":"        with utils.temporary_mutation(instance, host\u003dmigration.dest_compute):"},{"line_number":4502,"context_line":"            LOG.debug(\u0027Deleting port bindings for source host.\u0027,"},{"line_number":4503,"context_line":"                      instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":57,"id":"3fa7e38b_5606a087","line":4500,"range":{"start_line":4498,"start_character":0,"end_line":4500,"end_character":38},"in_reply_to":"3fa7e38b_ea9326a3","updated":"2019-12-03 19:15:57.000000000","message":"Let\u0027s see how this goes:\n\nhttps://review.opendev.org/#/c/697162/","commit_id":"c741258f8fc069f223d233f46598f790834eb37b"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8eb528164158b93ee61648776909dd3d5f7fdb3f","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        Deletes the allocations held by the migration consumer against the"},{"line_number":612,"context_line":"        source compute node resource provider."},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        This is a synchronous RPC call using the ``long_rpc_timeout``"},{"line_number":615,"context_line":"        configuration option."},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        :param ctxt: nova auth request context targeted at the source cell"},{"line_number":618,"context_line":"        :param instance: Instance object being resized which should have the"}],"source_content_type":"text/x-python","patch_set":57,"id":"3fa7e38b_a85f7ee2","line":615,"range":{"start_line":614,"start_character":0,"end_line":615,"end_character":29},"updated":"2019-12-03 12:10:46.000000000","message":"What is the long running operation in behind this call?","commit_id":"c741258f8fc069f223d233f46598f790834eb37b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"26e8b4c6bdd5f7962925950a8016f69eb5e690f2","unresolved":false,"context_lines":[{"line_number":611,"context_line":"        Deletes the allocations held by the migration consumer against the"},{"line_number":612,"context_line":"        source compute node resource provider."},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        This is a synchronous RPC call using the ``long_rpc_timeout``"},{"line_number":615,"context_line":"        configuration option."},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        :param ctxt: nova auth request context targeted at the source cell"},{"line_number":618,"context_line":"        :param instance: Instance object being resized which should have the"}],"source_content_type":"text/x-python","patch_set":57,"id":"3fa7e38b_6ace56b8","line":615,"range":{"start_line":614,"start_character":0,"end_line":615,"end_character":29},"in_reply_to":"3fa7e38b_a85f7ee2","updated":"2019-12-03 16:25:04.000000000","message":"Nothing on its own is probably all that long, though I think the volume attachment delete in cinder is a synchronous call to the storage backend. So it\u0027s (1) the pattern we\u0027re using fro the cross-cell related compute RPC API methods since the tasks in conductor are orchestrating everything and need to get a response since they aren\u0027t polling for changes in the compute and (2) the aggregate of cleanup operations that happen could be longer than the default rpc_response_timeout (60 seconds) especially if there are a lot of ports and/or volumes attached to the server.","commit_id":"c741258f8fc069f223d233f46598f790834eb37b"}],"nova/tests/unit/compute/test_rpcapi.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd98d3ac95f2c33ee4107c1e033b75bfe09dc791","unresolved":false,"context_lines":[{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    @mock.patch(\u0027nova.rpc.ClientRouter.client\u0027)"},{"line_number":617,"context_line":"    def test_confirm_snapshot_based_resize_at_source_old_compute(self, client):"},{"line_number":618,"context_line":"        \"\"\"Tests when the dest compute service is too old to call"},{"line_number":619,"context_line":"        confirm_snapshot_based_resize_at_source so MigrationError is raised."},{"line_number":620,"context_line":"        \"\"\""},{"line_number":621,"context_line":"        client.return_value.can_send_version.return_value \u003d False"}],"source_content_type":"text/x-python","patch_set":53,"id":"3fa7e38b_8cb98fed","line":618,"range":{"start_line":618,"start_character":26,"end_line":618,"end_character":30},"updated":"2019-11-11 20:37:30.000000000","message":"source","commit_id":"3212902a2c0711c108a338ce4d2c52ff552c9c41"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"47b907218c6df674cce36aaa206c463fd41def40","unresolved":false,"context_lines":[{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    @mock.patch(\u0027nova.rpc.ClientRouter.client\u0027)"},{"line_number":617,"context_line":"    def test_confirm_snapshot_based_resize_at_source_old_compute(self, client):"},{"line_number":618,"context_line":"        \"\"\"Tests when the dest compute service is too old to call"},{"line_number":619,"context_line":"        confirm_snapshot_based_resize_at_source so MigrationError is raised."},{"line_number":620,"context_line":"        \"\"\""},{"line_number":621,"context_line":"        client.return_value.can_send_version.return_value \u003d False"}],"source_content_type":"text/x-python","patch_set":53,"id":"3fa7e38b_ef5b551f","line":618,"range":{"start_line":618,"start_character":26,"end_line":618,"end_character":30},"in_reply_to":"3fa7e38b_8cb98fed","updated":"2019-11-11 22:36:32.000000000","message":"Done","commit_id":"3212902a2c0711c108a338ce4d2c52ff552c9c41"}]}
