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>
This commit is contained in:
parent
41b6b77921
commit
f56c0065b8
@ -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)
|
||||
{
|
||||
|
@ -1307,6 +1307,38 @@
|
||||
##
|
||||
{ 'command': 'xen-colo-do-checkpoint' }
|
||||
|
||||
##
|
||||
# @COLOStatus:
|
||||
#
|
||||
# The result format for 'query-colo-status'.
|
||||
#
|
||||
# @mode: COLO running mode. If COLO is running, this field will return
|
||||
# 'primary' or 'secondary'.
|
||||
#
|
||||
# @reason: describes the reason for the COLO exit.
|
||||
#
|
||||
# Since: 3.0
|
||||
##
|
||||
{ 'struct': 'COLOStatus',
|
||||
'data': { 'mode': 'COLOMode', 'reason': 'COLOExitReason' } }
|
||||
|
||||
##
|
||||
# @query-colo-status:
|
||||
#
|
||||
# Query COLO status while the vm is running.
|
||||
#
|
||||
# Returns: A @COLOStatus object showing the status.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# -> { "execute": "query-colo-status" }
|
||||
# <- { "return": { "mode": "primary", "active": true, "reason": "request" } }
|
||||
#
|
||||
# Since: 3.0
|
||||
##
|
||||
{ 'command': 'query-colo-status',
|
||||
'returns': 'COLOStatus' }
|
||||
|
||||
##
|
||||
# @migrate-recover:
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user