Implement virConnectIsAlive in all drivers

This commit is contained in:
Jiri Denemark 2011-09-23 08:56:13 +02:00
parent afdf014f4f
commit e401b0cd02
16 changed files with 161 additions and 0 deletions

View File

@ -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
esxDomainIsActive(virDomainPtr domain)
{
@ -4996,6 +5013,7 @@ static virDriver esxDriver = {
.domainSnapshotCurrent = esxDomainSnapshotCurrent, /* 0.8.0 */
.domainRevertToSnapshot = esxDomainRevertToSnapshot, /* 0.8.0 */
.domainSnapshotDelete = esxDomainSnapshotDelete, /* 0.8.0 */
.isAlive = esxIsAlive, /* 0.9.7 */
};

View File

@ -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
hypervDomainIsActive(virDomainPtr domain)
{
@ -1276,6 +1293,7 @@ static virDriver hypervDriver = {
.domainManagedSave = hypervDomainManagedSave, /* 0.9.5 */
.domainHasManagedSaveImage = hypervDomainHasManagedSaveImage, /* 0.9.5 */
.domainManagedSaveRemove = hypervDomainManagedSaveRemove, /* 0.9.5 */
.isAlive = hypervIsAlive, /* 0.9.7 */
};

View File

@ -3877,6 +3877,13 @@ libxlDomainEventDeregisterAny(virConnectPtr conn, int callbackID)
}
static int
libxlIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
{
return 1;
}
static virDriver libxlDriver = {
.no = VIR_DRV_LIBXL,
.name = "xenlight",
@ -3950,6 +3957,7 @@ static virDriver libxlDriver = {
.domainIsUpdated = libxlDomainIsUpdated, /* 0.9.0 */
.domainEventRegisterAny = libxlDomainEventRegisterAny, /* 0.9.0 */
.domainEventDeregisterAny = libxlDomainEventDeregisterAny, /* 0.9.0 */
.isAlive = libxlIsAlive, /* 0.9.7 */
};
static virStateDriver libxlStateDriver = {

View File

@ -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) {
lxc_driver_t *driver = conn->privateData;
char *xml;
@ -3273,6 +3279,7 @@ static virDriver lxcDriver = {
.domainEventRegisterAny = lxcDomainEventRegisterAny, /* 0.8.0 */
.domainEventDeregisterAny = lxcDomainEventDeregisterAny, /* 0.8.0 */
.domainOpenConsole = lxcDomainOpenConsole, /* 0.8.6 */
.isAlive = lxcIsAlive, /* 0.9.7 */
};
static virStateDriver lxcStateDriver = {

View File

@ -1424,6 +1424,12 @@ static int openvzIsSecure(virConnectPtr conn ATTRIBUTE_UNUSED) {
return 1;
}
static int
openvzIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
{
return 1;
}
static char *openvzGetCapabilities(virConnectPtr conn) {
struct openvz_driver *driver = conn->privateData;
char *ret;
@ -1712,6 +1718,7 @@ static virDriver openvzDriver = {
.domainIsActive = openvzDomainIsActive, /* 0.7.3 */
.domainIsPersistent = openvzDomainIsPersistent, /* 0.7.3 */
.domainIsUpdated = openvzDomainIsUpdated, /* 0.8.6 */
.isAlive = openvzIsAlive, /* 0.9.7 */
};
int openvzRegister(void) {

View File

@ -1293,6 +1293,23 @@ phypIsSecure(virConnectPtr conn ATTRIBUTE_UNUSED)
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
phypIsUpdated(virDomainPtr conn ATTRIBUTE_UNUSED)
{
@ -3795,6 +3812,7 @@ static virDriver phypDriver = {
.isEncrypted = phypIsEncrypted, /* 0.7.3 */
.isSecure = phypIsSecure, /* 0.7.3 */
.domainIsUpdated = phypIsUpdated, /* 0.8.6 */
.isAlive = phypIsAlive, /* 0.9.7 */
};
static virStorageDriver phypStorageDriver = {

View File

@ -940,6 +940,11 @@ static int qemuIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED)
return 0;
}
static int qemuIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
{
return 1;
}
static int kvmGetMaxVCPUs(void) {
int maxvcpus = 1;
@ -10907,6 +10912,7 @@ static virDriver qemuDriver = {
.domainGetBlockJobInfo = qemuDomainGetBlockJobInfo, /* 0.9.4 */
.domainBlockJobSetSpeed = qemuDomainBlockJobSetSpeed, /* 0.9.4 */
.domainBlockPull = qemuDomainBlockPull, /* 0.9.4 */
.isAlive = qemuIsAlive, /* 0.9.7 */
};

View File

@ -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 "qemu_client_bodies.h"
@ -4600,6 +4617,7 @@ static virDriver remote_driver = {
.domainBlockJobSetSpeed = remoteDomainBlockJobSetSpeed, /* 0.9.4 */
.domainBlockPull = remoteDomainBlockPull, /* 0.9.4 */
.setKeepAlive = remoteSetKeepAlive, /* 0.9.7 */
.isAlive = remoteIsAlive, /* 0.9.7 */
};
static virNetworkDriver network_driver = {

View File

@ -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,
virNetClientProgramPtr prog)
{

View File

@ -86,6 +86,7 @@ int virNetClientSetTLSSession(virNetClientPtr client,
virNetTLSContextPtr tls);
bool virNetClientIsEncrypted(virNetClientPtr client);
bool virNetClientIsOpen(virNetClientPtr client);
const char *virNetClientLocalAddrString(virNetClientPtr client);
const char *virNetClientRemoteAddrString(virNetClientPtr client);

View File

@ -1191,6 +1191,11 @@ static int testIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED)
return 0;
}
static int testIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
{
return 1;
}
static int testGetMaxVCPUs(virConnectPtr conn ATTRIBUTE_UNUSED,
const char *type ATTRIBUTE_UNUSED)
{
@ -5624,6 +5629,7 @@ static virDriver testDriver = {
.domainIsUpdated = testDomainIsUpdated, /* 0.8.6 */
.domainEventRegisterAny = testDomainEventRegisterAny, /* 0.8.0 */
.domainEventDeregisterAny = testDomainEventDeregisterAny, /* 0.8.0 */
.isAlive = testIsAlive, /* 0.9.7 */
};
static virNetworkDriver testNetworkDriver = {

View File

@ -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) {
struct uml_driver *driver = (struct uml_driver *)conn->privateData;
char *xml;
@ -2597,6 +2603,7 @@ static virDriver umlDriver = {
.domainEventRegisterAny = umlDomainEventRegisterAny, /* 0.9.4 */
.domainEventDeregisterAny = umlDomainEventDeregisterAny, /* 0.9.4 */
.domainOpenConsole = umlDomainOpenConsole, /* 0.8.6 */
.isAlive = umlIsAlive, /* 0.9.7 */
};
static int

View File

@ -1082,6 +1082,11 @@ static int vboxIsEncrypted(virConnectPtr conn ATTRIBUTE_UNUSED) {
return 0;
}
static int vboxIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
{
return 1;
}
static int vboxGetMaxVcpus(virConnectPtr conn, const char *type ATTRIBUTE_UNUSED) {
VBOX_OBJECT_CHECK(conn, int, -1);
PRUint32 maxCPUCount = 0;
@ -9194,6 +9199,7 @@ virDriver NAME(Driver) = {
.domainSnapshotCurrent = vboxDomainSnapshotCurrent, /* 0.8.0 */
.domainRevertToSnapshot = vboxDomainRevertToSnapshot, /* 0.8.0 */
.domainSnapshotDelete = vboxDomainSnapshotDelete, /* 0.8.0 */
.isAlive = vboxIsAlive, /* 0.9.7 */
};
virNetworkDriver NAME(NetworkDriver) = {

View File

@ -958,6 +958,12 @@ vmwareDomainGetState(virDomainPtr dom,
return ret;
}
static int
vmwareIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
{
return 1;
}
static virDriver vmwareDriver = {
.no = VIR_DRV_VMWARE,
.name = "VMWARE",
@ -990,6 +996,7 @@ static virDriver vmwareDriver = {
.domainUndefineFlags = vmwareDomainUndefineFlags, /* 0.9.4 */
.domainIsActive = vmwareDomainIsActive, /* 0.8.7 */
.domainIsPersistent = vmwareDomainIsPersistent, /* 0.8.7 */
.isAlive = vmwareIsAlive, /* 0.9.7 */
};
int

View File

@ -506,6 +506,13 @@ xenUnifiedIsSecure(virConnectPtr conn)
return ret;
}
static int
xenUnifiedIsAlive(virConnectPtr conn ATTRIBUTE_UNUSED)
{
/* XenD reconnects for each request */
return 1;
}
int
xenUnifiedGetMaxVcpus (virConnectPtr conn, const char *type)
{
@ -2249,6 +2256,7 @@ static virDriver xenUnifiedDriver = {
.domainEventRegisterAny = xenUnifiedDomainEventRegisterAny, /* 0.8.0 */
.domainEventDeregisterAny = xenUnifiedDomainEventDeregisterAny, /* 0.8.0 */
.domainOpenConsole = xenUnifiedDomainOpenConsole, /* 0.8.6 */
.isAlive = xenUnifiedIsAlive, /* 0.9.7 */
};
/**

View File

@ -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. */
static virDriver xenapiDriver = {
.no = VIR_DRV_XENAPI,
@ -1945,6 +1956,7 @@ static virDriver xenapiDriver = {
.nodeGetCellsFreeMemory = xenapiNodeGetCellsFreeMemory, /* 0.8.0 */
.nodeGetFreeMemory = xenapiNodeGetFreeMemory, /* 0.8.0 */
.domainIsUpdated = xenapiDomainIsUpdated, /* 0.8.6 */
.isAlive = xenapiIsAlive, /* 0.9.7 */
};
/**