mirror of https://gitee.com/openkylin/libvirt.git
virsh: Introduce virshStoragePoolNameCompleter
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
9d34af1a6b
commit
69026fc270
|
@ -147,3 +147,51 @@ virshDomainInterfaceCompleter(vshControl *ctl,
|
|||
virStringListFree(ret);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
char **
|
||||
virshStoragePoolNameCompleter(vshControl *ctl,
|
||||
const vshCmd *cmd ATTRIBUTE_UNUSED,
|
||||
unsigned int flags)
|
||||
{
|
||||
virshControlPtr priv = ctl->privData;
|
||||
virStoragePoolPtr *pools = NULL;
|
||||
int npools = 0;
|
||||
size_t i = 0;
|
||||
char **ret = NULL;
|
||||
|
||||
virCheckFlags(VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE |
|
||||
VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE |
|
||||
VIR_CONNECT_LIST_STORAGE_POOLS_PERSISTENT,
|
||||
NULL);
|
||||
|
||||
if (!priv->conn || virConnectIsAlive(priv->conn) <= 0)
|
||||
return NULL;
|
||||
|
||||
if ((npools = virConnectListAllStoragePools(priv->conn, &pools, flags)) < 0)
|
||||
return NULL;
|
||||
|
||||
if (VIR_ALLOC_N(ret, npools + 1) < 0)
|
||||
goto error;
|
||||
|
||||
for (i = 0; i < npools; i++) {
|
||||
const char *name = virStoragePoolGetName(pools[i]);
|
||||
|
||||
if (VIR_STRDUP(ret[i], name) < 0)
|
||||
goto error;
|
||||
|
||||
virStoragePoolFree(pools[i]);
|
||||
}
|
||||
VIR_FREE(pools);
|
||||
|
||||
return ret;
|
||||
|
||||
error:
|
||||
for (; i < npools; i++)
|
||||
virStoragePoolFree(pools[i]);
|
||||
VIR_FREE(pools);
|
||||
for (i = 0; i < npools; i++)
|
||||
VIR_FREE(ret[i]);
|
||||
VIR_FREE(ret);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -38,4 +38,8 @@ char ** virshDomainInterfaceCompleter(vshControl *ctl,
|
|||
const vshCmd *cmd,
|
||||
unsigned int flags);
|
||||
|
||||
char ** virshStoragePoolNameCompleter(vshControl *ctl,
|
||||
const vshCmd *cmd,
|
||||
unsigned int flags);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -34,8 +34,8 @@
|
|||
#include "virstring.h"
|
||||
#include "virtime.h"
|
||||
|
||||
#define VIRSH_COMMON_OPT_POOL_FULL \
|
||||
VIRSH_COMMON_OPT_POOL(N_("pool name or uuid"))
|
||||
#define VIRSH_COMMON_OPT_POOL_FULL(cflags) \
|
||||
VIRSH_COMMON_OPT_POOL(N_("pool name or uuid"), cflags)
|
||||
|
||||
#define VIRSH_COMMON_OPT_POOL_BUILD \
|
||||
{.name = "build", \
|
||||
|
@ -182,7 +182,7 @@ static const vshCmdInfo info_pool_autostart[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_autostart[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(VIR_CONNECT_LIST_STORAGE_POOLS_PERSISTENT),
|
||||
|
||||
{.name = "disable",
|
||||
.type = VSH_OT_BOOL,
|
||||
|
@ -575,7 +575,7 @@ static const vshCmdInfo info_pool_build[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_build[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||
VIRSH_COMMON_OPT_POOL_NO_OVERWRITE,
|
||||
VIRSH_COMMON_OPT_POOL_OVERWRITE,
|
||||
|
||||
|
@ -625,7 +625,7 @@ static const vshCmdInfo info_pool_destroy[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_destroy[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE),
|
||||
|
||||
{.name = NULL}
|
||||
};
|
||||
|
@ -665,7 +665,7 @@ static const vshCmdInfo info_pool_delete[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_delete[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE),
|
||||
|
||||
{.name = NULL}
|
||||
};
|
||||
|
@ -705,7 +705,7 @@ static const vshCmdInfo info_pool_refresh[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_refresh[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||
|
||||
{.name = NULL}
|
||||
};
|
||||
|
@ -745,7 +745,7 @@ static const vshCmdInfo info_pool_dumpxml[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_dumpxml[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||
|
||||
{.name = "inactive",
|
||||
.type = VSH_OT_BOOL,
|
||||
|
@ -1636,7 +1636,7 @@ static const vshCmdInfo info_pool_info[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_info[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||
|
||||
{.name = "bytes",
|
||||
.type = VSH_OT_BOOL,
|
||||
|
@ -1726,7 +1726,7 @@ static const vshCmdInfo info_pool_name[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_name[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||
|
||||
{.name = NULL}
|
||||
};
|
||||
|
@ -1758,7 +1758,7 @@ static const vshCmdInfo info_pool_start[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_start[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(VIR_CONNECT_LIST_STORAGE_POOLS_INACTIVE),
|
||||
VIRSH_COMMON_OPT_POOL_BUILD,
|
||||
VIRSH_COMMON_OPT_POOL_NO_OVERWRITE,
|
||||
VIRSH_COMMON_OPT_POOL_OVERWRITE,
|
||||
|
@ -1819,7 +1819,7 @@ static const vshCmdInfo info_pool_undefine[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_undefine[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(VIR_CONNECT_LIST_STORAGE_POOLS_PERSISTENT),
|
||||
|
||||
{.name = NULL}
|
||||
};
|
||||
|
@ -1859,7 +1859,7 @@ static const vshCmdInfo info_pool_uuid[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_uuid[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||
|
||||
{.name = NULL}
|
||||
};
|
||||
|
@ -1896,7 +1896,7 @@ static const vshCmdInfo info_pool_edit[] = {
|
|||
};
|
||||
|
||||
static const vshCmdOptDef opts_pool_edit[] = {
|
||||
VIRSH_COMMON_OPT_POOL_FULL,
|
||||
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||
|
||||
{.name = NULL}
|
||||
};
|
||||
|
|
|
@ -44,15 +44,19 @@
|
|||
#include "virstring.h"
|
||||
|
||||
#define VIRSH_COMMON_OPT_POOL_FULL \
|
||||
VIRSH_COMMON_OPT_POOL(N_("pool name or uuid"))
|
||||
VIRSH_COMMON_OPT_POOL(N_("pool name or uuid"), \
|
||||
VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE)
|
||||
|
||||
#define VIRSH_COMMON_OPT_POOL_NAME \
|
||||
VIRSH_COMMON_OPT_POOL(N_("pool name"))
|
||||
VIRSH_COMMON_OPT_POOL(N_("pool name"), \
|
||||
VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE)
|
||||
|
||||
#define VIRSH_COMMON_OPT_POOL_OPTIONAL \
|
||||
{.name = "pool", \
|
||||
.type = VSH_OT_STRING, \
|
||||
.help = N_("pool name or uuid") \
|
||||
.help = N_("pool name or uuid"), \
|
||||
.completer = virshStoragePoolNameCompleter, \
|
||||
.completer_flags = VIR_CONNECT_LIST_STORAGE_POOLS_ACTIVE, \
|
||||
}
|
||||
|
||||
#define VIRSH_COMMON_OPT_VOLUME_VOL \
|
||||
|
|
|
@ -64,11 +64,13 @@
|
|||
/*
|
||||
* Common command options
|
||||
*/
|
||||
# define VIRSH_COMMON_OPT_POOL(_helpstr) \
|
||||
# define VIRSH_COMMON_OPT_POOL(_helpstr, cflags) \
|
||||
{.name = "pool", \
|
||||
.type = VSH_OT_DATA, \
|
||||
.flags = VSH_OFLAG_REQ, \
|
||||
.help = _helpstr \
|
||||
.help = _helpstr, \
|
||||
.completer = virshStoragePoolNameCompleter, \
|
||||
.completer_flags = cflags, \
|
||||
}
|
||||
|
||||
# define VIRSH_COMMON_OPT_DOMAIN(_helpstr, cflags) \
|
||||
|
|
Loading…
Reference in New Issue