mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
Implement virConnectIsAlive in all drivers
This commit is contained in:
parent
afdf014f4f
commit
e401b0cd02
@ -4175,6 +4175,23 @@ esxIsSecure(virConnectPtr conn)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
esxIsAlive(virConnectPtr conn)
|
||||||
|
{
|
||||||
|
esxPrivate *priv = conn->privateData;
|
||||||
|
|
||||||
|
/* XXX we should be able to do something better than this but this is
|
||||||
|
* simple, safe, and good enough for now. In worst case, the function will
|
||||||
|
* return true even though the connection is not alive.
|
||||||
|
*/
|
||||||
|
if (priv->primary)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
esxDomainIsActive(virDomainPtr domain)
|
esxDomainIsActive(virDomainPtr domain)
|
||||||
{
|
{
|
||||||
@ -4996,6 +5013,7 @@ static virDriver esxDriver = {
|
|||||||
.domainSnapshotCurrent = esxDomainSnapshotCurrent, /* 0.8.0 */
|
.domainSnapshotCurrent = esxDomainSnapshotCurrent, /* 0.8.0 */
|
||||||
.domainRevertToSnapshot = esxDomainRevertToSnapshot, /* 0.8.0 */
|
.domainRevertToSnapshot = esxDomainRevertToSnapshot, /* 0.8.0 */
|
||||||
.domainSnapshotDelete = esxDomainSnapshotDelete, /* 0.8.0 */
|
.domainSnapshotDelete = esxDomainSnapshotDelete, /* 0.8.0 */
|
||||||
|
.isAlive = esxIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1118,6 +1118,23 @@ hypervIsSecure(virConnectPtr conn)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
hypervIsAlive(virConnectPtr conn)
|
||||||
|
{
|
||||||
|
hypervPrivate *priv = conn->privateData;
|
||||||
|
|
||||||
|
/* XXX we should be able to do something better than this is simple, safe,
|
||||||
|
* and good enough for now. In worst case, the function will return true
|
||||||
|
* even though the connection is not alive.
|
||||||
|
*/
|
||||||
|
if (priv->client)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
hypervDomainIsActive(virDomainPtr domain)
|
hypervDomainIsActive(virDomainPtr domain)
|
||||||
{
|
{
|
||||||
@ -1276,6 +1293,7 @@ static virDriver hypervDriver = {
|
|||||||
.domainManagedSave = hypervDomainManagedSave, /* 0.9.5 */
|
.domainManagedSave = hypervDomainManagedSave, /* 0.9.5 */
|
||||||
.domainHasManagedSaveImage = hypervDomainHasManagedSaveImage, /* 0.9.5 */
|
.domainHasManagedSaveImage = hypervDomainHasManagedSaveImage, /* 0.9.5 */
|
||||||
.domainManagedSaveRemove = hypervDomainManagedSaveRemove, /* 0.9.5 */
|
.domainManagedSaveRemove = hypervDomainManagedSaveRemove, /* 0.9.5 */
|
||||||
|
.isAlive = hypervIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -3877,6 +3877,13 @@ libxlDomainEventDeregisterAny(virConnectPtr conn, int callbackID)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
libxlIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static virDriver libxlDriver = {
|
static virDriver libxlDriver = {
|
||||||
.no = VIR_DRV_LIBXL,
|
.no = VIR_DRV_LIBXL,
|
||||||
.name = "xenlight",
|
.name = "xenlight",
|
||||||
@ -3950,6 +3957,7 @@ static virDriver libxlDriver = {
|
|||||||
.domainIsUpdated = libxlDomainIsUpdated, /* 0.9.0 */
|
.domainIsUpdated = libxlDomainIsUpdated, /* 0.9.0 */
|
||||||
.domainEventRegisterAny = libxlDomainEventRegisterAny, /* 0.9.0 */
|
.domainEventRegisterAny = libxlDomainEventRegisterAny, /* 0.9.0 */
|
||||||
.domainEventDeregisterAny = libxlDomainEventDeregisterAny, /* 0.9.0 */
|
.domainEventDeregisterAny = libxlDomainEventDeregisterAny, /* 0.9.0 */
|
||||||
|
.isAlive = libxlIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
static virStateDriver libxlStateDriver = {
|
static virStateDriver libxlStateDriver = {
|
||||||
|
@ -201,6 +201,12 @@ static int lxcIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int lxcIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static char *lxcGetCapabilities(virConnectPtr conn) {
|
static char *lxcGetCapabilities(virConnectPtr conn) {
|
||||||
lxc_driver_t *driver = conn->privateData;
|
lxc_driver_t *driver = conn->privateData;
|
||||||
char *xml;
|
char *xml;
|
||||||
@ -3273,6 +3279,7 @@ static virDriver lxcDriver = {
|
|||||||
.domainEventRegisterAny = lxcDomainEventRegisterAny, /* 0.8.0 */
|
.domainEventRegisterAny = lxcDomainEventRegisterAny, /* 0.8.0 */
|
||||||
.domainEventDeregisterAny = lxcDomainEventDeregisterAny, /* 0.8.0 */
|
.domainEventDeregisterAny = lxcDomainEventDeregisterAny, /* 0.8.0 */
|
||||||
.domainOpenConsole = lxcDomainOpenConsole, /* 0.8.6 */
|
.domainOpenConsole = lxcDomainOpenConsole, /* 0.8.6 */
|
||||||
|
.isAlive = lxcIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
static virStateDriver lxcStateDriver = {
|
static virStateDriver lxcStateDriver = {
|
||||||
|
@ -1424,6 +1424,12 @@ static int openvzIsSecure(virConnectPtr conn ATTRIBUTE_UNUSED) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
openvzIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static char *openvzGetCapabilities(virConnectPtr conn) {
|
static char *openvzGetCapabilities(virConnectPtr conn) {
|
||||||
struct openvz_driver *driver = conn->privateData;
|
struct openvz_driver *driver = conn->privateData;
|
||||||
char *ret;
|
char *ret;
|
||||||
@ -1712,6 +1718,7 @@ static virDriver openvzDriver = {
|
|||||||
.domainIsActive = openvzDomainIsActive, /* 0.7.3 */
|
.domainIsActive = openvzDomainIsActive, /* 0.7.3 */
|
||||||
.domainIsPersistent = openvzDomainIsPersistent, /* 0.7.3 */
|
.domainIsPersistent = openvzDomainIsPersistent, /* 0.7.3 */
|
||||||
.domainIsUpdated = openvzDomainIsUpdated, /* 0.8.6 */
|
.domainIsUpdated = openvzDomainIsUpdated, /* 0.8.6 */
|
||||||
|
.isAlive = openvzIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
int openvzRegister(void) {
|
int openvzRegister(void) {
|
||||||
|
@ -1293,6 +1293,23 @@ phypIsSecure(virConnectPtr conn ATTRIBUTE_UNUSED)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
phypIsAlive(virConnectPtr conn)
|
||||||
|
{
|
||||||
|
ConnectionData *connection_data = conn->networkPrivateData;
|
||||||
|
|
||||||
|
/* XXX we should be able to do something better but this is simple, safe,
|
||||||
|
* and good enough for now. In worst case, the function will return true
|
||||||
|
* even though the connection is not alive.
|
||||||
|
*/
|
||||||
|
if (connection_data && connection_data->session)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
phypIsUpdated(virDomainPtr conn ATTRIBUTE_UNUSED)
|
phypIsUpdated(virDomainPtr conn ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
@ -3795,6 +3812,7 @@ static virDriver phypDriver = {
|
|||||||
.isEncrypted = phypIsEncrypted, /* 0.7.3 */
|
.isEncrypted = phypIsEncrypted, /* 0.7.3 */
|
||||||
.isSecure = phypIsSecure, /* 0.7.3 */
|
.isSecure = phypIsSecure, /* 0.7.3 */
|
||||||
.domainIsUpdated = phypIsUpdated, /* 0.8.6 */
|
.domainIsUpdated = phypIsUpdated, /* 0.8.6 */
|
||||||
|
.isAlive = phypIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
static virStorageDriver phypStorageDriver = {
|
static virStorageDriver phypStorageDriver = {
|
||||||
|
@ -940,6 +940,11 @@ static int qemuIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int qemuIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int kvmGetMaxVCPUs(void) {
|
static int kvmGetMaxVCPUs(void) {
|
||||||
int maxvcpus = 1;
|
int maxvcpus = 1;
|
||||||
@ -10907,6 +10912,7 @@ static virDriver qemuDriver = {
|
|||||||
.domainGetBlockJobInfo = qemuDomainGetBlockJobInfo, /* 0.9.4 */
|
.domainGetBlockJobInfo = qemuDomainGetBlockJobInfo, /* 0.9.4 */
|
||||||
.domainBlockJobSetSpeed = qemuDomainBlockJobSetSpeed, /* 0.9.4 */
|
.domainBlockJobSetSpeed = qemuDomainBlockJobSetSpeed, /* 0.9.4 */
|
||||||
.domainBlockPull = qemuDomainBlockPull, /* 0.9.4 */
|
.domainBlockPull = qemuDomainBlockPull, /* 0.9.4 */
|
||||||
|
.isAlive = qemuIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -4229,6 +4229,23 @@ cleanup:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
remoteIsAlive(virConnectPtr conn)
|
||||||
|
{
|
||||||
|
struct private_data *priv = conn->privateData;
|
||||||
|
bool ret;
|
||||||
|
|
||||||
|
remoteDriverLock(priv);
|
||||||
|
ret = virNetClientIsOpen(priv->client);
|
||||||
|
remoteDriverUnlock(priv);
|
||||||
|
|
||||||
|
if (ret)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#include "remote_client_bodies.h"
|
#include "remote_client_bodies.h"
|
||||||
#include "qemu_client_bodies.h"
|
#include "qemu_client_bodies.h"
|
||||||
|
|
||||||
@ -4600,6 +4617,7 @@ static virDriver remote_driver = {
|
|||||||
.domainBlockJobSetSpeed = remoteDomainBlockJobSetSpeed, /* 0.9.4 */
|
.domainBlockJobSetSpeed = remoteDomainBlockJobSetSpeed, /* 0.9.4 */
|
||||||
.domainBlockPull = remoteDomainBlockPull, /* 0.9.4 */
|
.domainBlockPull = remoteDomainBlockPull, /* 0.9.4 */
|
||||||
.setKeepAlive = remoteSetKeepAlive, /* 0.9.7 */
|
.setKeepAlive = remoteSetKeepAlive, /* 0.9.7 */
|
||||||
|
.isAlive = remoteIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
static virNetworkDriver network_driver = {
|
static virNetworkDriver network_driver = {
|
||||||
|
@ -677,6 +677,20 @@ bool virNetClientIsEncrypted(virNetClientPtr client)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool virNetClientIsOpen(virNetClientPtr client)
|
||||||
|
{
|
||||||
|
bool ret;
|
||||||
|
|
||||||
|
if (!client)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
virNetClientLock(client);
|
||||||
|
ret = client->sock && !client->wantClose;
|
||||||
|
virNetClientUnlock(client);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int virNetClientAddProgram(virNetClientPtr client,
|
int virNetClientAddProgram(virNetClientPtr client,
|
||||||
virNetClientProgramPtr prog)
|
virNetClientProgramPtr prog)
|
||||||
{
|
{
|
||||||
|
@ -86,6 +86,7 @@ int virNetClientSetTLSSession(virNetClientPtr client,
|
|||||||
virNetTLSContextPtr tls);
|
virNetTLSContextPtr tls);
|
||||||
|
|
||||||
bool virNetClientIsEncrypted(virNetClientPtr client);
|
bool virNetClientIsEncrypted(virNetClientPtr client);
|
||||||
|
bool virNetClientIsOpen(virNetClientPtr client);
|
||||||
|
|
||||||
const char *virNetClientLocalAddrString(virNetClientPtr client);
|
const char *virNetClientLocalAddrString(virNetClientPtr client);
|
||||||
const char *virNetClientRemoteAddrString(virNetClientPtr client);
|
const char *virNetClientRemoteAddrString(virNetClientPtr client);
|
||||||
|
@ -1191,6 +1191,11 @@ static int testIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int testIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int testGetMaxVCPUs(virConnectPtr conn ATTRIBUTE_UNUSED,
|
static int testGetMaxVCPUs(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||||
const char *type ATTRIBUTE_UNUSED)
|
const char *type ATTRIBUTE_UNUSED)
|
||||||
{
|
{
|
||||||
@ -5624,6 +5629,7 @@ static virDriver testDriver = {
|
|||||||
.domainIsUpdated = testDomainIsUpdated, /* 0.8.6 */
|
.domainIsUpdated = testDomainIsUpdated, /* 0.8.6 */
|
||||||
.domainEventRegisterAny = testDomainEventRegisterAny, /* 0.8.0 */
|
.domainEventRegisterAny = testDomainEventRegisterAny, /* 0.8.0 */
|
||||||
.domainEventDeregisterAny = testDomainEventDeregisterAny, /* 0.8.0 */
|
.domainEventDeregisterAny = testDomainEventDeregisterAny, /* 0.8.0 */
|
||||||
|
.isAlive = testIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
static virNetworkDriver testNetworkDriver = {
|
static virNetworkDriver testNetworkDriver = {
|
||||||
|
@ -1226,6 +1226,12 @@ static int umlIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int umlIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static char *umlGetCapabilities(virConnectPtr conn) {
|
static char *umlGetCapabilities(virConnectPtr conn) {
|
||||||
struct uml_driver *driver = (struct uml_driver *)conn->privateData;
|
struct uml_driver *driver = (struct uml_driver *)conn->privateData;
|
||||||
char *xml;
|
char *xml;
|
||||||
@ -2597,6 +2603,7 @@ static virDriver umlDriver = {
|
|||||||
.domainEventRegisterAny = umlDomainEventRegisterAny, /* 0.9.4 */
|
.domainEventRegisterAny = umlDomainEventRegisterAny, /* 0.9.4 */
|
||||||
.domainEventDeregisterAny = umlDomainEventDeregisterAny, /* 0.9.4 */
|
.domainEventDeregisterAny = umlDomainEventDeregisterAny, /* 0.9.4 */
|
||||||
.domainOpenConsole = umlDomainOpenConsole, /* 0.8.6 */
|
.domainOpenConsole = umlDomainOpenConsole, /* 0.8.6 */
|
||||||
|
.isAlive = umlIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -1082,6 +1082,11 @@ static int vboxIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int vboxIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int vboxGetMaxVcpus(virConnectPtr conn, const char *type ATTRIBUTE_UNUSED) {
|
static int vboxGetMaxVcpus(virConnectPtr conn, const char *type ATTRIBUTE_UNUSED) {
|
||||||
VBOX_OBJECT_CHECK(conn, int, -1);
|
VBOX_OBJECT_CHECK(conn, int, -1);
|
||||||
PRUint32 maxCPUCount = 0;
|
PRUint32 maxCPUCount = 0;
|
||||||
@ -9194,6 +9199,7 @@ virDriver NAME(Driver) = {
|
|||||||
.domainSnapshotCurrent = vboxDomainSnapshotCurrent, /* 0.8.0 */
|
.domainSnapshotCurrent = vboxDomainSnapshotCurrent, /* 0.8.0 */
|
||||||
.domainRevertToSnapshot = vboxDomainRevertToSnapshot, /* 0.8.0 */
|
.domainRevertToSnapshot = vboxDomainRevertToSnapshot, /* 0.8.0 */
|
||||||
.domainSnapshotDelete = vboxDomainSnapshotDelete, /* 0.8.0 */
|
.domainSnapshotDelete = vboxDomainSnapshotDelete, /* 0.8.0 */
|
||||||
|
.isAlive = vboxIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
virNetworkDriver NAME(NetworkDriver) = {
|
virNetworkDriver NAME(NetworkDriver) = {
|
||||||
|
@ -958,6 +958,12 @@ vmwareDomainGetState(virDomainPtr dom,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
vmwareIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static virDriver vmwareDriver = {
|
static virDriver vmwareDriver = {
|
||||||
.no = VIR_DRV_VMWARE,
|
.no = VIR_DRV_VMWARE,
|
||||||
.name = "VMWARE",
|
.name = "VMWARE",
|
||||||
@ -990,6 +996,7 @@ static virDriver vmwareDriver = {
|
|||||||
.domainUndefineFlags = vmwareDomainUndefineFlags, /* 0.9.4 */
|
.domainUndefineFlags = vmwareDomainUndefineFlags, /* 0.9.4 */
|
||||||
.domainIsActive = vmwareDomainIsActive, /* 0.8.7 */
|
.domainIsActive = vmwareDomainIsActive, /* 0.8.7 */
|
||||||
.domainIsPersistent = vmwareDomainIsPersistent, /* 0.8.7 */
|
.domainIsPersistent = vmwareDomainIsPersistent, /* 0.8.7 */
|
||||||
|
.isAlive = vmwareIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -506,6 +506,13 @@ xenUnifiedIsSecure(virConnectPtr conn)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
xenUnifiedIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
/* XenD reconnects for each request */
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
xenUnifiedGetMaxVcpus (virConnectPtr conn, const char *type)
|
xenUnifiedGetMaxVcpus (virConnectPtr conn, const char *type)
|
||||||
{
|
{
|
||||||
@ -2249,6 +2256,7 @@ static virDriver xenUnifiedDriver = {
|
|||||||
.domainEventRegisterAny = xenUnifiedDomainEventRegisterAny, /* 0.8.0 */
|
.domainEventRegisterAny = xenUnifiedDomainEventRegisterAny, /* 0.8.0 */
|
||||||
.domainEventDeregisterAny = xenUnifiedDomainEventDeregisterAny, /* 0.8.0 */
|
.domainEventDeregisterAny = xenUnifiedDomainEventDeregisterAny, /* 0.8.0 */
|
||||||
.domainOpenConsole = xenUnifiedDomainOpenConsole, /* 0.8.6 */
|
.domainOpenConsole = xenUnifiedDomainOpenConsole, /* 0.8.6 */
|
||||||
|
.isAlive = xenUnifiedIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1895,6 +1895,17 @@ xenapiNodeGetCellsFreeMemory (virConnectPtr conn, unsigned long long *freeMems,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
xenapiIsAlive(virConnectPtr conn)
|
||||||
|
{
|
||||||
|
struct _xenapiPrivate *priv = conn->privateData;
|
||||||
|
|
||||||
|
if (priv->session && priv->session->ok)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* The interface which we export upwards to libvirt.c. */
|
/* The interface which we export upwards to libvirt.c. */
|
||||||
static virDriver xenapiDriver = {
|
static virDriver xenapiDriver = {
|
||||||
.no = VIR_DRV_XENAPI,
|
.no = VIR_DRV_XENAPI,
|
||||||
@ -1945,6 +1956,7 @@ static virDriver xenapiDriver = {
|
|||||||
.nodeGetCellsFreeMemory = xenapiNodeGetCellsFreeMemory, /* 0.8.0 */
|
.nodeGetCellsFreeMemory = xenapiNodeGetCellsFreeMemory, /* 0.8.0 */
|
||||||
.nodeGetFreeMemory = xenapiNodeGetFreeMemory, /* 0.8.0 */
|
.nodeGetFreeMemory = xenapiNodeGetFreeMemory, /* 0.8.0 */
|
||||||
.domainIsUpdated = xenapiDomainIsUpdated, /* 0.8.6 */
|
.domainIsUpdated = xenapiDomainIsUpdated, /* 0.8.6 */
|
||||||
|
.isAlive = xenapiIsAlive, /* 0.9.7 */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user