[Kimchi-devel] [PATCH] [Kimchi] Fix issue #810

Lucio Correia luciojhc at linux.vnet.ibm.com
Mon Jan 11 17:45:41 UTC 2016


Add an error message asking user to disable NetworkManager.

Signed-off-by: Lucio Correia <luciojhc at linux.vnet.ibm.com>
---
 i18n.py           | 1 +
 model/config.py   | 2 ++
 model/networks.py | 8 ++++++++
 3 files changed, 11 insertions(+)

diff --git a/i18n.py b/i18n.py
index 7a72a86..a575922 100644
--- a/i18n.py
+++ b/i18n.py
@@ -273,6 +273,7 @@ messages = {
     "KCHNET0024E": _("Unable to redefine interface %(name)s. Details: %(err)s"),
     "KCHNET0025E": _("Unable to create bridge %(name)s. Details: %(err)s"),
     "KCHNET0026E": _("Open VSwitch bridges can only host bridged networks."),
+    "KCHNET0027E": _("Unable to create bridge with NetworkManager enabled. Disable it and try again."),
 
     "KCHSR0001E": _("Storage server %(server)s was not used by Kimchi"),
 
diff --git a/model/config.py b/model/config.py
index e552edb..5a26957 100644
--- a/model/config.py
+++ b/model/config.py
@@ -54,6 +54,7 @@ class CapabilitiesModel(object):
         self.libvirt_stream_protocols = []
         self.fc_host_support = False
         self.kernel_vfio = False
+        self.nm_running = False
         self.mem_hotplug_support = False
 
         # Subscribe function to set host capabilities to be run when cherrypy
@@ -90,6 +91,7 @@ class CapabilitiesModel(object):
         self.nfs_target_probe = FeatureTests.libvirt_support_nfs_probe(conn)
         self.fc_host_support = FeatureTests.libvirt_support_fc_host(conn)
         self.kernel_vfio = FeatureTests.kernel_support_vfio()
+        self.nm_running = FeatureTests.is_nm_running()
         self.mem_hotplug_support = FeatureTests.has_mem_hotplug_support(conn)
 
         self.libvirt_stream_protocols = []
diff --git a/model/networks.py b/model/networks.py
index bfe8d2a..fba181f 100644
--- a/model/networks.py
+++ b/model/networks.py
@@ -32,6 +32,7 @@ from wok.xmlutils.utils import xpath_get_text
 
 from wok.plugins.kimchi import netinfo
 from wok.plugins.kimchi import network as knetwork
+from wok.plugins.kimchi.model.config import CapabilitiesModel
 from wok.plugins.kimchi.osinfo import defaults as tmpl_defaults
 from wok.plugins.kimchi.xmlutils.interface import get_iface_xml
 from wok.plugins.kimchi.xmlutils.network import create_linux_bridge_xml
@@ -49,6 +50,8 @@ class NetworksModel(object):
         if self.conn.isQemuURI():
             self._check_default_networks()
 
+        self.caps = CapabilitiesModel(**kargs)
+
     def _check_default_networks(self):
         networks = list(set(tmpl_defaults['networks']))
         conn = self.conn.get()
@@ -192,6 +195,11 @@ class NetworksModel(object):
 
         # User wants Linux bridge network, but didn't specify bridge interface
         elif params['connection'] == "bridge":
+
+            # libvirt will fail to create bridge if NetworkManager is enabled
+            if self.caps.nm_running:
+                raise InvalidParameter('KCHNET0027E')
+
             # create Linux bridge interface first and use it as actual iface
             iface = self._create_linux_bridge(iface)
             params['bridge'] = iface
-- 
1.9.1




More information about the Kimchi-devel mailing list