aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2010-11-28 22:52:44 +0100
committerGuido Günther <agx@sigxcpu.org>2010-11-30 17:20:02 +0100
commit50a7c59bb30b95fd56cda34510f319f48f97f90e (patch)
tree879a5490586fd7e469952a7491a1be893c150127
parentLog client errors in libvirtd at debug priority (diff)
downloadlibvirt-50a7c59bb30b95fd56cda34510f319f48f97f90e.tar.gz
libvirt-50a7c59bb30b95fd56cda34510f319f48f97f90e.tar.bz2
libvirt-50a7c59bb30b95fd56cda34510f319f48f97f90e.zip
OpenVZ: take veid from vmdef->name when defining new domains
We currently use the next free veid although there's one given in the domain xml. This currently breaks defining new domains since vmdef->name and veid don't match leading to the following error later on: error: Failed to define domain from 110.xml error: internal error Could not set UUID Since silently ignoring vmdef->name is not nice respect it instead. We avoid veid collisions in the upper levels already.
-rw-r--r--src/openvz/openvz_driver.c41
1 files changed, 2 insertions, 39 deletions
diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c
index 807bb7c09..8dc95e2eb 100644
--- a/src/openvz/openvz_driver.c
+++ b/src/openvz/openvz_driver.c
@@ -58,7 +58,6 @@
#include "memory.h"
#include "bridge.h"
#include "files.h"
-#include "intprops.h"
#define VIR_FROM_THIS VIR_FROM_OPENVZ
@@ -103,10 +102,6 @@ openvzDomainDefineCmd(const char *args[],
int maxarg, virDomainDefPtr vmdef)
{
int narg;
- int veid;
- int max_veid;
- char str_id[INT_BUFSIZE_BOUND(max_veid)];
- FILE *fp;
for (narg = 0; narg < maxarg; narg++)
args[narg] = NULL;
@@ -116,6 +111,7 @@ openvzDomainDefineCmd(const char *args[],
_("Container is not defined"));
return -1;
}
+
#define ADD_ARG(thisarg) \
do { \
if (narg >= maxarg) \
@@ -136,36 +132,7 @@ openvzDomainDefineCmd(const char *args[],
ADD_ARG_LIT("--quiet");
ADD_ARG_LIT("create");
- if ((fp = popen(VZLIST " -a -ovpsid -H 2>/dev/null", "r")) == NULL) {
- openvzError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("popen failed"));
- return -1;
- }
- max_veid = 0;
- while (!feof(fp)) {
- if (fscanf(fp, "%d\n", &veid) != 1) {
- if (feof(fp))
- break;
-
- openvzError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Failed to parse vzlist output"));
- goto cleanup;
- }
- if (veid > max_veid) {
- max_veid = veid;
- }
- }
- VIR_FORCE_FCLOSE(fp);
-
- if (max_veid == 0) {
- max_veid = 100;
- } else {
- max_veid++;
- }
-
- snprintf(str_id, sizeof(str_id), "%d", max_veid);
- ADD_ARG_LIT(str_id);
-
+ ADD_ARG_LIT(vmdef->name);
ADD_ARG_LIT("--name");
ADD_ARG_LIT(vmdef->name);
@@ -189,10 +156,6 @@ no_memory:
_("Could not put argument to %s"), VZCTL);
return -1;
-cleanup:
- VIR_FORCE_FCLOSE(fp);
- return -1;
-
#undef ADD_ARG
#undef ADD_ARG_LIT
}