+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()
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.
*/
int flags);
char * virNetworkGetBridgeName (virNetworkPtr network);
+int virNetworkGetAutostart (virNetworkPtr network,
+ int *autostart);
+int virNetworkSetAutostart (virNetworkPtr network,
+ int autostart);
+
#ifdef __cplusplus
}
#endif
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.
*/
int flags);
char * virNetworkGetBridgeName (virNetworkPtr network);
+int virNetworkGetAutostart (virNetworkPtr network,
+ int *autostart);
+int virNetworkSetAutostart (virNetworkPtr network,
+ int autostart);
+
#ifdef __cplusplus
}
#endif
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;
virDrvDomainUndefine domainUndefine;
virDrvDomainAttachDevice domainAttachDevice;
virDrvDomainDetachDevice domainDetachDevice;
+ virDrvDomainGetAutostart domainGetAutostart;
+ virDrvDomainSetAutostart domainSetAutostart;
};
typedef int
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;
virDrvNetworkDestroy networkDestroy;
virDrvNetworkDumpXML networkDumpXML;
virDrvNetworkGetBridgeName networkGetBridgeName;
+ virDrvNetworkGetAutostart networkGetAutostart;
+ virDrvNetworkSetAutostart networkSetAutostart;
};
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
}
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);
+}
virConnectListDefinedDomains;
virConnectNumOfDefinedDomains;
virDomainUndefine;
+ virDomainGetAutostart;
+ virDomainSetAutostart;
virGetVersion;
virCopyLastError;
virConnSetErrorFunc;
virNetworkGetUUIDString;
virNetworkGetXMLDesc;
virNetworkGetBridgeName;
+ virNetworkGetAutostart;
+ virNetworkSetAutostart;
local: *;
};
NULL, /* domainUndefine */
NULL, /* domainAttachDevice */
NULL, /* domainDetachDevice */
+ NULL, /* domainGetAutostart */
+ NULL, /* domainSetAutostart */
};
/**
qemuUndefine, /* domainUndefine */
NULL, /* domainAttachDevice */
NULL, /* domainDetachDevice */
+ NULL, /* domainGetAutostart */
+ NULL, /* domainSetAutostart */
};
static virNetworkDriver qemuNetworkDriver = {
qemuNetworkDestroy, /* networkDestroy */
qemuNetworkDumpXML, /* networkDumpXML */
qemuNetworkGetBridgeName, /* networkGetBridgeName */
+ NULL, /* networkGetAutostart */
+ NULL, /* networkSetAutostart */
};
void qemuRegister(void) {
testDomainUndefine, /* domainUndefine */
NULL, /* domainAttachDevice */
NULL, /* domainDetachDevice */
+ NULL, /* domainGetAutostart */
+ NULL, /* domainSetAutostart */
};
typedef struct _testDev {
NULL, /* domainUndefine */
NULL, /* domainAttachDevice */
NULL, /* domainDetachDevice */
+ NULL, /* domainGetAutostart */
+ NULL, /* domainSetAutostart */
};
#endif /* !PROXY */
xenDaemonDomainDefineXML, /* domainDefineXML */
xenDaemonDomainUndefine, /* domainUndefine */
xenDaemonAttachDevice, /* domainAttachDevice */
- xenDaemonDetachDevice /* domainDetachDevice */
+ xenDaemonDetachDevice, /* domainDetachDevice */
+ NULL, /* domainGetAutostart */
+ NULL, /* domainSetAutostart */
};
/**
xenXMDomainUndefine, /* domainUndefine */
NULL, /* domainAttachDevice */
NULL, /* domainDetachDevice */
+ NULL, /* domainGetAutostart */
+ NULL, /* domainSetAutostart */
};
static void
NULL, /* domainUndefine */
NULL, /* domainAttachDevice */
NULL, /* domainDetachDevice */
+ NULL, /* domainGetAutostart */
+ NULL, /* domainSetAutostart */
};
/**