summaryrefslogtreecommitdiffstats
path: root/src/ovs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ovs')
-rw-r--r--src/ovs/__init__.py1
-rw-r--r--src/ovs/dpctl.py71
2 files changed, 72 insertions, 0 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])
+