On 08/27/2011 08:25 AM, Eric Blake wrote:
Pretty straight-forward exposure of new flags. For most commands,
we let the API reject mutually exclusive flags; but for save-image-edit,
we do the sanity check ourselves to avoid looping on flag failure if
the edit cycle is ever enhanced to allow the user to retry an edit
to fix up an xml validation error.
* tools/virsh.c (cmdManagedSave, cmdRestore, cmdSave)
(cmdSaveImageDefine, cmdSaveImageEdit): Add new flags.
* tools/virsh.pod (managedsave, restore, save, save-image-define)
(save-image-edit): Document them.
---
tools/virsh.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
tools/virsh.pod | 32 ++++++++++++++++++++++++++++++--
2 files changed, 80 insertions(+), 7 deletions(-)
Missed a couple. I'm squashing this in, for my v4 posting.
diff --git i/tools/virsh.c w/tools/virsh.c
index 4426d2b..6131ec6 100644
--- i/tools/virsh.c
+++ w/tools/virsh.c
@@ -12357,6 +12357,8 @@ static const vshCmdInfo info_snapshot_revert[] = {
static const vshCmdOptDef opts_snapshot_revert[] = {
{"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or
uuid")},
{"snapshotname", VSH_OT_DATA, VSH_OFLAG_REQ, N_("snapshot
name")},
+ {"running", VSH_OT_BOOL, 0, N_("after reverting, change state to
running")},
+ {"paused", VSH_OT_BOOL, 0, N_("after reverting, change state to
paused")},
{NULL, 0, 0, NULL}
};
@@ -12367,6 +12369,12 @@ cmdDomainSnapshotRevert(vshControl *ctl, const
vshCmd *cmd)
bool ret = false;
const char *name = NULL;
virDomainSnapshotPtr snapshot = NULL;
+ int flags = 0;
+
+ if (vshCommandOptBool(cmd, "running"))
+ flags |= VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING;
+ if (vshCommandOptBool(cmd, "paused"))
+ flags |= VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED;
if (!vshConnectionUsability(ctl, ctl->conn))
goto cleanup;
@@ -12382,7 +12390,7 @@ cmdDomainSnapshotRevert(vshControl *ctl, const
vshCmd *cmd)
if (snapshot == NULL)
goto cleanup;
- if (virDomainRevertToSnapshot(snapshot, 0) < 0)
+ if (virDomainRevertToSnapshot(snapshot, flags) < 0)
goto cleanup;
ret = true;
diff --git i/tools/virsh.pod w/tools/virsh.pod
index 5967d1f..69af408 100644
--- i/tools/virsh.pod
+++ w/tools/virsh.pod
@@ -1627,14 +1627,22 @@ Output the snapshot XML for the domain's
snapshot named I<snapshot>.
Output the name of the parent snapshot for the given I<snapshot>, if any.
-=item B<snapshot-revert> I<domain> I<snapshot>
+=item B<snapshot-revert> I<domain> I<snapshot> [{I<--running> |
I<--paused>}]
Revert the given domain to the snapshot specified by I<snapshot>. Be
aware
-that this is a destructive action; any changes in the domain since the
+that this is a destructive action; any changes in the domain since the last
snapshot was taken will be lost. Also note that the state of the
domain after
snapshot-revert is complete will be the state of the domain at the time
the original snapshot was taken.
+Normally, reverting to a snapshot leaves the domain in the state it was
+at the time the snapshot was created, except that a disk snapshot with
+no vm state leaves the domain in an inactive state. Passing either the
+I<--running> or I<--paused> flag will perform additional state changes
+(such as booting an inactive domain, or pausing a running domain). Since
+transient domains cannot be inactive, it is required to use one of these
+flags when reverting to a disk snapshot of a transient domain.
+
=item B<snapshot-delete> I<domain> I<snapshot> I<--children>
Delete the snapshot for the domain named I<snapshot>. If this snapshot
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org