Implement a --timestamp option for 'virsh qemu-monitor-event', similar
to the one for 'virsh event'.
When the option is used, the human-readable timestamp will be printed
before the message, and the timing information provided by QEMU will
not be displayed.
---
tools/virsh-domain.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index edbbc34..515ed36 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -9157,6 +9157,7 @@ struct virshQemuEventData {
vshControl *ctl;
bool loop;
bool pretty;
+ bool timestamp;
int count;
};
typedef struct virshQemuEventData virshQemuEventData;
@@ -9177,8 +9178,20 @@ virshEventPrint(virConnectPtr conn ATTRIBUTE_UNUSED, virDomainPtr
dom,
if (pretty && (str = virJSONValueToString(pretty, true)))
details = str;
}
- vshPrint(data->ctl, "event %s at %lld.%06u for domain %s: %s\n",
- event, seconds, micros, virDomainGetName(dom), NULLSTR(details));
+
+ if (data->timestamp) {
+ char timestamp[VIR_TIME_STRING_BUFLEN];
+
+ if (virTimeStringNowRaw(timestamp) < 0)
+ timestamp[0] = '\0';
+
+ vshPrint(data->ctl, "%s: event %s for domain %s: %s\n",
+ timestamp, event, virDomainGetName(dom), NULLSTR(details));
+ } else {
+ vshPrint(data->ctl, "event %s at %lld.%06u for domain %s: %s\n",
+ event, seconds, micros, virDomainGetName(dom), NULLSTR(details));
+ }
+
data->count++;
if (!data->loop)
vshEventDone(data->ctl);
@@ -9225,6 +9238,10 @@ static const vshCmdOptDef opts_qemu_monitor_event[] = {
.type = VSH_OT_BOOL,
.help = N_("treat event case-insensitively")
},
+ {.name = "timestamp",
+ .type = VSH_OT_BOOL,
+ .help = N_("show timestamp for each printed event")
+ },
{.name = NULL}
};
@@ -9248,6 +9265,7 @@ cmdQemuMonitorEvent(vshControl *ctl, const vshCmd *cmd)
data.ctl = ctl;
data.loop = vshCommandOptBool(cmd, "loop");
data.pretty = vshCommandOptBool(cmd, "pretty");
+ data.timestamp = vshCommandOptBool(cmd, "timestamp");
data.count = 0;
if (vshCommandOptTimeoutToMs(ctl, cmd, &timeout) < 0)
return false;
--
2.5.0