mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-21 20:15:17 +00:00
virsh: Teach attach-interface to --print-xml
We have the same argument to many other commands that produce an XML based on what user typed. But unfortunately attach-interface was missing it. Maybe nobody had needed it yet. Well, I did just now. Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
eb36666d22
commit
41d4104d3e
@ -862,6 +862,10 @@ static const vshCmdOptDef opts_attach_interface[] = {
|
||||
.type = VSH_OT_BOOL,
|
||||
.help = N_("affect current domain")
|
||||
},
|
||||
{.name = "print-xml",
|
||||
.type = VSH_OT_BOOL,
|
||||
.help = N_("print XML document rather than attach the interface")
|
||||
},
|
||||
{.name = NULL}
|
||||
};
|
||||
|
||||
@ -921,7 +925,7 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
|
||||
int ret;
|
||||
bool functionReturn = false;
|
||||
virBuffer buf = VIR_BUFFER_INITIALIZER;
|
||||
char *xml;
|
||||
char *xml = NULL;
|
||||
unsigned int flags = VIR_DOMAIN_AFFECT_CURRENT;
|
||||
bool current = vshCommandOptBool(cmd, "current");
|
||||
bool config = vshCommandOptBool(cmd, "config");
|
||||
@ -938,13 +942,6 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
|
||||
if (live)
|
||||
flags |= VIR_DOMAIN_AFFECT_LIVE;
|
||||
|
||||
if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
|
||||
return false;
|
||||
|
||||
if (persistent &&
|
||||
virDomainIsActive(dom) == 1)
|
||||
flags |= VIR_DOMAIN_AFFECT_LIVE;
|
||||
|
||||
if (vshCommandOptStringReq(ctl, cmd, "type", &type) < 0 ||
|
||||
vshCommandOptStringReq(ctl, cmd, "source", &source) < 0 ||
|
||||
vshCommandOptStringReq(ctl, cmd, "target", &target) < 0 ||
|
||||
@ -1051,6 +1048,7 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
|
||||
virBufferAddLit(&buf, "</bandwidth>\n");
|
||||
}
|
||||
|
||||
virBufferAdjustIndent(&buf, -2);
|
||||
virBufferAddLit(&buf, "</interface>\n");
|
||||
|
||||
if (virBufferError(&buf)) {
|
||||
@ -1060,13 +1058,24 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
|
||||
|
||||
xml = virBufferContentAndReset(&buf);
|
||||
|
||||
if (vshCommandOptBool(cmd, "print-xml")) {
|
||||
vshPrint(ctl, "%s", xml);
|
||||
functionReturn = true;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
|
||||
goto cleanup;
|
||||
|
||||
if (persistent &&
|
||||
virDomainIsActive(dom) == 1)
|
||||
flags |= VIR_DOMAIN_AFFECT_LIVE;
|
||||
|
||||
if (flags || current)
|
||||
ret = virDomainAttachDeviceFlags(dom, xml, flags);
|
||||
else
|
||||
ret = virDomainAttachDevice(dom, xml);
|
||||
|
||||
VIR_FREE(xml);
|
||||
|
||||
if (ret != 0) {
|
||||
vshError(ctl, "%s", _("Failed to attach interface"));
|
||||
} else {
|
||||
@ -1075,7 +1084,9 @@ cmdAttachInterface(vshControl *ctl, const vshCmd *cmd)
|
||||
}
|
||||
|
||||
cleanup:
|
||||
virDomainFree(dom);
|
||||
VIR_FREE(xml);
|
||||
if (dom)
|
||||
virDomainFree(dom);
|
||||
virBufferFreeAndReset(&buf);
|
||||
return functionReturn;
|
||||
}
|
||||
|
@ -2507,6 +2507,7 @@ Likewise, I<--shareable> is an alias for I<--mode shareable>.
|
||||
[[[I<--live>] [I<--config>] | [I<--current>]] | [I<--persistent>]]
|
||||
[I<--target target>] [I<--mac mac>] [I<--script script>] [I<--model model>]
|
||||
[I<--inbound average,peak,burst,floor>] [I<--outbound average,peak,burst>]
|
||||
[I<--print-xml>]
|
||||
|
||||
Attach a new network interface to the domain. I<type> can be
|
||||
I<network> to indicate connection via a libvirt virtual network, or
|
||||
@ -2536,6 +2537,9 @@ kilobytes in a single burst at I<peak> speed as described in the
|
||||
Network XML documentation at
|
||||
L<http://libvirt.org/formatnetwork.html#elementQoS>.
|
||||
|
||||
If I<--print-xml> is specified, then the XML of the interface that would be
|
||||
attached is printed instead.
|
||||
|
||||
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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user