]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
sysinfo: implement the public API
authorEric Blake <eblake@redhat.com>
Mon, 7 Feb 2011 21:48:24 +0000 (14:48 -0700)
committerEric Blake <eblake@redhat.com>
Wed, 9 Feb 2011 02:29:44 +0000 (19:29 -0700)
* src/libvirt.c (virConnectGetSysinfo): New function.
* docs/formatdomain.html.in: Mention it.

docs/formatdomain.html.in
src/libvirt.c

index c543dab6ad7b8aae615af578a4d478b21828c051..417a8a273762bd4a9e708f7e154c4fc37723bde1 100644 (file)
       The <code>mode</code> attribute must be specified, and is either
       "emulate" (let the hypervisor generate all values), "host" (copy
       all of Block 0 and Block 1, except for the UUID, from the host's
-      SMBIOS values), or "sysinfo" (use the values in
+      SMBIOS values;
+      the <a href="html/libvirt-libvirt.html#virConnectGetSysinfo">
+      <code>virConnectGetSysinfo</code></a> call can be
+      used to see what values are copied), or "sysinfo" (use the values in
       the <a href="#elementsSysinfo">sysinfo</a> element).  If not
       specified, the hypervisor default is used. <span class="since">
       Since 0.8.7</span>
index c65b1e5691521bcb86599c45f7377ae7250a4d37..479a9b5aa6c077ff037b417586a35ced713293b6 100644 (file)
@@ -776,7 +776,7 @@ virRegisterStateDriver(virStateDriverPtr driver)
 
 /**
  * virStateInitialize:
- * @privileged: set to 1 if running with root priviledge, 0 otherwise
+ * @privileged: set to 1 if running with root privilege, 0 otherwise
  *
  * Initialize all virtualization drivers.
  *
@@ -1593,6 +1593,46 @@ error:
     return NULL;
 }
 
+/**
+ * virConnectGetSysinfo:
+ * @conn: pointer to a hypervisor connection
+ * @flags: callers should always pass 0
+ *
+ * This returns the XML description of the sysinfo details for the
+ * host on which the hypervisor is running, in the same format as the
+ * <sysinfo> element of a domain XML.  This information is generally
+ * available only for hypervisors running with root privileges.
+ *
+ * Returns the XML string which must be freed by the caller, or
+ * NULL if there was an error.
+ */
+char *
+virConnectGetSysinfo (virConnectPtr conn, unsigned int flags)
+{
+    DEBUG("conn=%p", conn);
+
+    virResetLastError();
+
+    if (!VIR_IS_CONNECT(conn)) {
+        virLibConnError(VIR_ERR_INVALID_CONN, __FUNCTION__);
+        virDispatchError(NULL);
+        return NULL;
+    }
+
+    if (conn->driver->getSysinfo) {
+        char *ret = conn->driver->getSysinfo (conn, flags);
+        if (!ret)
+            goto error;
+        return ret;
+    }
+
+    virLibConnError(VIR_ERR_NO_SUPPORT, __FUNCTION__);
+
+error:
+    virDispatchError(conn);
+    return NULL;
+}
+
 /**
  * virConnectGetMaxVcpus:
  * @conn: pointer to the hypervisor connection