Commit 24b8c39b authored by zhanghailiang's avatar zhanghailiang Committed by Juan Quintela
Browse files

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: default avatarzhanghailiang <zhang.zhanghailiang@huawei.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Signed-off-by: default avatarJuan Quintela <quintela@redhat.com>
parent e49f35bd
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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;

+5 −15
Original line number Diff line number Diff line
@@ -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;
    }

+29 −5
Original line number Diff line number Diff line
@@ -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',