Docker: VSPERF Results Container.
[vswitchperf.git] / core / pktfwd_controller.py
index b1e37f2..363302c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2016 Intel Corporation.
+# Copyright 2016-2018 Intel Corporation., Tieto
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
 """
 
 import logging
+from conf import settings
 
 class PktFwdController(object):
     """Packet forwarder controller for P2P deployment scenario.
@@ -32,13 +33,14 @@ class PktFwdController(object):
         self._deployment = deployment
         self._logger = logging.getLogger(__name__)
         self._pktfwd_class = pktfwd_class
-        self._pktfwd = pktfwd_class()
-        self._logger.debug('Creation using ' + str(self._pktfwd_class))
+        self._pktfwd = pktfwd_class(guest=True if deployment == "pvp" and
+                                    settings.getValue('VNF') != "QemuPciPassthrough" else False)
+        self._logger.debug('Creation using %s', str(self._pktfwd_class))
 
     def setup(self):
         """Sets up the packet forwarder for p2p.
         """
-        self._logger.debug('Setup using ' + str(self._pktfwd_class))
+        self._logger.debug('Setup using %s', str(self._pktfwd_class))
 
         try:
             self._pktfwd.start()
@@ -46,19 +48,39 @@ class PktFwdController(object):
             self._pktfwd.stop()
             raise
 
+    def get_vswitch(self):
+        """See IVswitchController for description
+        """
+        return self._pktfwd
+
+    def setup_for_guest(self):
+        """Sets up the packet forwarder for pvp.
+        """
+        self._logger.debug('Setup using %s', str(self._pktfwd_class))
+
+        try:
+            self._pktfwd.start_for_guest()
+        except:
+            self._pktfwd.stop()
+            raise
+
     def stop(self):
         """Tears down the packet forwarder created in setup().
         """
-        self._logger.debug('Stop using ' + str(self._pktfwd_class))
+        self._logger.debug('Stop using %s', str(self._pktfwd_class))
         self._pktfwd.stop()
 
     def __enter__(self):
         if self._deployment.find("p2p") == 0:
             self.setup()
+        elif self._deployment == "pvp" and settings.getValue('VNF') != "QemuPciPassthrough":
+            self.setup_for_guest()
 
     def __exit__(self, type_, value, traceback):
         if self._deployment.find("p2p") == 0:
             self.stop()
+        elif self._deployment == "pvp" and settings.getValue('VNF') != "QemuPciPassthrough":
+            self.stop()
 
     def get_pktfwd(self):
         """Get the controlled packet forwarder
@@ -67,9 +89,9 @@ class PktFwdController(object):
         """
         return self._pktfwd
 
-    def dump_vswitch_flows(self):
-        """ Dumps flows from vswitch
+    def dump_vswitch_connections(self):
+        """ Dumps connections from vswitch
         """
         raise NotImplementedError(
             "The PktFwdController does not implement the "
-            "\"dump_vswitch_flows\" function.")
+            "\"dump_vswitch_connections\" function.")