mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
Add migrate-setmaxdowntime command to virsh
This commit is contained in:
parent
7f4f1dd416
commit
5ee592208c
@ -227,6 +227,8 @@ static vshCmdOpt *vshCommandOpt(const vshCmd *cmd, const char *name);
|
|||||||
static int vshCommandOptInt(const vshCmd *cmd, const char *name, int *found);
|
static int vshCommandOptInt(const vshCmd *cmd, const char *name, int *found);
|
||||||
static char *vshCommandOptString(const vshCmd *cmd, const char *name,
|
static char *vshCommandOptString(const vshCmd *cmd, const char *name,
|
||||||
int *found);
|
int *found);
|
||||||
|
static long long vshCommandOptLongLong(const vshCmd *cmd, const char *name,
|
||||||
|
int *found);
|
||||||
#if 0
|
#if 0
|
||||||
static int vshCommandOptStringList(const vshCmd *cmd, const char *name, char ***data);
|
static int vshCommandOptStringList(const vshCmd *cmd, const char *name, char ***data);
|
||||||
#endif
|
#endif
|
||||||
@ -2827,6 +2829,51 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "migrate-setmaxdowntime" command
|
||||||
|
*/
|
||||||
|
static const vshCmdInfo info_migrate_setmaxdowntime[] = {
|
||||||
|
{"help", N_("set maximum tolerable downtime")},
|
||||||
|
{"desc", N_("Set maximum tolerable downtime of a domain which is being live-migrated to another host.")},
|
||||||
|
{NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const vshCmdOptDef opts_migrate_setmaxdowntime[] = {
|
||||||
|
{"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")},
|
||||||
|
{"downtime", VSH_OT_DATA, VSH_OFLAG_REQ, N_("maximum tolerable downtime (in milliseconds) for migration")},
|
||||||
|
{NULL, 0, 0, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static int
|
||||||
|
cmdMigrateSetMaxDowntime(vshControl *ctl, const vshCmd *cmd)
|
||||||
|
{
|
||||||
|
virDomainPtr dom = NULL;
|
||||||
|
long long downtime;
|
||||||
|
int found;
|
||||||
|
int ret = FALSE;
|
||||||
|
|
||||||
|
if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
downtime = vshCommandOptLongLong(cmd, "downtime", &found);
|
||||||
|
if (!found || downtime < 1) {
|
||||||
|
vshError(ctl, "%s", _("migrate: Invalid downtime"));
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (virDomainMigrateSetMaxDowntime(dom, downtime, 0))
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
ret = TRUE;
|
||||||
|
|
||||||
|
done:
|
||||||
|
virDomainFree(dom);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "net-autostart" command
|
* "net-autostart" command
|
||||||
*/
|
*/
|
||||||
@ -7767,6 +7814,7 @@ static const vshCmdDef commands[] = {
|
|||||||
{"hostname", cmdHostname, NULL, info_hostname},
|
{"hostname", cmdHostname, NULL, info_hostname},
|
||||||
{"list", cmdList, opts_list, info_list},
|
{"list", cmdList, opts_list, info_list},
|
||||||
{"migrate", cmdMigrate, opts_migrate, info_migrate},
|
{"migrate", cmdMigrate, opts_migrate, info_migrate},
|
||||||
|
{"migrate-setmaxdowntime", cmdMigrateSetMaxDowntime, opts_migrate_setmaxdowntime, info_migrate_setmaxdowntime},
|
||||||
|
|
||||||
{"net-autostart", cmdNetworkAutostart, opts_network_autostart, info_network_autostart},
|
{"net-autostart", cmdNetworkAutostart, opts_network_autostart, info_network_autostart},
|
||||||
{"net-create", cmdNetworkCreate, opts_network_create, info_network_create},
|
{"net-create", cmdNetworkCreate, opts_network_create, info_network_create},
|
||||||
@ -8107,6 +8155,24 @@ vshCommandOptString(const vshCmd *cmd, const char *name, int *found)
|
|||||||
return arg && arg->data && *arg->data ? arg->data : NULL;
|
return arg && arg->data && *arg->data ? arg->data : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns option as long long
|
||||||
|
*/
|
||||||
|
static long long
|
||||||
|
vshCommandOptLongLong(const vshCmd *cmd, const char *name, int *found)
|
||||||
|
{
|
||||||
|
vshCmdOpt *arg = vshCommandOpt(cmd, name);
|
||||||
|
int num_found = FALSE;
|
||||||
|
long long res = 0;
|
||||||
|
char *end_p = NULL;
|
||||||
|
|
||||||
|
if ((arg != NULL) && (arg->data != NULL))
|
||||||
|
num_found = !virStrToLong_ll(arg->data, &end_p, 10, &res);
|
||||||
|
if (found)
|
||||||
|
*found = num_found;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static int
|
static int
|
||||||
vshCommandOptStringList(const vshCmd *cmd, const char *name, char ***data)
|
vshCommandOptStringList(const vshCmd *cmd, const char *name, char ***data)
|
||||||
|
@ -334,6 +334,12 @@ leaves the domain paused on the destination host. The I<desturi> is the
|
|||||||
connection URI of the destination host, and I<migrateuri> is the
|
connection URI of the destination host, and I<migrateuri> is the
|
||||||
migration URI, which usually can be omitted.
|
migration URI, which usually can be omitted.
|
||||||
|
|
||||||
|
=item B<migrate-setmaxdowntime> I<domain-id> I<downtime>
|
||||||
|
|
||||||
|
Set maximum tolerable downtime for a domain which is being live-migrated to
|
||||||
|
another host. The I<downtime> is a number of milliseconds the guest is allowed
|
||||||
|
to be down at the end of live migration.
|
||||||
|
|
||||||
=item B<reboot> I<domain-id>
|
=item B<reboot> I<domain-id>
|
||||||
|
|
||||||
Reboot a domain. This acts just as if the domain had the B<reboot>
|
Reboot a domain. This acts just as if the domain had the B<reboot>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user