diff options
author | Zhang Chen <zhangckid@gmail.com> | 2018-09-03 12:38:53 +0800 |
---|---|---|
committer | Jason Wang <jasowang@redhat.com> | 2018-10-19 11:15:03 +0800 |
commit | f56c0065b8dd65489621bb7ca1a94d8004d68da1 (patch) | |
tree | a68f32d6406c10b2018b20fb634907c7d103c9b8 /migration | |
parent | 41b6b7792179591553432b207e1b545fb8bd965b (diff) |
qapi: Add new command to query colo status
Libvirt or other high level software can use this command query colo status.
You can test this command like that:
{'execute':'query-colo-status'}
Signed-off-by: Zhang Chen <zhangckid@gmail.com>
Signed-off-by: Zhang Chen <chen.zhang@intel.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'migration')
-rw-r--r-- | migration/colo.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/migration/colo.c b/migration/colo.c index 2cdd366276..94c4e097da 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -29,6 +29,7 @@ #include "net/colo.h" #include "block/block.h" #include "qapi/qapi-events-migration.h" +#include "qapi/qmp/qerror.h" static bool vmstate_loading; static Notifier packets_compare_notifier; @@ -237,6 +238,26 @@ void qmp_xen_colo_do_checkpoint(Error **errp) #endif } +COLOStatus *qmp_query_colo_status(Error **errp) +{ + COLOStatus *s = g_new0(COLOStatus, 1); + + s->mode = get_colo_mode(); + + switch (failover_get_state()) { + case FAILOVER_STATUS_NONE: + s->reason = COLO_EXIT_REASON_NONE; + break; + case FAILOVER_STATUS_REQUIRE: + s->reason = COLO_EXIT_REASON_REQUEST; + break; + default: + s->reason = COLO_EXIT_REASON_ERROR; + } + + return s; +} + static void colo_send_message(QEMUFile *f, COLOMessage msg, Error **errp) { |