Merge "Prohibit the importation of a list of libraries"
[yardstick.git] / tests / unit / network_services / vnf_generic / vnf / test_cgnapt_vnf.py
index f214d66..edaa0ad 100644 (file)
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 # Copyright (c) 2016-2017 Intel Corporation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # limitations under the License.
 #
 
-from __future__ import absolute_import
-
+from copy import deepcopy
 import os
 import unittest
 import mock
 
 from tests.unit import STL_MOCKS
+from tests.unit.network_services.vnf_generic.vnf.test_base import mock_ssh
 
 
 STLClient = mock.MagicMock()
@@ -35,9 +33,10 @@ if stl_patch:
     from yardstick.network_services.nfvi.resource import ResourceProfile
 
 TEST_FILE_YAML = 'nsb_test_case.yaml'
+SSH_HELPER = 'yardstick.network_services.vnf_generic.vnf.sample_vnf.VnfSshHelper'
 
 
-name = 'vnf__1'
+name = 'vnf__0'
 
 
 class TestCgnaptApproxSetupEnvHelper(unittest.TestCase):
@@ -64,15 +63,21 @@ link 1 up
 """
         header = "This is a header"
 
-        out = CgnaptApproxSetupEnvHelper._update_cgnat_script_file(header, sample.splitlines(), "")
+        out = CgnaptApproxSetupEnvHelper._update_cgnat_script_file(header, sample.splitlines())
         self.assertNotIn("This is a header", out)
 
-    def test__get_cgnapt_confgi(self):
+    def test__get_cgnapt_config(self):
+        vnfd_helper = mock.MagicMock()
+        vnfd_helper.port_pairs.uplink_ports = [{"name": 'a'}, {"name": "b"}, {"name": "c"}]
 
-        c = CgnaptApproxSetupEnvHelper(mock.MagicMock(), mock.MagicMock(), mock.MagicMock())
-        c._get_ports_gateway = mock.Mock(return_value=3)
-        ret = c._get_cgnapt_config([{"name": 'a'}, {}, {"name": "b"}, {}, {"name": "c"}])
-        self.assertEqual(ret, [3, 3, 3])
+        helper = CgnaptApproxSetupEnvHelper(vnfd_helper, mock.Mock(), mock.Mock())
+        result = helper._get_cgnapt_config()
+        self.assertIsNotNone(result)
+
+    def test_scale(self):
+        helper = CgnaptApproxSetupEnvHelper(mock.Mock(), mock.Mock(), mock.Mock())
+        with self.assertRaises(NotImplementedError):
+            helper.scale()
 
 
 @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.Process")
@@ -109,7 +114,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
                     'local_ip': '152.16.100.19',
                     'type': 'PCI-PASSTHROUGH',
                     'netmask': '255.255.255.0',
-                    'dpdk_port_num': '0',
+                    'dpdk_port_num': 0,
                     'bandwidth': '10 Gbps',
                     'driver': "i40e",
                     'dst_ip': '152.16.100.20',
@@ -124,7 +129,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
                     'type': 'PCI-PASSTHROUGH',
                     'driver': "i40e",
                     'netmask': '255.255.255.0',
-                    'dpdk_port_num': '1',
+                    'dpdk_port_num': 1,
                     'bandwidth': '10 Gbps',
                     'dst_ip': '152.16.40.20',
                     'local_iface_name': 'xe1',
@@ -144,31 +149,48 @@ class TestCgnaptApproxVnf(unittest.TestCase):
                                     {'type': 'VPORT', 'name': 'xe1'}],
                'id': 'CgnaptApproxVnf', 'name': 'VPEVnfSsh'}]}}
 
-    scenario_cfg = {'options': {'packetsize': 64, 'traffic_type': 4,
-                                'rfc2544': {'allowed_drop_rate': '0.8 - 1'},
-                                'vnf__1': {'rules': 'acl_1rule.yaml',
-                                           'vnf_config': {'lb_config': 'SW',
-                                                          'lb_count': 1,
-                                                          'worker_config':
-                                                          '1C/1T',
-                                                          'worker_threads': 1}}
-                                },
-                    'task_id': 'a70bdf4a-8e67-47a3-9dc1-273c14506eb7',
-                    'task_path': '/tmp',
-                    'tc': 'tc_ipv4_1Mflow_64B_packetsize',
-                    'runner': {'object': 'NetworkServiceTestCase',
-                               'interval': 35,
-                               'output_filename': '/tmp/yardstick.out',
-                               'runner_id': 74476, 'duration': 400,
-                               'type': 'Duration'},
-                    'traffic_profile': 'ipv4_throughput_acl.yaml',
-                    'traffic_options': {'flow': 'ipv4_Packets_acl.yaml',
-                                        'imix': 'imix_voice.yaml'},
-                    'type': 'ISB',
-                    'nodes': {'tg__2': 'trafficgen_2.yardstick',
-                              'tg__1': 'trafficgen_1.yardstick',
-                              'vnf__1': 'vnf.yardstick'},
-                    'topology': 'vpe-tg-topology-baremetal.yaml'}
+    SCENARIO_CFG = {
+        'options': {
+            'packetsize': 64,
+            'traffic_type': 4,
+            'rfc2544': {
+                'allowed_drop_rate': '0.8 - 1',
+            },
+            'vnf__0': {
+                'napt': 'dynamic',
+                'vnf_config': {
+                    'lb_config': 'SW',
+                    'lb_count': 1,
+                    'worker_config':
+                    '1C/1T',
+                    'worker_threads': 1,
+                },
+            },
+            'flow': {'count': 1,
+                     'dst_ip': [{'tg__1': 'xe0'}],
+                     'public_ip': [''],
+                     'src_ip': [{'tg__0': 'xe0'}]},
+        },
+        'task_id': 'a70bdf4a-8e67-47a3-9dc1-273c14506eb7',
+        'task_path': '/tmp',
+        'tc': 'tc_ipv4_1Mflow_64B_packetsize',
+        'runner': {
+            'object': 'NetworkServiceTestCase',
+            'interval': 35,
+            'output_filename': '/tmp/yardstick.out',
+            'runner_id': 74476,
+            'duration': 400,
+            'type': 'Duration',
+        },
+        'traffic_profile': 'ipv4_throughput_acl.yaml',
+        'type': 'NSPerf',
+        'nodes': {
+            'tg__1': 'trafficgen_1.yardstick',
+            'tg__0': 'trafficgen_0.yardstick',
+            'vnf__0': 'vnf.yardstick',
+        },
+        'topology': 'vpe-tg-topology-baremetal.yaml',
+    }
 
     context_cfg = {'nodes': {'tg__2':
                              {'member-vnf-index': '3',
@@ -178,7 +200,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
                               'ip': '1.2.1.1',
                               'interfaces':
                               {'xe0': {'local_iface_name': 'ens513f0',
-                                       'vld_id': 'public',
+                                       'vld_id': CgnaptApproxVnf.DOWNLINK,
                                        'netmask': '255.255.255.0',
                                        'local_ip': '152.16.40.20',
                                        'dst_mac': '00:00:00:00:00:01',
@@ -206,7 +228,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
                               'ip': '1.2.1.1',
                               'interfaces':
                               {'xe0': {'local_iface_name': 'ens785f0',
-                                       'vld_id': 'private',
+                                       'vld_id': CgnaptApproxVnf.UPLINK,
                                        'netmask': '255.255.255.0',
                                        'local_ip': '152.16.100.20',
                                        'dst_mac': '00:00:00:00:00:02',
@@ -225,13 +247,13 @@ class TestCgnaptApproxVnf(unittest.TestCase):
                               'password': 'r00t',
                               'VNF model': 'tg_rfc2544_tpl.yaml',
                               'user': 'root'},
-                             'vnf__1':
+                             'vnf__0':
                              {'name': 'vnf.yardstick',
-                              'vnfd-id-ref': 'vnf__1',
+                              'vnfd-id-ref': 'vnf__0',
                               'ip': '1.2.1.1',
                               'interfaces':
                               {'xe0': {'local_iface_name': 'ens786f0',
-                                       'vld_id': 'private',
+                                       'vld_id': CgnaptApproxVnf.UPLINK,
                                        'netmask': '255.255.255.0',
                                        'local_ip': '152.16.100.19',
                                        'dst_mac': '00:00:00:00:00:04',
@@ -241,7 +263,7 @@ class TestCgnaptApproxVnf(unittest.TestCase):
                                        'vpci': '0000:05:00.0',
                                        'dpdk_port_num': 0},
                                'xe1': {'local_iface_name': 'ens786f1',
-                                       'vld_id': 'public',
+                                       'vld_id': CgnaptApproxVnf.DOWNLINK,
                                        'netmask': '255.255.255.0',
                                        'local_ip': '152.16.40.19',
                                        'dst_mac': '00:00:00:00:00:03',
@@ -275,57 +297,56 @@ class TestCgnaptApproxVnf(unittest.TestCase):
                               'password': 'r00t',
                               'VNF model': 'cgnapt_vnf.yaml'}}}
 
-    def test___init__(self, mock_process):
+    def setUp(self):
+        self.scenario_cfg = deepcopy(self.SCENARIO_CFG)
+
+    def test___init__(self, *args):
         vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
         cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
         self.assertIsNone(cgnapt_approx_vnf._vnf_process)
 
-    @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
-    def test_collect_kpi(self, mock_time, mock_process):
-        with mock.patch("yardstick.ssh.SSH") as ssh:
-            ssh_mock = mock.Mock(autospec=ssh.SSH)
-            ssh_mock.execute = \
-                mock.Mock(return_value=(0, "", ""))
-            ssh.from_node.return_value = ssh_mock
-            vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
-            cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
-            cgnapt_approx_vnf.q_in = mock.MagicMock()
-            cgnapt_approx_vnf.q_out = mock.MagicMock()
-            cgnapt_approx_vnf.q_out.qsize = mock.Mock(return_value=0)
-            cgnapt_approx_vnf.resource = mock.Mock(autospec=ResourceProfile)
-            result = {'packets_dropped': 0, 'packets_fwd': 0, 'packets_in': 0}
-            self.assertEqual(result, cgnapt_approx_vnf.collect_kpi())
+    @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
+    @mock.patch(SSH_HELPER)
+    def test_collect_kpi(self, ssh, *args):
+        mock_ssh(ssh)
 
-    @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
-    def test_vnf_execute_command(self, mock_time, mock_process):
-        with mock.patch("yardstick.ssh.SSH") as ssh:
-            ssh_mock = mock.Mock(autospec=ssh.SSH)
-            ssh_mock.execute = \
-                mock.Mock(return_value=(0, "", ""))
-            ssh.from_node.return_value = ssh_mock
-            vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
-            cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
-            cgnapt_approx_vnf.q_in = mock.MagicMock()
-            cgnapt_approx_vnf.q_out = mock.MagicMock()
-            cgnapt_approx_vnf.q_out.qsize = mock.Mock(return_value=0)
-            cmd = "quit"
-            self.assertEqual("", cgnapt_approx_vnf.vnf_execute(cmd))
-
-    def test_get_stats(self, mock_process):
-        with mock.patch("yardstick.ssh.SSH") as ssh:
-            ssh_mock = mock.Mock(autospec=ssh.SSH)
-            ssh_mock.execute = \
-                mock.Mock(return_value=(0, "", ""))
-            ssh.from_node.return_value = ssh_mock
-            vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
-            cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
-            cgnapt_approx_vnf.q_in = mock.MagicMock()
-            cgnapt_approx_vnf.q_out = mock.MagicMock()
-            cgnapt_approx_vnf.q_out.qsize = mock.Mock(return_value=0)
-            mock_result = \
-                "CG-NAPT(.*\n)*Received 100, Missed 0, Dropped 0,Translated 100,ingress"
-            cgnapt_approx_vnf.vnf_execute = mock.Mock(return_value=mock_result)
-            self.assertListEqual(list(mock_result), list(cgnapt_approx_vnf.get_stats()))
+        vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
+        cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
+        cgnapt_approx_vnf._vnf_process = mock.MagicMock(
+            **{"is_alive.return_value": True, "exitcode": None})
+        cgnapt_approx_vnf.q_in = mock.MagicMock()
+        cgnapt_approx_vnf.q_out = mock.MagicMock()
+        cgnapt_approx_vnf.q_out.qsize = mock.Mock(return_value=0)
+        cgnapt_approx_vnf.resource = mock.Mock(autospec=ResourceProfile)
+        result = {'packets_dropped': 0, 'packets_fwd': 0, 'packets_in': 0}
+        self.assertEqual(result, cgnapt_approx_vnf.collect_kpi())
+
+    @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
+    @mock.patch(SSH_HELPER)
+    def test_vnf_execute_command(self, ssh, *args):
+        mock_ssh(ssh)
+
+        vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
+        cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
+        cgnapt_approx_vnf.q_in = mock.MagicMock()
+        cgnapt_approx_vnf.q_out = mock.MagicMock()
+        cgnapt_approx_vnf.q_out.qsize = mock.Mock(return_value=0)
+        cmd = "quit"
+        self.assertEqual("", cgnapt_approx_vnf.vnf_execute(cmd))
+
+    @mock.patch(SSH_HELPER)
+    def test_get_stats(self, ssh, *args):
+        mock_ssh(ssh)
+
+        vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
+        cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
+        cgnapt_approx_vnf.q_in = mock.MagicMock()
+        cgnapt_approx_vnf.q_out = mock.MagicMock()
+        cgnapt_approx_vnf.q_out.qsize = mock.Mock(return_value=0)
+        result = \
+            "CG-NAPT(.*\n)*Received 100, Missed 0, Dropped 0,Translated 100,ingress"
+        cgnapt_approx_vnf.vnf_execute = mock.Mock(return_value=result)
+        self.assertListEqual(list(result), list(cgnapt_approx_vnf.get_stats()))
 
     def _get_file_abspath(self, filename):
         curr_path = os.path.dirname(os.path.abspath(__file__))
@@ -335,89 +356,64 @@ class TestCgnaptApproxVnf(unittest.TestCase):
     @mock.patch("yardstick.network_services.vnf_generic.vnf.cgnapt_vnf.hex")
     @mock.patch("yardstick.network_services.vnf_generic.vnf.cgnapt_vnf.eval")
     @mock.patch('yardstick.network_services.vnf_generic.vnf.cgnapt_vnf.open')
-    def test_run_vcgnapt(self, hex, eval, mock_open, mock_process):
-        with mock.patch("yardstick.ssh.SSH") as ssh:
-            ssh_mock = mock.Mock(autospec=ssh.SSH)
-            ssh_mock.execute = \
-                mock.Mock(return_value=(0, "", ""))
-            ssh_mock.run = \
-                mock.Mock(return_value=(0, "", ""))
-            ssh.from_node.return_value = ssh_mock
-            vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
-            cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
-            cgnapt_approx_vnf._build_config = mock.MagicMock()
-            cgnapt_approx_vnf.queue_wrapper = mock.MagicMock()
-            cgnapt_approx_vnf.ssh_helper = mock.MagicMock()
-            cgnapt_approx_vnf.ssh_helper.run = mock.MagicMock()
-            cgnapt_approx_vnf.scenario_helper.scenario_cfg = self.scenario_cfg
-            cgnapt_approx_vnf._run()
-            cgnapt_approx_vnf.ssh_helper.run.assert_called_once()
+    @mock.patch(SSH_HELPER)
+    def test_run_vcgnapt(self, ssh, *args):
+        mock_ssh(ssh)
+
+        vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
+        cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
+        cgnapt_approx_vnf._build_config = mock.MagicMock()
+        cgnapt_approx_vnf.queue_wrapper = mock.MagicMock()
+        cgnapt_approx_vnf.ssh_helper = mock.MagicMock()
+        cgnapt_approx_vnf.ssh_helper.run = mock.MagicMock()
+        cgnapt_approx_vnf.scenario_helper.scenario_cfg = self.scenario_cfg
+        cgnapt_approx_vnf._run()
+        cgnapt_approx_vnf.ssh_helper.run.assert_called_once()
 
     @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.Context")
-    def test_instantiate(self, mock_context, mock_process):
-        with mock.patch("yardstick.ssh.SSH") as ssh:
-            ssh_mock = mock.Mock(autospec=ssh.SSH)
-            ssh_mock.execute = \
-                mock.Mock(return_value=(0, "", ""))
-            ssh.from_node.return_value = ssh_mock
-            vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
-            cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
-            cgnapt_approx_vnf.ssh_helper = ssh
-            cgnapt_approx_vnf.deploy_helper = mock.MagicMock()
-            cgnapt_approx_vnf.resource_helper = mock.MagicMock()
-            cgnapt_approx_vnf._build_config = mock.MagicMock()
-            self.scenario_cfg['vnf_options'] = {'acl': {'cfg': "",
-                                                        'rules': ""}}
-            cgnapt_approx_vnf.q_out.put("pipeline>")
-            cgnapt_vnf.WAIT_TIME = 3
-            self.scenario_cfg.update({"nodes": {"vnf__1": ""}})
-            self.assertIsNone(cgnapt_approx_vnf.instantiate(self.scenario_cfg,
-                                                            self.context_cfg))
-
-    def test_scale(self, mock_process):
+    @mock.patch(SSH_HELPER)
+    def test_instantiate(self, ssh, *args):
+        mock_ssh(ssh)
+
         vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
         cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
-        flavor = ""
-        self.assertRaises(NotImplementedError, cgnapt_approx_vnf.scale, flavor)
+        cgnapt_approx_vnf.deploy_helper = mock.MagicMock()
+        cgnapt_approx_vnf.resource_helper = mock.MagicMock()
+        cgnapt_approx_vnf._build_config = mock.MagicMock()
+        self.scenario_cfg['vnf_options'] = {'acl': {'cfg': "",
+                                                    'rules': ""}}
+        cgnapt_approx_vnf.q_out.put("pipeline>")
+        cgnapt_vnf.WAIT_TIME = 3
+        self.scenario_cfg.update({"nodes": {"vnf__0": ""}})
+        self.assertIsNone(cgnapt_approx_vnf.instantiate(self.scenario_cfg,
+                                                        self.context_cfg))
 
     @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
-    def test_terminate(self, mock_time, mock_process):
-        with mock.patch("yardstick.ssh.SSH") as ssh:
-            ssh_mock = mock.Mock(autospec=ssh.SSH)
-            ssh_mock.execute = \
-                mock.Mock(return_value=(0, "", ""))
-            ssh.from_node.return_value = ssh_mock
-            vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
-            cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
-            cgnapt_approx_vnf._vnf_process = mock.MagicMock()
-            cgnapt_approx_vnf._vnf_process.terminate = mock.Mock()
-            cgnapt_approx_vnf.used_drivers = {"01:01.0": "i40e",
-                                              "01:01.1": "i40e"}
-            cgnapt_approx_vnf.vnf_execute = mock.MagicMock()
-            cgnapt_approx_vnf.ssh_helper = ssh_mock
-            cgnapt_approx_vnf.dpdk_nic_bind = "dpdk_nic_bind.py"
-            cgnapt_approx_vnf._resource_collect_stop = mock.Mock()
-            self.assertEqual(None, cgnapt_approx_vnf.terminate())
+    @mock.patch(SSH_HELPER)
+    def test__vnf_up_post(self, ssh, *args):
+        mock_ssh(ssh)
+
+        vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
+        self.scenario_cfg['options'][name]['napt'] = 'static'
+
+        cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
+        cgnapt_approx_vnf._vnf_process = mock.MagicMock()
+        cgnapt_approx_vnf._vnf_process.terminate = mock.Mock()
+        cgnapt_approx_vnf.vnf_execute = mock.MagicMock()
+        cgnapt_approx_vnf.scenario_helper.scenario_cfg = self.scenario_cfg
+        cgnapt_approx_vnf._resource_collect_stop = mock.Mock()
+        cgnapt_approx_vnf._vnf_up_post()
 
     @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time")
-    @mock.patch("yardstick.network_services.vnf_generic.vnf.cgnapt_vnf.time")
-    def test__vnf_up_post(self, mock_time, mock_cgnapt_time, mock_process):
-        with mock.patch("yardstick.ssh.SSH") as ssh:
-            ssh_mock = mock.Mock(autospec=ssh.SSH)
-            ssh_mock.execute = \
-                mock.Mock(return_value=(0, "", ""))
-            ssh.from_node.return_value = ssh_mock
-            vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
-            cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
-            cgnapt_approx_vnf._vnf_process = mock.MagicMock()
-            cgnapt_approx_vnf._vnf_process.terminate = mock.Mock()
-            cgnapt_approx_vnf.vnf_execute = mock.MagicMock()
-            cgnapt_approx_vnf.ssh_helper = ssh_mock
-            cgnapt_approx_vnf.scenario_helper.scenario_cfg = self.scenario_cfg
-            cgnapt_approx_vnf._resource_collect_stop = mock.Mock()
-            cgnapt_approx_vnf._vnf_up_post()
-            cgnapt_approx_vnf.vnf_execute.assert_called_once()
-
-
-if __name__ == '__main__':
-    unittest.main()
+    @mock.patch(SSH_HELPER)
+    def test__vnf_up_post_short(self, ssh, *args):
+        mock_ssh(ssh)
+
+        vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
+        cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd)
+        cgnapt_approx_vnf._vnf_process = mock.MagicMock()
+        cgnapt_approx_vnf._vnf_process.terminate = mock.Mock()
+        cgnapt_approx_vnf.vnf_execute = mock.MagicMock()
+        cgnapt_approx_vnf.scenario_helper.scenario_cfg = self.scenario_cfg
+        cgnapt_approx_vnf._resource_collect_stop = mock.Mock()
+        cgnapt_approx_vnf._vnf_up_post()