)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"dffdf600c37fec3289ebe950174108ea829e8adc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"30a100d8_94e6ebed","updated":"2026-07-01 13:45:08.000000000","message":"Thank you for the fix","commit_id":"1a66ae7fc631e6468af6b5ed339395136bf3174d"}],"rally_openstack/task/scenarios/nova/utils.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"dffdf600c37fec3289ebe950174108ea829e8adc","unresolved":true,"context_lines":[{"line_number":849,"context_line":"                      skip_host_check\u003dFalse):"},{"line_number":850,"context_line":"        \"\"\"Run live migration of the given server."},{"line_number":851,"context_line":""},{"line_number":852,"context_line":"        :param server: Server object"},{"line_number":853,"context_line":"        :param block_migration: Specifies the migration type"},{"line_number":854,"context_line":"        :param disk_over_commit: Specifies whether to overcommit migrated"},{"line_number":855,"context_line":"                                 instance or not"}],"source_content_type":"text/x-python","patch_set":2,"id":"a82a3e08_af111a5f","side":"PARENT","line":852,"updated":"2026-07-01 13:45:08.000000000","message":"why is it deleted?","commit_id":"97e84637b02bf991f30091d8a35947b3aaf516a1"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"dffdf600c37fec3289ebe950174108ea829e8adc","unresolved":true,"context_lines":[{"line_number":858,"context_line":"        server_admin.live_migrate(block_migration\u003dblock_migration,"},{"line_number":859,"context_line":"                                  disk_over_commit\u003ddisk_over_commit)"},{"line_number":860,"context_line":""},{"line_number":861,"context_line":"        def _live_migrate_is_ready(resource):"},{"line_number":862,"context_line":"            server_admin \u003d self.admin_clients(\"nova\").servers.get(server.id)"},{"line_number":863,"context_line":"            status \u003d server_admin.status"},{"line_number":864,"context_line":"            if status \u003d\u003d \"ERROR\":"},{"line_number":865,"context_line":"                raise exceptions.GetResourceErrorStatus("},{"line_number":866,"context_line":"                    resource\u003dserver_admin,"},{"line_number":867,"context_line":"                    status\u003dstatus,"},{"line_number":868,"context_line":"                    fault\u003dgetattr(server_admin, \"fault\", \"n/a\"))"},{"line_number":869,"context_line":"            if skip_host_check:"},{"line_number":870,"context_line":"                return status \u003d\u003d \"ACTIVE\""},{"line_number":871,"context_line":"            host \u003d getattr(server_admin, \"OS-EXT-SRV-ATTR:host\")"},{"line_number":872,"context_line":"            return status \u003d\u003d \"ACTIVE\" and host !\u003d host_pre_migrate"},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        utils.wait_for("},{"line_number":875,"context_line":"            server,"}],"source_content_type":"text/x-python","patch_set":2,"id":"d24b3859_fadb4434","line":872,"range":{"start_line":861,"start_character":0,"end_line":872,"end_character":66},"updated":"2026-07-01 13:45:08.000000000","message":"May sound a bit weird, but let\u0027s replace it with class object. Something like\n\n```python\n\n  class _LiveMigrateReady:\n      def __init__(self, host_pre_migrate: str, skip_host_check: bool):\n          self._host_pre_migrate \u003d host_pre_migrate\n          self._skip_host_check \u003d skip_host_check\n\n      def __call__(self, resource) -\u003e bool:\n          status \u003d resource.status\n          if status \u003d\u003d \"ERROR\":\n              raise exceptions.GetResourceErrorStatus(\n                  resource\u003dserver_admin, status\u003dstatus,\n                  fault\u003dgetattr(server_admin, \"fault\", \"n/a\"))\n          if self._skip_host_check:\n              return status \u003d\u003d \"ACTIVE\"\n          host \u003d getattr(resource, \"OS-EXT-SRV-ATTR:host\")\n          return status \u003d\u003d \"ACTIVE\" and host !\u003d self._host_pre_migrate\n\n      def __str__(self):\n          if self._skip_host_check:\n              return \"server to become ACTIVE\"\n          return (f\"server to become ACTIVE on a host other than {self._host_pre_migrate}\")\n```\n\nreasoning - https://github.com/openstack/rally/blob/5.0.1/rally/task/utils.py#L166 `str(is_ready)` is used in the TiemooutError. Raw function results in something like `\u003cfunction _live_migrate.\u003clocals\u003e._live_migrate_is_ready at 0x…\u003e`","commit_id":"1a66ae7fc631e6468af6b5ed339395136bf3174d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"dffdf600c37fec3289ebe950174108ea829e8adc","unresolved":true,"context_lines":[{"line_number":871,"context_line":"            host \u003d getattr(server_admin, \"OS-EXT-SRV-ATTR:host\")"},{"line_number":872,"context_line":"            return status \u003d\u003d \"ACTIVE\" and host !\u003d host_pre_migrate"},{"line_number":873,"context_line":""},{"line_number":874,"context_line":"        utils.wait_for("},{"line_number":875,"context_line":"            server,"},{"line_number":876,"context_line":"            is_ready\u003d_live_migrate_is_ready,"},{"line_number":877,"context_line":"            update_resource\u003dutils.get_from_manager(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"84bcb9e5_7afcd9c2","line":874,"updated":"2026-07-01 13:45:08.000000000","message":"let\u0027s use `wait_is_ready` directly","commit_id":"1a66ae7fc631e6468af6b5ed339395136bf3174d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"dffdf600c37fec3289ebe950174108ea829e8adc","unresolved":true,"context_lines":[{"line_number":874,"context_line":"        utils.wait_for("},{"line_number":875,"context_line":"            server,"},{"line_number":876,"context_line":"            is_ready\u003d_live_migrate_is_ready,"},{"line_number":877,"context_line":"            update_resource\u003dutils.get_from_manager(),"},{"line_number":878,"context_line":"            timeout\u003dCONF.openstack.nova_server_live_migrate_timeout,"},{"line_number":879,"context_line":"            check_interval\u003d("},{"line_number":880,"context_line":"                CONF.openstack.nova_server_live_migrate_poll_interval),"}],"source_content_type":"text/x-python","patch_set":2,"id":"602ae578_0794f651","line":877,"updated":"2026-07-01 13:45:08.000000000","message":"we should either drop this line or remove L862 as _live_migrate_is_ready would receive an updated object already","commit_id":"1a66ae7fc631e6468af6b5ed339395136bf3174d"}]}
