X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=yardstick%2Fnetwork_services%2Fvnf_generic%2Fvnf%2Fcgnapt_vnf.py;h=14f1e2e97d58760092c9ee1ad950bf1d092707b1;hb=f3cae5191bb3c944fd08780d8a8940d2aa60c4d0;hp=b5072c194eaf7f8413d68bb2283cf9e8be416864;hpb=d374dc8ca09e7d6e08a531e68a21a8b107af21d0;p=yardstick.git diff --git a/yardstick/network_services/vnf_generic/vnf/cgnapt_vnf.py b/yardstick/network_services/vnf_generic/vnf/cgnapt_vnf.py index b5072c194..14f1e2e97 100644 --- a/yardstick/network_services/vnf_generic/vnf/cgnapt_vnf.py +++ b/yardstick/network_services/vnf_generic/vnf/cgnapt_vnf.py @@ -14,16 +14,17 @@ from __future__ import absolute_import import logging +import time from yardstick.network_services.vnf_generic.vnf.sample_vnf import SampleVNF, DpdkVnfSetupEnvHelper LOG = logging.getLogger(__name__) # CGNAPT should work the same on all systems, we can provide the binary -CGNAPT_PIPELINE_COMMAND = 'sudo {tool_path} -p {port_mask_hex} -f {cfg_file} -s {script}' +CGNAPT_PIPELINE_COMMAND = 'sudo {tool_path} -p {port_mask_hex} -f {cfg_file} -s {script} {hwlb}' WAIT_FOR_STATIC_NAPT = 4 -CGNAPT_COLLECT_KPI = """\ +CGNAPT_COLLECT_KPI = r"""\ CG-NAPT(.*\n)*\ Received\s(\d+),\ Missed\s(\d+),\ @@ -64,14 +65,12 @@ class CgnaptApproxSetupEnvHelper(DpdkVnfSetupEnvHelper): def scale(self, flavor=""): raise NotImplementedError - def _get_cgnapt_config(self, interfaces=None): - # TODO: static CGNAPT is broken, don't use it - if interfaces is None: - interfaces = self.vnfd_helper.interfaces - + def _get_cgnapt_config(self): # fixme: Get private port and gateway from port list uplink_ports = self.vnfd_helper.port_pairs.uplink_ports - return [self._get_ports_gateway(intf["name"]) for intf in uplink_ports] + return \ + [self.vnfd_helper.find_interface(name=intf)["virtual-interface"]['dst_ip'] + for intf in uplink_ports] class CgnaptApproxVnf(SampleVNF): @@ -86,35 +85,38 @@ class CgnaptApproxVnf(SampleVNF): "packets_dropped": 4, } - def __init__(self, name, vnfd, setup_env_helper_type=None, resource_helper_type=None): + def __init__(self, name, vnfd, task_id, setup_env_helper_type=None, + resource_helper_type=None): if setup_env_helper_type is None: setup_env_helper_type = CgnaptApproxSetupEnvHelper - - super(CgnaptApproxVnf, self).__init__(name, vnfd, setup_env_helper_type, - resource_helper_type) + super(CgnaptApproxVnf, self).__init__( + name, vnfd, task_id, setup_env_helper_type, resource_helper_type) def _vnf_up_post(self): super(CgnaptApproxVnf, self)._vnf_up_post() if self.scenario_helper.options.get('napt', 'static') != 'static': return - # ip_iter = self.setup_helper._generate_ip_from_pool("152.16.40.10") - # gw_ips = self.setup_helper._get_cgnapt_config() - # if self.scenario_helper.vnf_cfg.get("lb_config", "SW") == 'HW': - # pipeline = self.setup_helper.HW_DEFAULT_CORE - # offset = 3 - # else: - # pipeline = self.setup_helper.SW_DEFAULT_CORE - 1 - # offset = 0 - # - # worker_threads = int(self.scenario_helper.vnf_cfg["worker_threads"]) - # # p entry addm prvport> - # # - # cmd_template = "p {0} entry addm {1} 1 {2} 1 0 32 65535 65535 65535" - # for gw, ip in zip(gw_ips, ip_iter): - # cmd = cmd_template.format(pipeline, gw, ip) - # pipeline += worker_threads - # pipeline += offset - # self.vnf_execute(cmd) - # - # time.sleep(WAIT_FOR_STATIC_NAPT) + flow = self.scenario_helper.all_options.get('flow', {}) + public_ip = flow.get('public_ip', ['152.16.40.10']).pop() + ip_iter = self.setup_helper._generate_ip_from_pool(public_ip) + gw_ips = self.setup_helper._get_cgnapt_config() + if self.scenario_helper.vnf_cfg.get("lb_config", "SW") == 'HW': + pipeline = self.setup_helper.HW_DEFAULT_CORE + offset = 3 + else: + pipeline = self.setup_helper.SW_DEFAULT_CORE - 1 + offset = 0 + + worker_threads = int(self.scenario_helper.vnf_cfg["worker_threads"]) + # p entry addm prvport> + # + cmd_template = "p {0} entry addm {1} 1 {2} 1 0 32 65535 65535 65535" + for gw, ip in zip(gw_ips, ip_iter): + cmd = cmd_template.format(pipeline, gw, ip) + pipeline += worker_threads + pipeline += offset + LOG.info(cmd) + self.vnf_execute(cmd) + + time.sleep(WAIT_FOR_STATIC_NAPT)