From: Masayoshi Mizuma <m.mizuma(a)jp.fujitsu.com>
Add qemuProcessHandleJobStatusChange to .jobStatusChange handler to
update the progress of blockdev-create.
Signed-off-by: Masayoshi Mizuma <m.mizuma(a)jp.fujitsu.com>
---
src/qemu/qemu_process.c | 2 +-
src/qemu/qemu_process.h | 7 +++++++
tests/qemumonitortestutils.c | 22 +++++++++++++++++++++-
3 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index fedd1f56b1..4ba634dfc5 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -992,7 +992,7 @@ qemuProcessHandleBlockJob(qemuMonitorPtr mon G_GNUC_UNUSED,
}
-static int
+int
qemuProcessHandleJobStatusChange(qemuMonitorPtr mon G_GNUC_UNUSED,
virDomainObjPtr vm,
const char *jobname,
diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h
index f4feeaa68f..579564a905 100644
--- a/src/qemu/qemu_process.h
+++ b/src/qemu/qemu_process.h
@@ -244,3 +244,10 @@ void qemuProcessQMPFree(qemuProcessQMPPtr proc);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuProcessQMP, qemuProcessQMPFree);
int qemuProcessQMPStart(qemuProcessQMPPtr proc);
+
+int
+qemuProcessHandleJobStatusChange(qemuMonitorPtr mon,
+ virDomainObjPtr vm,
+ const char *jobname,
+ int status,
+ void *opaque);
diff --git a/tests/qemumonitortestutils.c b/tests/qemumonitortestutils.c
index 227b78d527..98fc5a9e9b 100644
--- a/tests/qemumonitortestutils.c
+++ b/tests/qemumonitortestutils.c
@@ -37,6 +37,7 @@
#include "virerror.h"
#include "virstring.h"
#include "vireventthread.h"
+#include "qemu/qemu_process.h"
#define VIR_FROM_THIS VIR_FROM_NONE
@@ -575,6 +576,18 @@ qemuMonitorTestProcessCommandDefaultValidate(qemuMonitorTestPtr
test,
return 0;
}
+#define QEMU_BLOCKDEV_CREATE_CONCLUDED(id) \
+ "{"\
+ " \"timestamp\": {"\
+ " \"seconds\": 1616361602,"\
+ " \"microseconds\": 893848"\
+ " },"\
+ " \"event\": \"JOB_STATUS_CHANGE\","\
+ " \"data\": {"\
+ " \"status\": \"concluded\","\
+ " \"id\": \"" id "\""\
+ " }"\
+ "}"
static int
qemuMonitorTestProcessCommandDefault(qemuMonitorTestPtr test,
@@ -585,6 +598,7 @@ qemuMonitorTestProcessCommandDefault(qemuMonitorTestPtr test,
g_autoptr(virJSONValue) val = NULL;
virJSONValuePtr cmdargs = NULL;
const char *cmdname;
+ int ret;
if (!(val = virJSONValueFromString(cmdstr)))
return -1;
@@ -602,7 +616,12 @@ qemuMonitorTestProcessCommandDefault(qemuMonitorTestPtr test,
qemuMonitorTestErrorInvalidCommand(data->command_name, cmdname);
return -1;
} else {
- return qemuMonitorTestAddResponse(test, data->response);
+ ret = qemuMonitorTestAddResponse(test, data->response);
+ if (data->command_name && STREQ(data->command_name,
"blockdev-create")) {
+ qemuMonitorTestAddResponse(test,
+
QEMU_BLOCKDEV_CREATE_CONCLUDED("create-libvirt-1-format"));
+ }
+ return ret;
}
}
@@ -995,6 +1014,7 @@ qemuMonitorTestErrorNotify(qemuMonitorPtr mon G_GNUC_UNUSED,
static qemuMonitorCallbacks qemuMonitorTestCallbacks = {
.eofNotify = qemuMonitorTestEOFNotify,
.errorNotify = qemuMonitorTestErrorNotify,
+ .jobStatusChange = qemuProcessHandleJobStatusChange,
.domainDeviceDeleted = qemuProcessHandleDeviceDeleted,
};
--
2.27.0