diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties
index 2fdd1e50ea2..b4e3f1d8d5b 100644
--- a/client/WEB-INF/classes/resources/messages.properties
+++ b/client/WEB-INF/classes/resources/messages.properties
@@ -731,6 +731,8 @@ message.volume.create.template.confirm=Please confirm that you wish to create a
message.zone.step.1.desc=Please select a network model for your zone.
message.zone.step.2.desc=Please enter the following info to add a new zone
message.zone.step.3.desc=Please enter the following info to add a new pod
+message.apply.snapshot.policy=You have successfully updated your current snapshot policy.
+message.disable.snapshot.policy=You have successfully disabled your current snapshot policy.
#Errors
error.login=Your username/password does not match our records.
diff --git a/ui/jsp/volume.jsp b/ui/jsp/volume.jsp
index d7263ffbde6..b34fd9de6e1 100644
--- a/ui/jsp/volume.jsp
+++ b/ui/jsp/volume.jsp
@@ -26,7 +26,9 @@ dictionary = {
'label.action.delete.snapshot' : '',
'label.action.delete.snapshot.processing' : '',
'message.action.delete.snapshot' : '',
- 'message.download.volume' : ''
+ 'message.download.volume' : '',
+ 'message.disable.snapshot.policy' : '',
+ 'message.apply.snapshot.policy' : ''
};
@@ -308,12 +310,11 @@ dictionary = {
:
+
+
+
+
+ : Enabled
+
+
+
+
+ (info)
+
diff --git a/ui/scripts/cloud.core.volume.js b/ui/scripts/cloud.core.volume.js
index 5f5cea11826..5d225e5c2dd 100644
--- a/ui/scripts/cloud.core.volume.js
+++ b/ui/scripts/cloud.core.volume.js
@@ -226,12 +226,16 @@ function afterLoadVolumeJSP() {
$("#snapshot_interval").change(function(event) {
var thisElement = $(this);
var snapshotInterval = thisElement.val();
- var jsonObj = thisElement.data("jsonObj");
+ var $snapshotIntervalOption = thisElement.find("#snapshot_interval_"+snapshotInterval);
+ var jsonObj = $snapshotIntervalOption.data("jsonObj");
var $dialog = $("#dialog_recurring_snapshot");
+ if (jsonObj == undefined || jsonObj == null) {
+ $dialog.find("#policy_enabled").text("Disabled");
+ } else {
+ $dialog.find("#policy_enabled").text("Enabled");
+ }
+ $dialog.find("#info_container").hide();
switch (snapshotInterval) {
- case "-1":
- $dialog.find("#snapshot_form").hide();
- break;
case "0":
$dialog.find("#edit_time_colon, #edit_hour_container, #edit_meridiem_container, #edit_day_of_week_container, #edit_day_of_month_container").hide();
$dialog.find("#edit_past_the_hour, #edit_minute_container").show();
@@ -239,6 +243,10 @@ function afterLoadVolumeJSP() {
$dialog.find("#edit_minute").val(jsonObj.schedule);
$dialog.find("#edit_max").val(jsonObj.maxsnaps);
$dialog.find("#edit_timezone").val(jsonObj.timezone);
+ } else {
+ $dialog.find("#edit_minute").val("");
+ $dialog.find("#edit_max").val("");
+ $dialog.find("#edit_timezone").val("");
}
$dialog.find("#snapshot_form").show();
break;
@@ -266,7 +274,13 @@ function afterLoadVolumeJSP() {
$dialog.find("#edit_meridiem").val(meridiem);
$dialog.find("#edit_max").val(jsonObj.maxsnaps);
$dialog.find("#edit_timezone").val(jsonObj.timezone);
- }
+ } else {
+ $dialog.find("#edit_minute").val("");
+ $dialog.find("#edit_hour").val("");
+ $dialog.find("#edit_meridiem").val("");
+ $dialog.find("#edit_max").val("");
+ $dialog.find("#edit_timezone").val("");
+ }
$dialog.find("#snapshot_form").show();
break;
case "2":
@@ -294,6 +308,13 @@ function afterLoadVolumeJSP() {
$dialog.find("#edit_day_of_week").val(parts[2]);
$dialog.find("#edit_max").val(jsonObj.maxsnaps);
$dialog.find("#edit_timezone").val(jsonObj.timezone);
+ } else {
+ $dialog.find("#edit_minute").val("");
+ $dialog.find("#edit_hour").val("");
+ $dialog.find("#edit_meridiem").val("");
+ $dialog.find("#edit_day_of_week").val("");
+ $dialog.find("#edit_max").val("");
+ $dialog.find("#edit_timezone").val("");
}
$dialog.find("#snapshot_form").show();
break;
@@ -321,6 +342,13 @@ function afterLoadVolumeJSP() {
$dialog.find("#edit_day_of_month").val(parts[2]);
$dialog.find("#edit_max").val(jsonObj.maxsnaps);
$dialog.find("#edit_timezone").val(jsonObj.timezone);
+ } else {
+ $dialog.find("#edit_minute").val("");
+ $dialog.find("#edit_hour").val("");
+ $dialog.find("#edit_meridiem").val("");
+ $dialog.find("#edit_day_of_month").val("");
+ $dialog.find("#edit_max").val("");
+ $dialog.find("#edit_timezone").val("");
}
$dialog.find("#snapshot_form").show();
break;
@@ -806,12 +834,15 @@ function doRecurringSnapshot($actionLink, $detailsTab, $midmenuItem1) {
var items = json.listsnapshotpoliciesresponse.snapshotpolicy;
var $snapInterval = dialogBox.find("#snapshot_interval");
if(items!=null && items.length>0) {
- var item = items[0]; // We only expect a single policy.
- $snapInterval.val(item.intervaltype).data("jsonObj", item);
+ for (var i = 0; i < items.length; i++) {
+ var item = items[i];
+ $snapInterval.find("#snapshot_interval_"+item.intervaltype).data("jsonObj", item);
+ }
} else {
- $snapInterval.val("-1").data("jsonObj", null);
+ // Maybe use a different message
}
clearBottomPanel();
+ $snapInterval.val("0"); //default to hourly
$snapInterval.change();
dialogBox.dialog('option', 'buttons', {
@@ -823,23 +854,6 @@ function doRecurringSnapshot($actionLink, $detailsTab, $midmenuItem1) {
var intervalType = thisDialog.find("#snapshot_interval").val();
var minute, hour12, hour24, meridiem, dayOfWeek, dayOfWeekString, dayOfMonth, schedule, max, timezone;
switch(intervalType) {
- case "-1":
- var $snapshotInterval = $(this).find("#snapshot_interval");
- var jsonObj = $snapshotInterval.data("jsonObj");
- if(jsonObj != null) {
- $.ajax({
- data: createURL("command=deleteSnapshotPolicies&id="+jsonObj.id),
- dataType: "json",
- success: function(json) {
- $snapshotInterval.val("-1");
- },
- error: function(XMLHttpResponse) {
- handleError(XMLHttpResponse);
- }
- });
- }
- thisDialog.dialog("close");
- return false;
case "0":
var isValid = true;
isValid &= validateInteger("Keep # of snapshots", bottomPanel.find("#edit_max"), bottomPanel.find("#edit_max_errormsg"));
@@ -906,11 +920,16 @@ function doRecurringSnapshot($actionLink, $detailsTab, $midmenuItem1) {
break;
}
var thisLink;
+ var $snapshotInterval = thisDialog.find("#snapshot_interval");
+ var $snapshotIntervalOption = thisDialog.find("#snapshot_interval_"+$snapshotInterval.val());
$.ajax({
data: createURL("command=createSnapshotPolicy&intervaltype="+intervalType+"&schedule="+schedule+"&volumeid="+volumeId+"&maxsnaps="+max+"&timezone="+todb(timezone)),
dataType: "json",
success: function(json) {
- thisDialog.dialog("close");
+ $snapshotIntervalOption.data("jsonObj", json.createsnapshotpolicyresponse.snapshotpolicy);
+ $snapshotInterval.change();
+ thisDialog.find("#info").text(dictionary[message.apply.snapshot.policy]);
+ thisDialog.find("#info_container").show();
},
error: function(XMLHttpResponse) {
handleError(XMLHttpResponse);
@@ -918,21 +937,25 @@ function doRecurringSnapshot($actionLink, $detailsTab, $midmenuItem1) {
});
},
"Disable": function() {
- var $snapshotInterval = $(this).find("#snapshot_interval");
- var jsonObj = $snapshotInterval.data("jsonObj");
+ var thisDialog = $(this);
+ var $snapshotInterval = thisDialog.find("#snapshot_interval");
+ var $snapshotIntervalOption = thisDialog.find("#snapshot_interval_"+$snapshotInterval.val());
+ var jsonObj = $snapshotIntervalOption.data("jsonObj");
if(jsonObj != null) {
$.ajax({
data: createURL("command=deleteSnapshotPolicies&id="+jsonObj.id),
dataType: "json",
- success: function(json) {
- $snapshotInterval.val("-1");
+ success: function(json) {
+ $snapshotIntervalOption.data("jsonObj", null);
+ $snapshotInterval.change();
+ thisDialog.find("#info").text(dictionary[message.disable.snapshot.policy]);
+ thisDialog.find("#info_container").show();
},
error: function(XMLHttpResponse) {
handleError(XMLHttpResponse);
}
});
}
- $(this).dialog("close");
},
"Close": function() {
$(this).dialog("close");