Skip to content

Commit

Permalink
enable deleting snapshots
Browse files Browse the repository at this point in the history
  • Loading branch information
jsuchome committed Sep 11, 2012
1 parent 1a1e71c commit 177fee5
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 8 deletions.
17 changes: 17 additions & 0 deletions agent-snapper/src/SnapperAgent.cc
Expand Up @@ -494,6 +494,23 @@ YCPValue SnapperAgent::Execute(const YCPPath &path, const YCPValue& arg,
snap->flushInfo();
return ret;
}
else if (PC(0) == "delete") {

int num = getIntValue (argmap, YCPString ("num"), 0);

Snapshots& snapshots = sh->getSnapshots();
Snapshots::iterator snap = snapshots.find(num);

if (snap == snapshots.end())
{
snapper_error = "not_found";
return YCPBoolean (false);
}

sh->deleteSnapshot(snap);
return ret;
}

/**
* Rollback the list of given files from snapshot num1 to num2 (system by default)
*/
Expand Down
25 changes: 25 additions & 0 deletions src/Snapper.ycp
Expand Up @@ -245,6 +245,31 @@ global boolean InitializeSnapper (string config) {

}

/**
* Delete existing snapshot
* Return true on success
*/
global boolean DeleteSnapshot (map args) {

boolean success = (boolean) SCR::Execute (.snapper.delete, args);
if (!success)
{
map err_map = LastSnapperErrorMap ();
string type = err_map["type"]:"";
string details = _("Reason not known.");

if (type == "not_found")
{
details = _("Snapshot was not found.");
}

y2warning ("deleting failed with '%1'", err_map);
// error popup
Report::Error (sformat (_("Failed to delete snapshot:
%1"), details));
}
return success;
}
/**
* Modify existing snapshot
* Return true on success
Expand Down
33 changes: 25 additions & 8 deletions src/dialogs.ycp
Expand Up @@ -288,6 +288,21 @@ boolean CreateSnapshotPopup (list<integer> pre_snapshots) {
return created;
}

/**
* Popup for deleting existing snapshot
* @return true if snapshot was deleted
*/
boolean DeleteSnapshotPopup (map snapshot) {

boolean deleted = false;
// yes/no popup question
if (Popup::YesNo (sformat (_("Really delete snapshot '%1'?"), snapshot["num"]:0)) == false)
{
return false;
}
return Snapper::DeleteSnapshot (snapshot);
}

/**
* Summary dialog
* @return dialog result
Expand Down Expand Up @@ -390,10 +405,11 @@ any SummaryDialog() {
),
`HBox (
// button label
`PushButton (`id (`show_c), `opt (`default), _("Show Changes")),
`PushButton (`id (`show), `opt (`default), _("Show Changes")),
`PushButton (`id (`create), Label::CreateButton ()),
// button label
`PushButton (`id (`modify), _("Modify")),
`PushButton (`id (`delete), Label::DeleteButton ()),
`HStretch ()
)
);
Expand All @@ -415,12 +431,7 @@ any SummaryDialog() {

ret = UI::UserInput();

integer selected = 0;

if (ret == `show_c || ret == `snapshots_table) {
selected = (integer) UI::QueryWidget (`id (`snapshots_table), `CurrentItem);
ret = `show;
}
integer selected = (integer) UI::QueryWidget (`id (`snapshots_table), `CurrentItem);

if(ret == `abort || ret == `cancel || ret == `back) {
if(ReallyAbort()) break;
Expand Down Expand Up @@ -456,13 +467,19 @@ Showing differences is not possible."));
}
}
else if (ret == `modify) {
selected = (integer) UI::QueryWidget (`id (`snapshots_table), `CurrentItem);
if (ModifySnapshotPopup (snapshots[selected]:$[]))
{
update_snapshots ();
continue;
}
}
else if (ret == `delete) {
if (DeleteSnapshotPopup (snapshots[selected]:$[]))
{
update_snapshots ();
continue;
}
}
else if (ret == `next) {
break;
}
Expand Down

0 comments on commit 177fee5

Please sign in to comment.