On 25.11.2015 20:11, John Ferlan wrote: > https://bugzilla.redhat.com/show_bug.cgi?id=830056 > > Utilize recently added VIR_STORAGE_POOL_CREATE_WITH_BUILD* flags in > order to pass the flags along to the virStoragePoolCreateXML and > virStoragePoolCreate API's. > > This affects the 'virsh pool-create', 'virsh pool-create-as', and > 'virsh pool-start' commands. While it could be argued that pool-start > doesn't need the flags, they could prove useful for someone trying to > do one command build --overwrite and start command processing or > essentially starting with a clean slate. > > NB: > This patch is loosely based upon code originally authored by Osier > Yang that were not reviewed and pushed, see: > > https://www.redhat.com/archives/libvir-list/2012-July/msg00497.html > Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> > --- > tools/virsh-pool.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++--- > tools/virsh.pod | 25 ++++++++++++++++++- > 2 files changed, 94 insertions(+), 4 deletions(-) > > diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c > index cb91cd3..1bb987d 100644 > --- a/tools/virsh-pool.c > +++ b/tools/virsh-pool.c > @@ -47,6 +47,13 @@ > .help = N_("file containing an XML pool description") \ > }, \ > > +#define OPT_BUILD_COMMON \ > + {.name = "build", \ > + .type = VSH_OT_BOOL, \ > + .flags = 0, \ > + .help = N_("build the pool as normal") \ > + }, \ > + > #define OPT_NO_OVERWRITE_COMMON \ > {.name = "no-overwrite", \ > .type = VSH_OT_BOOL, \ > @@ -235,6 +242,9 @@ static const vshCmdInfo info_pool_create[] = { > > static const vshCmdOptDef opts_pool_create[] = { > OPT_FILE_COMMON > + OPT_BUILD_COMMON > + OPT_NO_OVERWRITE_COMMON > + OPT_OVERWRITE_COMMON > > {.name = NULL} > }; > @@ -246,15 +256,32 @@ cmdPoolCreate(vshControl *ctl, const vshCmd *cmd) > const char *from = NULL; > bool ret = true; > char *buffer; > + bool build; > + bool overwrite; > + bool no_overwrite; > + unsigned int flags = 0; > virshControlPtr priv = ctl->privData; > > if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) > return false; > > + build = vshCommandOptBool(cmd, "build"); > + overwrite = vshCommandOptBool(cmd, "overwrite"); > + no_overwrite = vshCommandOptBool(cmd, "no-overwrite"); > + > + VSH_EXCLUSIVE_OPTIONS_VAR(overwrite, no_overwrite); A-HA! I knew it! These are mutually exclusive. So please do fix 1/6. > + > + if (build) > + flags |= VIR_STORAGE_POOL_CREATE_WITH_BUILD; > + if (overwrite) > + flags |= VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE; > + if (no_overwrite) > + flags |= VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE; > + > if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) > return false; > > - pool = virStoragePoolCreateXML(priv->conn, buffer, 0); > + pool = virStoragePoolCreateXML(priv->conn, buffer, flags); > VIR_FREE(buffer); > > if (pool != NULL) { ACK Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list