
On 06/11/2012 12:49 AM, Osier Yang wrote:
On 2012年05月25日 11:33, Eric Blake wrote:
Expose the recent API additions in virsh. Borrows ideas from 'dominfo' for the general type of information to display. Output looks like:
$ tools/virsh snapshot-info fedora-local tmp Name: tmp Domain: fedora-local Current: no State: disk-snapshot Parent: - Children: 1 Descendants: 2 Metadata: yes
possibly with fewer lines when talking to older servers.
+ /* Metadata; the fallback here relies on the fact that metadata + * used to have an all-or-nothing effect on snapshot count. */ + metadata = virDomainSnapshotHasMetadata(snapshot, 0); + if (metadata< 0) { + virResetLastError(); + count = virDomainSnapshotNum(dom, + VIR_DOMAIN_SNAPSHOT_LIST_METADATA); + metadata = count != 0; + } + vshPrint(ctl, "%-15s %s\n", _("Metadata:"), + metadata> 0 ? _("yes") : _("no"));
I tweaked this part slightly (if virDomainSnapshotNum() fails due to the LIST_METADATA flag being unsupported, then that should omit the Metadata: line as we don't have an accurate answer).
ACK
Thanks; pushed now, with this squashed in. diff --git c/tools/virsh.c w/tools/virsh.c index 5e6fe6d..744b629 100644 --- c/tools/virsh.c +++ w/tools/virsh.c @@ -16657,7 +16657,7 @@ cmdSnapshotInfo(vshControl *ctl, const vshCmd *cmd) goto cleanup; } flags = 0; - count = virDomainSnapshotNumChildren(snapshot, 0); + count = virDomainSnapshotNumChildren(snapshot, flags); if (count < 0) goto cleanup; vshPrint(ctl, "%-15s %d\n", _("Children:"), count); @@ -16671,13 +16671,13 @@ cmdSnapshotInfo(vshControl *ctl, const vshCmd *cmd) * used to have an all-or-nothing effect on snapshot count. */ metadata = virDomainSnapshotHasMetadata(snapshot, 0); if (metadata < 0) { + metadata = virDomainSnapshotNum(dom, + VIR_DOMAIN_SNAPSHOT_LIST_METADATA); virResetLastError(); - count = virDomainSnapshotNum(dom, - VIR_DOMAIN_SNAPSHOT_LIST_METADATA); - metadata = count != 0; } - vshPrint(ctl, "%-15s %s\n", _("Metadata:"), - metadata > 0 ? _("yes") : _("no")); + if (metadata >= 0) + vshPrint(ctl, "%-15s %s\n", _("Metadata:"), + metadata ? _("yes") : _("no")); ret = true; -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org