[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2/3] xl: Change output from xl -N create to be more useful
Currently, xl -N create produces: { "domid": null, "config": { "c_info": { "type": "pv", [etc] } The domid is always NULL (as the domain has not been created at this stage). This is annoying if you want to take this output and use it for some actually useful purpose like domain creation: either it needs to be massaged, or the the consuming tool needs to be taught to look inside the json object for the `config' element (which IMO makes no sense as an interface). We would like to be able to pass libxl json configs around sensibly. In the future maybe xl will grow an option to create a domain from a json config, and this is currently something I want to be able to have a test tool do. Note that this change is NOT BACKWARDS COMPATIBLE. But it would only adversely affects anyone who uses `xl -N create' and then saves and processes the JSON. (The output from xl list et al is not changed; it normally needs the domid.) Such a user should probably have already have complained about the infelicitous output. If they haven't it would be simple enough for them to bookend the output so as to provide compatible output. Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Ian Campbell <ian.campbell@xxxxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> CC: Euan Harris <euan.harris@xxxxxxxxxx> --- v2: Print json output to correct filehandle (Using newly introduced flush_stream.) --- tools/libxl/xl_cmdimpl.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index ee55786..50247de 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -2695,9 +2695,18 @@ static uint32_t create_domain(struct domain_create *dom_info) } } - if (debug || dom_info->dryrun) - printf_info(default_output_format, -1, &d_config, - debug ? stderr : stdout); + if (debug || dom_info->dryrun) { + FILE *cfg_print_fh = debug ? stderr : stdout; + if (default_output_format == OUTPUT_FORMAT_SXP) { + printf_info_sexp(-1, &d_config, cfg_print_fh); + } else { + char *json = libxl_domain_config_to_json(ctx, &d_config); + fputs(json, cfg_print_fh); + free(json); + flush_stream(cfg_print_fh); + } + } + ret = 0; if (dom_info->dryrun) -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |