]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virsh: domain: Extract the code converting domain job stats to virDomainJobInfo
authorPeter Krempa <pkrempa@redhat.com>
Fri, 22 Nov 2019 14:06:08 +0000 (15:06 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 3 Dec 2019 14:26:53 +0000 (15:26 +0100)
To simplify the stats printer code we convert the new statistics from
the typed parameter list into the old stats structure.

Extract this code since it takes a lot of space.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
tools/virsh-domain.c

index 6be9780836511b3adfb4a4078111c0c7d025badb..99194c2f81526ebe905d41d6a03fa9651979f0b2 100644 (file)
@@ -6065,6 +6065,42 @@ virshDomainJobOperationToString(int op)
     return str ? _(str) : _("unknown");
 }
 
+
+static int
+virshDomainJobStatsToDomainJobInfo(virTypedParameterPtr params,
+                                   int nparams,
+                                   virDomainJobInfo *info)
+{
+    if (virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_TIME_ELAPSED,
+                                &info->timeElapsed) < 0 ||
+        virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_TIME_REMAINING,
+                                &info->timeRemaining) < 0 ||
+        virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_DATA_TOTAL,
+                                &info->dataTotal) < 0 ||
+        virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_DATA_PROCESSED,
+                                &info->dataProcessed) < 0 ||
+        virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_DATA_REMAINING,
+                                &info->dataRemaining) < 0 ||
+        virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_MEMORY_TOTAL,
+                                &info->memTotal) < 0 ||
+        virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_MEMORY_PROCESSED,
+                                &info->memProcessed) < 0 ||
+        virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_MEMORY_REMAINING,
+                                &info->memRemaining) < 0 ||
+        virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_DISK_TOTAL,
+                                &info->fileTotal) < 0 ||
+        virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_DISK_PROCESSED,
+                                &info->fileProcessed) < 0 ||
+        virTypedParamsGetULLong(params, nparams, VIR_DOMAIN_JOB_DISK_REMAINING,
+                                &info->fileRemaining) < 0) {
+        vshSaveLibvirtError();
+        return -1;
+    }
+
+    return 0;
+}
+
+
 static bool
 cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
 {
@@ -6091,40 +6127,8 @@ cmdDomjobinfo(vshControl *ctl, const vshCmd *cmd)
 
     rc = virDomainGetJobStats(dom, &info.type, &params, &nparams, flags);
     if (rc == 0) {
-        if (virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_TIME_ELAPSED,
-                                    &info.timeElapsed) < 0 ||
-            virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_TIME_REMAINING,
-                                    &info.timeRemaining) < 0 ||
-            virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_DATA_TOTAL,
-                                    &info.dataTotal) < 0 ||
-            virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_DATA_PROCESSED,
-                                    &info.dataProcessed) < 0 ||
-            virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_DATA_REMAINING,
-                                    &info.dataRemaining) < 0 ||
-            virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_MEMORY_TOTAL,
-                                    &info.memTotal) < 0 ||
-            virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_MEMORY_PROCESSED,
-                                    &info.memProcessed) < 0 ||
-            virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_MEMORY_REMAINING,
-                                    &info.memRemaining) < 0 ||
-            virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_DISK_TOTAL,
-                                    &info.fileTotal) < 0 ||
-            virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_DISK_PROCESSED,
-                                    &info.fileProcessed) < 0 ||
-            virTypedParamsGetULLong(params, nparams,
-                                    VIR_DOMAIN_JOB_DISK_REMAINING,
-                                    &info.fileRemaining) < 0)
-            goto save_error;
+        if (virshDomainJobStatsToDomainJobInfo(params, nparams, &info) < 0)
+            goto cleanup;
     } else if (last_error->code == VIR_ERR_NO_SUPPORT) {
         if (flags) {
             vshError(ctl, "%s", _("Optional flags are not supported by the "