Merge "Add scale out TCs with availability zone support"
[yardstick.git] / yardstick / network_services / vnf_generic / vnf / tg_prox.py
index b4568bf..282dd92 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from __future__ import print_function, absolute_import
+from __future__ import absolute_import
 
 import logging
 
-
-from yardstick.network_services.vnf_generic.vnf.prox_helpers import ProxDpdkVnfSetupEnvHelper
-from yardstick.network_services.vnf_generic.vnf.prox_helpers import ProxResourceHelper
+from yardstick.network_services.utils import get_nsb_option
+from yardstick.network_services.vnf_generic.vnf.prox_vnf import ProxApproxVnf
 from yardstick.network_services.vnf_generic.vnf.sample_vnf import SampleVNFTrafficGen
 
 LOG = logging.getLogger(__name__)
@@ -26,44 +25,33 @@ LOG = logging.getLogger(__name__)
 
 class ProxTrafficGen(SampleVNFTrafficGen):
 
+    APP_NAME = 'ProxTG'
     PROX_MODE = "Traffic Gen"
     LUA_PARAMETER_NAME = "gen"
-
-    @staticmethod
-    def _sort_vpci(vnfd):
-        """
-
-        :param vnfd: vnfd.yaml
-        :return: trex_cfg.yaml file
-        """
-
-        def key_func(interface):
-            return interface["virtual-interface"]["vpci"], interface["name"]
-
-        ext_intf = vnfd["vdu"][0]["external-interface"]
-        return sorted(ext_intf, key=key_func)
+    WAIT_TIME = 1
 
     def __init__(self, name, vnfd, setup_env_helper_type=None, resource_helper_type=None):
-        if setup_env_helper_type is None:
-            setup_env_helper_type = ProxDpdkVnfSetupEnvHelper
-
-        if resource_helper_type is None:
-            resource_helper_type = ProxResourceHelper
-
-        super(ProxTrafficGen, self).__init__(name, vnfd, setup_env_helper_type,
-                                             resource_helper_type)
-        self._result = {}
-        # for some reason
-        self.vpci_if_name_ascending = self._sort_vpci(vnfd)
+        # don't call superclass, use custom wrapper of ProxApproxVnf
+        self._vnf_wrapper = ProxApproxVnf(name, vnfd, setup_env_helper_type, resource_helper_type)
+        self.bin_path = get_nsb_option('bin_path', '')
+        self.name = self._vnf_wrapper.name
+        self.ssh_helper = self._vnf_wrapper.ssh_helper
+        self.setup_helper = self._vnf_wrapper.setup_helper
+        self.resource_helper = self._vnf_wrapper.resource_helper
+        self.scenario_helper = self._vnf_wrapper.scenario_helper
+
+        self.runs_traffic = True
+        self.traffic_finished = False
+        self._tg_process = None
         self._traffic_process = None
 
-    def listen_traffic(self, traffic_profile):
-        pass
-
     def terminate(self):
+        self._vnf_wrapper.terminate()
         super(ProxTrafficGen, self).terminate()
-        self.resource_helper.terminate()
-        if self._traffic_process:
-            self._traffic_process.terminate()
-        self.ssh_helper.execute("pkill prox")
-        self.resource_helper.rebind_drivers()
+
+    def instantiate(self, scenario_cfg, context_cfg):
+        self._vnf_wrapper.instantiate(scenario_cfg, context_cfg)
+        self._tg_process = self._vnf_wrapper._vnf_process
+
+    def wait_for_instantiate(self):
+        self._vnf_wrapper.wait_for_instantiate()