]> xenbits.xensource.com Git - libvirt.git/commitdiff
Internal driver API for sVirt support (James Morris & Dan Walsh)
authorDaniel P. Berrange <berrange@redhat.com>
Tue, 3 Mar 2009 09:14:28 +0000 (09:14 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 3 Mar 2009 09:14:28 +0000 (09:14 +0000)
ChangeLog
python/generator.py
src/driver.h
src/libvirt.c
src/lxc_driver.c
src/openvz_driver.c
src/qemu_driver.c
src/test.c
src/uml_driver.c

index aca3e9f92e6928edd83d95466949b208e419df9e..c30a867d7c50dc5c6f49ab9841693cfdefe58579 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+Tue Mar  3 09:12:13 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
+
+       Internal driver API for sVirt support (James Morris & Dan Walsh)
+       * src/driver.h: Internal typedefs for virNodeGetSecurityModel()
+       and virDomainGetSecurityLabel() driver entry points
+       * src/libvirt.c: Implement entry point for new public APIs
+       virNodeGetSecurityModel() and virDomainGetSecurityLabel()
+       * src/lxc_driver.c, src/openvz_driver.c, src/qemu_driver.c,
+       src/test.c, src/uml_driver.c: Update for new driver entry
+       points
+       * python/generator.py: temporarily blacklist non-generated
+       virNodeGetSecurityModel() and virDomainGetSecurityLabel()
+
 Tue Mar  3 09:10:13 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
 
        Public API for sVirt support (James Morris & Dan Walsh)
index 0e8cca72cc29fe7008d0b36540015000f5dd0a01..dcad4991954a8c3dbc7c4e619f17755a3bcbd865 100755 (executable)
@@ -342,6 +342,8 @@ skip_function = (
     'virCopyLastError', # Python API is called virGetLastError instead
     'virConnectOpenAuth', # Python C code is manually written
     'virDefaultErrorFunc', # Python virErrorFuncHandler impl calls this from C
+    'virDomainGetSecurityLabel', # Needs investigation...
+    'virNodeGetSecurityModel', # Needs investigation...
     'virConnectDomainEventRegister',   # overridden in virConnect.py
     'virConnectDomainEventDeregister', # overridden in virConnect.py
     'virSaveLastError', # We have our own python error wrapper
index ffb95dc8adc4513cbd4f7cbe9e0e18dab38565e3..62d6fbc29b8bd4d444913efa7c9204fc26195ebe 100644 (file)
@@ -180,6 +180,13 @@ typedef int
                                          int maplen);
 typedef int
         (*virDrvDomainGetMaxVcpus)     (virDomainPtr domain);
+
+typedef int
+        (*virDrvDomainGetSecurityLabel)        (virDomainPtr domain,
+                                         virSecurityLabelPtr seclabel);
+typedef int
+        (*virDrvNodeGetSecurityModel)  (virConnectPtr conn,
+                                         virSecurityModelPtr secmodel);
 typedef int
         (*virDrvDomainAttachDevice)    (virDomainPtr domain,
                                          const char *xml);
@@ -371,6 +378,8 @@ struct _virDriver {
     virDrvDomainPinVcpu                domainPinVcpu;
     virDrvDomainGetVcpus               domainGetVcpus;
     virDrvDomainGetMaxVcpus            domainGetMaxVcpus;
+    virDrvDomainGetSecurityLabel     domainGetSecurityLabel;
+    virDrvNodeGetSecurityModel  nodeGetSecurityModel;
     virDrvDomainDumpXML                domainDumpXML;
     virDrvListDefinedDomains   listDefinedDomains;
     virDrvNumOfDefinedDomains  numOfDefinedDomains;
index bc444dd71e69b467fa1a9871b258a8a296edad1f..a19cd89671e537126a04ab095ac56e7a0e06a528 100644 (file)
@@ -4174,6 +4174,70 @@ error:
     return -1;
 }
 
+/**
+ * virDomainGetSecurityLabel:
+ * @domain: a domain object
+ * @seclabel: pointer to a virSecurityLabel structure
+ *
+ * Extract security label of an active domain.
+ *
+ * Returns 0 in case of success, -1 in case of failure, and -2
+ * if the operation is not supported (caller decides if that's
+ * an error).
+ */
+int
+virDomainGetSecurityLabel(virDomainPtr domain, virSecurityLabelPtr seclabel)
+{
+    virConnectPtr conn;
+
+    if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
+        virLibDomainError(NULL, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+        return -1;
+    }
+
+    if (seclabel == NULL) {
+        virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__);
+        return -1;
+    }
+
+    conn = domain->conn;
+
+    if (conn->driver->domainGetSecurityLabel)
+        return conn->driver->domainGetSecurityLabel(domain, seclabel);
+
+    virLibConnWarning(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__);
+    return -2;
+}
+
+/**
+ * virNodeGetSecurityModel:
+ * @conn: a connection object
+ * @secmodel: pointer to a virSecurityModel structure
+ *
+ * Extract the security model of a hypervisor.
+ *
+ * Returns 0 in case of success, -1 in case of failure, and -2 if the
+ * operation is not supported (caller decides if that's an error).
+ */
+int
+virNodeGetSecurityModel(virConnectPtr conn, virSecurityModelPtr secmodel)
+{
+    if (!VIR_IS_CONNECT(conn)) {
+        virLibConnError(conn, VIR_ERR_INVALID_CONN, __FUNCTION__);
+        return -1;
+    }
+
+    if (secmodel == NULL) {
+        virLibConnError(conn, VIR_ERR_INVALID_ARG, __FUNCTION__);
+        return -1;
+    }
+
+    if (conn->driver->nodeGetSecurityModel)
+        return conn->driver->nodeGetSecurityModel(conn, secmodel);
+
+    virLibConnWarning(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__);
+    return -2;
+}
 
 /**
  * virDomainAttachDevice:
index 28f2c6f9ee8564f5a4adc6ad28957586b9e490fd..dff05b67a1cf1b8119ad2594f1b726666e65909b 100644 (file)
@@ -1429,6 +1429,8 @@ static virDriver lxcDriver = {
     NULL, /* domainPinVcpu */
     NULL, /* domainGetVcpus */
     NULL, /* domainGetMaxVcpus */
+    NULL, /* domainGetSecurityLabel */
+    NULL, /* nodeGetSecurityModel */
     lxcDomainDumpXML, /* domainDumpXML */
     lxcListDefinedDomains, /* listDefinedDomains */
     lxcNumDefinedDomains, /* numOfDefinedDomains */
index b4d91286077e02af2e5437203168bd4f45193b93..d6c4362dc0fec77ec7616f2d16efc9c3b7c54994 100644 (file)
@@ -1299,6 +1299,8 @@ static virDriver openvzDriver = {
     NULL, /* domainPinVcpu */
     NULL, /* domainGetVcpus */
     openvzDomainGetMaxVcpus, /* domainGetMaxVcpus */
+    NULL, /* domainGetSecurityLabel */
+    NULL, /* nodeGetSecurityModel */
     openvzDomainDumpXML, /* domainDumpXML */
     openvzListDefinedDomains, /* listDomains */
     openvzNumDefinedDomains, /* numOfDomains */
index 99de25353e4a7b314e64f974b469abceeb01892f..eed78e9285bf5de7f555d48f449f322fceba3049 100644 (file)
@@ -4743,6 +4743,8 @@ static virDriver qemuDriver = {
     NULL, /* domainGetVcpus */
 #endif
     qemudDomainGetMaxVcpus, /* domainGetMaxVcpus */
+    NULL, /* domainGetSecurityLabel */
+    NULL, /* nodeGetSecurityModel */
     qemudDomainDumpXML, /* domainDumpXML */
     qemudListDefinedDomains, /* listDomains */
     qemudNumDefinedDomains, /* numOfDomains */
index 833faf07c58c95659f19934a0f68903f76a14655..b4d8486de433db35a2acff6ee630891a76c6e600 100644 (file)
@@ -3501,6 +3501,8 @@ static virDriver testDriver = {
     NULL, /* domainPinVcpu */
     NULL, /* domainGetVcpus */
     NULL, /* domainGetMaxVcpus */
+    NULL, /* domainGetSecurityLabel */
+    NULL, /* nodeGetSecurityModel */
     testDomainDumpXML, /* domainDumpXML */
     testListDefinedDomains, /* listDefinedDomains */
     testNumOfDefinedDomains, /* numOfDefinedDomains */
index aec22ec2e8c062b609461bc37ff9ec7028743c67..a1fbc776b6fe6f4b60acebceb45c7734dd5ec258 100644 (file)
@@ -1854,6 +1854,8 @@ static virDriver umlDriver = {
     NULL, /* domainPinVcpu */
     NULL, /* domainGetVcpus */
     NULL, /* domainGetMaxVcpus */
+    NULL, /* domainGetSecurityLabel */
+    NULL, /* nodeGetSecurityModel */
     umlDomainDumpXML, /* domainDumpXML */
     umlListDefinedDomains, /* listDomains */
     umlNumDefinedDomains, /* numOfDomains */