mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
ESX remove phantom mode
* src/esx/esx_driver.c: remove phantom mode
This commit is contained in:
parent
8ce9f2b161
commit
23b2497292
@ -58,7 +58,6 @@ static int esxDomainGetMaxVcpus(virDomainPtr domain);
|
||||
typedef struct _esxPrivate {
|
||||
esxVI_Context *host;
|
||||
esxVI_Context *vCenter;
|
||||
int phantom; // boolean
|
||||
virCapsPtr caps;
|
||||
char *transport;
|
||||
int32_t maxVcpus;
|
||||
@ -81,12 +80,6 @@ esxSupportsLongMode(virConnectPtr conn)
|
||||
char edxLongModeBit = '?';
|
||||
char edxFirstBit = '?';
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (priv->supportsLongMode != esxVI_Boolean_Undefined) {
|
||||
return priv->supportsLongMode;
|
||||
}
|
||||
@ -179,19 +172,10 @@ esxSupportsLongMode(virConnectPtr conn)
|
||||
static virCapsPtr
|
||||
esxCapsInit(virConnectPtr conn)
|
||||
{
|
||||
esxPrivate *priv = (esxPrivate *)conn->privateData;
|
||||
esxVI_Boolean supportsLongMode = esxVI_Boolean_Undefined;
|
||||
esxVI_Boolean supportsLongMode = esxSupportsLongMode(conn);
|
||||
virCapsPtr caps = NULL;
|
||||
virCapsGuestPtr guest = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
supportsLongMode = esxSupportsLongMode(conn);
|
||||
|
||||
if (supportsLongMode == esxVI_Boolean_Undefined) {
|
||||
return NULL;
|
||||
}
|
||||
@ -258,7 +242,6 @@ esxCapsInit(virConnectPtr conn)
|
||||
|
||||
/*
|
||||
* URI format: {esx|gsx}://[<user>@]<server>[:<port>][?transport={http|https}][&vcenter=<vcenter>][&no_verify={0|1}]
|
||||
* esx:///phantom
|
||||
*
|
||||
* If no port is specified the default port is set dependent on the scheme and
|
||||
* transport parameter:
|
||||
@ -274,11 +257,6 @@ esxCapsInit(virConnectPtr conn)
|
||||
*
|
||||
* If the no_verify parameter is set to 1, this disables libcurl client checks
|
||||
* of the server's certificate. The default value it 0.
|
||||
*
|
||||
* The esx:///phantom URI may be used for tasks that don't require an actual
|
||||
* connection to the hypervisor like domxml-{from,to}-native:
|
||||
*
|
||||
* virsh -c esx:///phantom domxml-from-native vmware-vmx dummy.vmx
|
||||
*/
|
||||
static virDrvOpenStatus
|
||||
esxOpen(virConnectPtr conn, virConnectAuthPtr auth, int flags ATTRIBUTE_UNUSED)
|
||||
@ -291,7 +269,6 @@ esxOpen(virConnectPtr conn, virConnectAuthPtr auth, int flags ATTRIBUTE_UNUSED)
|
||||
int noVerify = 0; // boolean
|
||||
char *username = NULL;
|
||||
char *password = NULL;
|
||||
int phantom = 0; // boolean
|
||||
|
||||
/* Decline if the URI is NULL or the scheme is neither 'esx' nor 'gsx' */
|
||||
if (conn->uri == NULL || conn->uri->scheme == NULL ||
|
||||
@ -300,21 +277,13 @@ esxOpen(virConnectPtr conn, virConnectAuthPtr auth, int flags ATTRIBUTE_UNUSED)
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
}
|
||||
|
||||
/* Check for 'esx:///phantom' URI */
|
||||
if (conn->uri->server == NULL && conn->uri->path != NULL &&
|
||||
STREQ(conn->uri->path, "/phantom")) {
|
||||
phantom = 1;
|
||||
/* Decline URIs without server part, or missing auth */
|
||||
if (conn->uri->server == NULL || auth == NULL || auth->cb == NULL) {
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
}
|
||||
|
||||
if (! phantom) {
|
||||
/* Decline non-phantom URIs without server part, or missing auth */
|
||||
if (conn->uri->server == NULL || auth == NULL || auth->cb == NULL) {
|
||||
return VIR_DRV_OPEN_DECLINED;
|
||||
}
|
||||
|
||||
if (conn->uri->path != NULL) {
|
||||
VIR_WARN("Ignoring unexpected path '%s' in URI", conn->uri->path);
|
||||
}
|
||||
if (conn->uri->path != NULL) {
|
||||
VIR_WARN("Ignoring unexpected path '%s' in URI", conn->uri->path);
|
||||
}
|
||||
|
||||
/* Allocate per-connection private data */
|
||||
@ -323,171 +292,164 @@ esxOpen(virConnectPtr conn, virConnectAuthPtr auth, int flags ATTRIBUTE_UNUSED)
|
||||
goto failure;
|
||||
}
|
||||
|
||||
priv->phantom = phantom;
|
||||
priv->maxVcpus = -1;
|
||||
priv->supportsVMotion = esxVI_Boolean_Undefined;
|
||||
priv->supportsLongMode = esxVI_Boolean_Undefined;
|
||||
priv->usedCpuTimeCounterId = -1;
|
||||
|
||||
/* Request credentials and login to non-phantom host/vCenter */
|
||||
if (! phantom) {
|
||||
if (esxUtil_ParseQuery(conn, &priv->transport, &vCenter,
|
||||
&noVerify) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
/* Request credentials and login to host/vCenter */
|
||||
if (esxUtil_ParseQuery(conn, &priv->transport, &vCenter, &noVerify) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxUtil_ResolveHostname(conn, conn->uri->server, hostIpAddress,
|
||||
NI_MAXHOST) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
if (esxUtil_ResolveHostname(conn, conn->uri->server, hostIpAddress,
|
||||
NI_MAXHOST) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (vCenter != NULL &&
|
||||
esxUtil_ResolveHostname(conn, vCenter, vCenterIpAddress,
|
||||
NI_MAXHOST) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
if (vCenter != NULL &&
|
||||
esxUtil_ResolveHostname(conn, vCenter, vCenterIpAddress,
|
||||
NI_MAXHOST) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the port dependent on the transport protocol if no port is
|
||||
* specified. This allows us to rely on the port parameter being
|
||||
* correctly set when building URIs later on, without the need to
|
||||
* distinguish between the situations port == 0 and port != 0
|
||||
*/
|
||||
if (conn->uri->port == 0) {
|
||||
if (STRCASEEQ(conn->uri->scheme, "esx")) {
|
||||
if (STRCASEEQ(priv->transport, "https")) {
|
||||
conn->uri->port = 443;
|
||||
} else {
|
||||
conn->uri->port = 80;
|
||||
}
|
||||
} else { /* GSX */
|
||||
if (STRCASEEQ(priv->transport, "https")) {
|
||||
conn->uri->port = 8333;
|
||||
} else {
|
||||
conn->uri->port = 8222;
|
||||
}
|
||||
/*
|
||||
* Set the port dependent on the transport protocol if no port is
|
||||
* specified. This allows us to rely on the port parameter being
|
||||
* correctly set when building URIs later on, without the need to
|
||||
* distinguish between the situations port == 0 and port != 0
|
||||
*/
|
||||
if (conn->uri->port == 0) {
|
||||
if (STRCASEEQ(conn->uri->scheme, "esx")) {
|
||||
if (STRCASEEQ(priv->transport, "https")) {
|
||||
conn->uri->port = 443;
|
||||
} else {
|
||||
conn->uri->port = 80;
|
||||
}
|
||||
} else { /* GSX */
|
||||
if (STRCASEEQ(priv->transport, "https")) {
|
||||
conn->uri->port = 8333;
|
||||
} else {
|
||||
conn->uri->port = 8222;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Login to host */
|
||||
if (virAsprintf(&url, "%s://%s:%d/sdk", priv->transport,
|
||||
conn->uri->server, conn->uri->port) < 0) {
|
||||
/* Login to host */
|
||||
if (virAsprintf(&url, "%s://%s:%d/sdk", priv->transport,
|
||||
conn->uri->server, conn->uri->port) < 0) {
|
||||
virReportOOMError(conn);
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (conn->uri->user != NULL) {
|
||||
username = strdup(conn->uri->user);
|
||||
|
||||
if (username == NULL) {
|
||||
virReportOOMError(conn);
|
||||
goto failure;
|
||||
}
|
||||
} else {
|
||||
username = esxUtil_RequestUsername(auth, "root", conn->uri->server);
|
||||
|
||||
if (username == NULL) {
|
||||
ESX_ERROR(conn, VIR_ERR_AUTH_FAILED, "Username request failed");
|
||||
goto failure;
|
||||
}
|
||||
}
|
||||
|
||||
if (esxVI_Context_Alloc(conn, &priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
|
||||
password = esxUtil_RequestPassword(auth, username, conn->uri->server);
|
||||
|
||||
if (password == NULL) {
|
||||
ESX_ERROR(conn, VIR_ERR_AUTH_FAILED, "Password request failed");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_Context_Connect(conn, priv->host, url, hostIpAddress,
|
||||
username, password, noVerify) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (STRCASEEQ(conn->uri->scheme, "esx")) {
|
||||
if (priv->host->productVersion != esxVI_ProductVersion_ESX35 &&
|
||||
priv->host->productVersion != esxVI_ProductVersion_ESX40) {
|
||||
ESX_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||
"%s is neither an ESX 3.5 host nor an ESX 4.0 host",
|
||||
conn->uri->server);
|
||||
goto failure;
|
||||
}
|
||||
} else { /* GSX */
|
||||
if (priv->host->productVersion != esxVI_ProductVersion_GSX20) {
|
||||
ESX_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||
"%s isn't a GSX 2.0 host", conn->uri->server);
|
||||
goto failure;
|
||||
}
|
||||
}
|
||||
|
||||
VIR_FREE(url);
|
||||
VIR_FREE(password);
|
||||
VIR_FREE(username);
|
||||
|
||||
/* Login to vCenter */
|
||||
if (vCenter != NULL) {
|
||||
if (virAsprintf(&url, "%s://%s/sdk", priv->transport,
|
||||
vCenter) < 0) {
|
||||
virReportOOMError(conn);
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (conn->uri->user != NULL) {
|
||||
username = strdup(conn->uri->user);
|
||||
|
||||
if (username == NULL) {
|
||||
virReportOOMError(conn);
|
||||
goto failure;
|
||||
}
|
||||
} else {
|
||||
username = esxUtil_RequestUsername(auth, "root", conn->uri->server);
|
||||
|
||||
if (username == NULL) {
|
||||
ESX_ERROR(conn, VIR_ERR_AUTH_FAILED, "Username request failed");
|
||||
goto failure;
|
||||
}
|
||||
}
|
||||
|
||||
if (esxVI_Context_Alloc(conn, &priv->host) < 0) {
|
||||
if (esxVI_Context_Alloc(conn, &priv->vCenter) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
|
||||
password = esxUtil_RequestPassword(auth, username, conn->uri->server);
|
||||
username = esxUtil_RequestUsername(auth, "administrator", vCenter);
|
||||
|
||||
if (username == NULL) {
|
||||
ESX_ERROR(conn, VIR_ERR_AUTH_FAILED,
|
||||
"Username request failed");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
password = esxUtil_RequestPassword(auth, username, vCenter);
|
||||
|
||||
if (password == NULL) {
|
||||
ESX_ERROR(conn, VIR_ERR_AUTH_FAILED, "Password request failed");
|
||||
ESX_ERROR(conn, VIR_ERR_AUTH_FAILED,
|
||||
"Password request failed");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_Context_Connect(conn, priv->host, url, hostIpAddress,
|
||||
username, password, noVerify) < 0) {
|
||||
if (esxVI_Context_Connect(conn, priv->vCenter, url,
|
||||
vCenterIpAddress, username, password,
|
||||
noVerify) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (STRCASEEQ(conn->uri->scheme, "esx")) {
|
||||
if (priv->host->productVersion != esxVI_ProductVersion_ESX35 &&
|
||||
priv->host->productVersion != esxVI_ProductVersion_ESX40) {
|
||||
ESX_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||
"%s is neither an ESX 3.5 host nor an ESX 4.0 host",
|
||||
conn->uri->server);
|
||||
goto failure;
|
||||
}
|
||||
} else { /* GSX */
|
||||
if (priv->host->productVersion != esxVI_ProductVersion_GSX20) {
|
||||
ESX_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||
"%s isn't a GSX 2.0 host", conn->uri->server);
|
||||
goto failure;
|
||||
}
|
||||
if (priv->vCenter->productVersion != esxVI_ProductVersion_VPX25 &&
|
||||
priv->vCenter->productVersion != esxVI_ProductVersion_VPX40) {
|
||||
ESX_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||
"%s is neither a vCenter 2.5 server nor a vCenter "
|
||||
"4.0 server",
|
||||
conn->uri->server);
|
||||
goto failure;
|
||||
}
|
||||
|
||||
VIR_FREE(url);
|
||||
VIR_FREE(vCenter);
|
||||
VIR_FREE(password);
|
||||
VIR_FREE(username);
|
||||
|
||||
/* Login to vCenter */
|
||||
if (vCenter != NULL) {
|
||||
if (virAsprintf(&url, "%s://%s/sdk", priv->transport,
|
||||
vCenter) < 0) {
|
||||
virReportOOMError(conn);
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_Context_Alloc(conn, &priv->vCenter) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
|
||||
username = esxUtil_RequestUsername(auth, "administrator", vCenter);
|
||||
|
||||
if (username == NULL) {
|
||||
ESX_ERROR(conn, VIR_ERR_AUTH_FAILED,
|
||||
"Username request failed");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
password = esxUtil_RequestPassword(auth, username, vCenter);
|
||||
|
||||
if (password == NULL) {
|
||||
ESX_ERROR(conn, VIR_ERR_AUTH_FAILED,
|
||||
"Password request failed");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_Context_Connect(conn, priv->vCenter, url,
|
||||
vCenterIpAddress, username, password,
|
||||
noVerify) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (priv->vCenter->productVersion != esxVI_ProductVersion_VPX25 &&
|
||||
priv->vCenter->productVersion != esxVI_ProductVersion_VPX40) {
|
||||
ESX_ERROR(conn, VIR_ERR_INTERNAL_ERROR,
|
||||
"%s is neither a vCenter 2.5 server nor a vCenter "
|
||||
"4.0 server",
|
||||
conn->uri->server);
|
||||
goto failure;
|
||||
}
|
||||
|
||||
VIR_FREE(url);
|
||||
VIR_FREE(password);
|
||||
VIR_FREE(username);
|
||||
}
|
||||
|
||||
VIR_FREE(vCenter);
|
||||
}
|
||||
|
||||
conn->privateData = priv;
|
||||
|
||||
if (! phantom) {
|
||||
/* Setup capabilities */
|
||||
priv->caps = esxCapsInit(conn);
|
||||
/* Setup capabilities */
|
||||
priv->caps = esxCapsInit(conn);
|
||||
|
||||
if (priv->caps == NULL) {
|
||||
goto failure;
|
||||
}
|
||||
if (priv->caps == NULL) {
|
||||
goto failure;
|
||||
}
|
||||
|
||||
return VIR_DRV_OPEN_SUCCESS;
|
||||
@ -518,18 +480,16 @@ esxClose(virConnectPtr conn)
|
||||
{
|
||||
esxPrivate *priv = (esxPrivate *)conn->privateData;
|
||||
|
||||
if (! priv->phantom) {
|
||||
esxVI_EnsureSession(conn, priv->host);
|
||||
esxVI_EnsureSession(conn, priv->host);
|
||||
|
||||
esxVI_Logout(conn, priv->host);
|
||||
esxVI_Context_Free(&priv->host);
|
||||
esxVI_Logout(conn, priv->host);
|
||||
esxVI_Context_Free(&priv->host);
|
||||
|
||||
if (priv->vCenter != NULL) {
|
||||
esxVI_EnsureSession(conn, priv->vCenter);
|
||||
if (priv->vCenter != NULL) {
|
||||
esxVI_EnsureSession(conn, priv->vCenter);
|
||||
|
||||
esxVI_Logout(conn, priv->vCenter);
|
||||
esxVI_Context_Free(&priv->vCenter);
|
||||
}
|
||||
esxVI_Logout(conn, priv->vCenter);
|
||||
esxVI_Context_Free(&priv->vCenter);
|
||||
}
|
||||
|
||||
virCapabilitiesFree(priv->caps);
|
||||
@ -552,12 +512,6 @@ esxSupportsVMotion(virConnectPtr conn)
|
||||
esxVI_ObjectContent *hostSystem = NULL;
|
||||
esxVI_DynamicProperty *dynamicProperty = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (priv->supportsVMotion != esxVI_Boolean_Undefined) {
|
||||
return priv->supportsVMotion;
|
||||
}
|
||||
@ -615,12 +569,6 @@ esxSupportsFeature(virConnectPtr conn, int feature)
|
||||
esxPrivate *priv = (esxPrivate *)conn->privateData;
|
||||
esxVI_Boolean supportsVMotion = esxVI_Boolean_Undefined;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (feature) {
|
||||
case VIR_DRV_FEATURE_MIGRATION_V1:
|
||||
supportsVMotion = esxSupportsVMotion(conn);
|
||||
@ -655,12 +603,6 @@ esxGetVersion(virConnectPtr conn, unsigned long *version)
|
||||
char *temp;
|
||||
unsigned int major, minor, release;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
return -1;
|
||||
}
|
||||
|
||||
temp = (char *)priv->host->service->about->version;
|
||||
|
||||
/* Expecting 'major.minor.release' format */
|
||||
@ -703,12 +645,6 @@ esxGetHostname(virConnectPtr conn)
|
||||
const char *domainName = NULL;
|
||||
char *complete = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -802,12 +738,6 @@ esxNodeGetInfo(virConnectPtr conn, virNodeInfoPtr nodeinfo)
|
||||
|
||||
memset(nodeinfo, 0, sizeof(virNodeInfo));
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -948,15 +878,7 @@ static char *
|
||||
esxGetCapabilities(virConnectPtr conn)
|
||||
{
|
||||
esxPrivate *priv = (esxPrivate *)conn->privateData;
|
||||
char *xml = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
xml = virCapabilitiesFormatXML(priv->caps);
|
||||
char *xml = virCapabilitiesFormatXML(priv->caps);
|
||||
|
||||
if (xml == NULL) {
|
||||
virReportOOMError(conn);
|
||||
@ -978,12 +900,6 @@ esxListDomains(virConnectPtr conn, int *ids, int maxids)
|
||||
esxVI_VirtualMachinePowerState powerState;
|
||||
int count = 0;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (ids == NULL || maxids < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1050,12 +966,6 @@ esxNumberOfDomains(virConnectPtr conn)
|
||||
{
|
||||
esxPrivate *priv = (esxPrivate *)conn->privateData;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(conn, priv->host) < 0) {
|
||||
return -1;
|
||||
}
|
||||
@ -1080,12 +990,6 @@ esxDomainLookupByID(virConnectPtr conn, int id)
|
||||
unsigned char uuid_candidate[VIR_UUID_BUFLEN];
|
||||
virDomainPtr domain = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1169,12 +1073,6 @@ esxDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
|
||||
char uuid_string[VIR_UUID_STRING_BUFLEN];
|
||||
virDomainPtr domain = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1261,12 +1159,6 @@ esxDomainLookupByName(virConnectPtr conn, const char *name)
|
||||
unsigned char uuid_candidate[VIR_UUID_BUFLEN];
|
||||
virDomainPtr domain = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1347,12 +1239,6 @@ esxDomainSuspend(virDomainPtr domain)
|
||||
esxVI_ManagedObjectReference *task = NULL;
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1413,12 +1299,6 @@ esxDomainResume(virDomainPtr domain)
|
||||
esxVI_ManagedObjectReference *task = NULL;
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1477,12 +1357,6 @@ esxDomainShutdown(virDomainPtr domain)
|
||||
esxVI_String *propertyNameList = NULL;
|
||||
esxVI_VirtualMachinePowerState powerState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1532,12 +1406,6 @@ esxDomainReboot(virDomainPtr domain, unsigned int flags ATTRIBUTE_UNUSED)
|
||||
esxVI_String *propertyNameList = NULL;
|
||||
esxVI_VirtualMachinePowerState powerState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1588,12 +1456,6 @@ esxDomainDestroy(virDomainPtr domain)
|
||||
esxVI_ManagedObjectReference *task = NULL;
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1667,12 +1529,6 @@ esxDomainGetMaxMemory(virDomainPtr domain)
|
||||
esxVI_DynamicProperty *dynamicProperty = NULL;
|
||||
unsigned long memoryMB = 0;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1732,12 +1588,6 @@ esxDomainSetMaxMemory(virDomainPtr domain, unsigned long memory)
|
||||
esxVI_ManagedObjectReference *task = NULL;
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1792,12 +1642,6 @@ esxDomainSetMemory(virDomainPtr domain, unsigned long memory)
|
||||
esxVI_ManagedObjectReference *task = NULL;
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -1866,12 +1710,6 @@ esxDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
|
||||
esxVI_PerfMetricIntSeries *perfMetricIntSeries = NULL;
|
||||
esxVI_Long *value = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -2123,12 +1961,6 @@ esxDomainSetVcpus(virDomainPtr domain, unsigned int nvcpus)
|
||||
esxVI_ManagedObjectReference *task = NULL;
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (nvcpus < 1) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_INVALID_ARG,
|
||||
"Requested number of virtual CPUs must al least be 1");
|
||||
@ -2200,12 +2032,6 @@ esxDomainGetMaxVcpus(virDomainPtr domain)
|
||||
esxVI_ObjectContent *hostSystem = NULL;
|
||||
esxVI_DynamicProperty *dynamicProperty = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (priv->maxVcpus > 0) {
|
||||
return priv->maxVcpus;
|
||||
}
|
||||
@ -2275,12 +2101,6 @@ esxDomainDumpXML(virDomainPtr domain, int flags)
|
||||
virDomainDefPtr def = NULL;
|
||||
char *xml = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -2371,8 +2191,6 @@ esxDomainXMLFromNative(virConnectPtr conn, const char *nativeFormat,
|
||||
unsigned int flags ATTRIBUTE_UNUSED)
|
||||
{
|
||||
esxPrivate *priv = (esxPrivate *)conn->privateData;
|
||||
esxVI_Context *ctx = NULL;
|
||||
esxVI_APIVersion apiVersion = esxVI_APIVersion_Unknown;
|
||||
virDomainDefPtr def = NULL;
|
||||
char *xml = NULL;
|
||||
|
||||
@ -2382,12 +2200,8 @@ esxDomainXMLFromNative(virConnectPtr conn, const char *nativeFormat,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (! priv->phantom) {
|
||||
ctx = priv->host;
|
||||
apiVersion = priv->host->apiVersion;
|
||||
}
|
||||
|
||||
def = esxVMX_ParseConfig(conn, ctx, nativeConfig, "?", "?", apiVersion);
|
||||
def = esxVMX_ParseConfig(conn, priv->host, nativeConfig, "?", "?",
|
||||
priv->host->apiVersion);
|
||||
|
||||
if (def != NULL) {
|
||||
xml = virDomainDefFormat(conn, def, VIR_DOMAIN_XML_INACTIVE);
|
||||
@ -2409,12 +2223,6 @@ esxDomainXMLToNative(virConnectPtr conn, const char *nativeFormat,
|
||||
virDomainDefPtr def = NULL;
|
||||
char *vmx = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (STRNEQ(nativeFormat, "vmware-vmx")) {
|
||||
ESX_ERROR(conn, VIR_ERR_INVALID_ARG,
|
||||
"Unsupported config format '%s'", nativeFormat);
|
||||
@ -2447,12 +2255,6 @@ esxListDefinedDomains(virConnectPtr conn, char **const names, int maxnames)
|
||||
esxVI_VirtualMachinePowerState powerState;
|
||||
int count = 0;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (names == NULL || maxnames < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -2531,12 +2333,6 @@ esxNumberOfDefinedDomains(virConnectPtr conn)
|
||||
{
|
||||
esxPrivate *priv = (esxPrivate *)conn->privateData;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(conn, priv->host) < 0) {
|
||||
return -1;
|
||||
}
|
||||
@ -2559,12 +2355,6 @@ esxDomainCreate(virDomainPtr domain)
|
||||
esxVI_ManagedObjectReference *task = NULL;
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -2634,12 +2424,6 @@ esxDomainDefineXML(virConnectPtr conn, const char *xml ATTRIBUTE_UNUSED)
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
virDomainPtr domain = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -2812,12 +2596,6 @@ esxDomainUndefine(virDomainPtr domain)
|
||||
esxVI_String *propertyNameList = NULL;
|
||||
esxVI_VirtualMachinePowerState powerState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -2918,12 +2696,6 @@ esxDomainGetSchedulerParameters(virDomainPtr domain,
|
||||
unsigned int mask = 0;
|
||||
int i = 0;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (*nparams < 3) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_INVALID_ARG,
|
||||
"Parameter array must have space for 3 items");
|
||||
@ -3055,12 +2827,6 @@ esxDomainSetSchedulerParameters(virDomainPtr domain,
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
int i;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
@ -3239,12 +3005,6 @@ esxDomainMigratePerform(virDomainPtr domain,
|
||||
esxVI_ManagedObjectReference *task = NULL;
|
||||
esxVI_TaskInfoState taskInfoState;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (priv->vCenter == NULL) {
|
||||
ESX_ERROR(domain->conn, VIR_ERR_INVALID_ARG,
|
||||
"Migration not possible without a vCenter");
|
||||
@ -3379,12 +3139,6 @@ esxNodeGetFreeMemory(virConnectPtr conn)
|
||||
esxVI_DynamicProperty *dynamicProperty = NULL;
|
||||
esxVI_ResourcePoolResourceUsage *resourcePoolResourceUsage = NULL;
|
||||
|
||||
if (priv->phantom) {
|
||||
ESX_ERROR(conn, VIR_ERR_OPERATION_INVALID,
|
||||
"Not possible with a phantom connection");
|
||||
goto failure;
|
||||
}
|
||||
|
||||
if (esxVI_EnsureSession(conn, priv->host) < 0) {
|
||||
goto failure;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user