mirror of https://gitee.com/openkylin/libvirt.git
Fri Jul 6 16:08:00 BST 2007 Richard W.M. Jones <rjones@redhat.com>
* src/proxy_internal.c, src/proxy_internal.h, src.xen_internal.c, src/xen_internal.h, src/xen_unified.c, src/xen_unified.h, src/xend_internal.c, src/xend_internal.h, src/xm_internal.c, src/xm_internal.h, src/xs_internal.c, src/xs_internal.h: The interface between xen_unified.c and its underlying driver now uses a custom structure (struct xenUnifiedDriver) instead of reusing virDriver. * src/xen_unified.c: virDomainLookup* functions in Xen now throw VIR_ERR_NO_DOMAIN if the domain does not exist. * src/xs_internal.c: Fix indentation.
This commit is contained in:
parent
ea6279cb91
commit
4ea0ef797f
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
||||||
|
Fri Jul 6 16:08:00 BST 2007 Richard W.M. Jones <rjones@redhat.com>
|
||||||
|
|
||||||
|
* src/proxy_internal.c, src/proxy_internal.h,
|
||||||
|
src.xen_internal.c, src/xen_internal.h,
|
||||||
|
src/xen_unified.c, src/xen_unified.h,
|
||||||
|
src/xend_internal.c, src/xend_internal.h,
|
||||||
|
src/xm_internal.c, src/xm_internal.h,
|
||||||
|
src/xs_internal.c, src/xs_internal.h: The interface
|
||||||
|
between xen_unified.c and its underlying driver now uses
|
||||||
|
a custom structure (struct xenUnifiedDriver) instead
|
||||||
|
of reusing virDriver.
|
||||||
|
* src/xen_unified.c: virDomainLookup* functions in Xen
|
||||||
|
now throw VIR_ERR_NO_DOMAIN if the domain does not exist.
|
||||||
|
* src/xs_internal.c: Fix indentation.
|
||||||
|
|
||||||
Fri Jul 6 17:06:52 CEST 2007 Daniel Veillard <veillard@redhat.com>
|
Fri Jul 6 17:06:52 CEST 2007 Daniel Veillard <veillard@redhat.com>
|
||||||
|
|
||||||
* src/virsh.c: fix an error in the default help string, bug #247197
|
* src/virsh.c: fix an error in the default help string, bug #247197
|
||||||
|
|
|
@ -35,35 +35,23 @@ static int xenProxyNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info);
|
||||||
static char *xenProxyGetCapabilities(virConnectPtr conn);
|
static char *xenProxyGetCapabilities(virConnectPtr conn);
|
||||||
static int xenProxyListDomains(virConnectPtr conn, int *ids, int maxids);
|
static int xenProxyListDomains(virConnectPtr conn, int *ids, int maxids);
|
||||||
static int xenProxyNumOfDomains(virConnectPtr conn);
|
static int xenProxyNumOfDomains(virConnectPtr conn);
|
||||||
static virDomainPtr xenProxyLookupByID(virConnectPtr conn, int id);
|
|
||||||
static virDomainPtr xenProxyLookupByUUID(virConnectPtr conn,
|
|
||||||
const unsigned char *uuid);
|
|
||||||
static virDomainPtr xenProxyDomainLookupByName(virConnectPtr conn,
|
|
||||||
const char *domname);
|
|
||||||
static unsigned long xenProxyDomainGetMaxMemory(virDomainPtr domain);
|
static unsigned long xenProxyDomainGetMaxMemory(virDomainPtr domain);
|
||||||
static int xenProxyDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info);
|
static int xenProxyDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info);
|
||||||
static char *xenProxyDomainDumpXML(virDomainPtr domain, int flags);
|
static char *xenProxyDomainDumpXML(virDomainPtr domain, int flags);
|
||||||
static char *xenProxyDomainGetOSType(virDomainPtr domain);
|
static char *xenProxyDomainGetOSType(virDomainPtr domain);
|
||||||
|
|
||||||
virDriver xenProxyDriver = {
|
struct xenUnifiedDriver xenProxyDriver = {
|
||||||
-1,
|
|
||||||
"XenProxy",
|
|
||||||
0,
|
|
||||||
xenProxyOpen, /* open */
|
xenProxyOpen, /* open */
|
||||||
xenProxyClose, /* close */
|
xenProxyClose, /* close */
|
||||||
NULL, /* type */
|
NULL, /* type */
|
||||||
xenProxyGetVersion, /* version */
|
xenProxyGetVersion, /* version */
|
||||||
NULL, /* hostname */
|
NULL, /* hostname */
|
||||||
NULL, /* URI */
|
NULL, /* URI */
|
||||||
NULL, /* getMaxVcpus */
|
|
||||||
xenProxyNodeGetInfo, /* nodeGetInfo */
|
xenProxyNodeGetInfo, /* nodeGetInfo */
|
||||||
xenProxyGetCapabilities, /* getCapabilities */
|
xenProxyGetCapabilities, /* getCapabilities */
|
||||||
xenProxyListDomains, /* listDomains */
|
xenProxyListDomains, /* listDomains */
|
||||||
xenProxyNumOfDomains, /* numOfDomains */
|
xenProxyNumOfDomains, /* numOfDomains */
|
||||||
NULL, /* domainCreateLinux */
|
NULL, /* domainCreateLinux */
|
||||||
xenProxyLookupByID, /* domainLookupByID */
|
|
||||||
xenProxyLookupByUUID, /* domainLookupByUUID */
|
|
||||||
xenProxyDomainLookupByName, /* domainLookupByName */
|
|
||||||
NULL, /* domainSuspend */
|
NULL, /* domainSuspend */
|
||||||
NULL, /* domainResume */
|
NULL, /* domainResume */
|
||||||
NULL, /* domainShutdown */
|
NULL, /* domainShutdown */
|
||||||
|
@ -799,7 +787,7 @@ xenProxyDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
|
||||||
*
|
*
|
||||||
* Returns a new domain object or NULL in case of failure
|
* Returns a new domain object or NULL in case of failure
|
||||||
*/
|
*/
|
||||||
static virDomainPtr
|
virDomainPtr
|
||||||
xenProxyLookupByID(virConnectPtr conn, int id)
|
xenProxyLookupByID(virConnectPtr conn, int id)
|
||||||
{
|
{
|
||||||
virProxyPacket req;
|
virProxyPacket req;
|
||||||
|
@ -845,7 +833,7 @@ xenProxyLookupByID(virConnectPtr conn, int id)
|
||||||
*
|
*
|
||||||
* Returns a new domain object or NULL in case of failure
|
* Returns a new domain object or NULL in case of failure
|
||||||
*/
|
*/
|
||||||
static virDomainPtr
|
virDomainPtr
|
||||||
xenProxyLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
|
xenProxyLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
|
||||||
{
|
{
|
||||||
virProxyFullPacket req;
|
virProxyFullPacket req;
|
||||||
|
@ -879,7 +867,7 @@ xenProxyLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xenProxyDomainLookupByName:
|
* xenProxyLookupByName:
|
||||||
* @conn: A xend instance
|
* @conn: A xend instance
|
||||||
* @name: The name of the domain
|
* @name: The name of the domain
|
||||||
*
|
*
|
||||||
|
@ -887,8 +875,8 @@ xenProxyLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
|
||||||
*
|
*
|
||||||
* Returns a new domain object or NULL in case of failure
|
* Returns a new domain object or NULL in case of failure
|
||||||
*/
|
*/
|
||||||
static virDomainPtr
|
virDomainPtr
|
||||||
xenProxyDomainLookupByName(virConnectPtr conn, const char *name)
|
xenProxyLookupByName(virConnectPtr conn, const char *name)
|
||||||
{
|
{
|
||||||
virProxyFullPacket req;
|
virProxyFullPacket req;
|
||||||
int ret, len;
|
int ret, len;
|
||||||
|
|
|
@ -86,8 +86,15 @@ struct _virProxyFullPacket {
|
||||||
typedef struct _virProxyFullPacket virProxyFullPacket;
|
typedef struct _virProxyFullPacket virProxyFullPacket;
|
||||||
typedef virProxyFullPacket *virProxyFullPacketPtr;
|
typedef virProxyFullPacket *virProxyFullPacketPtr;
|
||||||
|
|
||||||
extern virDriver xenProxyDriver;
|
/* xen_unified makes direct calls or indirect calls through here. */
|
||||||
int xenProxyInit (void);
|
extern struct xenUnifiedDriver xenProxyDriver;
|
||||||
|
extern int xenProxyInit (void);
|
||||||
|
|
||||||
|
extern virDomainPtr xenProxyLookupByID(virConnectPtr conn, int id);
|
||||||
|
extern virDomainPtr xenProxyLookupByUUID(virConnectPtr conn,
|
||||||
|
const unsigned char *uuid);
|
||||||
|
extern virDomainPtr xenProxyLookupByName(virConnectPtr conn,
|
||||||
|
const char *domname);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -587,27 +587,18 @@ static unsigned long xenHypervisorGetMaxMemory(virDomainPtr domain);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef PROXY
|
#ifndef PROXY
|
||||||
virDriver xenHypervisorDriver = {
|
struct xenUnifiedDriver xenHypervisorDriver = {
|
||||||
-1,
|
|
||||||
"Xen",
|
|
||||||
(DOM0_INTERFACE_VERSION >> 24) * 1000000 +
|
|
||||||
((DOM0_INTERFACE_VERSION >> 16) & 0xFF) * 1000 +
|
|
||||||
(DOM0_INTERFACE_VERSION & 0xFFFF),
|
|
||||||
xenHypervisorOpen, /* open */
|
xenHypervisorOpen, /* open */
|
||||||
xenHypervisorClose, /* close */
|
xenHypervisorClose, /* close */
|
||||||
xenHypervisorGetType, /* type */
|
xenHypervisorGetType, /* type */
|
||||||
xenHypervisorGetVersion, /* version */
|
xenHypervisorGetVersion, /* version */
|
||||||
NULL, /* hostname */
|
NULL, /* hostname */
|
||||||
NULL, /* URI */
|
NULL, /* URI */
|
||||||
xenHypervisorGetMaxVcpus, /* getMaxVcpus */
|
|
||||||
NULL, /* nodeGetInfo */
|
NULL, /* nodeGetInfo */
|
||||||
xenHypervisorGetCapabilities, /* getCapabilities */
|
xenHypervisorGetCapabilities, /* getCapabilities */
|
||||||
xenHypervisorListDomains, /* listDomains */
|
xenHypervisorListDomains, /* listDomains */
|
||||||
xenHypervisorNumOfDomains, /* numOfDomains */
|
xenHypervisorNumOfDomains, /* numOfDomains */
|
||||||
NULL, /* domainCreateLinux */
|
NULL, /* domainCreateLinux */
|
||||||
NULL, /* domainLookupByID */
|
|
||||||
NULL, /* domainLookupByUUID */
|
|
||||||
NULL, /* domainLookupByName */
|
|
||||||
xenHypervisorPauseDomain, /* domainSuspend */
|
xenHypervisorPauseDomain, /* domainSuspend */
|
||||||
xenHypervisorResumeDomain, /* domainResume */
|
xenHypervisorResumeDomain, /* domainResume */
|
||||||
NULL, /* domainShutdown */
|
NULL, /* domainShutdown */
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern virDriver xenHypervisorDriver;
|
extern struct xenUnifiedDriver xenHypervisorDriver;
|
||||||
int xenHypervisorInit (void);
|
int xenHypervisorInit (void);
|
||||||
|
|
||||||
/* The following calls are made directly by the Xen proxy: */
|
/* The following calls are made directly by the Xen proxy: */
|
||||||
|
|
|
@ -17,12 +17,6 @@
|
||||||
* xend_internal, xs_internal and xm_internal). Historically
|
* xend_internal, xs_internal and xm_internal). Historically
|
||||||
* the body of libvirt.c handled the five Xen drivers,
|
* the body of libvirt.c handled the five Xen drivers,
|
||||||
* and contained Xen-specific code.
|
* and contained Xen-specific code.
|
||||||
*
|
|
||||||
* The interface between Xen drivers and xen_unified is
|
|
||||||
* the same as for "ordinary" libvirt drivers (ie. virDriverPtr),
|
|
||||||
* however this is just for convenience and may be changed
|
|
||||||
* in future. Libvirt.c should no longer call directly
|
|
||||||
* to the five underlying Xen drivers.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
@ -44,15 +38,13 @@
|
||||||
#include "xm_internal.h"
|
#include "xm_internal.h"
|
||||||
|
|
||||||
/* The five Xen drivers below us. */
|
/* The five Xen drivers below us. */
|
||||||
static virDriverPtr drivers[XEN_UNIFIED_NR_DRIVERS] = {
|
static struct xenUnifiedDriver *drivers[XEN_UNIFIED_NR_DRIVERS] = {
|
||||||
&xenHypervisorDriver,
|
[XEN_UNIFIED_HYPERVISOR_OFFSET] = &xenHypervisorDriver,
|
||||||
&xenProxyDriver,
|
[XEN_UNIFIED_PROXY_OFFSET] = &xenProxyDriver,
|
||||||
&xenDaemonDriver,
|
[XEN_UNIFIED_XEND_OFFSET] = &xenDaemonDriver,
|
||||||
&xenStoreDriver,
|
[XEN_UNIFIED_XS_OFFSET] = &xenStoreDriver,
|
||||||
&xenXMDriver
|
[XEN_UNIFIED_XM_OFFSET] = &xenXMDriver,
|
||||||
};
|
};
|
||||||
static const int hypervisor_offset = 0;
|
|
||||||
static const int proxy_offset = 1;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xenUnifiedError:
|
* xenUnifiedError:
|
||||||
|
@ -153,7 +145,7 @@ xenUnifiedOpen (virConnectPtr conn, const char *name, int flags)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Ignore proxy for root */
|
/* Ignore proxy for root */
|
||||||
if (i == proxy_offset && getuid() == 0)
|
if (i == XEN_UNIFIED_PROXY_OFFSET && getuid() == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (drivers[i]->open &&
|
if (drivers[i]->open &&
|
||||||
|
@ -162,7 +154,8 @@ xenUnifiedOpen (virConnectPtr conn, const char *name, int flags)
|
||||||
|
|
||||||
/* If as root, then all drivers must succeed.
|
/* If as root, then all drivers must succeed.
|
||||||
If non-root, then only proxy must succeed */
|
If non-root, then only proxy must succeed */
|
||||||
if (!priv->opened[i] && (getuid() == 0 || i == proxy_offset)) {
|
if (!priv->opened[i] &&
|
||||||
|
(getuid() == 0 || i == XEN_UNIFIED_PROXY_OFFSET)) {
|
||||||
for (j = 0; j < i; ++j)
|
for (j = 0; j < i; ++j)
|
||||||
if (priv->opened[j]) drivers[j]->close (conn);
|
if (priv->opened[j]) drivers[j]->close (conn);
|
||||||
free (priv->name);
|
free (priv->name);
|
||||||
|
@ -269,16 +262,18 @@ static int
|
||||||
xenUnifiedGetMaxVcpus (virConnectPtr conn, const char *type)
|
xenUnifiedGetMaxVcpus (virConnectPtr conn, const char *type)
|
||||||
{
|
{
|
||||||
GET_PRIVATE(conn);
|
GET_PRIVATE(conn);
|
||||||
int i;
|
|
||||||
|
|
||||||
if (!type)
|
if (type && STRCASENEQ (type, "Xen")) {
|
||||||
type = "Xen";
|
xenUnifiedError (conn, VIR_ERR_INVALID_ARG, __FUNCTION__);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET])
|
||||||
if (priv->opened[i] && strcmp (drivers[i]->name, type) == 0)
|
return xenHypervisorGetMaxVcpus (conn, type);
|
||||||
return drivers[i]->getMaxVcpus (conn, type);
|
else {
|
||||||
|
xenUnifiedError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -359,19 +354,37 @@ xenUnifiedDomainCreateLinux (virConnectPtr conn,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Assumption made in underlying drivers:
|
||||||
|
* If the domain is "not found" and there is no other error, then
|
||||||
|
* the Lookup* functions return a NULL but do not set virterror.
|
||||||
|
*/
|
||||||
static virDomainPtr
|
static virDomainPtr
|
||||||
xenUnifiedDomainLookupByID (virConnectPtr conn, int id)
|
xenUnifiedDomainLookupByID (virConnectPtr conn, int id)
|
||||||
{
|
{
|
||||||
GET_PRIVATE(conn);
|
GET_PRIVATE(conn);
|
||||||
int i;
|
|
||||||
virDomainPtr ret;
|
virDomainPtr ret;
|
||||||
|
|
||||||
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
/* Reset any connection-level errors in virterror first, in case
|
||||||
if (priv->opened[i] && drivers[i]->domainLookupByID) {
|
* there is one hanging around from a previous call.
|
||||||
ret = drivers[i]->domainLookupByID (conn, id);
|
*/
|
||||||
if (ret) return ret;
|
virConnResetLastError (conn);
|
||||||
}
|
|
||||||
|
|
||||||
|
/* Try proxy. */
|
||||||
|
if (priv->opened[XEN_UNIFIED_PROXY_OFFSET]) {
|
||||||
|
ret = xenProxyLookupByID (conn, id);
|
||||||
|
if (ret || conn->err.code != VIR_ERR_OK)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try xend. */
|
||||||
|
if (priv->opened[XEN_UNIFIED_XEND_OFFSET]) {
|
||||||
|
ret = xenDaemonLookupByID (conn, id);
|
||||||
|
if (ret || conn->err.code != VIR_ERR_OK)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Not found. */
|
||||||
|
xenUnifiedError (conn, VIR_ERR_NO_DOMAIN, __FUNCTION__);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,15 +393,36 @@ xenUnifiedDomainLookupByUUID (virConnectPtr conn,
|
||||||
const unsigned char *uuid)
|
const unsigned char *uuid)
|
||||||
{
|
{
|
||||||
GET_PRIVATE(conn);
|
GET_PRIVATE(conn);
|
||||||
int i;
|
|
||||||
virDomainPtr ret;
|
virDomainPtr ret;
|
||||||
|
|
||||||
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
/* Reset any connection-level errors in virterror first, in case
|
||||||
if (priv->opened[i] && drivers[i]->domainLookupByUUID) {
|
* there is one hanging around from a previous call.
|
||||||
ret = drivers[i]->domainLookupByUUID (conn, uuid);
|
*/
|
||||||
if (ret) return ret;
|
virConnResetLastError (conn);
|
||||||
}
|
|
||||||
|
|
||||||
|
/* Try proxy. */
|
||||||
|
if (priv->opened[XEN_UNIFIED_PROXY_OFFSET]) {
|
||||||
|
ret = xenProxyLookupByUUID (conn, uuid);
|
||||||
|
if (ret || conn->err.code != VIR_ERR_OK)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try xend. */
|
||||||
|
if (priv->opened[XEN_UNIFIED_XEND_OFFSET]) {
|
||||||
|
ret = xenDaemonLookupByUUID (conn, uuid);
|
||||||
|
if (ret || conn->err.code != VIR_ERR_OK)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try XM for inactive domains. */
|
||||||
|
if (priv->opened[XEN_UNIFIED_XM_OFFSET]) {
|
||||||
|
ret = xenXMDomainLookupByUUID (conn, uuid);
|
||||||
|
if (ret || conn->err.code != VIR_ERR_OK)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Not found. */
|
||||||
|
xenUnifiedError (conn, VIR_ERR_NO_DOMAIN, __FUNCTION__);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -397,15 +431,43 @@ xenUnifiedDomainLookupByName (virConnectPtr conn,
|
||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
GET_PRIVATE(conn);
|
GET_PRIVATE(conn);
|
||||||
int i;
|
|
||||||
virDomainPtr ret;
|
virDomainPtr ret;
|
||||||
|
|
||||||
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
/* Reset any connection-level errors in virterror first, in case
|
||||||
if (priv->opened[i] && drivers[i]->domainLookupByName) {
|
* there is one hanging around from a previous call.
|
||||||
ret = drivers[i]->domainLookupByName (conn, name);
|
*/
|
||||||
if (ret) return ret;
|
virConnResetLastError (conn);
|
||||||
}
|
|
||||||
|
|
||||||
|
/* Try proxy. */
|
||||||
|
if (priv->opened[XEN_UNIFIED_PROXY_OFFSET]) {
|
||||||
|
ret = xenProxyLookupByName (conn, name);
|
||||||
|
if (ret || conn->err.code != VIR_ERR_OK)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try xend. */
|
||||||
|
if (priv->opened[XEN_UNIFIED_XEND_OFFSET]) {
|
||||||
|
ret = xenDaemonLookupByName (conn, name);
|
||||||
|
if (ret || conn->err.code != VIR_ERR_OK)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try xenstore for inactive domains. */
|
||||||
|
if (priv->opened[XEN_UNIFIED_XS_OFFSET]) {
|
||||||
|
ret = xenStoreLookupByName (conn, name);
|
||||||
|
if (ret || conn->err.code != VIR_ERR_OK)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try XM for inactive domains. */
|
||||||
|
if (priv->opened[XEN_UNIFIED_XM_OFFSET]) {
|
||||||
|
ret = xenXMDomainLookupByName (conn, name);
|
||||||
|
if (ret || conn->err.code != VIR_ERR_OK)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Not found. */
|
||||||
|
xenUnifiedError (conn, VIR_ERR_NO_DOMAIN, __FUNCTION__);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,15 +481,15 @@ xenUnifiedDomainSuspend (virDomainPtr dom)
|
||||||
* as a last resort.
|
* as a last resort.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
||||||
if (i != hypervisor_offset &&
|
if (i != XEN_UNIFIED_HYPERVISOR_OFFSET &&
|
||||||
priv->opened[i] &&
|
priv->opened[i] &&
|
||||||
drivers[i]->domainSuspend &&
|
drivers[i]->domainSuspend &&
|
||||||
drivers[i]->domainSuspend (dom) == 0)
|
drivers[i]->domainSuspend (dom) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (priv->opened[hypervisor_offset] &&
|
if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET] &&
|
||||||
drivers[hypervisor_offset]->domainSuspend &&
|
drivers[XEN_UNIFIED_HYPERVISOR_OFFSET]->domainSuspend &&
|
||||||
drivers[hypervisor_offset]->domainSuspend (dom) == 0)
|
drivers[XEN_UNIFIED_HYPERVISOR_OFFSET]->domainSuspend (dom) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -443,15 +505,15 @@ xenUnifiedDomainResume (virDomainPtr dom)
|
||||||
* as a last resort.
|
* as a last resort.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
||||||
if (i != hypervisor_offset &&
|
if (i != XEN_UNIFIED_HYPERVISOR_OFFSET &&
|
||||||
priv->opened[i] &&
|
priv->opened[i] &&
|
||||||
drivers[i]->domainResume &&
|
drivers[i]->domainResume &&
|
||||||
drivers[i]->domainResume (dom) == 0)
|
drivers[i]->domainResume (dom) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (priv->opened[hypervisor_offset] &&
|
if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET] &&
|
||||||
drivers[hypervisor_offset]->domainResume &&
|
drivers[XEN_UNIFIED_HYPERVISOR_OFFSET]->domainResume &&
|
||||||
drivers[hypervisor_offset]->domainResume (dom) == 0)
|
drivers[XEN_UNIFIED_HYPERVISOR_OFFSET]->domainResume (dom) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -497,15 +559,15 @@ xenUnifiedDomainDestroy (virDomainPtr dom)
|
||||||
* as a last resort.
|
* as a last resort.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
||||||
if (i != hypervisor_offset &&
|
if (i != XEN_UNIFIED_HYPERVISOR_OFFSET &&
|
||||||
priv->opened[i] &&
|
priv->opened[i] &&
|
||||||
drivers[i]->domainDestroy &&
|
drivers[i]->domainDestroy &&
|
||||||
drivers[i]->domainDestroy (dom) == 0)
|
drivers[i]->domainDestroy (dom) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (priv->opened[i] &&
|
if (priv->opened[i] &&
|
||||||
drivers[hypervisor_offset]->domainDestroy &&
|
drivers[XEN_UNIFIED_HYPERVISOR_OFFSET]->domainDestroy &&
|
||||||
drivers[hypervisor_offset]->domainDestroy (dom) == 0)
|
drivers[XEN_UNIFIED_HYPERVISOR_OFFSET]->domainDestroy (dom) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -643,15 +705,15 @@ xenUnifiedDomainSetVcpus (virDomainPtr dom, unsigned int nvcpus)
|
||||||
* as a last resort.
|
* as a last resort.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
|
||||||
if (i != hypervisor_offset &&
|
if (i != XEN_UNIFIED_HYPERVISOR_OFFSET &&
|
||||||
priv->opened[i] &&
|
priv->opened[i] &&
|
||||||
drivers[i]->domainSetVcpus &&
|
drivers[i]->domainSetVcpus &&
|
||||||
drivers[i]->domainSetVcpus (dom, nvcpus) == 0)
|
drivers[i]->domainSetVcpus (dom, nvcpus) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (priv->opened[hypervisor_offset] &&
|
if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET] &&
|
||||||
drivers[hypervisor_offset]->domainSetVcpus &&
|
drivers[XEN_UNIFIED_HYPERVISOR_OFFSET]->domainSetVcpus &&
|
||||||
drivers[hypervisor_offset]->domainSetVcpus (dom, nvcpus) == 0)
|
drivers[XEN_UNIFIED_HYPERVISOR_OFFSET]->domainSetVcpus (dom, nvcpus) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -19,8 +19,67 @@ extern "C" {
|
||||||
|
|
||||||
extern int xenUnifiedRegister (void);
|
extern int xenUnifiedRegister (void);
|
||||||
|
|
||||||
|
#define XEN_UNIFIED_HYPERVISOR_OFFSET 0
|
||||||
|
#define XEN_UNIFIED_PROXY_OFFSET 1
|
||||||
|
#define XEN_UNIFIED_XEND_OFFSET 2
|
||||||
|
#define XEN_UNIFIED_XS_OFFSET 3
|
||||||
|
#define XEN_UNIFIED_XM_OFFSET 4
|
||||||
#define XEN_UNIFIED_NR_DRIVERS 5
|
#define XEN_UNIFIED_NR_DRIVERS 5
|
||||||
|
|
||||||
|
/* _xenUnifiedDriver:
|
||||||
|
*
|
||||||
|
* Entry points into the underlying Xen drivers. This structure
|
||||||
|
* will eventually go away and instead xen unified will make direct
|
||||||
|
* calls to the underlying Xen drivers.
|
||||||
|
*
|
||||||
|
* To reiterate - the goal is to remove elements from this structure
|
||||||
|
* until it is empty, replacing indirect calls through this
|
||||||
|
* structure with direct calls in xen_unified.c.
|
||||||
|
*/
|
||||||
|
struct xenUnifiedDriver {
|
||||||
|
virDrvOpen open;
|
||||||
|
virDrvClose close;
|
||||||
|
virDrvGetType type;
|
||||||
|
virDrvGetVersion version;
|
||||||
|
virDrvGetHostname getHostname;
|
||||||
|
virDrvGetURI getURI;
|
||||||
|
virDrvNodeGetInfo nodeGetInfo;
|
||||||
|
virDrvGetCapabilities getCapabilities;
|
||||||
|
virDrvListDomains listDomains;
|
||||||
|
virDrvNumOfDomains numOfDomains;
|
||||||
|
virDrvDomainCreateLinux domainCreateLinux;
|
||||||
|
virDrvDomainSuspend domainSuspend;
|
||||||
|
virDrvDomainResume domainResume;
|
||||||
|
virDrvDomainShutdown domainShutdown;
|
||||||
|
virDrvDomainReboot domainReboot;
|
||||||
|
virDrvDomainDestroy domainDestroy;
|
||||||
|
virDrvDomainGetOSType domainGetOSType;
|
||||||
|
virDrvDomainGetMaxMemory domainGetMaxMemory;
|
||||||
|
virDrvDomainSetMaxMemory domainSetMaxMemory;
|
||||||
|
virDrvDomainSetMemory domainSetMemory;
|
||||||
|
virDrvDomainGetInfo domainGetInfo;
|
||||||
|
virDrvDomainSave domainSave;
|
||||||
|
virDrvDomainRestore domainRestore;
|
||||||
|
virDrvDomainCoreDump domainCoreDump;
|
||||||
|
virDrvDomainSetVcpus domainSetVcpus;
|
||||||
|
virDrvDomainPinVcpu domainPinVcpu;
|
||||||
|
virDrvDomainGetVcpus domainGetVcpus;
|
||||||
|
virDrvDomainGetMaxVcpus domainGetMaxVcpus;
|
||||||
|
virDrvDomainDumpXML domainDumpXML;
|
||||||
|
virDrvListDefinedDomains listDefinedDomains;
|
||||||
|
virDrvNumOfDefinedDomains numOfDefinedDomains;
|
||||||
|
virDrvDomainCreate domainCreate;
|
||||||
|
virDrvDomainDefineXML domainDefineXML;
|
||||||
|
virDrvDomainUndefine domainUndefine;
|
||||||
|
virDrvDomainAttachDevice domainAttachDevice;
|
||||||
|
virDrvDomainDetachDevice domainDetachDevice;
|
||||||
|
virDrvDomainGetAutostart domainGetAutostart;
|
||||||
|
virDrvDomainSetAutostart domainSetAutostart;
|
||||||
|
virDrvDomainGetSchedulerType domainGetSchedulerType;
|
||||||
|
virDrvDomainGetSchedulerParameters domainGetSchedulerParameters;
|
||||||
|
virDrvDomainSetSchedulerParameters domainSetSchedulerParameters;
|
||||||
|
};
|
||||||
|
|
||||||
/* xenUnifiedPrivatePtr:
|
/* xenUnifiedPrivatePtr:
|
||||||
*
|
*
|
||||||
* Per-connection private data, stored in conn->privateData. All Xen
|
* Per-connection private data, stored in conn->privateData. All Xen
|
||||||
|
|
|
@ -50,9 +50,6 @@ static int xenDaemonListDomains(virConnectPtr conn, int *ids, int maxids);
|
||||||
static int xenDaemonNumOfDomains(virConnectPtr conn);
|
static int xenDaemonNumOfDomains(virConnectPtr conn);
|
||||||
static int xenDaemonListDefinedDomains(virConnectPtr conn, char **const names, int maxnames);
|
static int xenDaemonListDefinedDomains(virConnectPtr conn, char **const names, int maxnames);
|
||||||
static int xenDaemonNumOfDefinedDomains(virConnectPtr conn);
|
static int xenDaemonNumOfDefinedDomains(virConnectPtr conn);
|
||||||
static virDomainPtr xenDaemonLookupByID(virConnectPtr conn, int id);
|
|
||||||
static virDomainPtr xenDaemonLookupByUUID(virConnectPtr conn,
|
|
||||||
const unsigned char *uuid);
|
|
||||||
static virDomainPtr xenDaemonCreateLinux(virConnectPtr conn,
|
static virDomainPtr xenDaemonCreateLinux(virConnectPtr conn,
|
||||||
const char *xmlDesc,
|
const char *xmlDesc,
|
||||||
unsigned int flags);
|
unsigned int flags);
|
||||||
|
@ -64,27 +61,18 @@ static int xenDaemonDomainCoreDump(virDomainPtr domain, const char *filename,
|
||||||
#endif /* PROXY */
|
#endif /* PROXY */
|
||||||
|
|
||||||
#ifndef PROXY
|
#ifndef PROXY
|
||||||
virDriver xenDaemonDriver = {
|
struct xenUnifiedDriver xenDaemonDriver = {
|
||||||
-1,
|
|
||||||
"XenDaemon",
|
|
||||||
(DOM0_INTERFACE_VERSION >> 24) * 1000000 +
|
|
||||||
((DOM0_INTERFACE_VERSION >> 16) & 0xFF) * 1000 +
|
|
||||||
(DOM0_INTERFACE_VERSION & 0xFFFF),
|
|
||||||
xenDaemonOpen, /* open */
|
xenDaemonOpen, /* open */
|
||||||
xenDaemonClose, /* close */
|
xenDaemonClose, /* close */
|
||||||
xenDaemonGetType, /* type */
|
xenDaemonGetType, /* type */
|
||||||
xenDaemonGetVersion, /* version */
|
xenDaemonGetVersion, /* version */
|
||||||
NULL, /* hostname */
|
NULL, /* hostname */
|
||||||
NULL, /* URI */
|
NULL, /* URI */
|
||||||
NULL, /* getMaxVcpus */
|
|
||||||
xenDaemonNodeGetInfo, /* nodeGetInfo */
|
xenDaemonNodeGetInfo, /* nodeGetInfo */
|
||||||
NULL, /* getCapabilities */
|
NULL, /* getCapabilities */
|
||||||
xenDaemonListDomains, /* listDomains */
|
xenDaemonListDomains, /* listDomains */
|
||||||
xenDaemonNumOfDomains, /* numOfDomains */
|
xenDaemonNumOfDomains, /* numOfDomains */
|
||||||
xenDaemonCreateLinux, /* domainCreateLinux */
|
xenDaemonCreateLinux, /* domainCreateLinux */
|
||||||
xenDaemonLookupByID, /* domainLookupByID */
|
|
||||||
xenDaemonLookupByUUID, /* domainLookupByUUID */
|
|
||||||
xenDaemonDomainLookupByName, /* domainLookupByName */
|
|
||||||
xenDaemonDomainSuspend, /* domainSuspend */
|
xenDaemonDomainSuspend, /* domainSuspend */
|
||||||
xenDaemonDomainResume, /* domainResume */
|
xenDaemonDomainResume, /* domainResume */
|
||||||
xenDaemonDomainShutdown, /* domainShutdown */
|
xenDaemonDomainShutdown, /* domainShutdown */
|
||||||
|
@ -2511,7 +2499,7 @@ xenDaemonDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
|
||||||
|
|
||||||
#ifndef PROXY
|
#ifndef PROXY
|
||||||
/**
|
/**
|
||||||
* xenDaemonDomainLookupByName:
|
* xenDaemonLookupByName:
|
||||||
* @conn: A xend instance
|
* @conn: A xend instance
|
||||||
* @name: The name of the domain
|
* @name: The name of the domain
|
||||||
*
|
*
|
||||||
|
@ -2522,7 +2510,7 @@ xenDaemonDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
|
||||||
* Returns domain info on success; NULL (with errno) on error
|
* Returns domain info on success; NULL (with errno) on error
|
||||||
*/
|
*/
|
||||||
virDomainPtr
|
virDomainPtr
|
||||||
xenDaemonDomainLookupByName(virConnectPtr conn, const char *domname)
|
xenDaemonLookupByName(virConnectPtr conn, const char *domname)
|
||||||
{
|
{
|
||||||
struct sexpr *root;
|
struct sexpr *root;
|
||||||
virDomainPtr ret = NULL;
|
virDomainPtr ret = NULL;
|
||||||
|
@ -2727,7 +2715,7 @@ error:
|
||||||
*
|
*
|
||||||
* Returns a new domain object or NULL in case of failure
|
* Returns a new domain object or NULL in case of failure
|
||||||
*/
|
*/
|
||||||
static virDomainPtr
|
virDomainPtr
|
||||||
xenDaemonLookupByID(virConnectPtr conn, int id) {
|
xenDaemonLookupByID(virConnectPtr conn, int id) {
|
||||||
char *name = NULL;
|
char *name = NULL;
|
||||||
unsigned char uuid[VIR_UUID_BUFLEN];
|
unsigned char uuid[VIR_UUID_BUFLEN];
|
||||||
|
@ -2926,7 +2914,7 @@ xenDaemonDomainGetVcpus(virDomainPtr domain, virVcpuInfoPtr info, int maxinfo,
|
||||||
*
|
*
|
||||||
* Returns a new domain object or NULL in case of failure
|
* Returns a new domain object or NULL in case of failure
|
||||||
*/
|
*/
|
||||||
static virDomainPtr
|
virDomainPtr
|
||||||
xenDaemonLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
|
xenDaemonLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
|
||||||
{
|
{
|
||||||
virDomainPtr ret;
|
virDomainPtr ret;
|
||||||
|
|
|
@ -177,9 +177,6 @@ char *xenDaemonDomainDumpXMLByName(virConnectPtr xend,
|
||||||
|
|
||||||
char *xend_parse_domain_sexp(virConnectPtr conn, char *root, int xendConfigVersion);
|
char *xend_parse_domain_sexp(virConnectPtr conn, char *root, int xendConfigVersion);
|
||||||
|
|
||||||
extern virDriver xenDaemonDriver;
|
|
||||||
int xenDaemonInit (void);
|
|
||||||
|
|
||||||
/* refactored ones */
|
/* refactored ones */
|
||||||
int xenDaemonOpen(virConnectPtr conn, const char *name, int flags);
|
int xenDaemonOpen(virConnectPtr conn, const char *name, int flags);
|
||||||
int xenDaemonClose(virConnectPtr conn);
|
int xenDaemonClose(virConnectPtr conn);
|
||||||
|
@ -196,7 +193,6 @@ int xenDaemonDomainSetMemory(virDomainPtr domain, unsigned long memory);
|
||||||
int xenDaemonDomainSetMaxMemory(virDomainPtr domain, unsigned long memory);
|
int xenDaemonDomainSetMaxMemory(virDomainPtr domain, unsigned long memory);
|
||||||
int xenDaemonDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info);
|
int xenDaemonDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info);
|
||||||
char *xenDaemonDomainDumpXML(virDomainPtr domain, int flags);
|
char *xenDaemonDomainDumpXML(virDomainPtr domain, int flags);
|
||||||
virDomainPtr xenDaemonDomainLookupByName(virConnectPtr conn, const char *domname);
|
|
||||||
unsigned long xenDaemonDomainGetMaxMemory(virDomainPtr domain);
|
unsigned long xenDaemonDomainGetMaxMemory(virDomainPtr domain);
|
||||||
char **xenDaemonListDomainsOld(virConnectPtr xend);
|
char **xenDaemonListDomainsOld(virConnectPtr xend);
|
||||||
|
|
||||||
|
@ -216,6 +212,14 @@ int xenDaemonDomainGetVcpus (virDomainPtr domain,
|
||||||
unsigned char *cpumaps,
|
unsigned char *cpumaps,
|
||||||
int maplen);
|
int maplen);
|
||||||
|
|
||||||
|
/* xen_unified calls through here. */
|
||||||
|
extern struct xenUnifiedDriver xenDaemonDriver;
|
||||||
|
int xenDaemonInit (void);
|
||||||
|
|
||||||
|
virDomainPtr xenDaemonLookupByID(virConnectPtr conn, int id);
|
||||||
|
virDomainPtr xenDaemonLookupByUUID(virConnectPtr conn, const unsigned char *uuid);
|
||||||
|
virDomainPtr xenDaemonLookupByName(virConnectPtr conn, const char *domname);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -74,27 +74,18 @@ static time_t lastRefresh = 0;
|
||||||
#define XEND_PCI_CONFIG_PREFIX "xend-pci-"
|
#define XEND_PCI_CONFIG_PREFIX "xend-pci-"
|
||||||
#define QEMU_IF_SCRIPT "qemu-ifup"
|
#define QEMU_IF_SCRIPT "qemu-ifup"
|
||||||
|
|
||||||
virDriver xenXMDriver = {
|
struct xenUnifiedDriver xenXMDriver = {
|
||||||
-1,
|
|
||||||
"XenXM",
|
|
||||||
(DOM0_INTERFACE_VERSION >> 24) * 1000000 +
|
|
||||||
((DOM0_INTERFACE_VERSION >> 16) & 0xFF) * 1000 +
|
|
||||||
(DOM0_INTERFACE_VERSION & 0xFFFF),
|
|
||||||
xenXMOpen, /* open */
|
xenXMOpen, /* open */
|
||||||
xenXMClose, /* close */
|
xenXMClose, /* close */
|
||||||
xenXMGetType, /* type */
|
xenXMGetType, /* type */
|
||||||
NULL, /* version */
|
NULL, /* version */
|
||||||
NULL, /* hostname */
|
NULL, /* hostname */
|
||||||
NULL, /* URI */
|
NULL, /* URI */
|
||||||
NULL, /* getMaxVcpus */
|
|
||||||
NULL, /* nodeGetInfo */
|
NULL, /* nodeGetInfo */
|
||||||
NULL, /* getCapabilities */
|
NULL, /* getCapabilities */
|
||||||
NULL, /* listDomains */
|
NULL, /* listDomains */
|
||||||
NULL, /* numOfDomains */
|
NULL, /* numOfDomains */
|
||||||
NULL, /* domainCreateLinux */
|
NULL, /* domainCreateLinux */
|
||||||
NULL, /* domainLookupByID */
|
|
||||||
xenXMDomainLookupByUUID, /* domainLookupByUUID */
|
|
||||||
xenXMDomainLookupByName, /* domainLookupByName */
|
|
||||||
NULL, /* domainSuspend */
|
NULL, /* domainSuspend */
|
||||||
NULL, /* domainResume */
|
NULL, /* domainResume */
|
||||||
NULL, /* domainShutdown */
|
NULL, /* domainShutdown */
|
||||||
|
@ -2286,7 +2277,7 @@ static void xenXMListIterator(const void *payload ATTRIBUTE_UNUSED, const char *
|
||||||
if (ctx->count == ctx->max)
|
if (ctx->count == ctx->max)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dom = xenDaemonDomainLookupByName(ctx->conn, name);
|
dom = xenDaemonLookupByName(ctx->conn, name);
|
||||||
if (!dom) {
|
if (!dom) {
|
||||||
ctx->names[ctx->count] = strdup(name);
|
ctx->names[ctx->count] = strdup(name);
|
||||||
ctx->count++;
|
ctx->count++;
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern virDriver xenXMDriver;
|
extern struct xenUnifiedDriver xenXMDriver;
|
||||||
int xenXMInit (void);
|
int xenXMInit (void);
|
||||||
|
|
||||||
int xenXMOpen(virConnectPtr conn, const char *name, int flags);
|
int xenXMOpen(virConnectPtr conn, const char *name, int flags);
|
||||||
|
|
|
@ -36,27 +36,18 @@
|
||||||
#ifndef PROXY
|
#ifndef PROXY
|
||||||
static char *xenStoreDomainGetOSType(virDomainPtr domain);
|
static char *xenStoreDomainGetOSType(virDomainPtr domain);
|
||||||
|
|
||||||
virDriver xenStoreDriver = {
|
struct xenUnifiedDriver xenStoreDriver = {
|
||||||
-1,
|
|
||||||
"XenStore",
|
|
||||||
(DOM0_INTERFACE_VERSION >> 24) * 1000000 +
|
|
||||||
((DOM0_INTERFACE_VERSION >> 16) & 0xFF) * 1000 +
|
|
||||||
(DOM0_INTERFACE_VERSION & 0xFFFF),
|
|
||||||
xenStoreOpen, /* open */
|
xenStoreOpen, /* open */
|
||||||
xenStoreClose, /* close */
|
xenStoreClose, /* close */
|
||||||
NULL, /* type */
|
NULL, /* type */
|
||||||
NULL, /* version */
|
NULL, /* version */
|
||||||
NULL, /* hostname */
|
NULL, /* hostname */
|
||||||
NULL, /* URI */
|
NULL, /* URI */
|
||||||
NULL, /* getMaxVcpus */
|
|
||||||
NULL, /* nodeGetInfo */
|
NULL, /* nodeGetInfo */
|
||||||
NULL, /* getCapabilities */
|
NULL, /* getCapabilities */
|
||||||
xenStoreListDomains, /* listDomains */
|
xenStoreListDomains, /* listDomains */
|
||||||
NULL, /* numOfDomains */
|
NULL, /* numOfDomains */
|
||||||
NULL, /* domainCreateLinux */
|
NULL, /* domainCreateLinux */
|
||||||
NULL, /* domainLookupByID */
|
|
||||||
NULL, /* domainLookupByUUID */
|
|
||||||
xenStoreDomainLookupByName, /* domainLookupByName */
|
|
||||||
NULL, /* domainSuspend */
|
NULL, /* domainSuspend */
|
||||||
NULL, /* domainResume */
|
NULL, /* domainResume */
|
||||||
xenStoreDomainShutdown, /* domainShutdown */
|
xenStoreDomainShutdown, /* domainShutdown */
|
||||||
|
@ -591,7 +582,7 @@ xenStoreListDomains(virConnectPtr conn, int *ids, int maxids)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* xenStoreDomainLookupByName:
|
* xenStoreLookupByName:
|
||||||
* @conn: A xend instance
|
* @conn: A xend instance
|
||||||
* @name: The name of the domain
|
* @name: The name of the domain
|
||||||
*
|
*
|
||||||
|
@ -600,7 +591,7 @@ xenStoreListDomains(virConnectPtr conn, int *ids, int maxids)
|
||||||
* Returns a new domain object or NULL in case of failure
|
* Returns a new domain object or NULL in case of failure
|
||||||
*/
|
*/
|
||||||
virDomainPtr
|
virDomainPtr
|
||||||
xenStoreDomainLookupByName(virConnectPtr conn, const char *name)
|
xenStoreLookupByName(virConnectPtr conn, const char *name)
|
||||||
{
|
{
|
||||||
virDomainPtr ret = NULL;
|
virDomainPtr ret = NULL;
|
||||||
unsigned int num, i, len;
|
unsigned int num, i, len;
|
||||||
|
@ -625,23 +616,23 @@ xenStoreDomainLookupByName(virConnectPtr conn, const char *name)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
for (i = 0; i < num; i++) {
|
for (i = 0; i < num; i++) {
|
||||||
id = strtol(idlist[i], &endptr, 10);
|
id = strtol(idlist[i], &endptr, 10);
|
||||||
if ((endptr == idlist[i]) || (*endptr != 0)) {
|
if ((endptr == idlist[i]) || (*endptr != 0)) {
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
if (virConnectCheckStoreID(conn, (int) id) < 0)
|
if (virConnectCheckStoreID(conn, (int) id) < 0)
|
||||||
continue;
|
continue;
|
||||||
#endif
|
#endif
|
||||||
snprintf(prop, 199, "/local/domain/%s/name", idlist[i]);
|
snprintf(prop, 199, "/local/domain/%s/name", idlist[i]);
|
||||||
prop[199] = 0;
|
prop[199] = 0;
|
||||||
tmp = xs_read(priv->xshandle, 0, prop, &len);
|
tmp = xs_read(priv->xshandle, 0, prop, &len);
|
||||||
if (tmp != NULL) {
|
if (tmp != NULL) {
|
||||||
found = !strcmp(name, tmp);
|
found = STREQ (name, tmp);
|
||||||
free(tmp);
|
free(tmp);
|
||||||
if (found)
|
if (found)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
path = xs_get_domain_path(priv->xshandle, (unsigned int) id);
|
path = xs_get_domain_path(priv->xshandle, (unsigned int) id);
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern virDriver xenStoreDriver;
|
extern struct xenUnifiedDriver xenStoreDriver;
|
||||||
int xenStoreInit (void);
|
int xenStoreInit (void);
|
||||||
|
|
||||||
int xenStoreOpen (virConnectPtr conn,
|
int xenStoreOpen (virConnectPtr conn,
|
||||||
|
@ -28,7 +28,7 @@ int xenStoreNumOfDomains (virConnectPtr conn);
|
||||||
int xenStoreListDomains (virConnectPtr conn,
|
int xenStoreListDomains (virConnectPtr conn,
|
||||||
int *ids,
|
int *ids,
|
||||||
int maxids);
|
int maxids);
|
||||||
virDomainPtr xenStoreDomainLookupByName(virConnectPtr conn,
|
virDomainPtr xenStoreLookupByName(virConnectPtr conn,
|
||||||
const char *name);
|
const char *name);
|
||||||
unsigned long xenStoreGetMaxMemory (virDomainPtr domain);
|
unsigned long xenStoreGetMaxMemory (virDomainPtr domain);
|
||||||
int xenStoreDomainSetMemory (virDomainPtr domain,
|
int xenStoreDomainSetMemory (virDomainPtr domain,
|
||||||
|
|
Loading…
Reference in New Issue