]> xenbits.xensource.com Git - xen.git/commitdiff
xl: avoid creating domains with duplicate names
authorIan Jackson <ian.jackson@eu.citrix.com>
Wed, 26 Jan 2011 16:05:09 +0000 (16:05 +0000)
committerIan Jackson <ian.jackson@eu.citrix.com>
Wed, 26 Jan 2011 16:05:09 +0000 (16:05 +0000)
Do not create the domain if another domain with the same name is already
running.

This is another error-checking function at rather too high a level:
this should be moved into libxl_domain_rename in 4.2.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/libxl/xl_cmdimpl.c

index 5826755ee69cbe89dc755184259aaed52193978a..76c64084d97c9d31f3fa16c24f6e96bbb1c62bd2 100644 (file)
@@ -583,6 +583,7 @@ static void parse_config_data(const char *configfile_filename_report,
     XLU_ConfigList *vbds, *nics, *pcis, *cvfbs, *net2s, *cpuids;
     int pci_power_mgmt = 0;
     int pci_msitranslate = 1;
+    uint32_t domid_e;
     int e;
 
     libxl_domain_create_info *c_info = &d_config->c_info;
@@ -612,6 +613,15 @@ static void parse_config_data(const char *configfile_filename_report,
 
     if (xlu_cfg_replace_string (config, "name", &c_info->name))
         c_info->name = strdup("test");
+    e = libxl_name_to_domid(&ctx, c_info->name, &domid_e);
+    if (!e) {
+        fprintf(stderr, "A domain with name \"%s\" already exists.\n", c_info->name);
+        exit(1);
+    }
+    if (e != ERROR_INVAL) {
+        fprintf(stderr, "Unexpected error checking for existing domain"
+                " (error=%d)", e);
+    }
 
     if (!xlu_cfg_get_string (config, "uuid", &buf) ) {
         if ( libxl_uuid_from_string(&c_info->uuid, buf) ) {