[libvirt] [PATCHv3 01.7/43] snapshot: expose --running and --paused in virsh

Eric Blake eblake at redhat.com
Sat Aug 27 15:53:43 UTC 2011


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 at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




More information about the libvir-list mailing list