]> xenbits.xensource.com Git - libvirt.git/commitdiff
vz: implement connectGetSysinfo hypervisor callback
authorMaxim Nestratov <mnestratov@virtuozzo.com>
Thu, 7 Apr 2016 18:52:43 +0000 (21:52 +0300)
committerMaxim Nestratov <mnestratov@virtuozzo.com>
Wed, 13 Apr 2016 15:48:44 +0000 (18:48 +0300)
Signed-off-by: Maxim Nestratov <mnestratov@virtuozzo.com>
src/vz/vz_driver.c
src/vz/vz_utils.h

index e8b536e835792ba5b14ae60e613a0e95224f98d4..b7c26d19edec83562ff5ebe4f8aaf4fe8d9dee08 100644 (file)
@@ -179,6 +179,7 @@ static void vzDriverDispose(void * obj)
     virObjectUnref(driver->caps);
     virObjectUnref(driver->xmlopt);
     virObjectEventStateFree(driver->domainEventState);
+    virSysinfoDefFree(driver->hostsysinfo);
 }
 
 static int vzDriverOnceInit(void)
@@ -312,6 +313,7 @@ vzDriverObjNew(void)
         return NULL;
     }
 
+    driver->hostsysinfo = virSysinfoRead();
     ignore_value(prlsdkLoadDomains(driver));
     return driver;
 }
@@ -421,6 +423,28 @@ static char *vzConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
     return virGetHostname();
 }
 
+static char *
+vzConnectGetSysinfo(virConnectPtr conn, unsigned int flags)
+{
+    vzConnPtr privconn = conn->privateData;
+    vzDriverPtr driver = privconn->driver;
+    virBuffer buf = VIR_BUFFER_INITIALIZER;
+
+    virCheckFlags(0, NULL);
+
+    if (!driver->hostsysinfo) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                       _("Host SMBIOS information is not available"));
+        return NULL;
+    }
+
+    if (virSysinfoFormat(&buf, driver->hostsysinfo) < 0)
+        return NULL;
+    if (virBufferCheckError(&buf) < 0)
+        return NULL;
+
+    return virBufferContentAndReset(&buf);
+}
 
 static int
 vzConnectListDomains(virConnectPtr conn, int *ids, int maxids)
@@ -1576,6 +1600,7 @@ static virHypervisorDriver vzHypervisorDriver = {
     .connectClose = vzConnectClose,          /* 0.10.0 */
     .connectGetVersion = vzConnectGetVersion,   /* 0.10.0 */
     .connectGetHostname = vzConnectGetHostname,      /* 0.10.0 */
+    .connectGetSysinfo = vzConnectGetSysinfo, /* 1.3.4 */
     .connectGetMaxVcpus = vzConnectGetMaxVcpus, /* 1.2.21 */
     .nodeGetInfo = vzNodeGetInfo,      /* 0.10.0 */
     .nodeGetCPUStats = vzNodeGetCPUStats,      /* 1.2.21 */
index 5c14048b671be0ac72de5c7b7d4698d5c0dec97c..64a03485e0d59662cf856091c1c5fa6dab3d92dc 100644 (file)
@@ -70,6 +70,7 @@ struct _vzDriver {
     virCapsPtr caps;
     virDomainXMLOptionPtr xmlopt;
     virObjectEventStatePtr domainEventState;
+    virSysinfoDefPtr hostsysinfo;
     unsigned long vzVersion;
     vzCapabilities vzCaps;
 };