[Kimchi-devel] [PATCH V4 2/3] Fix non persistent network handling (frontend)

Aline Manera alinefm at linux.vnet.ibm.com
Tue Apr 1 18:04:45 UTC 2014


Reviewed-by: Aline Manera <alinefm at 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 at 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.")",




More information about the Kimchi-devel mailing list