diff --git a/lib/build/rpc_definitions.py b/lib/build/rpc_definitions.py index 79644b42e576b4baba3dd0170d6a0ff4f755dda9..1e22549573507ff30932100345314c57128254d1 100644 --- a/lib/build/rpc_definitions.py +++ b/lib/build/rpc_definitions.py @@ -146,6 +146,9 @@ _INSTANCE_CALLS = [ ("success", None, "Whether the migration succeeded or not"), ("live", None, "Whether the user requested a live migration or not"), ], None, "Finalize the instance migration on the source node"), + ("instance_get_migration_status", SINGLE, TMO_SLOW, [ + ("instance", INST_TO_DICT, "Instance object"), + ], "self._MigrationStatusPostProc", "Report migration status"), ("instance_start", SINGLE, TMO_NORMAL, [ ("instance_hvp_bep", "self._InstDictHvpBep(%s)", None), ("startup_paused", None, None), diff --git a/lib/rpc.py b/lib/rpc.py index c4efad8072be6bcd3fd3e371281b0216808c9df9..fcead58f94baa8ebe8775916ca60530eeebefb56 100644 --- a/lib/rpc.py +++ b/lib/rpc.py @@ -493,6 +493,12 @@ class RpcRunner(_generated_rpc.RpcClientDefault, return self._proc(node_list, procedure, body, read_timeout=timeout) + @staticmethod + def _MigrationStatusPostProc(result): + if not result.fail_msg and result.payload is not None: + result.payload = objects.MigrationStatus.FromDict(result.payload) + return result + @staticmethod def _BlockdevFindPostProc(result): if not result.fail_msg and result.payload is not None: