Reviewed-by: Aline Manera <alinefm(a)linux.vnet.ibm.com>
On 03/27/2014 05:35 PM, Rodrigo Trujillo wrote:
If some network is not persistent and the user tries to stop it, it
is going to be removed by libvirt and causes an error in Kimchi.
This patch warns the user with a message in the ui about the situation,
avoinding mistakes.
Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo(a)linux.vnet.ibm.com>
---
ui/js/src/kimchi.network.js | 55 ++++++++++++++++++++++++++++++---------------
ui/pages/i18n.html.tmpl | 1 +
2 files changed, 38 insertions(+), 18 deletions(-)
diff --git a/ui/js/src/kimchi.network.js b/ui/js/src/kimchi.network.js
index 1642b99..7a331be 100644
--- a/ui/js/src/kimchi.network.js
+++ b/ui/js/src/kimchi.network.js
@@ -40,6 +40,7 @@ kimchi.initNetworkListView = function() {
}
network.interface = data[i].interface ? data[i].interface : null;
network.addrSpace = data[i].subnet ? data[i].subnet : null;
+ network.persistent = data[i].persistent;
kimchi.addNetworkItem(network);
}
});
@@ -77,6 +78,27 @@ kimchi.getNetworkItemHtml = function(network) {
return networkItem;
};
+kimchi.stopNetwork = function(network,menu) {
+ $(".network-state", $("#" +
network.name)).switchClass("up", "nw-loading");
+ $("[nwAct='stop']",
menu).addClass("ui-state-disabled");
+ kimchi.toggleNetwork(network.name, false, function() {
+ $("[nwAct='start']",
menu).removeClass("hide-action-item");
+ $("[nwAct='stop']",
menu).addClass("hide-action-item");
+ $("[nwAct='stop']",
menu).removeClass("ui-state-disabled");
+ if (!network.in_use) {
+ $("[nwAct='delete']",
menu).removeClass("ui-state-disabled");
+ $(":first-child", $("[nwAct='delete']",
menu)).removeAttr("disabled");
+ }
+ $(".network-state", $("#" +
network.name)).switchClass("nw-loading", "down");
+ }, function(err) {
+ $(".network-state", $("#" +
network.name)).switchClass("nw-loading", "up");
+ if (!network.in_use) {
+ $("[nwAct='stop']",
menu).removeClass("ui-state-disabled");
+ }
+ kimchi.message.error(err.responseJSON.reason);
+ });
+}
+
kimchi.addNetworkActions = function(network) {
$(".menu-container", "#" + network.name).menu({
position : {
@@ -110,24 +132,21 @@ kimchi.addNetworkActions = function(network) {
kimchi.message.error(err.responseJSON.reason);
});
} else if ($(evt.currentTarget).attr("nwAct") ===
"stop") {
- $(".network-state", $("#" +
network.name)).switchClass("up", "nw-loading");
- $("[nwAct='stop']",
menu).addClass("ui-state-disabled");
- kimchi.toggleNetwork(network.name, false, function() {
- $("[nwAct='start']",
menu).removeClass("hide-action-item");
- $("[nwAct='stop']",
menu).addClass("hide-action-item");
- $("[nwAct='stop']",
menu).removeClass("ui-state-disabled");
- if (!network.in_use) {
- $("[nwAct='delete']",
menu).removeClass("ui-state-disabled");
- $(":first-child",
$("[nwAct='delete']", menu)).removeAttr("disabled");
- }
- $(".network-state", $("#" +
network.name)).switchClass("nw-loading", "down");
- }, function(err) {
- $(".network-state", $("#" +
network.name)).switchClass("nw-loading", "up");
- if (!network.in_use) {
- $("[nwAct='stop']",
menu).removeClass("ui-state-disabled");
- }
- kimchi.message.error(err.responseJSON.reason);
- });
+ if (!network.persistent) {
+ var settings = {
+ title : i18n['KCHAPI6001M'],
+ content : i18n['KCHNET6004M'],
+ confirm : i18n['KCHAPI6002M'],
+ cancel : i18n['KCHAPI6003M']
+ };
+ kimchi.confirm(settings, function() {
+ kimchi.stopNetwork(network, menu);
+ $(evt.currentTarget).parents(".item").remove();
+ }, null);
+ }
+ else {
+ kimchi.stopNetwork(network, menu);
+ }
} else if ($(evt.currentTarget).attr("nwAct") ===
"delete") {
kimchi.confirm({
title : i18n['KCHAPI6006M'],
diff --git a/ui/pages/i18n.html.tmpl b/ui/pages/i18n.html.tmpl
index 61fec7c..caf5104 100644
--- a/ui/pages/i18n.html.tmpl
+++ b/ui/pages/i18n.html.tmpl
@@ -141,6 +141,7 @@ var i18n = {
'KCHNET6001M': "$_("unavailable")",
'KCHNET6002M': "$_("This action will interrupt network
connectivity for any virtual machine that depend on this network.")",
'KCHNET6003M': "$_("Create a network")",
+ 'KCHNET6004M': "$_("This network is not persistent. Instead of
stop, this action will permanently delete it. Would you like to continue?")",
'KCHPOOL6001M': "$_("This will permanently delete the storage
pool. Would you like to continue?")",
'KCHPOOL6002M': "$_("This storage pool is empty.")",