migration: Convert 'status' of MigrationInfo to use an enum type
The original 'status' is an open-coded 'str' type, convert it to use an enum type. This conversion is backwards compatible, better documented and more convenient for future extensibility. In addition, Fix a typo for qapi-schema.json (just remove the typo) : s/'completed'. 'comppleted' (since 1.2)/'completed' (since 1.2) Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
e49f35bdb4
commit
24b8c39b5c
7
hmp.c
7
hmp.c
@ -162,7 +162,8 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict)
|
||||
}
|
||||
|
||||
if (info->has_status) {
|
||||
monitor_printf(mon, "Migration status: %s\n", info->status);
|
||||
monitor_printf(mon, "Migration status: %s\n",
|
||||
MigrationStatus_lookup[info->status]);
|
||||
monitor_printf(mon, "total time: %" PRIu64 " milliseconds\n",
|
||||
info->total_time);
|
||||
if (info->has_expected_downtime) {
|
||||
@ -1354,8 +1355,8 @@ static void hmp_migrate_status_cb(void *opaque)
|
||||
MigrationInfo *info;
|
||||
|
||||
info = qmp_query_migrate(NULL);
|
||||
if (!info->has_status || strcmp(info->status, "active") == 0 ||
|
||||
strcmp(info->status, "setup") == 0) {
|
||||
if (!info->has_status || info->status == MIGRATION_STATUS_ACTIVE ||
|
||||
info->status == MIGRATION_STATUS_SETUP) {
|
||||
if (info->has_disk) {
|
||||
int progress;
|
||||
|
||||
|
@ -26,16 +26,6 @@
|
||||
#include "qmp-commands.h"
|
||||
#include "trace.h"
|
||||
|
||||
enum {
|
||||
MIGRATION_STATUS_FAILED = -1,
|
||||
MIGRATION_STATUS_NONE,
|
||||
MIGRATION_STATUS_SETUP,
|
||||
MIGRATION_STATUS_CANCELLING,
|
||||
MIGRATION_STATUS_CANCELLED,
|
||||
MIGRATION_STATUS_ACTIVE,
|
||||
MIGRATION_STATUS_COMPLETED,
|
||||
};
|
||||
|
||||
#define MAX_THROTTLE (32 << 20) /* Migration speed throttling */
|
||||
|
||||
/* Amount of time to allocate to each "chunk" of bandwidth-throttled
|
||||
@ -205,13 +195,13 @@ MigrationInfo *qmp_query_migrate(Error **errp)
|
||||
break;
|
||||
case MIGRATION_STATUS_SETUP:
|
||||
info->has_status = true;
|
||||
info->status = g_strdup("setup");
|
||||
info->status = MIGRATION_STATUS_SETUP;
|
||||
info->has_total_time = false;
|
||||
break;
|
||||
case MIGRATION_STATUS_ACTIVE:
|
||||
case MIGRATION_STATUS_CANCELLING:
|
||||
info->has_status = true;
|
||||
info->status = g_strdup("active");
|
||||
info->status = MIGRATION_STATUS_ACTIVE;
|
||||
info->has_total_time = true;
|
||||
info->total_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME)
|
||||
- s->total_time;
|
||||
@ -247,7 +237,7 @@ MigrationInfo *qmp_query_migrate(Error **errp)
|
||||
get_xbzrle_cache_stats(info);
|
||||
|
||||
info->has_status = true;
|
||||
info->status = g_strdup("completed");
|
||||
info->status = MIGRATION_STATUS_COMPLETED;
|
||||
info->has_total_time = true;
|
||||
info->total_time = s->total_time;
|
||||
info->has_downtime = true;
|
||||
@ -269,11 +259,11 @@ MigrationInfo *qmp_query_migrate(Error **errp)
|
||||
break;
|
||||
case MIGRATION_STATUS_FAILED:
|
||||
info->has_status = true;
|
||||
info->status = g_strdup("failed");
|
||||
info->status = MIGRATION_STATUS_FAILED;
|
||||
break;
|
||||
case MIGRATION_STATUS_CANCELLED:
|
||||
info->has_status = true;
|
||||
info->status = g_strdup("cancelled");
|
||||
info->status = MIGRATION_STATUS_CANCELLED;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -410,19 +410,43 @@
|
||||
'cache-miss': 'int', 'cache-miss-rate': 'number',
|
||||
'overflow': 'int' } }
|
||||
|
||||
# @MigrationStatus:
|
||||
#
|
||||
# An enumeration of migration status.
|
||||
#
|
||||
# @none: no migration has ever happened.
|
||||
#
|
||||
# @setup: migration process has been initiated.
|
||||
#
|
||||
# @cancelling: in the process of cancelling migration.
|
||||
#
|
||||
# @cancelled: cancelling migration is finished.
|
||||
#
|
||||
# @active: in the process of doing migration.
|
||||
#
|
||||
# @completed: migration is finished.
|
||||
#
|
||||
# @failed: some error occurred during migration process.
|
||||
#
|
||||
# Since: 2.3
|
||||
#
|
||||
##
|
||||
{ 'enum': 'MigrationStatus',
|
||||
'data': [ 'none', 'setup', 'cancelling', 'cancelled',
|
||||
'active', 'completed', 'failed' ] }
|
||||
|
||||
##
|
||||
# @MigrationInfo
|
||||
#
|
||||
# Information about current migration process.
|
||||
#
|
||||
# @status: #optional string describing the current migration status.
|
||||
# As of 0.14.0 this can be 'setup', 'active', 'completed', 'failed' or
|
||||
# 'cancelled'. If this field is not returned, no migration process
|
||||
# @status: #optional @MigrationStatus describing the current migration status.
|
||||
# If this field is not returned, no migration process
|
||||
# has been initiated
|
||||
#
|
||||
# @ram: #optional @MigrationStats containing detailed migration
|
||||
# status, only returned if status is 'active' or
|
||||
# 'completed'. 'comppleted' (since 1.2)
|
||||
# 'completed'(since 1.2)
|
||||
#
|
||||
# @disk: #optional @MigrationStats containing detailed disk migration
|
||||
# status, only returned if status is 'active' and it is a block
|
||||
@ -453,7 +477,7 @@
|
||||
# Since: 0.14.0
|
||||
##
|
||||
{ 'type': 'MigrationInfo',
|
||||
'data': {'*status': 'str', '*ram': 'MigrationStats',
|
||||
'data': {'*status': 'MigrationStatus', '*ram': 'MigrationStats',
|
||||
'*disk': 'MigrationStats',
|
||||
'*xbzrle-cache': 'XBZRLECacheStats',
|
||||
'*total-time': 'int',
|
||||
|
Loading…
Reference in New Issue
Block a user