Now that we have everything prepared let the fun begin. This
completer is very simple and returns domain names. Moreover,
depending on the command it can return just a subset of domains
(e.g. only running/paused/transient/.. ones).
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
tools/Makefile.am | 9 +++
tools/virsh-completer.c | 90 +++++++++++++++++++++
tools/virsh-completer.h | 33 ++++++++
tools/virsh-domain-monitor.c | 30 +++----
tools/virsh-domain.c | 182 ++++++++++++++++++++++---------------------
tools/virsh-snapshot.c | 24 +++---
tools/virsh.h | 7 +-
7 files changed, 256 insertions(+), 119 deletions(-)
create mode 100644 tools/virsh-completer.c
create mode 100644 tools/virsh-completer.h
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 1df2a601f..7466d8282 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -231,6 +231,15 @@ virsh_SOURCES = \
virsh-volume.c virsh-volume.h \
$(NULL)
+VIRSH_COMPLETER = \
+ virsh-completer.c virsh-completer.h
+
+if WITH_READLINE
+virsh_SOURCES += $(VIRSH_COMPLETER)
+else ! WITH_READLINE
+EXTRA_DIST += $(VIRSH_COMPLETER)
+endif ! WITH_READLINE
+
virsh_LDFLAGS = \
$(AM_LDFLAGS) \
$(PIE_LDFLAGS) \
diff --git a/tools/virsh-completer.c b/tools/virsh-completer.c
new file mode 100644
index 000000000..4e32b882b
--- /dev/null
+++ b/tools/virsh-completer.c
@@ -0,0 +1,90 @@
+/*
+ * virsh-completer.c: virsh completer callbacks
+ *
+ * Copyright (C) 2017 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Michal Privoznik <mprivozn@redhat.com>
+ *
+ */
+
+#include <config.h>
+
+#include "virsh-completer.h"
+#include "virsh.h"
+#include "virsh-util.h"
+#include "internal.h"
+#include "viralloc.h"
+#include "virstring.h"
+
+
+char **
+virshDomainNameCompleter(vshControl *ctl,
+ const vshCmd *cmd ATTRIBUTE_UNUSED,
+ unsigned int flags)
+{
+ virshControlPtr priv = ctl->privData;
+ virDomainPtr *domains = NULL;
+ int ndomains = 0;
+ size_t i = 0;
+ char **ret = NULL;
+
+ virCheckFlags(VIR_CONNECT_LIST_DOMAINS_ACTIVE |
+ VIR_CONNECT_LIST_DOMAINS_INACTIVE |
+ VIR_CONNECT_LIST_DOMAINS_PERSISTENT |
+ VIR_CONNECT_LIST_DOMAINS_TRANSIENT |
+ VIR_CONNECT_LIST_DOMAINS_RUNNING |
+ VIR_CONNECT_LIST_DOMAINS_PAUSED |
+ VIR_CONNECT_LIST_DOMAINS_SHUTOFF |
+ VIR_CONNECT_LIST_DOMAINS_OTHER |
+ VIR_CONNECT_LIST_DOMAINS_MANAGEDSAVE |
+ VIR_CONNECT_LIST_DOMAINS_NO_MANAGEDSAVE |
+ VIR_CONNECT_LIST_DOMAINS_AUTOSTART |
+ VIR_CONNECT_LIST_DOMAINS_NO_AUTOSTART |
+ VIR_CONNECT_LIST_DOMAINS_HAS_SNAPSHOT |
+ VIR_CONNECT_LIST_DOMAINS_NO_SNAPSHOT,
+ NULL);
+
+ if (!priv->conn || virConnectIsAlive(priv->conn) <= 0)
+ return NULL;
+
+ if ((ndomains = virConnectListAllDomains(priv->conn, &domains, flags)) < 0)
+ return NULL;
+
+ if (VIR_ALLOC_N(ret, ndomains + 1) < 0)
+ goto error;
+
+ for (i = 0; i < ndomains; i++) {
+ const char *name = virDomainGetName(domains[i]);
+
+ if (VIR_STRDUP(ret[i], name) < 0)
+ goto error;
+
+ virshDomainFree(domains[i]);
+ }
+ VIR_FREE(domains);
+
+ return ret;
+ error:
+
+ for (; i < ndomains; i++)
+ virshDomainFree(domains[i]);
+ VIR_FREE(domains);
+ for (i = 0; i < ndomains; i++)
+ VIR_FREE(ret[i]);
+ VIR_FREE(ret);
+ return NULL;
+}
diff --git a/tools/virsh-completer.h b/tools/virsh-completer.h
new file mode 100644
index 000000000..288e17909
--- /dev/null
+++ b/tools/virsh-completer.h
@@ -0,0 +1,33 @@
+/*
+ * virsh-completer.h: virsh completer callbacks
+ *
+ * Copyright (C) 2017 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Michal Privoznik <mprivozn@redhat.com>
+ *
+ */
+
+#ifndef VIRSH_COMPLETER
+# define VIRSH_COMPLETER
+
+# include "vsh.h"
+
+char ** virshDomainNameCompleter(vshControl *ctl,
+ const vshCmd *cmd,
+ unsigned int flags);
+
+#endif
diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
index 7b4e320c2..a09eb010c 100644
--- a/tools/virsh-domain-monitor.c
+++ b/tools/virsh-domain-monitor.c
@@ -40,8 +40,8 @@
#include "virxml.h"
#include "virstring.h"
-#define VIRSH_COMMON_OPT_DOMAIN_FULL \
- VIRSH_COMMON_OPT_DOMAIN(N_("domain name, id or uuid"))
+#define VIRSH_COMMON_OPT_DOMAIN_FULL(cflags) \
+ VIRSH_COMMON_OPT_DOMAIN(N_("domain name, id or uuid"), cflags)
VIR_ENUM_DECL(virshDomainIOError)
VIR_ENUM_IMPL(virshDomainIOError,
@@ -278,7 +278,7 @@ static const vshCmdInfo info_dommemstat[] = {
};
static const vshCmdOptDef opts_dommemstat[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "period",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ_OPT,
@@ -390,7 +390,7 @@ static const vshCmdInfo info_domblkinfo[] = {
};
static const vshCmdOptDef opts_domblkinfo[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "device",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -460,7 +460,7 @@ static const vshCmdInfo info_domblklist[] = {
};
static const vshCmdOptDef opts_domblklist[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "inactive",
.type = VSH_OT_BOOL,
.help = N_("get inactive rather than running configuration")
@@ -566,7 +566,7 @@ static const vshCmdInfo info_domiflist[] = {
};
static const vshCmdOptDef opts_domiflist[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "inactive",
.type = VSH_OT_BOOL,
.help = N_("get inactive rather than running configuration")
@@ -655,7 +655,7 @@ static const vshCmdInfo info_domif_getlink[] = {
};
static const vshCmdOptDef opts_domif_getlink[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "interface",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -752,7 +752,7 @@ static const vshCmdInfo info_domcontrol[] = {
};
static const vshCmdOptDef opts_domcontrol[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = NULL}
};
@@ -805,7 +805,7 @@ static const vshCmdInfo info_domblkstat[] = {
};
static const vshCmdOptDef opts_domblkstat[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "device",
.type = VSH_OT_STRING,
.flags = VSH_OFLAG_EMPTY_OK,
@@ -991,7 +991,7 @@ static const vshCmdInfo info_domifstat[] = {
};
static const vshCmdOptDef opts_domifstat[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "interface",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -1064,7 +1064,7 @@ static const vshCmdInfo info_domblkerror[] = {
};
static const vshCmdOptDef opts_domblkerror[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = NULL}
};
@@ -1125,7 +1125,7 @@ static const vshCmdInfo info_dominfo[] = {
};
static const vshCmdOptDef opts_dominfo[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = NULL}
};
@@ -1264,7 +1264,7 @@ static const vshCmdInfo info_domstate[] = {
};
static const vshCmdOptDef opts_domstate[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "reason",
.type = VSH_OT_BOOL,
.help = N_("also print reason for the state")
@@ -1316,7 +1316,7 @@ static const vshCmdInfo info_domtime[] = {
};
static const vshCmdOptDef opts_domtime[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "now",
.type = VSH_OT_BOOL,
.help = N_("set to the time of the host running virsh")
@@ -2145,7 +2145,7 @@ static const vshCmdInfo info_domifaddr[] = {
};
static const vshCmdOptDef opts_domifaddr[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "interface",
.type = VSH_OT_STRING,
.flags = VSH_OFLAG_NONE,
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 93cb02098..13f8db3dd 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -65,8 +65,8 @@
# define SA_SIGINFO 0
#endif
-#define VIRSH_COMMON_OPT_DOMAIN_FULL \
- VIRSH_COMMON_OPT_DOMAIN(N_("domain name, id or uuid"))
+#define VIRSH_COMMON_OPT_DOMAIN_FULL(cflags) \
+ VIRSH_COMMON_OPT_DOMAIN(N_("domain name, id or uuid"), cflags)
#define VIRSH_COMMON_OPT_DOMAIN_PERSISTENT \
{.name = "persistent", \
@@ -154,7 +154,7 @@ static const vshCmdInfo info_attach_device[] = {
};
static const vshCmdOptDef opts_attach_device[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
VIRSH_COMMON_OPT_FILE(N_("XML file")),
VIRSH_COMMON_OPT_DOMAIN_PERSISTENT,
VIRSH_COMMON_OPT_DOMAIN_CONFIG,
@@ -236,7 +236,7 @@ static const vshCmdInfo info_attach_disk[] = {
};
static const vshCmdOptDef opts_attach_disk[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "source",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ | VSH_OFLAG_EMPTY_OK,
@@ -727,7 +727,7 @@ static const vshCmdInfo info_attach_interface[] = {
};
static const vshCmdOptDef opts_attach_interface[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "type",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -1037,7 +1037,7 @@ static const vshCmdInfo info_autostart[] = {
};
static const vshCmdOptDef opts_autostart[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "disable",
.type = VSH_OT_BOOL,
.help = N_("disable autostarting")
@@ -1089,7 +1089,7 @@ static const vshCmdInfo info_blkdeviotune[] = {
};
static const vshCmdOptDef opts_blkdeviotune[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "device",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -1416,7 +1416,7 @@ static const vshCmdInfo info_blkiotune[] = {
};
static const vshCmdOptDef opts_blkiotune[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "weight",
.type = VSH_OT_INT,
.help = N_("IO Weight")
@@ -1885,7 +1885,7 @@ static const vshCmdInfo info_block_commit[] = {
};
static const vshCmdOptDef opts_block_commit[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "path",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -2110,7 +2110,7 @@ static const vshCmdInfo info_block_copy[] = {
};
static const vshCmdOptDef opts_block_copy[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "path",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -2426,7 +2426,7 @@ static const vshCmdInfo info_block_job[] = {
};
static const vshCmdOptDef opts_block_job[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "path",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -2669,7 +2669,7 @@ static const vshCmdInfo info_block_pull[] = {
};
static const vshCmdOptDef opts_block_pull[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "path",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -2815,7 +2815,7 @@ static const vshCmdInfo info_block_resize[] = {
};
static const vshCmdOptDef opts_block_resize[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "path",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -2879,7 +2879,7 @@ static const vshCmdInfo info_console[] = {
};
static const vshCmdOptDef opts_console[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "devname", /* sc_prohibit_devname */
.type = VSH_OT_STRING,
.help = N_("character device name")
@@ -2973,7 +2973,7 @@ static const vshCmdInfo info_domif_setlink[] = {
};
static const vshCmdOptDef opts_domif_setlink[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "interface",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -3143,7 +3143,7 @@ static const vshCmdInfo info_domiftune[] = {
};
static const vshCmdOptDef opts_domiftune[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "interface",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -3340,7 +3340,7 @@ static const vshCmdInfo info_suspend[] = {
};
static const vshCmdOptDef opts_suspend[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_RUNNING),
{.name = NULL}
};
@@ -3382,7 +3382,7 @@ static const vshCmdInfo info_dom_pm_suspend[] = {
};
static const vshCmdOptDef opts_dom_pm_suspend[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_RUNNING),
{.name = "target",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -3460,7 +3460,7 @@ static const vshCmdInfo info_dom_pm_wakeup[] = {
};
static const vshCmdOptDef opts_dom_pm_wakeup[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_OTHER),
{.name = NULL}
};
@@ -3505,7 +3505,7 @@ static const vshCmdInfo info_undefine[] = {
};
static const vshCmdOptDef opts_undefine[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_PERSISTENT),
{.name = "managed-save",
.type = VSH_OT_BOOL,
.help = N_("remove domain managed state file")
@@ -3923,7 +3923,8 @@ static const vshCmdInfo info_start[] = {
};
static const vshCmdOptDef opts_start[] = {
- VIRSH_COMMON_OPT_DOMAIN(N_("name of the inactive domain")),
+ VIRSH_COMMON_OPT_DOMAIN(N_("name of the inactive domain"),
+ VIR_CONNECT_LIST_DOMAINS_SHUTOFF),
#ifndef WIN32
{.name = "console",
.type = VSH_OT_BOOL,
@@ -4098,7 +4099,7 @@ static const vshCmdInfo info_save[] = {
};
static const vshCmdOptDef opts_save[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
VIRSH_COMMON_OPT_FILE(N_("where to save the data")),
{.name = "bypass-cache",
.type = VSH_OT_BOOL,
@@ -4544,7 +4545,7 @@ static const vshCmdInfo info_managedsave[] = {
};
static const vshCmdOptDef opts_managedsave[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "bypass-cache",
.type = VSH_OT_BOOL,
.help = N_("avoid file system cache when saving")
@@ -4663,7 +4664,7 @@ static const vshCmdInfo info_managedsaveremove[] = {
};
static const vshCmdOptDef opts_managedsaveremove[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = NULL}
};
@@ -4718,7 +4719,7 @@ static const vshCmdInfo info_managed_save_edit[] = {
};
static const vshCmdOptDef opts_managed_save_edit[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "running",
.type = VSH_OT_BOOL,
.help = N_("set domain to be running on start")
@@ -4784,7 +4785,7 @@ static const vshCmdInfo info_managed_save_dumpxml[] = {
};
static const vshCmdOptDef opts_managed_save_dumpxml[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "security-info",
.type = VSH_OT_BOOL,
.help = N_("include security sensitive information in XML dump")
@@ -4832,7 +4833,7 @@ static const vshCmdInfo info_managed_save_define[] = {
};
static const vshCmdOptDef opts_managed_save_define[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "xml",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -4904,7 +4905,7 @@ static const vshCmdInfo info_schedinfo[] = {
};
static const vshCmdOptDef opts_schedinfo[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "weight",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ_OPT,
@@ -5215,7 +5216,7 @@ static const vshCmdInfo info_dump[] = {
};
static const vshCmdOptDef opts_dump[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
VIRSH_COMMON_OPT_FILE(N_("where to dump the core")),
VIRSH_COMMON_OPT_LIVE(N_("perform a live core dump if supported")),
{.name = "crash",
@@ -5387,7 +5388,7 @@ static const vshCmdInfo info_screenshot[] = {
};
static const vshCmdOptDef opts_screenshot[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "file",
.type = VSH_OT_STRING,
.help = N_("where to store the screenshot")
@@ -5530,7 +5531,7 @@ static const vshCmdInfo info_setLifecycleAction[] = {
};
static const vshCmdOptDef opts_setLifecycleAction[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "type",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -5626,7 +5627,7 @@ static const vshCmdInfo info_set_user_password[] = {
};
static const vshCmdOptDef opts_set_user_password[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "user",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -5690,7 +5691,7 @@ static const vshCmdInfo info_resume[] = {
};
static const vshCmdOptDef opts_resume[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_PAUSED),
{.name = NULL}
};
@@ -5729,7 +5730,7 @@ static const vshCmdInfo info_shutdown[] = {
};
static const vshCmdOptDef opts_shutdown[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "mode",
.type = VSH_OT_STRING,
.help = N_("shutdown mode: acpi|agent|initctl|signal|paravirt")
@@ -5813,7 +5814,7 @@ static const vshCmdInfo info_reboot[] = {
};
static const vshCmdOptDef opts_reboot[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "mode",
.type = VSH_OT_STRING,
.help = N_("shutdown mode: acpi|agent|initctl|signal|paravirt")
@@ -5892,7 +5893,7 @@ static const vshCmdInfo info_reset[] = {
};
static const vshCmdOptDef opts_reset[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = NULL}
};
@@ -5931,7 +5932,7 @@ static const vshCmdInfo info_domjobinfo[] = {
};
static const vshCmdOptDef opts_domjobinfo[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "completed",
.type = VSH_OT_BOOL,
.help = N_("return statistics of a recently completed job")
@@ -6275,7 +6276,7 @@ static const vshCmdInfo info_domjobabort[] = {
};
static const vshCmdOptDef opts_domjobabort[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = NULL}
};
@@ -6309,7 +6310,7 @@ static const vshCmdInfo info_vcpucount[] = {
};
static const vshCmdOptDef opts_vcpucount[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "maximum",
.type = VSH_OT_BOOL,
.help = N_("get maximum count of vcpus")
@@ -6506,7 +6507,7 @@ static const vshCmdInfo info_vcpuinfo[] = {
};
static const vshCmdOptDef opts_vcpuinfo[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "pretty",
.type = VSH_OT_BOOL,
.help = N_("return human readable output")
@@ -6755,7 +6756,7 @@ static const vshCmdInfo info_vcpupin[] = {
};
static const vshCmdOptDef opts_vcpupin[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "vcpu",
.type = VSH_OT_INT,
.help = N_("vcpu number")
@@ -6972,7 +6973,7 @@ static const vshCmdInfo info_emulatorpin[] = {
};
static const vshCmdOptDef opts_emulatorpin[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "cpulist",
.type = VSH_OT_STRING,
.flags = VSH_OFLAG_EMPTY_OK,
@@ -7076,7 +7077,7 @@ static const vshCmdInfo info_setvcpus[] = {
};
static const vshCmdOptDef opts_setvcpus[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "count",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ,
@@ -7174,7 +7175,7 @@ static const vshCmdInfo info_guestvcpus[] = {
};
static const vshCmdOptDef opts_guestvcpus[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "cpulist",
.type = VSH_OT_STRING,
.help = N_("list of cpus to enable or disable")
@@ -7259,7 +7260,7 @@ static const vshCmdInfo info_setvcpu[] = {
};
static const vshCmdOptDef opts_setvcpu[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "vcpulist",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -7342,7 +7343,7 @@ static const vshCmdInfo info_domblkthreshold[] = {
};
static const vshCmdOptDef opts_domblkthreshold[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "dev",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -7398,7 +7399,7 @@ static const vshCmdInfo info_iothreadinfo[] = {
{.name = NULL}
};
static const vshCmdOptDef opts_iothreadinfo[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
VIRSH_COMMON_OPT_DOMAIN_CONFIG,
VIRSH_COMMON_OPT_DOMAIN_LIVE,
VIRSH_COMMON_OPT_DOMAIN_CURRENT,
@@ -7474,7 +7475,7 @@ static const vshCmdInfo info_iothreadpin[] = {
};
static const vshCmdOptDef opts_iothreadpin[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "iothread",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ,
@@ -7556,7 +7557,7 @@ static const vshCmdInfo info_iothreadadd[] = {
};
static const vshCmdOptDef opts_iothreadadd[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "id",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ,
@@ -7621,7 +7622,7 @@ static const vshCmdInfo info_iothreaddel[] = {
};
static const vshCmdOptDef opts_iothreaddel[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "id",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ,
@@ -7897,7 +7898,7 @@ static const vshCmdInfo info_cpu_stats[] = {
};
static const vshCmdOptDef opts_cpu_stats[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "total",
.type = VSH_OT_BOOL,
.help = N_("Show total statistics only")
@@ -8236,7 +8237,7 @@ static const vshCmdInfo info_destroy[] = {
};
static const vshCmdOptDef opts_destroy[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "graceful",
.type = VSH_OT_BOOL,
.help = N_("terminate gracefully")
@@ -8289,7 +8290,7 @@ static const vshCmdInfo info_desc[] = {
};
static const vshCmdOptDef opts_desc[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
VIRSH_COMMON_OPT_LIVE(N_("modify/get running state")),
VIRSH_COMMON_OPT_CONFIG(N_("modify/get persistent configuration")),
VIRSH_COMMON_OPT_CURRENT(N_("modify/get current state configuration")),
@@ -8454,7 +8455,7 @@ static const vshCmdInfo info_metadata[] = {
};
static const vshCmdOptDef opts_metadata[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "uri",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -8600,7 +8601,7 @@ static const vshCmdInfo info_inject_nmi[] = {
};
static const vshCmdOptDef opts_inject_nmi[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = NULL}
};
@@ -8634,7 +8635,7 @@ static const vshCmdInfo info_send_key[] = {
};
static const vshCmdOptDef opts_send_key[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "codeset",
.type = VSH_OT_STRING,
.flags = VSH_OFLAG_REQ_OPT,
@@ -8730,7 +8731,7 @@ static const vshCmdInfo info_send_process_signal[] = {
};
static const vshCmdOptDef opts_send_process_signal[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "pid",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -8835,7 +8836,7 @@ static const vshCmdInfo info_setmem[] = {
};
static const vshCmdOptDef opts_setmem[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "kilobytes",
.type = VSH_OT_ALIAS,
.help = "size"
@@ -8916,7 +8917,7 @@ static const vshCmdInfo info_setmaxmem[] = {
};
static const vshCmdOptDef opts_setmaxmem[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "kilobytes",
.type = VSH_OT_ALIAS,
.help = "size"
@@ -9004,7 +9005,7 @@ static const vshCmdInfo info_memtune[] = {
};
static const vshCmdOptDef opts_memtune[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "hard-limit",
.type = VSH_OT_INT,
.help = N_("Max memory, as scaled integer (default KiB)")
@@ -9181,7 +9182,7 @@ static const vshCmdInfo info_perf[] = {
};
static const vshCmdOptDef opts_perf[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "enable",
.type = VSH_OT_STRING,
.help = N_("perf events which will be enabled")
@@ -9315,7 +9316,7 @@ static const vshCmdInfo info_numatune[] = {
};
static const vshCmdOptDef opts_numatune[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "mode",
.type = VSH_OT_STRING,
.help = N_("NUMA mode, one of strict, preferred and interleave \n"
@@ -9450,7 +9451,7 @@ static const vshCmdInfo info_qemu_monitor_command[] = {
};
static const vshCmdOptDef opts_qemu_monitor_command[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "hmp",
.type = VSH_OT_BOOL,
.help = N_("command is in human monitor protocol")
@@ -9751,7 +9752,7 @@ static const vshCmdInfo info_qemu_agent_command[] = {
};
static const vshCmdOptDef opts_qemu_agent_command[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "timeout",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ_OPT,
@@ -9873,7 +9874,7 @@ static const vshCmdInfo info_lxc_enter_namespace[] = {
};
static const vshCmdOptDef opts_lxc_enter_namespace[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "noseclabel",
.type = VSH_OT_BOOL,
.help = N_("Do not change process security label")
@@ -10014,7 +10015,7 @@ static const vshCmdInfo info_dumpxml[] = {
};
static const vshCmdOptDef opts_dumpxml[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "inactive",
.type = VSH_OT_BOOL,
.help = N_("show inactive defined XML")
@@ -10223,7 +10224,7 @@ static const vshCmdInfo info_domname[] = {
};
static const vshCmdOptDef opts_domname[] = {
- VIRSH_COMMON_OPT_DOMAIN(N_("domain id or uuid")),
+ VIRSH_COMMON_OPT_DOMAIN(N_("domain id or uuid"), 0),
{.name = NULL}
};
@@ -10255,7 +10256,7 @@ static const vshCmdInfo info_domrename[] = {
};
static const vshCmdOptDef opts_domrename[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_INACTIVE),
{.name = "new-name",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -10302,7 +10303,8 @@ static const vshCmdInfo info_domid[] = {
};
static const vshCmdOptDef opts_domid[] = {
- VIRSH_COMMON_OPT_DOMAIN(N_("domain name or uuid")),
+ VIRSH_COMMON_OPT_DOMAIN(N_("domain name or uuid"),
+ VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = NULL}
};
@@ -10339,7 +10341,7 @@ static const vshCmdInfo info_domuuid[] = {
};
static const vshCmdOptDef opts_domuuid[] = {
- VIRSH_COMMON_OPT_DOMAIN(N_("domain id or name")),
+ VIRSH_COMMON_OPT_DOMAIN(N_("domain id or name"), 0),
{.name = NULL}
};
@@ -10376,7 +10378,7 @@ static const vshCmdInfo info_migrate[] = {
};
static const vshCmdOptDef opts_migrate[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "desturi",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -10974,7 +10976,7 @@ static const vshCmdInfo info_migrate_setmaxdowntime[] = {
};
static const vshCmdOptDef opts_migrate_setmaxdowntime[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "downtime",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ,
@@ -11025,7 +11027,7 @@ static const vshCmdInfo info_migrate_getmaxdowntime[] = {
};
static const vshCmdOptDef opts_migrate_getmaxdowntime[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = NULL}
};
@@ -11066,7 +11068,7 @@ static const vshCmdInfo info_migrate_compcache[] = {
};
static const vshCmdOptDef opts_migrate_compcache[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "size",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ_OPT,
@@ -11123,7 +11125,7 @@ static const vshCmdInfo info_migrate_setspeed[] = {
};
static const vshCmdOptDef opts_migrate_setspeed[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "bandwidth",
.type = VSH_OT_INT,
.flags = VSH_OFLAG_REQ,
@@ -11169,7 +11171,7 @@ static const vshCmdInfo info_migrate_getspeed[] = {
};
static const vshCmdOptDef opts_migrate_getspeed[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = NULL}
};
@@ -11252,7 +11254,7 @@ static const vshCmdInfo info_domdisplay[] = {
};
static const vshCmdOptDef opts_domdisplay[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "include-password",
.type = VSH_OT_BOOL,
.help = N_("includes the password into the connection URI if available")
@@ -11533,7 +11535,7 @@ static const vshCmdInfo info_vncdisplay[] = {
};
static const vshCmdOptDef opts_vncdisplay[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = NULL}
};
@@ -11609,7 +11611,7 @@ static const vshCmdInfo info_ttyconsole[] = {
};
static const vshCmdOptDef opts_ttyconsole[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = NULL}
};
@@ -11651,7 +11653,7 @@ static const vshCmdInfo info_domhostname[] = {
};
static const vshCmdOptDef opts_domhostname[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = NULL}
};
@@ -11810,7 +11812,7 @@ static const vshCmdInfo info_detach_device[] = {
};
static const vshCmdOptDef opts_detach_device[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
VIRSH_COMMON_OPT_FILE(N_("XML file")),
VIRSH_COMMON_OPT_DOMAIN_PERSISTENT,
VIRSH_COMMON_OPT_DOMAIN_CONFIG,
@@ -11891,7 +11893,7 @@ static const vshCmdInfo info_update_device[] = {
};
static const vshCmdOptDef opts_update_device[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
VIRSH_COMMON_OPT_FILE(N_("XML file")),
VIRSH_COMMON_OPT_DOMAIN_PERSISTENT,
VIRSH_COMMON_OPT_DOMAIN_CONFIG,
@@ -11973,7 +11975,7 @@ static const vshCmdInfo info_detach_interface[] = {
};
static const vshCmdOptDef opts_detach_interface[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "type",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -12416,7 +12418,7 @@ static const vshCmdInfo info_detach_disk[] = {
};
static const vshCmdOptDef opts_detach_disk[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "target",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -12516,7 +12518,7 @@ static const vshCmdInfo info_edit[] = {
};
static const vshCmdOptDef opts_edit[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "skip-validate",
.type = VSH_OT_BOOL,
.help = N_("skip validation of the XML against the schema")
@@ -13475,7 +13477,7 @@ static const vshCmdInfo info_change_media[] = {
};
static const vshCmdOptDef opts_change_media[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "path",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -13636,7 +13638,7 @@ static const vshCmdInfo info_domfstrim[] = {
};
static const vshCmdOptDef opts_domfstrim[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "minimum",
.type = VSH_OT_INT,
.help = N_("Just a hint to ignore contiguous "
@@ -13689,7 +13691,7 @@ static const vshCmdInfo info_domfsfreeze[] = {
};
static const vshCmdOptDef opts_domfsfreeze[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "mountpoint",
.type = VSH_OT_ARGV,
.help = N_("mountpoint path to be frozen")
@@ -13742,7 +13744,7 @@ static const vshCmdInfo info_domfsthaw[] = {
};
static const vshCmdOptDef opts_domfsthaw[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = "mountpoint",
.type = VSH_OT_ARGV,
.help = N_("mountpoint path to be thawed")
@@ -13795,7 +13797,7 @@ static const vshCmdInfo info_domfsinfo[] = {
};
static const vshCmdOptDef opts_domfsinfo[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(VIR_CONNECT_LIST_DOMAINS_ACTIVE),
{.name = NULL}
};
diff --git a/tools/virsh-snapshot.c b/tools/virsh-snapshot.c
index cd89a414a..c44a36f98 100644
--- a/tools/virsh-snapshot.c
+++ b/tools/virsh-snapshot.c
@@ -42,8 +42,8 @@
#include "virxml.h"
#include "conf/snapshot_conf.h"
-#define VIRSH_COMMON_OPT_DOMAIN_FULL \
- VIRSH_COMMON_OPT_DOMAIN(N_("domain name, id or uuid"))
+#define VIRSH_COMMON_OPT_DOMAIN_FULL(cflags) \
+ VIRSH_COMMON_OPT_DOMAIN(N_("domain name, id or uuid"), cflags)
/* Helper for snapshot-create and snapshot-create-as */
static bool
@@ -125,7 +125,7 @@ static const vshCmdInfo info_snapshot_create[] = {
};
static const vshCmdOptDef opts_snapshot_create[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "xmlfile",
.type = VSH_OT_STRING,
.help = N_("domain snapshot XML")
@@ -319,7 +319,7 @@ static const vshCmdInfo info_snapshot_create_as[] = {
};
static const vshCmdOptDef opts_snapshot_create_as[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "name",
.type = VSH_OT_STRING,
.help = N_("name of snapshot")
@@ -508,7 +508,7 @@ static const vshCmdInfo info_snapshot_edit[] = {
};
static const vshCmdOptDef opts_snapshot_edit[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "snapshotname",
.type = VSH_OT_STRING,
.help = N_("snapshot name")
@@ -620,7 +620,7 @@ static const vshCmdInfo info_snapshot_current[] = {
};
static const vshCmdOptDef opts_snapshot_current[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "name",
.type = VSH_OT_BOOL,
.help = N_("list the name, rather than the full xml")
@@ -851,7 +851,7 @@ static const vshCmdInfo info_snapshot_info[] = {
};
static const vshCmdOptDef opts_snapshot_info[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "snapshotname",
.type = VSH_OT_STRING,
.help = N_("snapshot name")
@@ -1401,7 +1401,7 @@ static const vshCmdInfo info_snapshot_list[] = {
};
static const vshCmdOptDef opts_snapshot_list[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "parent",
.type = VSH_OT_BOOL,
.help = N_("add a column showing parent snapshot")
@@ -1657,7 +1657,7 @@ static const vshCmdInfo info_snapshot_dumpxml[] = {
};
static const vshCmdOptDef opts_snapshot_dumpxml[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "snapshotname",
.type = VSH_OT_DATA,
.flags = VSH_OFLAG_REQ,
@@ -1720,7 +1720,7 @@ static const vshCmdInfo info_snapshot_parent[] = {
};
static const vshCmdOptDef opts_snapshot_parent[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "snapshotname",
.type = VSH_OT_STRING,
.help = N_("find parent of snapshot name")
@@ -1779,7 +1779,7 @@ static const vshCmdInfo info_snapshot_revert[] = {
};
static const vshCmdOptDef opts_snapshot_revert[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "snapshotname",
.type = VSH_OT_STRING,
.help = N_("snapshot name")
@@ -1863,7 +1863,7 @@ static const vshCmdInfo info_snapshot_delete[] = {
};
static const vshCmdOptDef opts_snapshot_delete[] = {
- VIRSH_COMMON_OPT_DOMAIN_FULL,
+ VIRSH_COMMON_OPT_DOMAIN_FULL(0),
{.name = "snapshotname",
.type = VSH_OT_STRING,
.help = N_("snapshot name")
diff --git a/tools/virsh.h b/tools/virsh.h
index b353b645a..528e04558 100644
--- a/tools/virsh.h
+++ b/tools/virsh.h
@@ -38,6 +38,7 @@
# include "virthread.h"
# include "virpolkit.h"
# include "vsh.h"
+# include "virsh-completer.h"
# define VIRSH_PROMPT_RW "virsh # "
# define VIRSH_PROMPT_RO "virsh > "
@@ -70,11 +71,13 @@
.help = _helpstr \
}
-# define VIRSH_COMMON_OPT_DOMAIN(_helpstr) \
+# define VIRSH_COMMON_OPT_DOMAIN(_helpstr, cflags) \
{.name = "domain", \
.type = VSH_OT_DATA, \
.flags = VSH_OFLAG_REQ, \
- .help = _helpstr \
+ .help = _helpstr, \
+ .completer = virshDomainNameCompleter, \
+ .completer_flags = cflags, \
}
# define VIRSH_COMMON_OPT_CONFIG(_helpstr) \
--
2.13.6
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Tue, Jan 02, 2018 at 06:12:09PM +0100, Michal Privoznik wrote: >Now that we have everything prepared let the fun begin. This >completer is very simple and returns domain names. Moreover, >depending on the command it can return just a subset of domains >(e.g. only running/paused/transient/.. ones). > >Signed-off-by: Michal Privoznik <mprivozn@redhat.com> >--- > tools/Makefile.am | 9 +++ > tools/virsh-completer.c | 90 +++++++++++++++++++++ > tools/virsh-completer.h | 33 ++++++++ > tools/virsh-domain-monitor.c | 30 +++---- > tools/virsh-domain.c | 182 ++++++++++++++++++++++--------------------- > tools/virsh-snapshot.c | 24 +++--- > tools/virsh.h | 7 +- > 7 files changed, 256 insertions(+), 119 deletions(-) > create mode 100644 tools/virsh-completer.c > create mode 100644 tools/virsh-completer.h > >diff --git a/tools/virsh-completer.c b/tools/virsh-completer.c >new file mode 100644 >index 000000000..4e32b882b >--- /dev/null >+++ b/tools/virsh-completer.c >@@ -0,0 +1,90 @@ >+/* >+ * virsh-completer.c: virsh completer callbacks >+ * >+ * Copyright (C) 2017 Red Hat, Inc. >+ * >+ * This library is free software; you can redistribute it and/or >+ * modify it under the terms of the GNU Lesser General Public >+ * License as published by the Free Software Foundation; either >+ * version 2.1 of the License, or (at your option) any later version. >+ * >+ * This library is distributed in the hope that it will be useful, >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >+ * Lesser General Public License for more details. >+ * >+ * You should have received a copy of the GNU Lesser General Public >+ * License along with this library. If not, see >+ * <http://www.gnu.org/licenses/>. >+ * >+ * Michal Privoznik <mprivozn@redhat.com> These two spaces before the name with no indication what the name means (like "Authors" that we have in other files) makes me wonder why do we have names here and there. Publicity? >+ * >+ */ >+ >+#include <config.h> >+ >+#include "virsh-completer.h" >+#include "virsh.h" >+#include "virsh-util.h" >+#include "internal.h" >+#include "viralloc.h" >+#include "virstring.h" >+ >+ >+char ** >+virshDomainNameCompleter(vshControl *ctl, >+ const vshCmd *cmd ATTRIBUTE_UNUSED, >+ unsigned int flags) >+{ >+ virshControlPtr priv = ctl->privData; >+ virDomainPtr *domains = NULL; >+ int ndomains = 0; >+ size_t i = 0; >+ char **ret = NULL; >+ >+ virCheckFlags(VIR_CONNECT_LIST_DOMAINS_ACTIVE | >+ VIR_CONNECT_LIST_DOMAINS_INACTIVE | >+ VIR_CONNECT_LIST_DOMAINS_PERSISTENT | >+ VIR_CONNECT_LIST_DOMAINS_TRANSIENT | >+ VIR_CONNECT_LIST_DOMAINS_RUNNING | >+ VIR_CONNECT_LIST_DOMAINS_PAUSED | >+ VIR_CONNECT_LIST_DOMAINS_SHUTOFF | >+ VIR_CONNECT_LIST_DOMAINS_OTHER | >+ VIR_CONNECT_LIST_DOMAINS_MANAGEDSAVE | >+ VIR_CONNECT_LIST_DOMAINS_NO_MANAGEDSAVE | >+ VIR_CONNECT_LIST_DOMAINS_AUTOSTART | >+ VIR_CONNECT_LIST_DOMAINS_NO_AUTOSTART | >+ VIR_CONNECT_LIST_DOMAINS_HAS_SNAPSHOT | >+ VIR_CONNECT_LIST_DOMAINS_NO_SNAPSHOT, >+ NULL); >+ >+ if (!priv->conn || virConnectIsAlive(priv->conn) <= 0) >+ return NULL; >+ >+ if ((ndomains = virConnectListAllDomains(priv->conn, &domains, flags)) < 0) >+ return NULL; >+ >+ if (VIR_ALLOC_N(ret, ndomains + 1) < 0) >+ goto error; >+ >+ for (i = 0; i < ndomains; i++) { >+ const char *name = virDomainGetName(domains[i]); >+ >+ if (VIR_STRDUP(ret[i], name) < 0) >+ goto error; >+ >+ virshDomainFree(domains[i]); >+ } >+ VIR_FREE(domains); >+ >+ return ret; >+ error: >+ Weird whitespace, I guess the label should've been one line lower. I know, just bikeshedding. Nothing against this patch. -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2025 Red Hat, Inc.