Stop OVS from generating misleading add-br errors 97/2697/5
authorDino Simeon Madarang <dino.simeonx.madarang@intel.com>
Thu, 15 Oct 2015 15:01:14 +0000 (16:01 +0100)
committerMaryam Tahhan <maryam.tahhan@intel.com>
Wed, 28 Oct 2015 10:19:05 +0000 (10:19 +0000)
Create bridge and set datapath_type in 1 transaction to prevent OVS from
generating misleading error messages which jenkins considers as
build errors.

Update vswitch interface to include optional parameters.

Change-Id: I668f474ea909b284f3726807aab42d52ae2fb504
JIRA: VSPERF-122
Signed-off-by: Dino Simeon Madarang <dino.simeonx.madarang@intel.com>
Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com>
Reviewed-by: Billy O Mahony <billy.o.mahony@intel.com>
Reviewed-by: Gene Snider <eugene.snider@huawei.com>
Reviewed-by: Martin Klozik <martinx.klozik@intel.com>
Reviewed-by: Radek Zetik <radekx.zetik@intel.com>
src/ovs/ofctl.py
vswitches/ovs_dpdk_vhost.py
vswitches/ovs_vanilla.py
vswitches/vswitch.py

index 7cbdfe2..2aae1ec 100644 (file)
@@ -65,15 +65,18 @@ class OFBase(object):
 
     # datapath management
 
-    def add_br(self, br_name=_OVS_BRIDGE_NAME):
+    def add_br(self, br_name=_OVS_BRIDGE_NAME, params=None):
         """Add datapath.
 
         :param br_name: Name of bridge
 
         :return: Instance of :class OFBridge:
         """
+        if params is None:
+            params = []
+
         self.logger.debug('add bridge')
-        self.run_vsctl(['add-br', br_name])
+        self.run_vsctl(['add-br', br_name]+params)
 
         return OFBridge(br_name, self.timeout)
 
@@ -133,11 +136,14 @@ class OFBridge(OFBase):
         return tasks.run_task(
             cmd, self.logger, 'Running ovs-ofctl...', check_error)
 
-    def create(self):
+    def create(self, params=None):
         """Create bridge.
         """
+        if params is None:
+            params = []
+
         self.logger.debug('create bridge')
-        self.add_br(self.br_name)
+        self.add_br(self.br_name, params=params)
 
     def destroy(self):
         """Destroy bridge.
index 874cc97..553915b 100644 (file)
@@ -69,11 +69,17 @@ class OvsDpdkVhost(IVSwitch):
         dpdk.cleanup()
         dpdk.remove_vhost_modules()
 
-    def add_switch(self, switch_name):
+    def add_switch(self, switch_name, params=None):
         """See IVswitch for general description
         """
         bridge = OFBridge(switch_name)
-        bridge.create()
+        if params is None:
+            bridge.create(['--', 'set', 'bridge', switch_name,
+                           'datapath_type=netdev'])
+        else:
+            bridge.create(['--', 'set', 'bridge', switch_name,
+                                       'datapath_type=netdev'] + params)
+
         bridge.set_db_attribute('Open_vSwitch', '.',
                                 'other_config:max-idle',
                                 settings.getValue('VSWITCH_FLOW_TIMEOUT'))
@@ -85,8 +91,6 @@ class OvsDpdkVhost(IVSwitch):
                                     'other_config:pmd-cpu-mask',
                                     settings.getValue('VSWITCH_PMD_CPU_MASK'))
 
-        bridge.set_db_attribute('Bridge', bridge.br_name,
-                                'datapath_type', 'netdev')
         self._bridges[switch_name] = bridge
 
     def del_switch(self, switch_name):
index acea4ec..04058d9 100644 (file)
@@ -77,11 +77,11 @@ class OvsVanilla(IVSwitch):
         self._module_manager.remove_modules()
 
 
-    def add_switch(self, switch_name):
+    def add_switch(self, switch_name, params=None):
         """See IVswitch for general description
         """
         bridge = OFBridge(switch_name)
-        bridge.create()
+        bridge.create(params)
         bridge.set_db_attribute('Open_vSwitch', '.',
                                 'other_config:max-idle', '60000')
         self._bridges[switch_name] = bridge
index dbf3e7d..fbec861 100644 (file)
@@ -36,10 +36,12 @@ class IVSwitch(object):
         """
         raise NotImplementedError()
 
-    def add_switch(self, switch_name):
+    def add_switch(self, switch_name, params):
         """Create a new logical switch with no ports
 
         :param switch_name: The name of the new logical switch
+        :param params: Optional parameters to configure switch
+
         :returns: None
         """
         raise NotImplementedError()