提交 5ee59220 编写于 作者: J Jiri Denemark

Add migrate-setmaxdowntime command to virsh

上级 7f4f1dd4
......@@ -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 char *vshCommandOptString(const vshCmd *cmd, const char *name,
int *found);
static long long vshCommandOptLongLong(const vshCmd *cmd, const char *name,
int *found);
#if 0
static int vshCommandOptStringList(const vshCmd *cmd, const char *name, char ***data);
#endif
......@@ -2827,6 +2829,51 @@ cmdMigrate (vshControl *ctl, const vshCmd *cmd)
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
*/
......@@ -7767,6 +7814,7 @@ static const vshCmdDef commands[] = {
{"hostname", cmdHostname, NULL, info_hostname},
{"list", cmdList, opts_list, info_list},
{"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-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;
}
/*
* 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
static int
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
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>
Reboot a domain. This acts just as if the domain had the B<reboot>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册