]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: monitor: Add support for 'job-complete' command
authorPeter Krempa <pkrempa@redhat.com>
Thu, 16 Aug 2018 09:48:41 +0000 (11:48 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 18 Jul 2019 15:59:33 +0000 (17:59 +0200)
This belongs to the new job management API which can manage also
non-block based jobs.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_monitor.c
src/qemu/qemu_monitor.h
src/qemu/qemu_monitor_json.c
src/qemu/qemu_monitor_json.h
tests/qemumonitorjsontest.c

index 2b9a5426b8c931b1cacb1e7fc89b7d09a25149b2..f174b81ba0b53e967db18d47891ab684c0e6ee37 100644 (file)
@@ -3488,6 +3488,18 @@ qemuMonitorJobCancel(qemuMonitorPtr mon,
 }
 
 
+int
+qemuMonitorJobComplete(qemuMonitorPtr mon,
+                       const char *jobname)
+{
+    VIR_DEBUG("jobname=%s", jobname);
+
+    QEMU_CHECK_MONITOR(mon);
+
+    return qemuMonitorJSONJobComplete(mon, jobname);
+}
+
+
 int
 qemuMonitorSetBlockIoThrottle(qemuMonitorPtr mon,
                               const char *drivealias,
index bed15aea0f064d24e72eaf6e7be96dd1e0f36dd7..e6e99ad0bce7557c43145767f59f11f5287a2c9e 100644 (file)
@@ -996,6 +996,10 @@ int qemuMonitorJobCancel(qemuMonitorPtr mon,
                          bool quiet)
     ATTRIBUTE_NONNULL(2);
 
+int qemuMonitorJobComplete(qemuMonitorPtr mon,
+                           const char *jobname)
+    ATTRIBUTE_NONNULL(2);
+
 int qemuMonitorOpenGraphics(qemuMonitorPtr mon,
                             const char *protocol,
                             int fd,
index c318f1620b4c434bd04fb62d4213f1564b748e93..404d32e921fed8f2794d8a40f16ece346d00f577 100644 (file)
@@ -5116,6 +5116,28 @@ qemuMonitorJSONJobCancel(qemuMonitorPtr mon,
 }
 
 
+int
+qemuMonitorJSONJobComplete(qemuMonitorPtr mon,
+                           const char *jobname)
+{
+    VIR_AUTOPTR(virJSONValue) cmd = NULL;
+    VIR_AUTOPTR(virJSONValue) reply = NULL;
+
+    if (!(cmd = qemuMonitorJSONMakeCommand("job-complete",
+                                           "s:id", jobname,
+                                           NULL)))
+        return -1;
+
+    if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0)
+        return -1;
+
+    if (qemuMonitorJSONBlockJobError(cmd, reply, jobname) < 0)
+        return -1;
+
+    return 0;
+}
+
+
 int qemuMonitorJSONOpenGraphics(qemuMonitorPtr mon,
                                 const char *protocol,
                                 const char *fdname,
index 453c2e1af6fda31e9be46d815b6ebdf34996467c..28a5d826562b7f4115751d42ff835c589214bf4d 100644 (file)
@@ -337,6 +337,10 @@ int qemuMonitorJSONJobCancel(qemuMonitorPtr mon,
                              bool quiet)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
 
+int qemuMonitorJSONJobComplete(qemuMonitorPtr mon,
+                               const char *jobname)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
+
 int qemuMonitorJSONSetLink(qemuMonitorPtr mon,
                            const char *name,
                            virDomainNetInterfaceLinkState state);
index 88dc84a1f1457a929a7bc1ae6edc7ea8d7c10897..93abc3d964246f56934fc63dd1124561a6599ea6 100644 (file)
@@ -1342,6 +1342,7 @@ GEN_TEST_FUNC(qemuMonitorJSONEnableBitmap, "node", "bitmap")
 GEN_TEST_FUNC(qemuMonitorJSONDeleteBitmap, "node", "bitmap")
 GEN_TEST_FUNC(qemuMonitorJSONJobDismiss, "jobname")
 GEN_TEST_FUNC(qemuMonitorJSONJobCancel, "jobname", false)
+GEN_TEST_FUNC(qemuMonitorJSONJobComplete, "jobname")
 
 static int
 testQemuMonitorJSONqemuMonitorJSONNBDServerStart(const void *opaque)
@@ -3061,6 +3062,7 @@ mymain(void)
     DO_TEST_GEN(qemuMonitorJSONDeleteBitmap);
     DO_TEST_GEN(qemuMonitorJSONJobDismiss);
     DO_TEST_GEN(qemuMonitorJSONJobCancel);
+    DO_TEST_GEN(qemuMonitorJSONJobComplete);
     DO_TEST(qemuMonitorJSONGetBalloonInfo);
     DO_TEST(qemuMonitorJSONGetBlockInfo);
     DO_TEST(qemuMonitorJSONGetAllBlockStatsInfo);