[Kimchi-devel] [PATCH] [Kimchi] Kimchi kills Wokd due to sys.exit() calls in files networks.py and storagepools.py
Ramon Medeiros
ramonn at linux.vnet.ibm.com
Sat Jul 23 15:34:25 UTC 2016
Would be nice to create a custom exception, like happens on
src/wok/exception.py. You can also set the http status
On 07/22/2016 08:14 PM, bianca at linux.vnet.ibm.com wrote:
> From: Bianca Carvalho <bianca at linux.vnet.ibm.com>
>
> Removed all sys.exit(1) calls from both files to avoid killing Wokd.
> Also added an Exception to not load kimchi plugin in case network or
> storagepool does not exist or is not active.
>
> Signed-off-by: Bianca Carvalho <bianca at linux.vnet.ibm.com>
> ---
> model/networks.py | 16 +++++++---------
> model/storagepools.py | 19 ++++++++-----------
> 2 files changed, 15 insertions(+), 20 deletions(-)
>
> diff --git a/model/networks.py b/model/networks.py
> index 4b722d3..35431d4 100644
> --- a/model/networks.py
> +++ b/model/networks.py
> @@ -20,7 +20,6 @@
> import copy
> import ipaddr
> import libvirt
> -import sys
> import time
> from libvirt import VIR_INTERFACE_XML_INACTIVE
>
> @@ -59,19 +58,19 @@ class NetworksModel(object):
> networks = list(set(tmpl_defaults['networks']))
> conn = self.conn.get()
>
> - error_msg = ("Please, check the configuration in %s/template.conf to "
> - "ensure it lists only valid networks." %
> - kimchiPaths.sysconf_dir)
> -
> for net_name in networks:
> + error_msg = ("Network %s does not exist or is not "
> + "active. Please, check the configuration in "
> + "%s/template.conf to ensure it lists only valid "
> + "networks." % (net_name, kimchiPaths.sysconf_dir))
> +
> try:
> net = conn.networkLookupByName(net_name)
> except libvirt.libvirtError, e:
> msg = "Fatal: Unable to find network %s."
> wok_log.error(msg, net_name)
> - wok_log.error(error_msg)
> wok_log.error("Details: %s", e.message)
> - sys.exit(1)
> + raise Exception(error_msg)
>
> if net.isActive() == 0:
> try:
> @@ -79,9 +78,8 @@ class NetworksModel(object):
> except libvirt.libvirtError as e:
> msg = "Fatal: Unable to activate network %s."
> wok_log.error(msg, net_name)
> - wok_log.error(error_msg)
> wok_log.error("Details: %s", e.message)
> - sys.exit(1)
> + raise Exception(error_msg)
>
> def create(self, params):
> conn = self.conn.get()
> diff --git a/model/storagepools.py b/model/storagepools.py
> index 3f6a734..a2dbaec 100644
> --- a/model/storagepools.py
> +++ b/model/storagepools.py
> @@ -19,7 +19,6 @@
>
> import libvirt
> import lxml.etree as ET
> -import sys
> from lxml.builder import E
>
> from wok.exception import InvalidOperation, MissingParameter
> @@ -82,21 +81,21 @@ class StoragePoolsModel(object):
> if config.get('kimchi', {}).get('create_iso_pool', False):
> pools['ISO'] = {'path': '/var/lib/kimchi/isos'}
>
> - error_msg = ("Please, check the configuration in %s/template.conf to "
> - "ensure it has a valid storage pool." %
> - kimchiPaths.sysconf_dir)
> -
> conn = self.conn.get()
> for pool_name in pools:
> + error_msg = ("Storage pool %s does not exist or is not "
> + "active. Please, check the configuration in "
> + "%s/template.conf to ensure it lists only valid "
> + "networks." % (pool_name, kimchiPaths.sysconf_dir))
> try:
> pool = conn.storagePoolLookupByName(pool_name)
> except libvirt.libvirtError, e:
> pool_path = pools[pool_name].get('path')
> if pool_path is None:
> - msg = "Fatal: Unable to find storage pool %s. " + error_msg
> + msg = "Fatal: Unable to find storage pool %s. "
> wok_log.error(msg % pool_name)
> wok_log.error("Details: %s", e.message)
> - sys.exit(1)
> + raise Exception(error_msg)
>
> # Try to create the pool
> pool = E.pool(E.name(pool_name), type='dir')
> @@ -106,10 +105,9 @@ class StoragePoolsModel(object):
> pool = conn.storagePoolDefineXML(xml, 0)
> except libvirt.libvirtError, e:
> msg = "Fatal: Unable to create storage pool %s. "
> - msg += error_msg
> wok_log.error(msg % pool_name)
> wok_log.error("Details: %s", e.message)
> - sys.exit(1)
> + raise Exception(error_msg)
>
> # Build and set autostart value to pool
> # Ignore error as the pool was already successfully created
> @@ -127,10 +125,9 @@ class StoragePoolsModel(object):
> pool.create(0)
> except libvirt.libvirtError, e:
> msg = "Fatal: Unable to craete storage pool %s. "
> - msg += error_msg
> wok_log.error(msg % pool_name)
> wok_log.error("Details: %s", e.message)
> - sys.exit(1)
> + raise Exception(error_msg)
>
> def get_list(self):
> try:
--
Ramon Nunes Medeiros
Kimchi Developer
Linux Technology Center Brazil
IBM Systems & Technology Group
Phone : +55 19 2132 7878
ramonn at br.ibm.com
More information about the Kimchi-devel
mailing list