提交 64e66d8e 编写于 作者: M Michal Privoznik

virsh: Teach vol-create-as to --print-xml

We have the same argument to many other commands that produce an
XML based on what user typed. But unfortunately vol-create-as
was missing it. Maybe nobody had needed it yet. Well, I did
just now.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
上级 bb0b8e5d
...@@ -195,6 +195,10 @@ static const vshCmdOptDef opts_vol_create_as[] = { ...@@ -195,6 +195,10 @@ static const vshCmdOptDef opts_vol_create_as[] = {
.type = VSH_OT_BOOL, .type = VSH_OT_BOOL,
.help = N_("preallocate metadata (for qcow2 instead of full allocation)") .help = N_("preallocate metadata (for qcow2 instead of full allocation)")
}, },
{.name = "print-xml",
.type = VSH_OT_BOOL,
.help = N_("print XML document, but don't define/create")
},
{.name = NULL} {.name = NULL}
}; };
...@@ -213,6 +217,7 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd) ...@@ -213,6 +217,7 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)
virStoragePoolPtr pool; virStoragePoolPtr pool;
virStorageVolPtr vol = NULL; virStorageVolPtr vol = NULL;
char *xml = NULL; char *xml = NULL;
bool printXML = vshCommandOptBool(cmd, "print-xml");
const char *name, *capacityStr = NULL, *allocationStr = NULL, *format = NULL; const char *name, *capacityStr = NULL, *allocationStr = NULL, *format = NULL;
const char *snapshotStrVol = NULL, *snapshotStrFormat = NULL; const char *snapshotStrVol = NULL, *snapshotStrFormat = NULL;
unsigned long long capacity, allocation = 0; unsigned long long capacity, allocation = 0;
...@@ -337,12 +342,16 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd) ...@@ -337,12 +342,16 @@ cmdVolCreateAs(vshControl *ctl, const vshCmd *cmd)
} }
xml = virBufferContentAndReset(&buf); xml = virBufferContentAndReset(&buf);
if (!(vol = virStorageVolCreateXML(pool, xml, flags))) { if (printXML) {
vshError(ctl, _("Failed to create vol %s"), name); vshPrint(ctl, "%s", xml);
goto cleanup; } else {
if (!(vol = virStorageVolCreateXML(pool, xml, flags))) {
vshError(ctl, _("Failed to create vol %s"), name);
goto cleanup;
}
vshPrint(ctl, _("Vol %s created\n"), name);
} }
vshPrint(ctl, _("Vol %s created\n"), name);
ret = true; ret = true;
cleanup: cleanup:
......
...@@ -3427,9 +3427,11 @@ If this is not possible, the copy fails. ...@@ -3427,9 +3427,11 @@ If this is not possible, the copy fails.
=item B<vol-create-as> I<pool-or-uuid> I<name> I<capacity> =item B<vol-create-as> I<pool-or-uuid> I<name> I<capacity>
[I<--allocation> I<size>] [I<--format> I<string>] [I<--backing-vol> [I<--allocation> I<size>] [I<--format> I<string>] [I<--backing-vol>
I<vol-name-or-key-or-path>] [I<--backing-vol-format> I<string>] I<vol-name-or-key-or-path>] [I<--backing-vol-format> I<string>]
[I<--prealloc-metadata>] [I<--prealloc-metadata>] [I<--print-xml>]
Create a volume from a set of arguments. Create a volume from a set of arguments unless I<--print-xml> is specified, in
which case just the XML of the volume object is printed out without any actual
object creation.
I<pool-or-uuid> is the name or UUID of the storage pool to create the volume I<pool-or-uuid> is the name or UUID of the storage pool to create the volume
in. in.
I<name> is the name of the new volume. For a disk pool, this must match the I<name> is the name of the new volume. For a disk pool, this must match the
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册