]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
bhyve: implement connectGetSysinfo
authorRoman Bogorodskiy <bogorodskiy@gmail.com>
Wed, 23 Apr 2014 09:24:05 +0000 (13:24 +0400)
committerRoman Bogorodskiy <bogorodskiy@gmail.com>
Mon, 12 May 2014 15:15:04 +0000 (19:15 +0400)
src/bhyve/bhyve_driver.c
src/bhyve/bhyve_utils.h

index 67571d2a406e58d6850bbf531a484e74745fa898..580b12460d7638b2e4ddd0fa076d53a928e4ac5f 100644 (file)
@@ -238,6 +238,33 @@ bhyveConnectGetHostname(virConnectPtr conn ATTRIBUTE_UNUSED)
     return virGetHostname();
 }
 
+static char *
+bhyveConnectGetSysinfo(virConnectPtr conn, unsigned int flags)
+{
+    bhyveConnPtr privconn = conn->privateData;
+    virBuffer buf = VIR_BUFFER_INITIALIZER;
+
+    virCheckFlags(0, NULL);
+
+    if (virConnectGetSysinfoEnsureACL(conn) < 0)
+        return NULL;
+
+    if (!privconn->hostsysinfo) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                       _("Host SMBIOS information is not available"));
+        return NULL;
+    }
+
+    if (virSysinfoFormat(&buf, privconn->hostsysinfo) < 0)
+        return NULL;
+    if (virBufferError(&buf)) {
+        virReportOOMError();
+        return NULL;
+    }
+
+    return virBufferContentAndReset(&buf);
+}
+
 static int
 bhyveConnectGetVersion(virConnectPtr conn ATTRIBUTE_UNUSED, unsigned long *version)
 {
@@ -1047,6 +1074,7 @@ bhyveStateCleanup(void)
     virObjectUnref(bhyve_driver->domains);
     virObjectUnref(bhyve_driver->caps);
     virObjectUnref(bhyve_driver->xmlopt);
+    virObjectUnref(bhyve_driver->hostsysinfo);
     virObjectUnref(bhyve_driver->closeCallbacks);
 
     virMutexDestroy(&bhyve_driver->lock);
@@ -1086,6 +1114,8 @@ bhyveStateInitialize(bool priveleged ATTRIBUTE_UNUSED,
     if (!(bhyve_driver->domains = virDomainObjListNew()))
         goto cleanup;
 
+    bhyve_driver->hostsysinfo = virSysinfoRead();
+
     if (virFileMakePath(BHYVE_LOG_DIR) < 0) {
         virReportSystemError(errno,
                              _("Failed to mkdir %s"),
@@ -1244,6 +1274,7 @@ static virDriver bhyveDriver = {
     .connectClose = bhyveConnectClose, /* 1.2.2 */
     .connectGetVersion = bhyveConnectGetVersion, /* 1.2.2 */
     .connectGetHostname = bhyveConnectGetHostname, /* 1.2.2 */
+    .connectGetSysinfo = bhyveConnectGetSysinfo, /* 1.2.5 */
     .domainGetInfo = bhyveDomainGetInfo, /* 1.2.2 */
     .domainGetState = bhyveDomainGetState, /* 1.2.2 */
     .connectGetCapabilities = bhyveConnectGetCapabilities, /* 1.2.2 */
index 94f31b085523821d7d5aede9e180428e06e92cad..22f458de808ff3fe1cf2b6cefc73ded1ab7e668b 100644 (file)
@@ -39,6 +39,7 @@ struct _bhyveConn {
     virCapsPtr caps;
     virDomainXMLOptionPtr xmlopt;
     char *pidfile;
+    virSysinfoDefPtr hostsysinfo;
 
     virCloseCallbacksPtr closeCallbacks;
 };