From: George Dunlap Date: Tue, 24 Apr 2012 17:51:56 +0000 (+0100) Subject: [v2] xl: Don't require a config file for cpupools X-Git-Tag: 4.2.0-rc1~451 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=4d9dfa2abbd32d0cb5c36a21b35f4fecd1b17ca5;p=xen.git [v2] xl: Don't require a config file for cpupools Since the key information can be fairly simply put on the command-line, there's no need to require an actual config file. Also improve the help to cross-reference the xlcpupool.cfg manpage. Signed-off-by: George Dunlap Committed-by: Ian Jackson Acked-by: Ian Jackson --- diff --git a/docs/man/xl.pod.1 b/docs/man/xl.pod.1 index 6e7a7a082f..283c9ed2ac 100644 --- a/docs/man/xl.pod.1 +++ b/docs/man/xl.pod.1 @@ -873,11 +873,13 @@ Cpu-pools can be specified either by name or by id. =over 4 -=item B [I] I [I ...] +=item B [I] [I] [I ...] -Create a cpu pool based an I. -Variable settings from the I may be altered by specifying new -or additional assignments on the command line. +Create a cpu pool based an config from a I or command-line +parameters. Variable settings from the I may be altered +by specifying new or additional assignments on the command line. + +See the L manpage for more information. B diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 588d4174a3..e1d5dfa9f7 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -5547,7 +5547,7 @@ int main_tmem_freeable(int argc, char **argv) int main_cpupoolcreate(int argc, char **argv) { - const char *filename = NULL; + const char *filename = NULL, *config_src=NULL; const char *p; char extra_config[1024]; int opt; @@ -5611,23 +5611,26 @@ int main_cpupoolcreate(int argc, char **argv) optind++; } - if (!filename) { - help("cpupool-create"); - return -ERROR_FAIL; + if (filename) + { + if (libxl_read_file_contents(ctx, filename, (void **)&config_data, + &config_len)) { + fprintf(stderr, "Failed to read config file: %s: %s\n", + filename, strerror(errno)); + return -ERROR_FAIL; + } + config_src=filename; } + else + config_src="command line"; - if (libxl_read_file_contents(ctx, filename, (void **)&config_data, &config_len)) { - fprintf(stderr, "Failed to read config file: %s: %s\n", - filename, strerror(errno)); - return -ERROR_FAIL; - } if (strlen(extra_config)) { if (config_len > INT_MAX - (strlen(extra_config) + 2)) { fprintf(stderr, "Failed to attach extra configration\n"); return -ERROR_FAIL; } config_data = xrealloc(config_data, - config_len + strlen(extra_config) + 2); + config_len + strlen(extra_config) + 2); if (!config_data) { fprintf(stderr, "Failed to realloc config_data\n"); return -ERROR_FAIL; @@ -5638,7 +5641,7 @@ int main_cpupoolcreate(int argc, char **argv) config_len += strlen(extra_config) + 1; } - config = xlu_cfg_init(stderr, filename); + config = xlu_cfg_init(stderr, config_src); if (!config) { fprintf(stderr, "Failed to allocate for configuration\n"); return -ERROR_FAIL; @@ -5652,8 +5655,12 @@ int main_cpupoolcreate(int argc, char **argv) if (!xlu_cfg_get_string (config, "name", &buf, 0)) name = strdup(buf); - else + else if (filename) name = libxl_basename(filename); + else { + fprintf(stderr, "Missing cpupool name!\n"); + return -ERROR_FAIL; + } if (!libxl_name_to_cpupoolid(ctx, name, &poolid)) { fprintf(stderr, "Pool name \"%s\" already exists\n", name); return -ERROR_FAIL; @@ -5723,7 +5730,7 @@ int main_cpupoolcreate(int argc, char **argv) libxl_uuid_generate(&uuid); - printf("Using config file \"%s\"\n", filename); + printf("Using config file \"%s\"\n", config_src); printf("cpupool name: %s\n", name); printf("scheduler: %s\n", libxl_scheduler_to_string(sched)); printf("number of cpus: %d\n", n_cpus); diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c index de8955c1fa..2796460fea 100644 --- a/tools/libxl/xl_cmdtable.c +++ b/tools/libxl/xl_cmdtable.c @@ -367,12 +367,14 @@ struct cmd_spec cmd_table[] = { }, { "cpupool-create", &main_cpupoolcreate, 1, - "Create a CPU pool based an ConfigFile", - "[options] [vars]", + "Create a new CPU pool", + "[options] [] [Variable=value ...]", "-h, --help Print this help.\n" "-f FILE, --defconfig=FILE Use the given configuration file.\n" "-n, --dryrun Dry run - prints the resulting configuration.\n" - " (deprecated in favour of global -N option)." + " (deprecated in favour of global -N option).\n" + "\nSee the xlcpupool.cfg(5) manpage for more information.", + }, { "cpupool-list", &main_cpupoollist, 0,