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(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org