]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: suppress unimportant ovs-vsctl errors when getting interface stats
authorLaine Stump <laine@laine.org>
Wed, 27 Mar 2019 18:58:45 +0000 (14:58 -0400)
committerLaine Stump <laine@laine.org>
Thu, 28 Mar 2019 15:19:03 +0000 (11:19 -0400)
commit edaf13565 modified the stats retrieval for OVS interfaces to
not fail when one of the fields was unrecognized by the ovs-vsctl
command, but ovs-vsctl was still returning an error, and libvirt was
cluttering the logs with these inconsequential error messages.

This patch modifies the GET_STAT macro to add "--if-exists" to the
ovs-vsctl command, which causes it to return an empty string (and exit
with success) if the requested statistic isn't in its database, thus
eliminating the ugly error messages from the log.

Resolves: https://bugzilla.redhat.com/1683175

Signed-off-by: Laine Stump <laine@laine.org>
src/util/virnetdevopenvswitch.c

index 4fa3a5742a8a2b9d40e9b7c62a2dc6bebf3b7f6b..c99ecfbf15e5db4a0a3aa35e98900a6d851257cd 100644 (file)
@@ -335,10 +335,10 @@ virNetDevOpenvswitchInterfaceStats(const char *ifname,
         virCommandFree(cmd); \
         cmd = virCommandNew(OVSVSCTL); \
         virNetDevOpenvswitchAddTimeout(cmd); \
-        virCommandAddArgList(cmd, "get", "Interface", ifname, \
-                             "statistics:" name, NULL); \
+        virCommandAddArgList(cmd, "--if-exists", "get", "Interface", \
+                             ifname, "statistics:" name, NULL); \
         virCommandSetOutputBuffer(cmd, &output); \
-        if (virCommandRun(cmd, NULL) < 0) { \
+        if (virCommandRun(cmd, NULL) < 0 || !output || !*output || *output == '\n') { \
             stats->member = -1; \
         } else { \
             if (virStrToLong_ll(output, &tmp, 10, &stats->member) < 0 || \