* src/openvz_conf.c src/openvz_conf.h src/openvz_driver.c: a bit

of cleanup on top of previous patches.
Daniel
This commit is contained in:
Daniel Veillard 2007-09-03 16:30:00 +00:00
parent b36902c37a
commit 5196e6cab7
4 changed files with 51 additions and 21 deletions

View File

@ -1,3 +1,8 @@
Mon Sep 3 18:29:05 CEST 2007 Daniel Veillard <veillard@redhat.com>
* src/openvz_conf.c src/openvz_conf.h src/openvz_driver.c: a bit
of cleanup on top of previous patches.
Mon Sep 3 17:35:15 CEST 2007 Daniel Veillard <veillard@redhat.com> Mon Sep 3 17:35:15 CEST 2007 Daniel Veillard <veillard@redhat.com>
* src/openvz_conf.c src/openvz_conf.h src/openvz_driver.c * src/openvz_conf.c src/openvz_conf.h src/openvz_driver.c

View File

@ -59,9 +59,6 @@ static void error (virConnectPtr conn, virErrorNumber code, const char *info);
static struct openvz_vm_def *openvzParseXML(virConnectPtr conn, xmlDocPtr xml); static struct openvz_vm_def *openvzParseXML(virConnectPtr conn, xmlDocPtr xml);
static int openvzGetVPSUUID(int vpsid, char *uuidstr); static int openvzGetVPSUUID(int vpsid, char *uuidstr);
static int openvzSetUUID(int vpsid); static int openvzSetUUID(int vpsid);
static struct openvz_vm *openvzLoadConfig(struct openvz_driver *driver,
const char *path,
const char *xmlStr);
/* For errors internal to this library. */ /* For errors internal to this library. */
static void static void
@ -117,7 +114,7 @@ struct openvz_vm
} }
int int
strtoI(char *str) strtoI(const char *str)
{ {
int base = 10; int base = 10;
char *endptr; char *endptr;
@ -340,7 +337,7 @@ static struct openvz_vm_def
} }
/* rejecting VPS ID <= OPENVZ_RSRV_VM_LIMIT for they are reserved */ /* rejecting VPS ID <= OPENVZ_RSRV_VM_LIMIT for they are reserved */
if (strtoI(BAD_CAST obj->stringval) <= OPENVZ_RSRV_VM_LIMIT) { if (strtoI((const char *) obj->stringval) <= OPENVZ_RSRV_VM_LIMIT) {
error(conn, VIR_ERR_INTERNAL_ERROR, error(conn, VIR_ERR_INTERNAL_ERROR,
"VPS ID Error (must be an integer greater than 100"); "VPS ID Error (must be an integer greater than 100");
goto bail_out; goto bail_out;
@ -531,13 +528,18 @@ openvzGetVPSInfo(virConnectPtr conn) {
*pnext = calloc(1, sizeof(struct openvz_vm)); *pnext = calloc(1, sizeof(struct openvz_vm));
if(!*pnext) { if(!*pnext) {
error(conn, VIR_ERR_INTERNAL_ERROR, "calloc failed"); error(conn, VIR_ERR_INTERNAL_ERROR, "calloc failed");
return NULL; goto error;
} }
if(!vm) if(!vm)
vm = *pnext; vm = *pnext;
fscanf(fp, "%d %s\n", &veid, status); if (fscanf(fp, "%d %s\n", &veid, status) != 2) {
error(conn, VIR_ERR_INTERNAL_ERROR,
"Failed to parse vzlist output");
free(*pnext);
goto error;
}
if(strcmp(status, "stopped")) { if(strcmp(status, "stopped")) {
(*pnext)->status = VIR_DOMAIN_RUNNING; (*pnext)->status = VIR_DOMAIN_RUNNING;
driver->num_active ++; driver->num_active ++;
@ -546,14 +548,18 @@ openvzGetVPSInfo(virConnectPtr conn) {
else { else {
(*pnext)->status = VIR_DOMAIN_SHUTOFF; (*pnext)->status = VIR_DOMAIN_SHUTOFF;
driver->num_inactive ++; driver->num_inactive ++;
(*pnext)->vpsid = -1; /* inactive domains don't have their ID set in libvirt, /*
thought this doesn't make sense for OpenVZ */ * inactive domains don't have their ID set in libvirt,
* thought this doesn't make sense for OpenVZ
*/
(*pnext)->vpsid = -1;
} }
vmdef = calloc(1, sizeof(struct openvz_vm_def)); vmdef = calloc(1, sizeof(struct openvz_vm_def));
if(!vmdef) { if(!vmdef) {
error(conn, VIR_ERR_INTERNAL_ERROR, "calloc failed"); error(conn, VIR_ERR_INTERNAL_ERROR, "calloc failed");
return NULL; free(*pnext);
goto error;
} }
snprintf(vmdef->name, OPENVZ_NAME_MAX, "%i", veid); snprintf(vmdef->name, OPENVZ_NAME_MAX, "%i", veid);
@ -561,14 +567,27 @@ openvzGetVPSInfo(virConnectPtr conn) {
ret = virUUIDParse(uuidstr, vmdef->uuid); ret = virUUIDParse(uuidstr, vmdef->uuid);
if(ret == -1) { if(ret == -1) {
error(conn, VIR_ERR_INTERNAL_ERROR, "UUID in config file malformed"); error(conn, VIR_ERR_INTERNAL_ERROR,
return NULL; "UUID in config file malformed");
free(*pnext);
free(vmdef);
goto error;
} }
(*pnext)->vmdef = vmdef; (*pnext)->vmdef = vmdef;
pnext = &(*pnext)->next; pnext = &(*pnext)->next;
} }
return vm; return vm;
error:
while (vm != NULL) {
struct openvz_vm *next;
next = vm->next;
free(vm->vmdef);
free(vm);
vm = next;
}
return NULL;
} }
static char static char
@ -579,7 +598,7 @@ static char
while(conf_dir_list[i]) { while(conf_dir_list[i]) {
if(!access(conf_dir_list[i], F_OK)) if(!access(conf_dir_list[i], F_OK))
return strdup(conf_dir_list[i]); return strdup(conf_dir_list[i]);
i ++; i ++;
} }
@ -660,7 +679,7 @@ openvzSetUUID(int vpsid)
char uuidstr[VIR_UUID_STRING_BUFLEN]; char uuidstr[VIR_UUID_STRING_BUFLEN];
unsigned char uuid[VIR_UUID_BUFLEN]; unsigned char uuid[VIR_UUID_BUFLEN];
char *conf_dir; char *conf_dir;
int fd, ret, i; int fd, ret;
conf_dir = openvzLocateConfDir(); conf_dir = openvzLocateConfDir();
sprintf(conf_file, "%s/%d.conf", conf_dir, vpsid); sprintf(conf_file, "%s/%d.conf", conf_dir, vpsid);

View File

@ -129,5 +129,5 @@ void openvzRemoveInactiveVM(struct openvz_driver *driver, struct openvz_vm *vm);
void openvzFreeDriver(struct openvz_driver *driver); void openvzFreeDriver(struct openvz_driver *driver);
void openvzFreeVM(struct openvz_driver *driver, struct openvz_vm *vm, int checkCallee); void openvzFreeVM(struct openvz_driver *driver, struct openvz_vm *vm, int checkCallee);
void openvzFreeVMDef(struct openvz_vm_def *def); void openvzFreeVMDef(struct openvz_vm_def *def);
int strtoI(char *str); int strtoI(const char *str);
#endif /* OPENVZ_CONF_H */ #endif /* OPENVZ_CONF_H */

View File

@ -164,7 +164,7 @@ static virDomainPtr openvzDomainLookupByID(virConnectPtr conn,
return dom; return dom;
} }
static char *openvzGetOSType(virDomainPtr dom) static char *openvzGetOSType(virDomainPtr dom ATTRIBUTE_UNUSED)
{ {
/* OpenVZ runs on Linux and runs only Linux */ /* OpenVZ runs on Linux and runs only Linux */
return strdup("linux"); return strdup("linux");
@ -275,7 +275,8 @@ bail_out:
return ret; return ret;
} }
static int openvzDomainReboot(virDomainPtr dom, unsigned int flags) { static int openvzDomainReboot(virDomainPtr dom,
unsigned int flags ATTRIBUTE_UNUSED) {
char cmdbuf[CMDBUF_LEN]; char cmdbuf[CMDBUF_LEN];
int ret; int ret;
char *cmdExec[OPENVZ_MAX_ARG]; char *cmdExec[OPENVZ_MAX_ARG];
@ -631,7 +632,7 @@ static int openvzListDomains(virConnectPtr conn, int *ids, int nids) {
return got; return got;
} }
static int openvzNumDomains(virConnectPtr conn) { static int openvzNumDomains(virConnectPtr conn ATTRIBUTE_UNUSED) {
return ovz_driver.num_active; return ovz_driver.num_active;
} }
@ -662,7 +663,7 @@ static int openvzListDefinedDomains(virConnectPtr conn,
return got; return got;
} }
static int openvzNumDefinedDomains(virConnectPtr conn) { static int openvzNumDefinedDomains(virConnectPtr conn ATTRIBUTE_UNUSED) {
return ovz_driver.num_inactive; return ovz_driver.num_inactive;
} }
@ -687,11 +688,11 @@ static int openvzActive(void) {
return 1; return 1;
} }
static int openvzCloseNetwork(virConnectPtr conn) { static int openvzCloseNetwork(virConnectPtr conn ATTRIBUTE_UNUSED) {
return 0; return 0;
} }
static virDrvOpenStatus openvzOpenNetwork(virConnectPtr conn, static virDrvOpenStatus openvzOpenNetwork(virConnectPtr conn ATTRIBUTE_UNUSED,
const char *name ATTRIBUTE_UNUSED, const char *name ATTRIBUTE_UNUSED,
int flags ATTRIBUTE_UNUSED) { int flags ATTRIBUTE_UNUSED) {
return VIR_DRV_OPEN_SUCCESS; return VIR_DRV_OPEN_SUCCESS;
@ -747,6 +748,11 @@ static virDriver openvzDriver = {
NULL, /* domainGetSchedulerType */ NULL, /* domainGetSchedulerType */
NULL, /* domainGetSchedulerParameters */ NULL, /* domainGetSchedulerParameters */
NULL, /* domainSetSchedulerParameters */ NULL, /* domainSetSchedulerParameters */
NULL, /* domainMigratePrepare */
NULL, /* domainMigratePerform */
NULL, /* domainMigrateFinish */
NULL, /* domainBlockStats */
NULL, /* domainInterfaceStats */
}; };
static virNetworkDriver openvzNetworkDriver = { static virNetworkDriver openvzNetworkDriver = {