[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xl: Change output from xl -N create to be more useful
On Fri, 2015-06-26 at 15:29 +0100, Ian Jackson wrote: > 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. > > If this backward compatibility problem is considered a blocker for > this patch, then I will respin, with one of the following two > workarounds: > - A new option to force sane output > - Generate output which contains the domain config twice, > once directly in the main struct, and a copy in "config" > > 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> > --- > tools/libxl/xl_cmdimpl.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > > diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c > index c858068..9e9ee5e 100644 > --- a/tools/libxl/xl_cmdimpl.c > +++ b/tools/libxl/xl_cmdimpl.c > @@ -2687,9 +2687,20 @@ 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; Did you mean to use this instead of the hardcoded stdout below? Otherwise the debug output's location differs depending on the format, which seems unexpected. > + 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, stdout); > + free(json); > + if (ferror(stdout) || fflush(stdout)) { > + perror("stdout"); exit(-1); > + } > + } > + } > + > > ret = 0; > if (dom_info->dryrun) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |