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 a626759..af2574d 100644
--- a/ui/pages/i18n.html.tmpl
+++ b/ui/pages/i18n.html.tmpl
@@ -118,6 +118,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.")",
--
1.8.5.3