]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
OpenVZ: take veid from vmdef->name when defining new domains
authorGuido Günther <agx@sigxcpu.org>
Sun, 28 Nov 2010 21:52:44 +0000 (22:52 +0100)
committerGuido Günther <agx@sigxcpu.org>
Tue, 30 Nov 2010 16:20:02 +0000 (17:20 +0100)
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.

src/openvz/openvz_driver.c

index 807bb7c09b2fba22448d855b5900be794866c9dc..8dc95e2eb4a466a200804b2e6c02c7addc8332d5 100644 (file)
@@ -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
 }