mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 03:25:20 +00:00
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);
|
virStringListFree(ret);
|
||||||
return NULL;
|
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,
|
const vshCmd *cmd,
|
||||||
unsigned int flags);
|
unsigned int flags);
|
||||||
|
|
||||||
|
char ** virshStoragePoolNameCompleter(vshControl *ctl,
|
||||||
|
const vshCmd *cmd,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -34,8 +34,8 @@
|
|||||||
#include "virstring.h"
|
#include "virstring.h"
|
||||||
#include "virtime.h"
|
#include "virtime.h"
|
||||||
|
|
||||||
#define VIRSH_COMMON_OPT_POOL_FULL \
|
#define VIRSH_COMMON_OPT_POOL_FULL(cflags) \
|
||||||
VIRSH_COMMON_OPT_POOL(N_("pool name or uuid"))
|
VIRSH_COMMON_OPT_POOL(N_("pool name or uuid"), cflags)
|
||||||
|
|
||||||
#define VIRSH_COMMON_OPT_POOL_BUILD \
|
#define VIRSH_COMMON_OPT_POOL_BUILD \
|
||||||
{.name = "build", \
|
{.name = "build", \
|
||||||
@ -182,7 +182,7 @@ static const vshCmdInfo info_pool_autostart[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_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",
|
{.name = "disable",
|
||||||
.type = VSH_OT_BOOL,
|
.type = VSH_OT_BOOL,
|
||||||
@ -575,7 +575,7 @@ static const vshCmdInfo info_pool_build[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_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_NO_OVERWRITE,
|
||||||
VIRSH_COMMON_OPT_POOL_OVERWRITE,
|
VIRSH_COMMON_OPT_POOL_OVERWRITE,
|
||||||
|
|
||||||
@ -625,7 +625,7 @@ static const vshCmdInfo info_pool_destroy[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_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}
|
{.name = NULL}
|
||||||
};
|
};
|
||||||
@ -665,7 +665,7 @@ static const vshCmdInfo info_pool_delete[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_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}
|
{.name = NULL}
|
||||||
};
|
};
|
||||||
@ -705,7 +705,7 @@ static const vshCmdInfo info_pool_refresh[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_pool_refresh[] = {
|
static const vshCmdOptDef opts_pool_refresh[] = {
|
||||||
VIRSH_COMMON_OPT_POOL_FULL,
|
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||||
|
|
||||||
{.name = NULL}
|
{.name = NULL}
|
||||||
};
|
};
|
||||||
@ -745,7 +745,7 @@ static const vshCmdInfo info_pool_dumpxml[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_pool_dumpxml[] = {
|
static const vshCmdOptDef opts_pool_dumpxml[] = {
|
||||||
VIRSH_COMMON_OPT_POOL_FULL,
|
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||||
|
|
||||||
{.name = "inactive",
|
{.name = "inactive",
|
||||||
.type = VSH_OT_BOOL,
|
.type = VSH_OT_BOOL,
|
||||||
@ -1636,7 +1636,7 @@ static const vshCmdInfo info_pool_info[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_pool_info[] = {
|
static const vshCmdOptDef opts_pool_info[] = {
|
||||||
VIRSH_COMMON_OPT_POOL_FULL,
|
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||||
|
|
||||||
{.name = "bytes",
|
{.name = "bytes",
|
||||||
.type = VSH_OT_BOOL,
|
.type = VSH_OT_BOOL,
|
||||||
@ -1726,7 +1726,7 @@ static const vshCmdInfo info_pool_name[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_pool_name[] = {
|
static const vshCmdOptDef opts_pool_name[] = {
|
||||||
VIRSH_COMMON_OPT_POOL_FULL,
|
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||||
|
|
||||||
{.name = NULL}
|
{.name = NULL}
|
||||||
};
|
};
|
||||||
@ -1758,7 +1758,7 @@ static const vshCmdInfo info_pool_start[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_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_BUILD,
|
||||||
VIRSH_COMMON_OPT_POOL_NO_OVERWRITE,
|
VIRSH_COMMON_OPT_POOL_NO_OVERWRITE,
|
||||||
VIRSH_COMMON_OPT_POOL_OVERWRITE,
|
VIRSH_COMMON_OPT_POOL_OVERWRITE,
|
||||||
@ -1819,7 +1819,7 @@ static const vshCmdInfo info_pool_undefine[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_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}
|
{.name = NULL}
|
||||||
};
|
};
|
||||||
@ -1859,7 +1859,7 @@ static const vshCmdInfo info_pool_uuid[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_pool_uuid[] = {
|
static const vshCmdOptDef opts_pool_uuid[] = {
|
||||||
VIRSH_COMMON_OPT_POOL_FULL,
|
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||||
|
|
||||||
{.name = NULL}
|
{.name = NULL}
|
||||||
};
|
};
|
||||||
@ -1896,7 +1896,7 @@ static const vshCmdInfo info_pool_edit[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const vshCmdOptDef opts_pool_edit[] = {
|
static const vshCmdOptDef opts_pool_edit[] = {
|
||||||
VIRSH_COMMON_OPT_POOL_FULL,
|
VIRSH_COMMON_OPT_POOL_FULL(0),
|
||||||
|
|
||||||
{.name = NULL}
|
{.name = NULL}
|
||||||
};
|
};
|
||||||
|
@ -44,15 +44,19 @@
|
|||||||
#include "virstring.h"
|
#include "virstring.h"
|
||||||
|
|
||||||
#define VIRSH_COMMON_OPT_POOL_FULL \
|
#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 \
|
#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 \
|
#define VIRSH_COMMON_OPT_POOL_OPTIONAL \
|
||||||
{.name = "pool", \
|
{.name = "pool", \
|
||||||
.type = VSH_OT_STRING, \
|
.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 \
|
#define VIRSH_COMMON_OPT_VOLUME_VOL \
|
||||||
|
@ -64,11 +64,13 @@
|
|||||||
/*
|
/*
|
||||||
* Common command options
|
* Common command options
|
||||||
*/
|
*/
|
||||||
# define VIRSH_COMMON_OPT_POOL(_helpstr) \
|
# define VIRSH_COMMON_OPT_POOL(_helpstr, cflags) \
|
||||||
{.name = "pool", \
|
{.name = "pool", \
|
||||||
.type = VSH_OT_DATA, \
|
.type = VSH_OT_DATA, \
|
||||||
.flags = VSH_OFLAG_REQ, \
|
.flags = VSH_OFLAG_REQ, \
|
||||||
.help = _helpstr \
|
.help = _helpstr, \
|
||||||
|
.completer = virshStoragePoolNameCompleter, \
|
||||||
|
.completer_flags = cflags, \
|
||||||
}
|
}
|
||||||
|
|
||||||
# define VIRSH_COMMON_OPT_DOMAIN(_helpstr, cflags) \
|
# define VIRSH_COMMON_OPT_DOMAIN(_helpstr, cflags) \
|
||||||
|
Loading…
Reference in New Issue
Block a user