NFVBENCH-153 Add support for python3
[nfvbench.git] / nfvbench / factory.py
index 1461036..0d4b042 100644 (file)
 #    License for the specific language governing permissions and limitations
 #    under the License.
 #
+"""Factory for creating worker and config plugin instances."""
 
-from chain_clients import EXTStageClient
-from chain_clients import PVPStageClient
-from chain_clients import PVVPStageClient
-from chain_managers import EXTStatsManager
-from chain_managers import PVPStatsManager
-from chain_managers import PVVPStatsManager
-import chain_workers as workers
-from config_plugin import ConfigPlugin
-from specs import ChainType
-import tor_client
+from . import chain_workers as workers
+from .config_plugin import ConfigPlugin
 
 
 class BasicFactory(object):
-    chain_classes = [ChainType.EXT, ChainType.PVP, ChainType.PVVP]
-
-    chain_stats_classes = {
-        ChainType.EXT: EXTStatsManager,
-        ChainType.PVP: PVPStatsManager,
-        ChainType.PVVP: PVVPStatsManager,
-    }
-
-    stage_clients_classes = {
-        ChainType.EXT: EXTStageClient,
-        ChainType.PVP: PVPStageClient,
-        ChainType.PVVP: PVVPStageClient,
-    }
-
-    def get_stats_class(self, service_chain):
-        CLASS = self.chain_stats_classes.get(service_chain, None)
-        if CLASS is None:
-            raise Exception("Service chain '{}' not supported.".format(service_chain))
-
-        return CLASS
-
-    def get_stage_class(self, service_chain):
-        CLASS = self.stage_clients_classes.get(service_chain, None)
-        if CLASS is None:
-            raise Exception("VM Client for chain '{}' not supported.".format(service_chain))
-
-        return CLASS
+    """Basic factory class to be overridden for advanced customization."""
 
     def get_chain_worker(self, encaps, service_chain):
+        """Get a chain worker based on encaps and service chain type."""
         return workers.BasicWorker
 
-    def get_tor_class(self, tor_type, no_tor_access):
-        if no_tor_access or not tor_type:
-            # if no TOR access is required, use basic no-op client
-            tor_type = 'BasicTORClient'
-
-        return getattr(tor_client, tor_type)
-
     def get_config_plugin_class(self):
+        """Get a config plugin."""
         return ConfigPlugin