diff options
author | Martin Klozik <martinx.klozik@intel.com> | 2015-09-25 18:00:17 +0100 |
---|---|---|
committer | Maryam Tahhan <maryam.tahhan@intel.com> | 2015-10-07 14:53:13 +0000 |
commit | 89e23da8e473387b2e6cb37a2b882d2d3c68655c (patch) | |
tree | 41bd86bc1447bf9bcbfa33cd95f175c258ede9d7 /core/vnf_controller.py | |
parent | 1550b638fca662c5e68556702ff0316c3fc9562c (diff) |
Enable PVVP deployment for DPDK Vhost User and Vhost Cuse
Generic PVVP deployment support has been added. Two
new testcase scenarios for throughput and back2back
tests with PVVP deployment were added. Original
implementation of PVP has been refactored
Following files were affected:
modified: conf/01_testcases.conf
modified: conf/02_vswitch.conf
modified: conf/04_vnf.conf
modified: core/__init__.py
modified: core/component_factory.py
modified: core/loader/loader_servant.py
modified: core/vnf_controller.py
deleted: core/vnf_controller_p2p.py
deleted: core/vnf_controller_pvp.py
modified: core/vswitch_controller_p2p.py
modified: core/vswitch_controller_pvp.py
new file: core/vswitch_controller_pvvp.py
modified: docs/to-be-reorganized/NEWS.rst
modified: docs/to-be-reorganized/quickstart.rst
modified: src/dpdk/dpdk.py
modified: src/ovs/ofctl.py
modified: testcases/testcase.py
modified: tools/tasks.py
new file: vnfs/qemu/qemu.py
new file: vnfs/qemu/qemu_dpdk.py
modified: vnfs/qemu/qemu_dpdk_vhost_cuse.py
modified: vnfs/qemu/qemu_dpdk_vhost_user.py
modified: vnfs/vnf/vnf.py
modified: vswitches/ovs_dpdk_vhost.py
Change-Id: Ib6869a29337a184cb58c57fd96bba1183aba00ab
JIRA: VSPERF-68, VSPERF-69
Signed-off-by: Martin Klozik (martinx.klozik@intel.com)
Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com>
Reviewed-by: Brian Castelli <brian.castelli@spirent.com>
Diffstat (limited to 'core/vnf_controller.py')
-rw-r--r-- | core/vnf_controller.py | 59 |
1 files changed, 45 insertions, 14 deletions
diff --git a/core/vnf_controller.py b/core/vnf_controller.py index be1c7c4a..3d3be040 100644 --- a/core/vnf_controller.py +++ b/core/vnf_controller.py @@ -14,35 +14,66 @@ """ VNF Controller interface """ -class IVnfController(object): - """Abstract class which defines a VNF controller +import logging - Used to set-up and control a VNF provider for a particular - deployment scenario. +class VnfController(object): + """VNF controller class + + Used to set-up and control VNFs for specified scenario + + Attributes: + _vnf_class: A class object representing the VNF to be used. + _deployment_scenario: A string describing the scenario to set-up in the + constructor. + _vnfs: A list of vnfs controlled by the controller. """ + def __init__(self, deployment_scenario, vnf_class): + """Sets up the VNF infrastructure for the PVP deployment scenario. + + :param vnf_class: The VNF class to be used. + """ + self._logger = logging.getLogger(__name__) + self._vnf_class = vnf_class + self._deployment_scenario = deployment_scenario.upper() + if self._deployment_scenario == 'P2P': + self._vnfs = [] + if self._deployment_scenario == 'PVP': + self._vnfs = [vnf_class()] + elif self._deployment_scenario == 'PVVP': + self._vnfs = [vnf_class(), vnf_class()] + self._logger.debug('__init__ ' + str(len(self._vnfs)) + + ' VNF[s] with ' + ' '.join(map(str, self._vnfs))) + def get_vnfs(self): """Returns a list of vnfs controlled by this controller. """ - raise NotImplementedError( - "The VnfController does not implement", - "the \"get_vnfs\" function.") + self._logger.debug('get_vnfs ' + str(len(self._vnfs)) + + ' VNF[s] with ' + ' '.join(map(str, self._vnfs))) + return self._vnfs - #TODO: Decide on contextmanager or __enter/exit__ strategy <MH 2015-05-01> def start(self): """Boots all VNFs set-up by __init__. This is a blocking function. """ - raise NotImplementedError( - "The VnfController does not implement", - "the \"start\" function.") + self._logger.debug('start ' + str(len(self._vnfs)) + + ' VNF[s] with ' + ' '.join(map(str, self._vnfs))) + for vnf in self._vnfs: + vnf.start() def stop(self): """Stops all VNFs set-up by __init__. This is a blocking function. """ - raise NotImplementedError( - "The VnfController does not implement", - "the \"stop\" function.") + self._logger.debug('stop ' + str(len(self._vnfs)) + + ' VNF[s] with ' + ' '.join(map(str, self._vnfs))) + for vnf in self._vnfs: + vnf.stop() + + def __enter__(self): + self.start() + + def __exit__(self, type_, value, traceback): + self.stop() |