diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties
index 75da7e8ece4..c9e7d8cc38f 100644
--- a/client/WEB-INF/classes/resources/messages.properties
+++ b/client/WEB-INF/classes/resources/messages.properties
@@ -4,6 +4,8 @@ label.action.destroy.systemvm.processing=Destroying System VM....
message.action.destroy.systemvm=Please confirm you want to destroy System VM
label.numretries = Number of Retries
label.timeout.in.second = Timeout(seconds)
+message.action.delete.external.firewall=Please confirm that you would like to remove this external firewall. Warning: If you are planning to add back the same external firewall, you must reset usage data on the device.
+message.action.delete.external.load.balancer=Please confirm that you would like to remove this external load balancer. Warning: If you are planning to add back the same external load balancer, you must reset usage data on the device.
#Labels
label.account.id=Account ID
diff --git a/ui/jsp/network.jsp b/ui/jsp/network.jsp
index 8d9ff31805d..7451b3480e6 100644
--- a/ui/jsp/network.jsp
+++ b/ui/jsp/network.jsp
@@ -15,7 +15,9 @@ dictionary = {
'label.action.delete.load.balancer.processing' : '',
'label.action.delete.network' : '',
'label.action.delete.network.processing' : '',
- 'message.action.delete.network' : ''
+ 'message.action.delete.network' : '',
+ 'message.action.delete.external.firewall': '',
+ 'message.action.delete.external.load.balancer': ''
};
diff --git a/ui/scripts/cloud.core.network.js b/ui/scripts/cloud.core.network.js
index 961359e19fb..9189b1035f1 100644
--- a/ui/scripts/cloud.core.network.js
+++ b/ui/scripts/cloud.core.network.js
@@ -364,9 +364,9 @@ function publicNetworkFirewallJsonToTemplate(jsonObj, $template) {
}
var publicNetworkFirewallActionMap = {
- "label.action.delete.firewall": {
- api: "deleteExternalFirewall",
- isAsyncJob: false,
+ "label.action.delete.firewall": {
+ isAsyncJob: false,
+ dialogBeforeActionFn : doDeleteExternalFirewall,
inProcessText: "label.action.delete.firewall.processing",
afterActionSeccessFn: function(json, id, $subgridItem) {
$subgridItem.slideUp("slow", function() {
@@ -376,6 +376,23 @@ var publicNetworkFirewallActionMap = {
}
}
+function doDeleteExternalFirewall($actionLink, $subgridItem) {
+ var jsonObj = $subgridItem.data("jsonObj");
+ var id = jsonObj.id;
+
+ $("#dialog_confirmation")
+ .text(dictionary["message.action.delete.external.firewall"])
+ .dialog('option', 'buttons', {
+ "Confirm": function() {
+ $(this).dialog("close");
+ var apiCommand = "command=deleteExternalFirewall&id="+id;
+ doActionToSubgridItem(id, $actionLink, apiCommand, $subgridItem);
+ },
+ "Cancel": function() {
+ $(this).dialog("close");
+ }
+ }).dialog("open");
+}
function publicNetworkJsonToLoadBalancerTab() {
var $midmenuItem1 = $("#right_panel_content").data("$midmenuItem1");
@@ -442,9 +459,9 @@ function publicNetworkLoadBalancerJsonToTemplate(jsonObj, $template) {
}
var publicNetworkLoadBalancerActionMap = {
- "label.action.delete.load.balancer": {
- api: "deleteExternalLoadBalancer",
- isAsyncJob: false,
+ "label.action.delete.load.balancer": {
+ isAsyncJob: false,
+ dialogBeforeActionFn: doDeleteExternalLoadBalancer,
inProcessText: "label.action.delete.load.balancer.processing",
afterActionSeccessFn: function(json, id, $subgridItem) {
$subgridItem.slideUp("slow", function() {
@@ -454,6 +471,24 @@ var publicNetworkLoadBalancerActionMap = {
}
}
+function doDeleteExternalLoadBalancer($actionLink, $subgridItem) {
+ var jsonObj = $subgridItem.data("jsonObj");
+ var id = jsonObj.id;
+
+ $("#dialog_confirmation")
+ .text(dictionary["message.action.delete.external.load.balancer"])
+ .dialog('option', 'buttons', {
+ "Confirm": function() {
+ $(this).dialog("close");
+ var apiCommand = "command=deleteExternalLoadBalancer&id="+id;
+ doActionToSubgridItem(id, $actionLink, apiCommand, $subgridItem);
+ },
+ "Cancel": function() {
+ $(this).dialog("close");
+ }
+ }).dialog("open");
+}
+
function bindAddIpRangeToPublicNetworkButton($button, $midmenuItem1) {
var jsonObj = $midmenuItem1.data("jsonObj");