python: Pylint 1.8.2 code conformity
[vswitchperf.git] / core / loader / loader.py
index 39b50f0..dcd77ce 100755 (executable)
@@ -1,4 +1,4 @@
-# Copyright 2015 Intel Corporation.
+# Copyright 2015-2017 Intel Corporation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 
 from conf import settings
 from core.loader.loader_servant import LoaderServant
-from tools.pkt_gen.trafficgen import ITrafficGenerator
 from tools.collectors.collector import ICollector
+from tools.load_gen.load_gen import ILoadGenerator
+from tools.pkt_fwd.pkt_fwd import IPktFwd
+from tools.pkt_gen.trafficgen import ITrafficGenerator
 from vswitches.vswitch import IVSwitch
 from vnfs.vnf.vnf import IVnf
 
+# pylint: disable=too-many-public-methods
 class Loader(object):
     """Loader class - main object context holder.
     """
@@ -29,6 +32,7 @@ class Loader(object):
     _metrics_loader = None
     _vswitch_loader = None
     _vnf_loader = None
+    _loadgen_loader = None
 
     def __init__(self):
         """Loader ctor - initialization method.
@@ -47,6 +51,11 @@ class Loader(object):
             settings.getValue('COLLECTOR'),
             ICollector)
 
+        self._loadgen_loader = LoaderServant(
+            settings.getValue('LOADGEN_DIR'),
+            settings.getValue('LOADGEN'),
+            ILoadGenerator)
+
         self._vswitch_loader = LoaderServant(
             settings.getValue('VSWITCH_DIR'),
             settings.getValue('VSWITCH'),
@@ -57,6 +66,11 @@ class Loader(object):
             settings.getValue('VNF'),
             IVnf)
 
+        self._pktfwd_loader = LoaderServant(
+            settings.getValue('PKTFWD_DIR'),
+            settings.getValue('PKTFWD'),
+            IPktFwd)
+
     def get_trafficgen(self):
         """Returns a new instance configured traffic generator.
 
@@ -109,7 +123,7 @@ class Loader(object):
 
         :return: Dictionary of collectors.
             - key: name of the class which implements ICollector,
-            - value: Type of traffic generator which implements ICollector.
+            - value: Type of collector which implements ICollector.
         """
         return self._metrics_loader.get_classes()
 
@@ -120,6 +134,30 @@ class Loader(object):
         """
         return self._metrics_loader.get_classes_printable()
 
+    def get_loadgen_class(self):
+        """Returns type of currently configured loadgen implementation.
+
+        :return: Type of ILoadGenerator implementation if available.
+            None otherwise.
+        """
+        return self._loadgen_loader.get_class()
+
+    def get_loadgens(self):
+        """Returns dictionary of all available loadgens
+
+        :return: Dictionary of loadgens
+            - key: name of the class which implements ILoadGenerator
+            - value: Type of class which implements ILoadGenerator
+        """
+        return self._loadgen_loader.get_classes()
+
+    def get_loadgens_printable(self):
+        """Returns all available loadgens in printable format
+
+        :return: String containing printable list of loadgens
+        """
+        return self._loadgen_loader.get_classes_printable()
+
     def get_vswitch(self):
         """Returns instance of currently configured vswitch implementation.
 
@@ -140,7 +178,7 @@ class Loader(object):
 
         :return: Dictionary of vswitches.
             - key: name of the class which implements IVSwitch,
-            - value: Type of traffic generator which implements IVSwitch.
+            - value: Type of vswitch which implements IVSwitch.
         """
         return self._vswitch_loader.get_classes()
 
@@ -182,3 +220,33 @@ class Loader(object):
         """
         return self._vnf_loader.get_classes_printable()
 
+    def get_pktfwd(self):
+        """Returns instance of currently configured packet forwarder implementation.
+
+        :return: IPktFwd implementation if available, None otherwise.
+        """
+        return self._pktfwd_loader.get_class()()
+
+    def get_pktfwd_class(self):
+        """Returns type of currently configured packet forwarder implementation.
+
+        :return: Type of IPktFwd implementation if available.
+            None otherwise.
+        """
+        return self._pktfwd_loader.get_class()
+
+    def get_pktfwds(self):
+        """Returns dictionary of all available packet forwarders.
+
+        :return: Dictionary of packet forwarders.
+            - key: name of the class which implements IPktFwd,
+            - value: Type of packet forwarder which implements IPktFwd.
+        """
+        return self._pktfwd_loader.get_classes()
+
+    def get_pktfwds_printable(self):
+        """Returns all available packet forwarders in printable format.
+
+        :return: String containing printable list of packet forwarders.
+        """
+        return self._pktfwd_loader.get_classes_printable()