|
[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 |