[libvirt] [PATCH v2 03/12] virsh: Expose virDomainDetachDeviceAlias
Ján Tomko
jtomko at redhat.com
Sat May 26 08:25:58 UTC 2018
On Thu, May 24, 2018 at 01:13:30PM +0200, Michal Privoznik wrote:
>Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>---
> tools/virsh-domain.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> tools/virsh.pod | 12 +++++++++
> 2 files changed, 84 insertions(+)
>
>diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
>index cfbbf5a7bc..26f7983540 100644
>--- a/tools/virsh-domain.c
>+++ b/tools/virsh-domain.c
>@@ -11878,6 +11878,72 @@ cmdDetachDevice(vshControl *ctl, const vshCmd *cmd)
> return funcRet;
> }
>
>+
>+/*
>+ * "detach-device-alias" command
>+ */
>+static const vshCmdInfo info_detach_device_alias[] = {
>+ {.name = "help",
>+ .data = N_("detach device from an alias")
>+ },
>+ {.name = "desc",
>+ .data = N_("Detach device from domain using given alias to identify device")
"from a domain" feels better. Or even:
Detach device identified by the given alias from a domain
>+ },
>+ {.name = NULL}
>+};
>+
[...]
>+static bool
>+cmdDetachDeviceAlias(vshControl *ctl, const vshCmd *cmd)
>+{
>+ virDomainPtr dom = NULL;
>+ const char *alias = NULL;
>+ bool current = vshCommandOptBool(cmd, "current");
>+ bool config = vshCommandOptBool(cmd, "config");
>+ bool live = vshCommandOptBool(cmd, "live");
>+ unsigned int flags = VIR_DOMAIN_AFFECT_CURRENT;
>+ bool ret = false;
>+
>+ VSH_EXCLUSIVE_OPTIONS_VAR(current, live);
>+ VSH_EXCLUSIVE_OPTIONS_VAR(current, config);
>+
>+ if (config)
>+ flags |= VIR_DOMAIN_AFFECT_CONFIG;
>+ if (live)
>+ flags |= VIR_DOMAIN_AFFECT_LIVE;
>+
>+ if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
>+ return false;
>+
>+ if (vshCommandOptStringReq(ctl, cmd, "alias", &alias) < 0)
>+ goto cleanup;
>+
>+ if (virDomainDetachDeviceAlias(dom, alias, flags) < 0) {
>+ vshError(ctl, _("Failed to detach device with alias %s"), alias);
>+ goto cleanup;
>+ }
>+
>+ vshPrintExtra(ctl, "%s", _("Device detached successfully\n"));
Or, to match the semantics of the API more closely:
"Device detach request sent successfully\n"
>+ ret = true;
>+
>+ cleanup:
>+ virshDomainFree(dom);
>+ return ret;
>+}
>+
>+
> /*
> * "update-device" command
> */
>@@ -13999,6 +14065,12 @@ const vshCmdDef domManagementCmds[] = {
> .info = info_detach_device,
> .flags = 0
> },
>+ {.name = "detach-device-alias",
>+ .handler = cmdDetachDeviceAlias,
>+ .opts = opts_detach_device_alias,
>+ .info = info_detach_device_alias,
>+ .flags = 0
>+ },
> {.name = "detach-disk",
> .handler = cmdDetachDisk,
> .opts = opts_detach_disk,
>diff --git a/tools/virsh.pod b/tools/virsh.pod
>index 929958a953..45c1a3f271 100644
>--- a/tools/virsh.pod
>+++ b/tools/virsh.pod
>@@ -3112,6 +3112,18 @@ an offline domain, and like I<--live> I<--config> for a running domain.
> Note that older versions of virsh used I<--config> as an alias for
> I<--persistent>.
>
>+=item B<detach-device-alias> I<domain> I<alias>
>+[[[I<--live>] [I<--config>] | [I<--current>]] | [I<--persistent>]]
>+
>+Detach a device with given I<alias> from the I<domain>.
>+
>+If I<--live> is specified, affect a running domain.
>+If I<--config> is specified, affect the next startup of a persistent domain.
>+If I<--current> is specified, affect the current domain state.
>+Both I<--live> and I<--config> flags may be given, but I<--current> is
>+exclusive.
>When no flag is specified legacy API is used whose behavior depends
>+on the hypervisor driver.
>+
Drop this sentence, it is not relevant for the new API.
Reviewed-by: Ján Tomko <jtomko at redhat.com>
Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20180526/74b2754b/attachment-0001.sig>
More information about the libvir-list
mailing list