mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 19:32:19 +00:00
vz: save vz version in connection structure
Move code from connectGetVersion callback to vzInitVersion function
This commit is contained in:
parent
0b231195cb
commit
d10b02b5e5
@ -62,7 +62,6 @@
|
||||
VIR_LOG_INIT("parallels.parallels_driver");
|
||||
|
||||
#define PRLCTL "prlctl"
|
||||
#define PRLSRVCTL "prlsrvctl"
|
||||
|
||||
static int vzConnectClose(virConnectPtr conn);
|
||||
|
||||
@ -234,6 +233,9 @@ vzOpenDefault(virConnectPtr conn)
|
||||
if (prlsdkConnect(privconn) < 0)
|
||||
goto err_free;
|
||||
|
||||
if (vzInitVersion(privconn) < 0)
|
||||
goto error;
|
||||
|
||||
if (!(privconn->caps = vzBuildCapabilities()))
|
||||
goto error;
|
||||
|
||||
@ -345,49 +347,11 @@ vzConnectClose(virConnectPtr conn)
|
||||
}
|
||||
|
||||
static int
|
||||
vzConnectGetVersion(virConnectPtr conn ATTRIBUTE_UNUSED, unsigned long *hvVer)
|
||||
vzConnectGetVersion(virConnectPtr conn, unsigned long *hvVer)
|
||||
{
|
||||
char *output, *sVer, *tmp;
|
||||
const char *searchStr = "prlsrvctl version ";
|
||||
int ret = -1;
|
||||
|
||||
output = vzGetOutput(PRLSRVCTL, "--help", NULL);
|
||||
|
||||
if (!output) {
|
||||
vzParseError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(sVer = strstr(output, searchStr))) {
|
||||
vzParseError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
sVer = sVer + strlen(searchStr);
|
||||
|
||||
/* parallels server has versions number like 6.0.17977.782218,
|
||||
* so libvirt can handle only first two numbers. */
|
||||
if (!(tmp = strchr(sVer, '.'))) {
|
||||
vzParseError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(tmp = strchr(tmp + 1, '.'))) {
|
||||
vzParseError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
tmp[0] = '\0';
|
||||
if (virParseVersionString(sVer, hvVer, true) < 0) {
|
||||
vzParseError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(output);
|
||||
return ret;
|
||||
vzConnPtr privconn = conn->privateData;
|
||||
*hvVer = privconn->vzVersion;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include "datatypes.h"
|
||||
|
||||
#define VIR_FROM_THIS VIR_FROM_PARALLELS
|
||||
#define PRLSRVCTL "prlsrvctl"
|
||||
|
||||
/**
|
||||
* vzDomObjFromDomain:
|
||||
@ -178,3 +179,49 @@ vzNewDomain(vzConnPtr privconn, char *name, const unsigned char *uuid)
|
||||
VIR_FREE(pdom);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
vzInitVersion(vzConnPtr privconn)
|
||||
{
|
||||
char *output, *sVer, *tmp;
|
||||
const char *searchStr = "prlsrvctl version ";
|
||||
int ret = -1;
|
||||
|
||||
output = vzGetOutput(PRLSRVCTL, "--help", NULL);
|
||||
|
||||
if (!output) {
|
||||
vzParseError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(sVer = strstr(output, searchStr))) {
|
||||
vzParseError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
sVer = sVer + strlen(searchStr);
|
||||
|
||||
/* parallels server has versions number like 6.0.17977.782218 or 7.0.0,
|
||||
* In libvirt we handle only first two numbers. */
|
||||
if (!(tmp = strchr(sVer, '.'))) {
|
||||
vzParseError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!(tmp = strchr(tmp + 1, '.'))) {
|
||||
vzParseError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
tmp[0] = '\0';
|
||||
if (virParseVersionString(sVer, &(privconn->vzVersion), true) < 0) {
|
||||
vzParseError();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(output);
|
||||
return ret;
|
||||
}
|
||||
|
@ -62,6 +62,7 @@ struct _vzConn {
|
||||
const char *drivername;
|
||||
/* Immutable pointer, self-locking APIs */
|
||||
virConnectCloseCallbackDataPtr closeCallback;
|
||||
unsigned long vzVersion;
|
||||
};
|
||||
|
||||
typedef struct _vzConn vzConn;
|
||||
@ -97,6 +98,8 @@ virDomainObjPtr
|
||||
vzNewDomain(vzConnPtr privconn,
|
||||
char *name,
|
||||
const unsigned char *uuid);
|
||||
int
|
||||
vzInitVersion(vzConnPtr privconn);
|
||||
|
||||
# define PARALLELS_BLOCK_STATS_FOREACH(OP) \
|
||||
OP(rd_req, VIR_DOMAIN_BLOCK_STATS_READ_REQ, "read_requests") \
|
||||
|
Loading…
x
Reference in New Issue
Block a user