]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Fri Feb 23 08:49:12 IST 2007 Mark McLoughlin <markmc@redhat.com>
authorMark McLoughlin <markmc@redhat.com>
Fri, 23 Feb 2007 08:51:30 +0000 (08:51 +0000)
committerMark McLoughlin <markmc@redhat.com>
Fri, 23 Feb 2007 08:51:30 +0000 (08:51 +0000)
        * include/libvirt/libvirt.h.in, src/libvirt.c add
        virDomainGetAutostart(), virDomainSetAutostart(),
        virNetworkGetAutostart() and virNetworkSetAutostart().

        * src/libvirt_sym.version: export the API

        * src/driver.h: add methods to the driver vtables.

        * src/proxy_internal.c, src/qemu_internal.c,
          src/test.c, src/xen_internal.c, src/xend_internal.c,
          src/xm_internal.c, src/xs_internal.c: set those
        methods to NULL

13 files changed:
ChangeLog
include/libvirt/libvirt.h
include/libvirt/libvirt.h.in
src/driver.h
src/libvirt.c
src/libvirt_sym.version
src/proxy_internal.c
src/qemu_internal.c
src/test.c
src/xen_internal.c
src/xend_internal.c
src/xm_internal.c
src/xs_internal.c

index 9c07c84b3a01519241611478513145875a801107..f35871ae164ffd1afd86157dd6af6428339df199 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+Fri Feb 23 08:49:12 IST 2007 Mark McLoughlin <markmc@redhat.com>
+
+       * include/libvirt/libvirt.h.in, src/libvirt.c add
+       virDomainGetAutostart(), virDomainSetAutostart(),
+       virNetworkGetAutostart() and virNetworkSetAutostart().
+
+       * src/libvirt_sym.version: export the API
+       
+       * src/driver.h: add methods to the driver vtables.
+       
+       * src/proxy_internal.c, src/qemu_internal.c,
+         src/test.c, src/xen_internal.c, src/xend_internal.c,
+         src/xm_internal.c, src/xs_internal.c: set those
+       methods to NULL
+       
 Fri Feb 23 08:41:34 IST 2007 Mark McLoughlin <markmc@redhat.com>
 
        * qemud/conf.[ch]: significantly re-factor qemudLoadConfigXML()
index ee28d7f09a05b2ee3b351c6d4072c9c842e3e9a2..ce24f59fc03dad5554eb32f138c508ea43dafe2b 100644 (file)
@@ -328,6 +328,11 @@ int                        virConnectListDefinedDomains (virConnectPtr conn,
                                                 int maxnames);
 int                    virDomainCreate         (virDomainPtr domain);
 
+int                    virDomainGetAutostart   (virDomainPtr domain,
+                                                int *autostart);
+int                    virDomainSetAutostart   (virDomainPtr domain,
+                                                int autostart);
+
 /**
  * virVcpuInfo: structure for information about a virtual CPU in a domain.
  */
@@ -528,6 +533,11 @@ char *                     virNetworkGetXMLDesc    (virNetworkPtr network,
                                                 int flags);
 char *                 virNetworkGetBridgeName (virNetworkPtr network);
 
+int                    virNetworkGetAutostart  (virNetworkPtr network,
+                                                int *autostart);
+int                    virNetworkSetAutostart  (virNetworkPtr network,
+                                                int autostart);
+
 #ifdef __cplusplus
 }
 #endif
index fd46c552091e15b93d009caf37b4791b3f63aa1d..c5461f8b23ade2e556c7d16f2b5f773f973397f2 100644 (file)
@@ -328,6 +328,11 @@ int                        virConnectListDefinedDomains (virConnectPtr conn,
                                                 int maxnames);
 int                    virDomainCreate         (virDomainPtr domain);
 
+int                    virDomainGetAutostart   (virDomainPtr domain,
+                                                int *autostart);
+int                    virDomainSetAutostart   (virDomainPtr domain,
+                                                int autostart);
+
 /**
  * virVcpuInfo: structure for information about a virtual CPU in a domain.
  */
@@ -528,6 +533,11 @@ char *                     virNetworkGetXMLDesc    (virNetworkPtr network,
                                                 int flags);
 char *                 virNetworkGetBridgeName (virNetworkPtr network);
 
+int                    virNetworkGetAutostart  (virNetworkPtr network,
+                                                int *autostart);
+int                    virNetworkSetAutostart  (virNetworkPtr network,
+                                                int autostart);
+
 #ifdef __cplusplus
 }
 #endif
index 7d79b1132e2c051c7834b0e529ded5196d330a0a..082bbf58dbac724182966e4609ede2d757e8bbf5 100644 (file)
@@ -134,6 +134,12 @@ typedef int
 typedef int
        (*virDrvDomainDetachDevice)     (virDomainPtr domain,
                                         char *xml);
+typedef int
+       (*virDrvDomainGetAutostart)     (virDomainPtr domain,
+                                        int *autostart);
+typedef int
+       (*virDrvDomainSetAutostart)     (virDomainPtr domain,
+                                        int autostart);
 
 typedef struct _virDriver virDriver;
 typedef virDriver *virDriverPtr;
@@ -183,6 +189,8 @@ struct _virDriver {
        virDrvDomainUndefine            domainUndefine;
        virDrvDomainAttachDevice        domainAttachDevice;
        virDrvDomainDetachDevice        domainDetachDevice;
+       virDrvDomainGetAutostart        domainGetAutostart;
+       virDrvDomainSetAutostart        domainSetAutostart;
 };
 
 typedef int
@@ -219,6 +227,13 @@ typedef char *
                                         int flags);
 typedef char *
        (*virDrvNetworkGetBridgeName)   (virNetworkPtr network);
+typedef int
+       (*virDrvNetworkGetAutostart)    (virNetworkPtr network,
+                                        int *autostart);
+typedef int
+       (*virDrvNetworkSetAutostart)    (virNetworkPtr network,
+                                        int autostart);
+
 
 typedef struct _virNetworkDriver virNetworkDriver;
 typedef virNetworkDriver *virNetworkDriverPtr;
@@ -245,6 +260,8 @@ struct _virNetworkDriver {
        virDrvNetworkDestroy            networkDestroy;
        virDrvNetworkDumpXML            networkDumpXML;
        virDrvNetworkGetBridgeName      networkGetBridgeName;
+       virDrvNetworkGetAutostart       networkGetAutostart;
+       virDrvNetworkSetAutostart       networkSetAutostart;
 };
 
 
index 50f1c5d8d4e43fac32848e7222f170ddc9763a2a..76f9a02e265d91c51d2cab0019746f9929c47443 100644 (file)
@@ -1861,6 +1861,69 @@ virDomainCreate(virDomainPtr domain) {
     return(ret);
 }
 
+/**
+ * virDomainGetAutostart:
+ * @domain: a domain object
+ *
+ * Return a boolean value indicating whether the domain
+ * configured to be automatically started when the host
+ * machine boots.
+ *
+ * Returns -1 in case of error, 0 in case of success
+ */
+int
+virDomainGetAutostart(virDomainPtr domain,
+                      int *autostart) {
+    int i;
+
+    if (!VIR_IS_DOMAIN(domain)) {
+        virLibDomainError(domain, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+        return (-1);
+    }
+    if (!autostart) {
+        virLibDomainError(domain, VIR_ERR_INVALID_ARG, __FUNCTION__);
+        return (-1);
+    }
+
+    for (i = 0;i < domain->conn->nb_drivers;i++) {
+       if ((domain->conn->drivers[i] != NULL) &&
+           (domain->conn->drivers[i]->domainGetAutostart != NULL) &&
+            (domain->conn->drivers[i]->domainGetAutostart(domain, autostart) == 0))
+            return (0);
+    }
+    virLibConnError(domain->conn, VIR_ERR_CALL_FAILED, __FUNCTION__);
+    return (-1);
+}
+
+/**
+ * virDomainSetAutostart:
+ * @domain: a domain object
+ *
+ * Configure the domain to be automatically started
+ * when the host machine boots.
+ *
+ * Returns -1 in case of error, 0 in case of success
+ */
+int
+virDomainSetAutostart(virDomainPtr domain,
+                      int autostart) {
+    int i;
+
+    if (!VIR_IS_DOMAIN(domain)) {
+        virLibDomainError(domain, VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
+        return (-1);
+    }
+
+    for (i = 0;i < domain->conn->nb_drivers;i++) {
+       if ((domain->conn->drivers[i] != NULL) &&
+           (domain->conn->drivers[i]->domainSetAutostart != NULL) &&
+            (domain->conn->drivers[i]->domainSetAutostart(domain, autostart) == 0))
+            return (0);
+    }
+    virLibConnError(domain->conn, VIR_ERR_CALL_FAILED, __FUNCTION__);
+    return (-1);
+}
+
 /**
  * virDomainSetVcpus:
  * @domain: pointer to domain object, or NULL for Domain0
@@ -2766,3 +2829,66 @@ virNetworkGetBridgeName(virNetworkPtr network)
     }
     return(ret);
 }
+
+/**
+ * virNetworkGetAutostart:
+ * @network: a network object
+ *
+ * Return a boolean value indicating whether the network
+ * configured to be automatically started when the host
+ * machine boots.
+ *
+ * Returns -1 in case of error, 0 in case of success
+ */
+int
+virNetworkGetAutostart(virNetworkPtr network,
+                       int *autostart) {
+    int i;
+
+    if (!VIR_IS_NETWORK(network)) {
+        virLibNetworkError(network, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+        return (-1);
+    }
+    if (!autostart) {
+        virLibNetworkError(network, VIR_ERR_INVALID_ARG, __FUNCTION__);
+        return (-1);
+    }
+
+    for (i = 0;i < network->conn->nb_network_drivers;i++) {
+       if ((network->conn->networkDrivers[i] != NULL) &&
+           (network->conn->networkDrivers[i]->networkGetAutostart != NULL) &&
+            (network->conn->networkDrivers[i]->networkGetAutostart(network, autostart) == 0))
+            return (0);
+    }
+    virLibConnError(network->conn, VIR_ERR_CALL_FAILED, __FUNCTION__);
+    return (-1);
+}
+
+/**
+ * virNetworkSetAutostart:
+ * @network: a network object
+ *
+ * Configure the network to be automatically started
+ * when the host machine boots.
+ *
+ * Returns -1 in case of error, 0 in case of success
+ */
+int
+virNetworkSetAutostart(virNetworkPtr network,
+                       int autostart) {
+    int i;
+
+    if (!VIR_IS_NETWORK(network)) {
+        virLibNetworkError(network, VIR_ERR_INVALID_NETWORK, __FUNCTION__);
+        return (-1);
+    }
+
+    for (i = 0;i < network->conn->nb_network_drivers;i++) {
+       if ((network->conn->networkDrivers[i] != NULL) &&
+           (network->conn->networkDrivers[i]->networkSetAutostart != NULL) &&
+            (network->conn->networkDrivers[i]->networkSetAutostart(network, autostart) == 0))
+            return (0);
+    }
+    virLibConnError(network->conn, VIR_ERR_CALL_FAILED, __FUNCTION__);
+    return (-1);
+}
index f312bf6a2ff6691dcf2c63bd41e3d2541e788e4c..6f38fb31670dd4697f815a4ed5fcdf8f6bf9a7f2 100644 (file)
@@ -37,6 +37,8 @@
        virConnectListDefinedDomains;
        virConnectNumOfDefinedDomains;
        virDomainUndefine;
+       virDomainGetAutostart;
+       virDomainSetAutostart;
        virGetVersion;
        virCopyLastError;
        virConnSetErrorFunc;
@@ -76,6 +78,8 @@
        virNetworkGetUUIDString;
        virNetworkGetXMLDesc;
        virNetworkGetBridgeName;
+       virNetworkGetAutostart;
+       virNetworkSetAutostart;
 
     local: *;
 };
index c7c325b161a77f470e4a737e2590f34a216bb7dc..dabaad8738bc9495af3e9b25d469c1046743769b 100644 (file)
@@ -81,6 +81,8 @@ static virDriver xenProxyDriver = {
     NULL, /* domainUndefine */
     NULL, /* domainAttachDevice */
     NULL, /* domainDetachDevice */
+    NULL, /* domainGetAutostart */
+    NULL, /* domainSetAutostart */
 };
 
 /**
index 3fcf10fffb75326c9d062e7b6545f09c2a6d509c..ba4595506f65cbe8d6628af77cfed726db73d3bb 100644 (file)
@@ -1132,6 +1132,8 @@ static virDriver qemuDriver = {
     qemuUndefine, /* domainUndefine */
     NULL, /* domainAttachDevice */
     NULL, /* domainDetachDevice */
+    NULL, /* domainGetAutostart */
+    NULL, /* domainSetAutostart */
 };
 
 static virNetworkDriver qemuNetworkDriver = {
@@ -1150,6 +1152,8 @@ static virNetworkDriver qemuNetworkDriver = {
     qemuNetworkDestroy, /* networkDestroy */
     qemuNetworkDumpXML, /* networkDumpXML */
     qemuNetworkGetBridgeName, /* networkGetBridgeName */
+    NULL, /* networkGetAutostart */
+    NULL, /* networkSetAutostart */
 };
 
 void qemuRegister(void) {
index 5052cbd52e03ea012e6e482318ed92943c6244aa..c9898cf5e7b1c06f249d975679a13390eeda1dcd 100644 (file)
@@ -125,6 +125,8 @@ static virDriver testDriver = {
     testDomainUndefine, /* domainUndefine */
     NULL, /* domainAttachDevice */
     NULL, /* domainDetachDevice */
+    NULL, /* domainGetAutostart */
+    NULL, /* domainSetAutostart */
 };
 
 typedef struct _testDev {
index 32c550e3a7fc4e524329ac2b7d0ebe2327027c22..a53ea89968b4cc7847bd66a7583c55a5022e78c6 100644 (file)
@@ -454,6 +454,8 @@ static virDriver xenHypervisorDriver = {
     NULL, /* domainUndefine */
     NULL, /* domainAttachDevice */
     NULL, /* domainDetachDevice */
+    NULL, /* domainGetAutostart */
+    NULL, /* domainSetAutostart */
 };
 #endif /* !PROXY */
 
index 73325725c457b47038693436bd15ecfb9993d676..693c971bfed1f1e06a2cf3e8368432ba495191ff 100644 (file)
@@ -96,7 +96,9 @@ static virDriver xenDaemonDriver = {
     xenDaemonDomainDefineXML, /* domainDefineXML */
     xenDaemonDomainUndefine, /* domainUndefine */
     xenDaemonAttachDevice, /* domainAttachDevice */
-    xenDaemonDetachDevice /* domainDetachDevice */
+    xenDaemonDetachDevice, /* domainDetachDevice */
+    NULL, /* domainGetAutostart */
+    NULL, /* domainSetAutostart */
 };
 
 /**
index f2b8a1a5452b935d0f4cdb9c08c578944fed86f5..066d86db07fe0325b71b1c575f15fb10dd640760 100644 (file)
@@ -106,6 +106,8 @@ static virDriver xenXMDriver = {
     xenXMDomainUndefine, /* domainUndefine */
     NULL, /* domainAttachDevice */
     NULL, /* domainDetachDevice */
+    NULL, /* domainGetAutostart */
+    NULL, /* domainSetAutostart */
 };
 
 static void
index be3b6b84dd26bed3fab5ddbfdf4d8a667d4a683c..c9b73467865467f68a8b59adee5fa78fd8d9981a 100644 (file)
@@ -75,6 +75,8 @@ static virDriver xenStoreDriver = {
     NULL, /* domainUndefine */
     NULL, /* domainAttachDevice */
     NULL, /* domainDetachDevice */
+    NULL, /* domainGetAutostart */
+    NULL, /* domainSetAutostart */
 };
 
 /**