docs: adding license to rest of rst files
[vswitchperf.git] / core / pktfwd_controller.py
1 # Copyright 2016 Intel Corporation.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #   http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 """Packet forwarder controller for Physical to Physical deployment
16 """
17
18 import logging
19
20 class PktFwdController(object):
21     """Packet forwarder controller for P2P deployment scenario.
22
23     Attributes:
24         _pktfwd_class: The packet forwarder class to be used.
25         _pktfwd: The packet forwarder object controlled by this controller
26     """
27     def __init__(self, pktfwd_class):
28         """Initializes up the prerequisites for the P2P deployment scenario.
29
30         :vswitch_class: the vSwitch class to be used.
31         """
32         self._logger = logging.getLogger(__name__)
33         self._pktfwd_class = pktfwd_class
34         self._pktfwd = pktfwd_class()
35         self._logger.debug('Creation using ' + str(self._pktfwd_class))
36
37     def setup(self):
38         """Sets up the packet forwarder for p2p.
39         """
40         self._logger.debug('Setup using ' + str(self._pktfwd_class))
41
42         try:
43             self._pktfwd.start()
44         except:
45             self._pktfwd.stop()
46             raise
47
48     def stop(self):
49         """Tears down the packet forwarder created in setup().
50         """
51         self._logger.debug('Stop using ' + str(self._pktfwd_class))
52         self._pktfwd.stop()
53
54     def __enter__(self):
55         self.setup()
56
57     def __exit__(self, type_, value, traceback):
58         self.stop()
59
60     def get_pktfwd(self):
61         """Get the controlled packet forwarder
62
63         :return: The controlled IPktFwd
64         """
65         return self._pktfwd
66
67     def dump_vswitch_flows(self):
68         """ Dumps flows from vswitch
69         """
70         raise NotImplementedError(
71             "The PktFwdController does not implement the "
72             "\"dump_vswitch_flows\" function.")