On 05/30/2010 10:24 AM, Justin Clift wrote:
Hi all,
When creating pools from dedicated disks, the existing pool-define-as
and pool-create-as commands are a bit non-optimal.
Ideally, a person would be able to specify all of the required options
directly on the command line instead of having to edit the XML.
At the moment, there is no way to specify the format type (ie gpt) so it
gets included in the XML the pool is constructed with.
Please find attached a simple (tested) patch to add an optional
"--source-format 'type'" to virsh. This is patched against current git
master and will apply cleanly.
Also created a Red Hat BZ ticket for this (#597790) for tracking.
Regards and best wishes,
Justin Clift
diff --git a/tools/virsh.c b/tools/virsh.c
index 4930ad7..1279f41 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -4468,13 +4468,14 @@ static const vshCmdOptDef opts_pool_X_as[] = {
{"source-dev", VSH_OT_DATA, 0, N_("source device for underlying
storage")},
{"source-name", VSH_OT_DATA, 0, N_("source name for underlying
storage")},
{"target", VSH_OT_DATA, 0, N_("target for underlying
storage")},
+ {"source-format", VSH_OT_STRING, 0, N_("format for underlying
storage")},
{NULL, 0, 0, NULL}
};
static int buildPoolXML(const vshCmd *cmd, char **retname, char **xml) {
int found;
- char *name, *type, *srcHost, *srcPath, *srcDev, *srcName, *target;
+ char *name, *type, *srcHost, *srcPath, *srcDev, *srcName, *srcFormat, *target;
virBuffer buf = VIR_BUFFER_INITIALIZER;
name = vshCommandOptString(cmd, "name", &found);
@@ -4488,6 +4489,7 @@ static int buildPoolXML(const vshCmd *cmd, char **retname, char
**xml) {
srcPath = vshCommandOptString(cmd, "source-path", &found);
srcDev = vshCommandOptString(cmd, "source-dev", &found);
srcName = vshCommandOptString(cmd, "source-name", &found);
+ srcFormat = vshCommandOptString(cmd, "source-format", &found);
target = vshCommandOptString(cmd, "target", &found);
virBufferVSprintf(&buf, "<pool type='%s'>\n", type);
@@ -4501,6 +4503,8 @@ static int buildPoolXML(const vshCmd *cmd, char **retname, char
**xml) {
virBufferVSprintf(&buf, " <dir
path='%s'/>\n", srcPath);
if (srcDev)
virBufferVSprintf(&buf, " <device
path='%s'/>\n", srcDev);
+ if (srcFormat)
+ virBufferVSprintf(&buf, " <format
type='%s'/>\n", srcFormat);
if (srcName)
virBufferVSprintf(&buf, " <name>%s</name>\n",
srcName);
ACK
- Cole