+Thu Jul 10 14:18:51 CEST 2008 Daniel Veillard <veillard@redhat.com>
+
+ * src/openvz_conf.c src/openvz_conf.h src/openvz_driver.c
+ Makefile.maint: patch from Evgeniy Sokolov cleaning up the
+ error function used and format check based on Jim's fedback.
+
Thu Jul 10 09:58:42 CEST 2008 Daniel Veillard <veillard@redhat.com>
* docs/libvirt.rng: domain name validation fix by John Levon
msg_gen_function += ReportError
msg_gen_function += qemudReportError
msg_gen_function += openvzLog
+msg_gen_function += openvzError
# Uncomment the following and run "make syntax-check" to see diagnostics
# that are not yet marked for translation, but that need to be rewritten
static int openvzSetUUID(int vpsid);
void
-error (virConnectPtr conn, virErrorNumber code, const char *fmt, ...)
+openvzError (virConnectPtr conn, virErrorNumber code, const char *fmt, ...)
{
va_list args;
char errorMessage[OPENVZ_MAX_ERROR_LEN];
if (VIR_ALLOC(vm) < 0) {
openvzFreeVMDef(def);
- error(conn, VIR_ERR_NO_MEMORY, "vm");
+ openvzError(conn, VIR_ERR_NO_MEMORY, _("vm"));
return NULL;
}
xml = xmlReadDoc(BAD_CAST xmlStr, displayName ? displayName : "domain.xml", NULL,
XML_PARSE_NOENT | XML_PARSE_NONET | XML_PARSE_NOERROR | XML_PARSE_NOWARNING);
if (!xml) {
- error(conn, VIR_ERR_XML_ERROR, NULL);
+ openvzError(conn, VIR_ERR_XML_ERROR, NULL);
return NULL;
}
struct ovz_ns *ovzNs;
if (VIR_ALLOC(def) < 0) {
- error(conn, VIR_ERR_NO_MEMORY, "xmlXPathContext");
+ openvzError(conn, VIR_ERR_NO_MEMORY, _("xmlXPathContext"));
return NULL;
}
root = xmlDocGetRootElement(xml);
if ((root == NULL) || (!xmlStrEqual(root->name, BAD_CAST "domain"))) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("incorrect root element"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("incorrect root element"));
goto bail_out;
}
ctxt = xmlXPathNewContext(xml);
if (ctxt == NULL) {
- error(conn, VIR_ERR_NO_MEMORY, "xmlXPathContext");
+ openvzError(conn, VIR_ERR_NO_MEMORY, _("xmlXPathContext"));
goto bail_out;
}
/* Find out what type of OPENVZ virtualization to use */
if (!(prop = xmlGetProp(root, BAD_CAST "type"))) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("missing domain type attribute"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("missing domain type attribute"));
goto bail_out;
}
if (STRNEQ((char *)prop, "openvz")){
- error(conn, VIR_ERR_INTERNAL_ERROR, _("invalid domain type attribute"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("invalid domain type attribute"));
goto bail_out;
}
VIR_FREE(prop);
obj = xmlXPathEval(BAD_CAST "string(/domain/name[1])", ctxt);
if ((obj == NULL) || (obj->type != XPATH_STRING) ||
(obj->stringval == NULL) || (obj->stringval[0] == 0)) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("invalid domain name"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("invalid domain name"));
goto bail_out;
}
/* rejecting VPS ID <= OPENVZ_RSRV_VM_LIMIT for they are reserved */
if (strtoI((const char *) obj->stringval) <= OPENVZ_RSRV_VM_LIMIT) {
- error(conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
_("VPS ID Error (must be an integer greater than 100"));
goto bail_out;
}
int err;
if ((err = virUUIDGenerate(def->uuid))) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("Failed to generate UUID"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("Failed to generate UUID"));
goto bail_out;
}
} else if (virUUIDParse((const char *)obj->stringval, def->uuid) < 0) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("malformed uuid element"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("malformed uuid element"));
goto bail_out;
}
xmlXPathFreeObject(obj);
obj = xmlXPathEval(BAD_CAST "string(/domain/container/filesystem/template[1])", ctxt);
if ((obj == NULL) || (obj->type != XPATH_STRING) || (obj->stringval == NULL)
|| (obj->stringval[0] == 0)) {
- error(conn, VIR_ERR_OS_TYPE, NULL);
+ openvzError(conn, VIR_ERR_OS_TYPE, NULL);
goto bail_out;
}
strncpy(def->fs.tmpl, (const char *) obj->stringval, OPENVZ_TMPL_MAX);
xml->name);
}
if (xmlStrlen(obj->stringval) >= (OPENVZ_IP_MAX)) {
- char errorMessage[OPENVZ_MAX_ERROR_LEN];
-
- snprintf(errorMessage, OPENVZ_MAX_ERROR_LEN - 1, "%s",
- _("ipaddress length too long"));
- error(conn, VIR_ERR_INTERNAL_ERROR, errorMessage);
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
+ _("ipaddress length too long"));
goto bail_out;
}
if (VIR_ALLOC(ovzIp) < 0) {
xml->name);
if (strlen((const char *) obj->stringval) >= (OPENVZ_IP_MAX)) {
- char errorMessage[OPENVZ_MAX_ERROR_LEN];
-
- snprintf(errorMessage, OPENVZ_MAX_ERROR_LEN - 1, "%s",
- _("netmask length too long"));
- error(conn, VIR_ERR_INTERNAL_ERROR, errorMessage);
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
+ _("netmask length too long"));
goto bail_out;
}
strncpy(def->net.ips->netmask, (const char *) obj->stringval, OPENVZ_IP_MAX);
xml->name);
if (strlen((const char *) obj->stringval) >= (OPENVZ_HOSTNAME_MAX - 1)) {
- char errorMessage[OPENVZ_MAX_ERROR_LEN];
-
- snprintf(errorMessage, OPENVZ_MAX_ERROR_LEN - 1,
- "%s", _("hostname length too long"));
- error(conn, VIR_ERR_INTERNAL_ERROR, errorMessage);
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
+ _("hostname length too long"));
goto bail_out;
}
strncpy(def->net.hostname, (const char *) obj->stringval, OPENVZ_HOSTNAME_MAX - 1);
xml->name);
if (strlen((const char *) obj->stringval) >= (OPENVZ_IP_MAX)) {
- char errorMessage[OPENVZ_MAX_ERROR_LEN];
-
- snprintf(errorMessage, OPENVZ_MAX_ERROR_LEN - 1,
- "%s", _("gateway length too long"));
- error(conn, VIR_ERR_INTERNAL_ERROR, errorMessage);
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("gateway length too long"));
goto bail_out;
}
strncpy(def->net.def_gw, (const char *) obj->stringval, OPENVZ_IP_MAX);
xml->name);
if (strlen((const char *) obj->stringval) >= (OPENVZ_IP_MAX)) {
- char errorMessage[OPENVZ_MAX_ERROR_LEN];
-
- snprintf(errorMessage, OPENVZ_MAX_ERROR_LEN - 1,
- "%s", _("nameserver length too long"));
- error(conn, VIR_ERR_INTERNAL_ERROR, errorMessage);
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("nameserver length too long"));
goto bail_out;
}
if (VIR_ALLOC(ovzNs) < 0) {
obj = xmlXPathEval(BAD_CAST "string(/domain/container/profile[1])", ctxt);
if ((obj == NULL) || (obj->type != XPATH_STRING) || (obj->stringval == NULL)
|| (obj->stringval[0] == 0)) {
- error(conn, VIR_ERR_INTERNAL_ERROR, NULL);
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, NULL);
goto bail_out;
}
if (strlen((const char *) obj->stringval) >= (OPENVZ_PROFILE_MAX - 1)) {
- char errorMessage[OPENVZ_MAX_ERROR_LEN];
-
- snprintf(errorMessage, OPENVZ_MAX_ERROR_LEN - 1,
- "%s", _("profile length too long"));
- error(conn, VIR_ERR_INTERNAL_ERROR, errorMessage);
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("profile length too long"));
goto bail_out;
}
strncpy(def->profile, (const char *) obj->stringval, OPENVZ_PROFILE_MAX - 1);
driver->num_inactive = 0;
if((fp = popen(VZLIST " -a -ovpsid,status -H 2>/dev/null", "r")) == NULL) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("popen failed"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("popen failed"));
return NULL;
}
pnext = &vm;
while(!feof(fp)) {
if (VIR_ALLOC(*pnext) < 0) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("calloc failed"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("calloc failed"));
goto error;
}
vm = *pnext;
if (fscanf(fp, "%d %s\n", &veid, status) != 2) {
- error(conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
_("Failed to parse vzlist output"));
goto error;
}
}
if (VIR_ALLOC(vmdef) < 0) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("calloc failed"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("calloc failed"));
goto error;
}
ret = virUUIDParse(uuidstr, vmdef->uuid);
if(ret == -1) {
- error(conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
_("UUID in config file malformed"));
VIR_FREE(vmdef);
goto error;
char * sf, * token;
char *saveptr = NULL;
-
conf_dir = openvzLocateConfDir();
if (conf_dir == NULL)
return -1;
- if (snprintf(conf_file, PATH_MAX,"%s/%d.conf",conf_dir,vpsid) >= PATH_MAX)
+ if (snprintf(conf_file, PATH_MAX, "%s/%d.conf", conf_dir,vpsid) >= PATH_MAX)
return -1;
VIR_FREE(conf_dir);
value[0] = 0;
fd = open(conf_file, O_RDONLY);
- if (fd == -1)
+ if (fd == -1)
return -1;
while(1) {
if(ret <= 0)
break;
saveptr = NULL;
- if (STREQLEN(line, param, strlen(param))) {
+ if (STREQLEN(line, param, strlen(param))) {
sf = line;
sf += strlen(param);
if (sf[0] == '=' && (token = strtok_r(sf,"\"\t=\n", &saveptr)) != NULL) {
value[maxlen-1] = '\0';
found = 1;
}
- }
+ }
}
close(fd);
return vm->vpsid != -1;
}
-void error (virConnectPtr conn, virErrorNumber code, const char *fmt, ...);
+void openvzError (virConnectPtr conn, virErrorNumber code, const char *fmt, ...)
+ ATTRIBUTE_FORMAT(printf, 3, 4);
int openvz_readline(int fd, char *ptr, int maxlen);
int openvzReadConfigParam(int vpsid ,const char * param, char *value, int maxlen);
struct openvz_vm *openvzFindVMByID(const struct openvz_driver *driver, int id);
virDomainPtr dom;
if (!vm) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("no domain with matching id"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("no domain with matching id"));
return NULL;
}
dom = virGetDomain(conn, vm->vmdef->name, vm->vmdef->uuid);
if (!dom) {
- error(conn, VIR_ERR_NO_MEMORY, "virDomainPtr");
+ openvzError(conn, VIR_ERR_NO_MEMORY, _("virDomainPtr"));
return NULL;
}
virDomainPtr dom;
if (!vm) {
- error(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
+ openvzError(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
return NULL;
}
dom = virGetDomain(conn, vm->vmdef->name, vm->vmdef->uuid);
if (!dom) {
- error(conn, VIR_ERR_NO_MEMORY, "virDomainPtr");
+ openvzError(conn, VIR_ERR_NO_MEMORY, _("virDomainPtr"));
return NULL;
}
virDomainPtr dom;
if (!vm) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("no domain with matching name"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("no domain with matching name"));
return NULL;
}
dom = virGetDomain(conn, vm->vmdef->name, vm->vmdef->uuid);
if (!dom) {
- error(conn, VIR_ERR_NO_MEMORY, "virDomainPtr");
+ openvzError(conn, VIR_ERR_NO_MEMORY, _("virDomainPtr"));
return NULL;
}
struct openvz_vm *vm = openvzFindVMByUUID(driver, dom->uuid);
if (!vm) {
- error(dom->conn, VIR_ERR_INVALID_DOMAIN,
+ openvzError(dom->conn, VIR_ERR_INVALID_DOMAIN,
_("no domain with matching uuid"));
return -1;
}
struct openvz_vm *vm = openvzFindVMByID(driver, dom->id);
if (!vm) {
- error(dom->conn, VIR_ERR_INVALID_DOMAIN,
+ openvzError(dom->conn, VIR_ERR_INVALID_DOMAIN,
_("no domain with matching id"));
return -1;
}
if (vm->status != VIR_DOMAIN_RUNNING) {
- error(dom->conn, VIR_ERR_OPERATION_DENIED,
+ openvzError(dom->conn, VIR_ERR_OPERATION_DENIED,
_("domain is not in running state"));
return -1;
}
ret = virExec(dom->conn, (char **)cmdExec, &pid, -1, &outfd, &errfd);
if(ret == -1) {
- error(dom->conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(dom->conn, VIR_ERR_INTERNAL_ERROR,
_("Could not exec %s"), VZCTL);
return -1;
}
struct openvz_vm *vm = openvzFindVMByID(driver, dom->id);
if (!vm) {
- error(dom->conn, VIR_ERR_INVALID_DOMAIN,
+ openvzError(dom->conn, VIR_ERR_INVALID_DOMAIN,
_("no domain with matching id"));
return -1;
}
if (vm->status != VIR_DOMAIN_RUNNING) {
- error(dom->conn, VIR_ERR_OPERATION_DENIED,
+ openvzError(dom->conn, VIR_ERR_OPERATION_DENIED,
_("domain is not in running state"));
return -1;
}
}
ret = virExec(dom->conn, (char **)cmdExec, &pid, -1, &outfd, &errfd);
if(ret == -1) {
- error(dom->conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(dom->conn, VIR_ERR_INTERNAL_ERROR,
_("Could not exec %s"), VZCTL);
return -1;
}
}
ret = virExec(conn, (char **)cmdExec, &pid, -1, &outfd, &errfd);
if(ret == -1) {
- error(conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
_("Could not exec %s"), VZCTL);
goto bail_out2;
}
}
ret = virExec(conn, (char **)cmdExec, &pid, -1, &outfd, &errfd);
if(ret == -1) {
- error(conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
_("Could not exec %s"), VZCTL);
return NULL;
}
}
ret = virExec(conn, (char **)cmdExec, &pid, -1, &outfd, &errfd);
if(ret == -1) {
- error(conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
_("Could not exec %s"), VZCTL);
return NULL;
}
struct openvz_vm_def *vmdef;
if (!vm) {
- error(dom->conn, VIR_ERR_INVALID_DOMAIN,
+ openvzError(dom->conn, VIR_ERR_INVALID_DOMAIN,
_("no domain with matching id"));
return -1;
}
if (vm->status != VIR_DOMAIN_SHUTOFF) {
- error(dom->conn, VIR_ERR_OPERATION_DENIED,
+ openvzError(dom->conn, VIR_ERR_OPERATION_DENIED,
_("domain is not in shutoff state"));
return -1;
}
}
ret = virExec(dom->conn, (char **)cmdExec, &pid, -1, &outfd, &errfd);
if(ret == -1) {
- error(dom->conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(dom->conn, VIR_ERR_INTERNAL_ERROR,
_("Could not exec %s"), VZCTL);
return -1;
}
struct openvz_vm *vm = openvzFindVMByUUID(driver, dom->uuid);
if (!vm) {
- error(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
+ openvzError(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
return -1;
}
if (openvzIsActiveVM(vm)) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("cannot delete active domain"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("cannot delete active domain"));
return -1;
}
snprintf(cmdbuf, CMDBUF_LEN - 1, VZCTL " destroy %s ", vm->vmdef->name);
}
ret = virExec(conn, (char **)cmdExec, &pid, -1, &outfd, &errfd);
if(ret == -1) {
- error(conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
_("Could not exec %s"), VZCTL);
return -1;
}
virConnectPtr conn= dom->conn;
struct openvz_driver *driver = (struct openvz_driver *) conn->privateData;
struct openvz_vm *vm = openvzFindVMByUUID(driver, dom->uuid);
- const char *prog[] = { VZCTL, "set", vm->vmdef->name,
- "--onboot", autostart ? "yes" : "no",
+ const char *prog[] = { VZCTL, "set", vm->vmdef->name,
+ "--onboot", autostart ? "yes" : "no",
"--save", NULL };
if (!vm) {
- error(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
+ openvzError(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
return -1;
}
if (virRun(conn, (char **)prog, NULL) < 0) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("Could not exec %s"), VZCTL);
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("Could not exec %s"), VZCTL);
return -1;
}
char value[1024];
if (!vm) {
- error(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
+ openvzError(conn, VIR_ERR_INVALID_DOMAIN, _("no domain with matching uuid"));
return -1;
}
if (openvzReadConfigParam(vm->vpsid , "ONBOOT", value, sizeof(value)) < 0) {
- error(conn, VIR_ERR_INTERNAL_ERROR, _("Cound not read container config"));
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("Cound not read container config"));
return -1;
}
*autostart = 0;
if (STREQ(value,"yes"))
- *autostart = 1;
+ *autostart = 1;
return 0;
}
ret = virExec(conn, (char **)cmd, &pid, -1, &outfd, &errfd);
if(ret == -1) {
- error(conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
_("Could not exec %s"), VZLIST);
return -1;
}
/* the -S options lists only stopped domains */
ret = virExec(conn, (char **)cmd, &pid, -1, &outfd, &errfd);
if(ret == -1) {
- error(conn, VIR_ERR_INTERNAL_ERROR,
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
_("Could not exec %s"), VZLIST);
return -1;
}