)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"efa6e653c7763eb4716621a8fbd18f17e2e86743","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5ffdccbf_a3001354","updated":"2026-04-16 18:55:15.000000000","message":"CI is green, upgrading to +2,+W","commit_id":"696053bb90505dd93e31c0fc6568ee45daf39d68"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"090728349171c5611a9bb64f9106e070dda0bd2e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"91d84f4a_ebe17b19","updated":"2026-04-15 22:50:00.000000000","message":"Makes sense, looks OK to me. +1 wait for green CI","commit_id":"696053bb90505dd93e31c0fc6568ee45daf39d68"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b84f0909f4bf695865eb30e5cb09b7633ad42a7a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c93bf79c_e33f6476","updated":"2026-04-15 22:48:45.000000000","message":"recheck vtpm test intermittent failures see https://review.opendev.org/c/openstack/nova/+/984864","commit_id":"696053bb90505dd93e31c0fc6568ee45daf39d68"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"be4ecfc0ffb7799f375e54a0da28d86359bfa640","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1a40f64f_6ea75642","updated":"2026-04-16 16:29:55.000000000","message":"recheck | controller | + /opt/stack/nova/roles/run-evacuate-hook/files/test_evacuate.sh:main:16 :   echo \u0027Timed out waiting for controller compute service to be enabled\u0027","commit_id":"696053bb90505dd93e31c0fc6568ee45daf39d68"}],"nova/conductor/tasks/cross_cell_migrate.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e9c1a5cc029ee9104d7a5033d41997a91e04693a","unresolved":true,"context_lines":[{"line_number":144,"context_line":"        # Ensure keypairs are loaded from the source cell DB so they are"},{"line_number":145,"context_line":"        # included when cloning the instance to the target cell (bug 2108974)."},{"line_number":146,"context_line":"        if \u0027keypairs\u0027 not in self.instance:"},{"line_number":147,"context_line":"            self.instance.keypairs"},{"line_number":148,"context_line":"        # We copy instance actions to preserve the history of the instance"},{"line_number":149,"context_line":"        # in case the resize is confirmed."},{"line_number":150,"context_line":"        actions \u003d objects.InstanceActionList.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":1,"id":"81508917_281f3711","line":147,"updated":"2026-03-20 17:58:06.000000000","message":"Typically we try not to rely on lazy-loads when possible because they\u0027re expensive, although less so here because this is conductor. I have to go refresh my memory to see where we pull the instance for this migration, but I assume we won\u0027t know it\u0027s a cross-cell resize until after we have the instance object right?","commit_id":"296cbff85acd5a35ec6da1522b639c1a12b252ec"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"73774fc7bad09888cbf476711c28674968940d58","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        # Ensure keypairs are loaded from the source cell DB so they are"},{"line_number":145,"context_line":"        # included when cloning the instance to the target cell (bug 2108974)."},{"line_number":146,"context_line":"        if \u0027keypairs\u0027 not in self.instance:"},{"line_number":147,"context_line":"            self.instance.keypairs"},{"line_number":148,"context_line":"        # We copy instance actions to preserve the history of the instance"},{"line_number":149,"context_line":"        # in case the resize is confirmed."},{"line_number":150,"context_line":"        actions \u003d objects.InstanceActionList.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":1,"id":"0bcc77a2_d814d655","line":147,"in_reply_to":"107a745c_05aac7af","updated":"2026-04-15 17:36:17.000000000","message":"Acknowledged","commit_id":"296cbff85acd5a35ec6da1522b639c1a12b252ec"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"99eedd09b60b73df4821cf1e655e5889fdede7ca","unresolved":true,"context_lines":[{"line_number":144,"context_line":"        # Ensure keypairs are loaded from the source cell DB so they are"},{"line_number":145,"context_line":"        # included when cloning the instance to the target cell (bug 2108974)."},{"line_number":146,"context_line":"        if \u0027keypairs\u0027 not in self.instance:"},{"line_number":147,"context_line":"            self.instance.keypairs"},{"line_number":148,"context_line":"        # We copy instance actions to preserve the history of the instance"},{"line_number":149,"context_line":"        # in case the resize is confirmed."},{"line_number":150,"context_line":"        actions \u003d objects.InstanceActionList.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":1,"id":"107a745c_05aac7af","line":147,"in_reply_to":"77618601_50b909ce","updated":"2026-04-03 16:43:22.000000000","message":"I think it would be reasonable to add always, but I can also see the argument to just load them if/when necessary. Probably no gain either way. However, here I think that we\u0027re loading bdms, vifs, tags, and now keypairs all as independent loads, which kinda sucks. I also don\u0027t really like the naked property reference to trigger the load as it would be easy to \"optimize out\" if you don\u0027t know what\u0027s going on. Could we at least use `instance.obj_load_attr(\u0027keypairs\u0027)` to make it a bit more imperative?\n\nI thought we had a `*args` on one of those loaders so we could do tags and keypairs in a single operation, but after looking, I guess we don\u0027t.","commit_id":"296cbff85acd5a35ec6da1522b639c1a12b252ec"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"494c6143ac9dd9dc4cb6ac9f1c42f00d07452354","unresolved":true,"context_lines":[{"line_number":144,"context_line":"        # Ensure keypairs are loaded from the source cell DB so they are"},{"line_number":145,"context_line":"        # included when cloning the instance to the target cell (bug 2108974)."},{"line_number":146,"context_line":"        if \u0027keypairs\u0027 not in self.instance:"},{"line_number":147,"context_line":"            self.instance.keypairs"},{"line_number":148,"context_line":"        # We copy instance actions to preserve the history of the instance"},{"line_number":149,"context_line":"        # in case the resize is confirmed."},{"line_number":150,"context_line":"        actions \u003d objects.InstanceActionList.get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":1,"id":"77618601_50b909ce","line":147,"in_reply_to":"81508917_281f3711","updated":"2026-03-28 11:27:13.000000000","message":"Unless if I\u0027m wrong, we don\u0027t know it\u0027s a cross-cell resize until after scheduling, when _is_selected_host_in_source_cell() returns False in MigrationTask._execute() (migrate.py:295).\n\n There are two entry points that can trigger this flow:                                                                                                                                                                                      \n  - servers.py resize action (line 1125) — loads with columns_to_join\u003d[\u0027services\u0027, \u0027resources\u0027, \u0027pci_requests\u0027, \u0027pci_devices\u0027, \u0027trusted_certs\u0027, \u0027vcpu_model\u0027]                                                                                 \n  - migrate_server.py migrate action (line 49) — loads with expected_attrs\u003d[\u0027flavor\u0027, \u0027services\u0027]\n\nSo if we want to avoid lazy loading, I think I could add \u0027keypairs\u0027 to the expected_attrs in both API entry points. It does mean loading keypairs for all resizes/migrates (not just cross-cell), but the cost seems reasonable to me.\n\nPlease tell me what you think about it ?","commit_id":"296cbff85acd5a35ec6da1522b639c1a12b252ec"}]}
