On Wed, Jun 12, 2024 at 03:02:24 -0700, wucf(a)linux.ibm.com wrote:
From: Chun Feng Wu <wucf(a)linux.ibm.com>
* Update "attach_disk" to support new option: throttle-groups to
form filter chain in QEMU for specific disk
Signed-off-by: Chun Feng Wu <wucf(a)linux.ibm.com>
---
tools/virsh-completer-domain.c | 64 ++++++++++++++++++++++++++++++++++
tools/virsh-completer-domain.h | 5 +++
tools/virsh-domain.c | 25 ++++++++++++-
3 files changed, 93 insertions(+), 1 deletion(-)
Missing corresponding manpage update.
diff --git a/tools/virsh-completer-domain.c
b/tools/virsh-completer-domain.c
index 61362224a3..000cf65c99 100644
--- a/tools/virsh-completer-domain.c
+++ b/tools/virsh-completer-domain.c
@@ -248,6 +248,70 @@ virshDomainMigrateDisksCompleter(vshControl *ctl,
}
+static char **
+virshDomainThrottleGroupCompleter(vshControl *ctl,
+ const vshCmd *cmd,
+ unsigned int flags)
Well, you see that it's possible to complete these. Add this helper
beforehand and use it approprately also when adding the helpers in
previous patch.
+{
+ virshControl *priv = ctl->privData;
+ g_autoptr(xmlDoc) xmldoc = NULL;
+ g_autoptr(xmlXPathContext) ctxt = NULL;
+ g_autofree xmlNodePtr *groups = NULL;
+ int ngroups;
+ size_t i;
+ g_auto(GStrv) tmp = NULL;
+
+ virCheckFlags(0, NULL);
+
+ if (!priv->conn || virConnectIsAlive(priv->conn) <= 0)
+ return NULL;
+
+ if (virshDomainGetXML(ctl, cmd, 0, &xmldoc, &ctxt) < 0)
+ return NULL;
+
+ ngroups = virXPathNodeSet("./throttlegroups/throttlegroup", ctxt,
&groups);
+ if (ngroups < 0)
+ return NULL;
+
+ tmp = g_new0(char *, ngroups + 1);
+
+ for (i = 0; i < ngroups; i++) {
+ ctxt->node = groups[i];
+ if (!(tmp[i] = virXPathString("string(./group_name)", ctxt)))
+ return NULL;
Since this also does everything that the 'throttlegrouplist' command
does, you can theoretically even reuse this there and use it to fill the
table.
+ }
+
+ return g_steal_pointer(&tmp);
+}
[...]