]> xenbits.xensource.com Git - libvirt.git/commitdiff
vz: add net group to all domain stats
authorNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Mon, 12 Dec 2016 07:56:35 +0000 (10:56 +0300)
committerMaxim Nestratov <mnestratov@virtuozzo.com>
Mon, 30 Jan 2017 16:44:13 +0000 (19:44 +0300)
src/vz/vz_driver.c

index 65c8619f1d87a21a67a12d05c888cf1e559bfc20..9a021ab811f3cf2e6b833aa934c0d3173e8b3e6b 100644 (file)
@@ -3596,6 +3596,47 @@ vzDomainGetBlockStats(virDomainObjPtr dom,
     return 0;
 }
 
+static int
+vzDomainGetNetStats(virDomainObjPtr dom,
+                    virDomainStatsRecordPtr record,
+                    int *maxparams)
+{
+    vzDomObjPtr privdom = dom->privateData;
+    size_t i;
+    char param_name[VIR_TYPED_PARAM_FIELD_LENGTH];
+
+    if (virTypedParamsAddUInt(&record->params,
+                              &record->nparams,
+                              maxparams,
+                              "net.count",
+                              dom->def->nnets) < 0)
+        return -1;
+
+    for (i = 0; i < dom->def->nnets; i++) {
+        virDomainInterfaceStatsStruct stat;
+        virDomainNetDefPtr net = dom->def->nets[i];
+
+        if (prlsdkGetNetStats(privdom->stats, privdom->sdkdom, net->ifname,
+                              &stat) < 0)
+            return -1;
+
+        snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH, "net.%zu.name", i);
+        if (virTypedParamsAddString(&record->params,
+                                    &record->nparams,
+                                    maxparams,
+                                    param_name,
+                                    net->ifname) < 0)
+            return -1;
+
+        VZ_ADD_STAT_PARAM_UUL("net", rx_bytes, "rx.bytes");
+        VZ_ADD_STAT_PARAM_UUL("net", rx_packets, "rx.pkts");
+        VZ_ADD_STAT_PARAM_UUL("net", tx_bytes, "tx.bytes");
+        VZ_ADD_STAT_PARAM_UUL("net", tx_packets, "tx.pkts");
+    }
+
+    return 0;
+}
+
 static virDomainStatsRecordPtr
 vzDomainGetAllStats(virConnectPtr conn,
                     virDomainObjPtr dom)
@@ -3609,6 +3650,9 @@ vzDomainGetAllStats(virConnectPtr conn,
     if (vzDomainGetBlockStats(dom, stat, &maxparams) < 0)
         goto error;
 
+    if (vzDomainGetNetStats(dom, stat, &maxparams) < 0)
+        goto error;
+
     if (!(stat->dom = virGetDomain(conn, dom->def->name, dom->def->uuid)))
         goto error;