From 0289b8b2ba9fc5b4670d607fdd60d7b6b21f894d Mon Sep 17 00:00:00 2001 From: Nitesh Konkar Date: Wed, 28 Dec 2016 17:06:22 +0530 Subject: [PATCH] virsh: Display perf enabled/disabled message for set operations When setting perf events, the enabled/disabled perf events are not listed. Since we know which events were changed it's possible to print out the values on successful set, such as : virsh perf Domain --enable instructions --disable cache_misses instructions : enabled cache_misses : disabled Created a helper to print the messages - use the vshPrintExtra to adhere to the --quiet|-q option being set by some script. This will cause the get code to print nothing, but will return success/failure. Signed-off-by: Nitesh Konkar --- tools/virsh-domain.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index f8f5d9c662..93587e8bc7 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -8848,13 +8848,27 @@ virshParseEventStr(const char *event, return ret; } +static void +virshPrintPerfStatus(vshControl *ctl, virTypedParameterPtr params, int nparams) +{ + size_t i; + + for (i = 0; i < nparams; i++) { + if (params[i].type == VIR_TYPED_PARAM_BOOLEAN && + params[i].value.b) { + vshPrintExtra(ctl, "%-15s: %s\n", params[i].field, _("enabled")); + } else { + vshPrintExtra(ctl, "%-15s: %s\n", params[i].field, _("disabled")); + } + } +} + static bool cmdPerf(vshControl *ctl, const vshCmd *cmd) { virDomainPtr dom; int nparams = 0; int maxparams = 0; - size_t i; virTypedParameterPtr params = NULL; bool ret = false; const char *enable = NULL, *disable = NULL; @@ -8891,18 +8905,13 @@ cmdPerf(vshControl *ctl, const vshCmd *cmd) vshError(ctl, "%s", _("Unable to get perf events")); goto cleanup; } - for (i = 0; i < nparams; i++) { - if (params[i].type == VIR_TYPED_PARAM_BOOLEAN && - params[i].value.b) { - vshPrint(ctl, "%-15s: %s\n", params[i].field, _("enabled")); - } else { - vshPrint(ctl, "%-15s: %s\n", params[i].field, _("disabled")); - } - } + virshPrintPerfStatus(ctl, params, nparams); } else { if (virDomainSetPerfEvents(dom, params, nparams, flags) != 0) { vshError(ctl, "%s", _("Unable to enable/disable perf events")); goto cleanup; + } else { + virshPrintPerfStatus(ctl, params, nparams); } } -- GitLab