mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-22 22:13:18 +00:00
block_resize: Expose the new API to virsh
This commit is contained in:
parent
d1a6c77aca
commit
72908c7403
@ -6091,6 +6091,63 @@ cmdBlockJob(vshControl *ctl, const vshCmd *cmd)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "blockresize" command
|
||||||
|
*/
|
||||||
|
static const vshCmdInfo info_block_resize[] = {
|
||||||
|
{"help", N_("Resize block device of domain.")},
|
||||||
|
{"desc", N_("Resize block device of domain.")},
|
||||||
|
{NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const vshCmdOptDef opts_block_resize[] = {
|
||||||
|
{"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")},
|
||||||
|
{"path", VSH_OT_DATA, VSH_OFLAG_REQ, N_("Fully-qualified path of block device")},
|
||||||
|
{"size", VSH_OT_INT, VSH_OFLAG_REQ, N_("New size of the block device in kilobytes, "
|
||||||
|
"the size must be integer")},
|
||||||
|
{NULL, 0, 0, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static bool
|
||||||
|
cmdBlockResize(vshControl *ctl, const vshCmd *cmd)
|
||||||
|
{
|
||||||
|
virDomainPtr dom;
|
||||||
|
const char *path = NULL;
|
||||||
|
unsigned long long size = 0;
|
||||||
|
unsigned int flags = 0;
|
||||||
|
int ret = false;
|
||||||
|
|
||||||
|
if (!vshConnectionUsability(ctl, ctl->conn))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (vshCommandOptString(cmd, "path", (const char **) &path) < 0) {
|
||||||
|
vshError(ctl, "%s", _("Path must not be empty"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vshCommandOptULongLong(cmd, "size", &size) < 0) {
|
||||||
|
vshError(ctl, "%s", _("Unable to parse integer"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (size > ULLONG_MAX / 1024) {
|
||||||
|
vshError(ctl, _("Size must be less than %llu"), ULLONG_MAX / 1024);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (virDomainBlockResize(dom, path, size, flags) < 0) {
|
||||||
|
vshError(ctl, _("Failed to resize block device '%s'"), path);
|
||||||
|
} else {
|
||||||
|
vshPrint(ctl, _("Block device '%s' is resized"), path);
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
virDomainFree(dom);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "net-autostart" command
|
* "net-autostart" command
|
||||||
@ -14761,6 +14818,7 @@ static const vshCmdDef domManagementCmds[] = {
|
|||||||
{"blkiotune", cmdBlkiotune, opts_blkiotune, info_blkiotune, 0},
|
{"blkiotune", cmdBlkiotune, opts_blkiotune, info_blkiotune, 0},
|
||||||
{"blockpull", cmdBlockPull, opts_block_pull, info_block_pull, 0},
|
{"blockpull", cmdBlockPull, opts_block_pull, info_block_pull, 0},
|
||||||
{"blockjob", cmdBlockJob, opts_block_job, info_block_job, 0},
|
{"blockjob", cmdBlockJob, opts_block_job, info_block_job, 0},
|
||||||
|
{"blockresize", cmdBlockResize, opts_block_resize, info_block_resize, 0},
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
{"console", cmdConsole, opts_console, info_console, 0},
|
{"console", cmdConsole, opts_console, info_console, 0},
|
||||||
#endif
|
#endif
|
||||||
|
@ -590,6 +590,12 @@ If I<--info> is specified, the active job information on the specified
|
|||||||
disk will be printed.
|
disk will be printed.
|
||||||
I<bandwidth> can be used to set bandwidth limit for the active job.
|
I<bandwidth> can be used to set bandwidth limit for the active job.
|
||||||
|
|
||||||
|
=item B<blockresize> I<domain> I<--path> I<--size>
|
||||||
|
|
||||||
|
Resize a block device of domain while the domain is running, I<--path>
|
||||||
|
specifies the absolute path of the block device, I<--size> specifies the
|
||||||
|
new size in kilobytes
|
||||||
|
|
||||||
=item B<dominfo> I<domain-id>
|
=item B<dominfo> I<domain-id>
|
||||||
|
|
||||||
Returns basic information about the domain.
|
Returns basic information about the domain.
|
||||||
|
Loading…
Reference in New Issue
Block a user