diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties
index 2e9d356069c..e11ec462366 100644
--- a/client/WEB-INF/classes/resources/messages.properties
+++ b/client/WEB-INF/classes/resources/messages.properties
@@ -13,6 +13,9 @@ label.cidr.list=Source CIDR
force.delete=Force Delete
force.delete.domain.warning=Warning: Choosing this option will cause the deletion of all child domains and all associated accounts and their resources.
+force.stop=Force Stop
+force.stop.instance.warning=Warning: Forcing a stop on this instance should be your last option. It can lead to data loss as well as inconsistent behavior of the virtual machine's state. Please consult with the Administrator Guide or Cloud.com Support before executing this command.
+
label.PreSetup=PreSetup
label.SR.name = SR Name-Label
label.SharedMountPoint=SharedMountPoint
diff --git a/ui/jsp/instance.jsp b/ui/jsp/instance.jsp
index 74b58f73f82..0d3659b15ec 100644
--- a/ui/jsp/instance.jsp
+++ b/ui/jsp/instance.jsp
@@ -1452,6 +1452,28 @@ dictionary = {
+
+
+
+
+
diff --git a/ui/scripts/cloud.core.instance.js b/ui/scripts/cloud.core.instance.js
index b8cab6cdd7d..3857fef8f94 100644
--- a/ui/scripts/cloud.core.instance.js
+++ b/ui/scripts/cloud.core.instance.js
@@ -140,7 +140,14 @@ function afterLoadInstanceJSP() {
initDialog("dialog_change_service_offering", 600);
initDialog("dialog_create_template", 400);
initDialog("dialog_migrate_instance", 600);
-
+ initDialog("dialog_confirmation_stop_vm");
+
+ var $dialogStopVm = $("#dialog_confirmation_stop_vm");
+ if(isAdmin()) {
+ $dialogStopVm.find("#force_stop_instance_container").show();
+ }
+
+
$.ajax({
data: createURL("command=listOsTypes"),
dataType: "json",
@@ -219,8 +226,7 @@ function bindStopVMButton() {
return false;
}
- $("#dialog_confirmation")
- .text(dictionary["message.action.stop.instance"])
+ $("#dialog_confirmation_stop_vm")
.dialog('option', 'buttons', {
"Confirm": function() {
$(this).dialog("close");
@@ -237,11 +243,13 @@ function bindStopVMButton() {
vmToRightPanel($midmenuItem1);
}
}
-
- for(var id in selectedItemsInMidMenu) {
- var apiCommand = "command=stopVirtualMachine&id="+id;
- doActionToMidMenu(id, apiInfo, apiCommand);
- }
+
+ var isForced = $("#dialog_confirmation_stop_vm").find("#force_stop_instance").attr("checked").toString();
+
+ for(var id in selectedItemsInMidMenu) {
+ var apiCommand = "command=stopVirtualMachine&id="+id+"&forced="+isForced;
+ doActionToMidMenu(id, apiInfo, apiCommand);
+ }
selectedItemsInMidMenu = {}; //clear selected items for action
},
@@ -1409,15 +1417,15 @@ function doStartVM($actionLink, $detailsTab, $midmenuItem1) {
}
function doStopVM($actionLink, $detailsTab, $midmenuItem1) {
- $("#dialog_confirmation")
- .text(dictionary["message.action.stop.instance"])
+ $("#dialog_confirmation_stop_vm")
.dialog('option', 'buttons', {
"Confirm": function() {
$(this).dialog("close");
var jsonObj = $midmenuItem1.data("jsonObj");
- var id = jsonObj.id;
- var apiCommand = "command=stopVirtualMachine&id="+id;
+ var id = jsonObj.id;
+ var isForced = $("#dialog_confirmation_stop_vm").find("#force_stop_instance").attr("checked").toString();
+ var apiCommand = "command=stopVirtualMachine&id="+id+"&forced="+isForced;
doActionToTab(id, $actionLink, apiCommand, $midmenuItem1, $detailsTab);
},
"Cancel": function() {