]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Implement virsh managedsave-remove command.
authorChris Lalancette <clalance@redhat.com>
Tue, 22 Jun 2010 13:50:17 +0000 (09:50 -0400)
committerChris Lalancette <clalance@redhat.com>
Thu, 8 Jul 2010 12:42:39 +0000 (08:42 -0400)
Signed-off-by: Chris Lalancette <clalance@redhat.com>
tools/virsh.c
tools/virsh.pod

index e07fef3e890f22197a9356d31d4e85b151460e41..fc62d846663292da79b4db841138bb7df49d6d50 100644 (file)
@@ -1432,6 +1432,60 @@ cmdManagedSave(vshControl *ctl, const vshCmd *cmd)
     return ret;
 }
 
+/*
+ * "managedsave-remove" command
+ */
+static const vshCmdInfo info_managedsaveremove[] = {
+    {"help", N_("Remove managed save of a domain")},
+    {"desc", N_("Remove an existing managed save state file from a domain")},
+    {NULL, NULL}
+};
+
+static const vshCmdOptDef opts_managedsaveremove[] = {
+    {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")},
+    {NULL, 0, 0, NULL}
+};
+
+static int
+cmdManagedSaveRemove(vshControl *ctl, const vshCmd *cmd)
+{
+    virDomainPtr dom;
+    char *name;
+    int ret = FALSE;
+    int hassave;
+
+    if (!vshConnectionUsability(ctl, ctl->conn))
+        return FALSE;
+
+    if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
+        return FALSE;
+
+    hassave = virDomainHasManagedSaveImage(dom, 0);
+    if (hassave < 0) {
+        vshError(ctl, _("Failed to check for domain managed save image"));
+        goto cleanup;
+    }
+
+    if (hassave) {
+        if (virDomainManagedSaveRemove(dom, 0) < 0) {
+            vshError(ctl, _("Failed to remove managed save image for domain %s"),
+                     name);
+            goto cleanup;
+        }
+        else
+            vshPrint(ctl, _("Removed managedsave image for domain %s"), name);
+    }
+    else
+        vshPrint(ctl, _("Domain %s has no manage save image; removal skipped"),
+                 name);
+
+    ret = TRUE;
+
+cleanup:
+    virDomainFree(dom);
+    return ret;
+}
+
 /*
  * "schedinfo" command
  */
@@ -9207,6 +9261,7 @@ static const vshCmdDef commands[] = {
     {"iface-destroy", cmdInterfaceDestroy, opts_interface_destroy, info_interface_destroy},
 
     {"managedsave", cmdManagedSave, opts_managedsave, info_managedsave},
+    {"managedsave-remove", cmdManagedSaveRemove, opts_managedsaveremove, info_managedsaveremove},
 
     {"nodeinfo", cmdNodeinfo, NULL, info_nodeinfo},
 
index 2b2227f8d39dbd20e4731df21e33b7c45a9b424e..eb1fd045ba3aecfd79aa14dca86fd5b0bf1bb3a7 100644 (file)
@@ -380,6 +380,12 @@ Ask libvirt to save a running domain state in a place managed by libvirt.
 If libvirt is asked to restart the domain later on it will resume it from
 the saved domain state (and the state is discarded).
 
+=item B<managedsave-remove> I<domain-id>
+
+Remove the managed save file for a domain if it exists.  The next time the
+domain is started it will not restore to its previous state but instead will
+do a full boot.
+
 =item B<migrate> optional I<--live> I<--suspend> I<domain-id> I<desturi> I<migrateuri>
 
 Migrate domain to another host.  Add --live for live migration; --suspend