diff options
author | Dino Simeon Madarang <dino.simeonx.madarang@intel.com> | 2016-01-08 15:31:36 +0000 |
---|---|---|
committer | Maryam Tahhan <maryam.tahhan@intel.com> | 2016-01-12 12:38:59 +0000 |
commit | 76aba6f4fcb5e2a030893c01a3103bf8e94aa288 (patch) | |
tree | 4819464b0f3bc26b42d309f0860541f782fac399 | |
parent | b2b11bf301bbe37befdda23e2a0f1501c079405f (diff) |
vswitches: Remove datapath after stopping OVS
Remove the datapath that OVS creates, ovs-system, (can be viewed by ip link)
after running OVS vanilla tests.
Change-Id: I087c7b3f5afa546258227939ffcb38f0192f0d98
JIRA: VSPERF-175
Signed-off-by: Dino Simeon Madarang <dino.simeonx.madarang@intel.com>
Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com>
Reviewed-by: Martin Klozik <martinx.klozik@intel.com>
Reviewed-by: Al Morton <acmorton@att.com>
Reviewed-by: Brian Castelli <brian.castelli@spirent.com>
-rw-r--r-- | src/ovs/__init__.py | 1 | ||||
-rw-r--r-- | src/ovs/dpctl.py | 71 | ||||
-rw-r--r-- | vswitches/ovs_vanilla.py | 5 |
3 files changed, 76 insertions, 1 deletions
diff --git a/src/ovs/__init__.py b/src/ovs/__init__.py index 1a31ea2e..8c157006 100644 --- a/src/ovs/__init__.py +++ b/src/ovs/__init__.py @@ -23,3 +23,4 @@ and external setup of vswitchd-external process, kernel modules etc. from src.ovs.daemon import * from src.ovs.ofctl import * +from src.ovs.dpctl import * diff --git a/src/ovs/dpctl.py b/src/ovs/dpctl.py new file mode 100644 index 00000000..8ecac6dc --- /dev/null +++ b/src/ovs/dpctl.py @@ -0,0 +1,71 @@ +# Copyright 2016 Intel Corporation. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Wrapper for an OVS dpctl (``ovs-dpctl``) for managing datapaths. + +""" + +import os +import logging +import string + +from tools import tasks +from conf import settings + +_OVS_DPCTL_BIN = os.path.join(settings.getValue('OVS_DIR'), 'utilities', + 'ovs-dpctl') + +_OVS_LOCAL_DATAPATH = 'ovs-system' + +class DPCtl(object): + """remove/show datapaths using ``ovs-dpctl``. + """ + def __init__(self, timeout=10): + """Initialise logger. + + :param timeout: Timeout to be used for each command + + :returns: None + """ + self.logger = logging.getLogger(__name__) + self.timeout = timeout + + # helpers + + def run_dpctl(self, args, check_error=False): + """Run ``ovs-dpctl`` with supplied arguments. + + :param args: Arguments to pass to ``ovs-dpctl`` + :param check_error: Throw exception on error + + :return: None + """ + cmd = ['sudo', _OVS_DPCTL_BIN, + '--timeout', + str(self.timeout)] + args + return tasks.run_task( + cmd, self.logger, 'Running ovs-dpctl ..', check_error) + + # datapath management + + def del_dp(self, dp_name=_OVS_LOCAL_DATAPATH): + """Delete local datapath (ovs-dpctl). + + :param br_name: Name of bridge + + :return: None + """ + self.logger.debug('delete datapath ' + dp_name) + self.run_dpctl(['del-dp', dp_name]) + diff --git a/vswitches/ovs_vanilla.py b/vswitches/ovs_vanilla.py index 04058d97..c6617404 100644 --- a/vswitches/ovs_vanilla.py +++ b/vswitches/ovs_vanilla.py @@ -18,7 +18,7 @@ import logging from conf import settings from vswitches.vswitch import IVSwitch -from src.ovs import VSwitchd, OFBridge +from src.ovs import VSwitchd, OFBridge, DPCtl from tools.module_manager import ModuleManager from tools import tasks @@ -74,6 +74,9 @@ class OvsVanilla(IVSwitch): self._vport_id = 0 self._vswitchd.kill() + dpctl = DPCtl() + dpctl.del_dp() + self._module_manager.remove_modules() |