Signed-off-by: Chris Lalancette <clalance@xxxxxxxxxx> --- tools/virsh.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/virsh.pod | 6 ++++++ 2 files changed, 61 insertions(+), 0 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index 2d749de..8e5aa42 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -1452,6 +1452,60 @@ cmdManagedSave(vshControl *ctl, const vshCmd *cmd) } /* + * "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 */ static const vshCmdInfo info_schedinfo[] = { @@ -9273,6 +9327,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}, diff --git a/tools/virsh.pod b/tools/virsh.pod index 2b2227f..eb1fd04 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -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 -- 1.6.6.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list