
On 06/12/2012 06:59 AM, Peter Krempa wrote:
On 06/12/12 14:54, Peter Krempa wrote:
On 06/09/12 06:34, Eric Blake wrote:
This patch copies just the fallback code out of cmdSnapshotList, and keeps the snapshot objects around rather than just their name for easier manipulation. It looks forward to a future patch when we add a way to list all snapshot objects at once, and the next patch will simplify cmdSnapshotList to take advantage of this factorization.
I know it's copied code, but this error message doesn't look helpful. I think it's worth improving: "Failed to collect snapshot list" perhaps?
+ goto cleanup; + }
I had a very hard time parsing the code flow in this block, I'd rewrite this block as follows:
I forgot to attach the patch for the rewrite.
Thanks; that helps.
@@ -16641,36 +16641,40 @@ vshSnapshotListCollect(vshControl *ctl, virDomainPtr dom, /* This is the interface available in 0.9.12 and earlier, * including fallbacks to 0.9.4 and earlier. */
I'm off on my versioning - this was 0.9.6 and earlier.
if (from) {
There's multiple things going on here: First, the valid combinations: list (all snapshots, no parent info needed) list --roots (only root snapshots) list --from (only direct children of --from) list --from --descendants (recursive children of --from) list --tree (all snapshots, parent info needed) list --tree --from (recursive children of --from, but also list from) Then the API that satisfy those combinations: 'new' API (aka 0.9.7-0.9.12) with --from (regardless of --descendants) -> use virDomainSnapshotNumChildren in its entirety new API without --from (regardless of -roots) -> use virDomainSnapshotNum in its entirety 'old' API (aka 0.8.0-0.9.6) without --from or --roots -> use virDomainSnapshotNum in its entirety old API without --from but with --roots -> use virDomainSnapshotNum, but then manually filter to just roots old with --from (regardless of --descendants) -> use virDomainSnapshotNum to get a global list, then manually filter to just the snapshot's children Additionally, if both --from and --tree are present, then we want --from to be included in the list. I really need to list this as a comment. I'll post a v2, adding comments and including your improvements.
+ /* fallback to old API */ + if (count < 0) { count = virDomainSnapshotNum(dom, flags);
More like: fall back to old API when doing children listing, or do initial probe when doing global listing. -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org