[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-users] DomU suspension/hibernation
On Wed, 2013-06-19 at 13:57 +0100, Ian Murray wrote: > I think I have this sorted now. The JSON "{" that is used to signify > the start of domain data is preceeded with 4 spaces in the xl list -l > output. Add those four spaces into the regex (needs to be exact > otherwise there will be more unwanted matches, I think) and put quotes > around the variable in the grep statement(s) and it works for me... so > a 5 line patch or so. Thanks, that sounds "good" (as in the best we can do within the confines of parsing JSON In shell...) I don't think this commit went into 4.2: commit ac963eb7895b8351017bb6005505c2b176202f0e Author: Ian Campbell <ian.campbell@xxxxxxxxxx> Date: Thu Aug 23 19:12:28 2012 +0100 xl: make "xl list -l" proper JSON Bastian Blank reports that the output of this command is just multiple JSON objects concatenated and is not a single properly formed JSON object. Fix this by wrapping in an array. This turned out to be a bit more intrusive than I was expecting due to the requirement to keep supporting the SXP output mode. Python's json module is happy to parse the result... Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> but it is in 4.3, I can't remember if it added any extra indentation or whatever but could you try it? > I will do more testing tonight and get a patch together if you are > comfortable with the above in principle. > > There is still an issue with xl list -l giving bogus domid's when > using sxp format, but that's for another day. Maybe that is fixed in > 4.3 already. This is an odd one, this sort of thing is sometimes down to a tools vs. hypervisor mismatch but if other stuff is working (like starting/stopping/suspending domains) then that doesn't seem very likely. Looking at the diff from 4.2 to 4.3 this line in 4.2 looks very suspicious: if (default_output_format == OUTPUT_FORMAT_JSON) s = printf_info_one_json(hand, info[i].domid, &d_config); else printf_info_sexp(domid, &d_config); (note domid in one case, info[i].domid in the other). This ties in slightly with this fix, which I think is post 4.2, in terms of the confusion arising from using the global domid (which is likely not-initialised in this context): commit a73a7a0c647a9a5e30d8bc473c0a1e8648817183 Author: Ian Campbell <ian.campbell@xxxxxxxxxx> Date: Mon Sep 17 11:17:02 2012 +0100 xl: Remove global domid and enable -Wshadow Lots of functions loop over a list of domain and others take a domid as a parameter, shadowing the global one and leading to all sorts of confusion. Therefore remove the global domid and explicitly pass it around as necessary. Adds a domid to the parameters for many functions and switches many others from taking a char * domain specifier to taking a domid, pushing the domid lookup to the toplevel. Replaces some open-coded domain_qualifier_to_domid error checking with find_domain. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> [ ijc -- annotate find_domain() with warn_unused_result and fix the handful of errors. ] Committed-by: Ian Campbell <ian.campbell@xxxxxxxxxx> I don't think we want to backport that whole thing but the hunk: @@ -2808,7 +2805,7 @@ static void list_domains_details(const libxl_dominfo *inf if (default_output_format == OUTPUT_FORMAT_JSON) s = printf_info_one_json(hand, info[i].domid, &d_config); else - printf_info_sexp(domid, &d_config); + printf_info_sexp(info[i].domid, &d_config); libxl_domain_config_dispose(&d_config); free(data); free(config_source); Looks like a good candidate. Can you give it a go? Ian. _______________________________________________ Xen-users mailing list Xen-users@xxxxxxxxxxxxx http://lists.xen.org/xen-users
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |