diff options
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | docs/development/design/architecture.rst | 8 | ||||
-rw-r--r-- | docs/development/design/introduction.rst | 2 | ||||
-rw-r--r-- | docs/development/design/usecases.rst | 2 | ||||
-rw-r--r-- | requirements.txt | 9 | ||||
-rw-r--r-- | setup.cfg | 7 | ||||
-rw-r--r-- | setup.py | 28 | ||||
-rw-r--r-- | sfc/lib/cleanup.py | 4 | ||||
-rw-r--r-- | sfc/lib/config.py | 4 | ||||
-rw-r--r-- | sfc/lib/results.py | 4 | ||||
-rw-r--r-- | sfc/lib/topology_shuffler.py | 4 | ||||
-rw-r--r-- | sfc/lib/utils.py | 4 | ||||
-rw-r--r-- | sfc/tests/functest/config.yaml | 3 | ||||
-rw-r--r-- | sfc/tests/functest/run_tests.py | 289 | ||||
-rw-r--r-- | sfc/tests/functest/sfc_one_chain_two_service_functions.py | 7 | ||||
-rw-r--r-- | sfc/tests/functest/sfc_symmetric_chain.py | 7 | ||||
-rw-r--r-- | sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py | 7 | ||||
-rwxr-xr-x | vnfmgr/vnfmgr_odl/sample_config/RestConf-RSP-HttpPost.json | 3 | ||||
-rwxr-xr-x | vnfmgr/vnfmgr_odl/sample_config/RestConf-SFCs-HttpPut.json | 5 | ||||
-rwxr-xr-x | vnfmgr/vnfmgr_odl/sample_config/RestConf-SFFs-HttpPut.json | 32 | ||||
-rwxr-xr-x | vnfmgr/vnfmgr_odl/sample_config/RestConf-SFs-HttpPut.json | 2 |
21 files changed, 210 insertions, 223 deletions
@@ -1 +1 @@ -This code deploys the ODL-Openstack maanger. +This code deploys the ODL-Openstack manager. diff --git a/docs/development/design/architecture.rst b/docs/development/design/architecture.rst index 98520ecf..b190a18f 100644 --- a/docs/development/design/architecture.rst +++ b/docs/development/design/architecture.rst @@ -65,8 +65,8 @@ NSP (NSH Path) NSI (NSH Index) The NSI is the Hop in the Service Chain. The NSI starts at 255 and is - decremented by every SF. If the NSI reaches 0, then the packet is dropped - which avoids loop detections. + decremented by every SF. If the NSI reaches 0, then the packet is dropped, + which avoids loops. NSH also has metadata fields, but that's beyond the scope of this architecture. @@ -88,7 +88,7 @@ VNF Manager In OPNFV SFC, a VNF Manager is needed to spin-up VMs for Service Functions. It has been decided to use the OpenStack Tacker VNF Mgr to spin-up and manage -the life cylcle of the SFs. Tacker will receive the ODL SFC configuration, +the life cycle of the SFs. Tacker will receive the ODL SFC configuration, manage the SF VMs, and forward the configuration to ODL SFC. The following sequence diagram details the interactions with the VNF Mgr: @@ -105,7 +105,7 @@ The following image details the Network Topology used in OPNFV Danube SFC: OVS NSH patch workaround ++++++++++++++++++++++++ -When using NSH with VXLAN tunnels, its important that the VXLAN tunnel is +When using NSH with VXLAN tunnels, it is important that the VXLAN tunnel is terminated in the SF VM. This allows the SF to see the NSH header, allowing it to decrement the NSI and also to use the NSH metadata. When using VXLAN with OpenStack, the tunnels are not terminated in the VM, but in the "br-int" OVS diff --git a/docs/development/design/introduction.rst b/docs/development/design/introduction.rst index f7b7df76..d56eae9f 100644 --- a/docs/development/design/introduction.rst +++ b/docs/development/design/introduction.rst @@ -6,5 +6,5 @@ Introduction The `OPNFV Service Function Chaining (SFC) <https://wiki.opnfv.org/display/sfc/Service+Function+Chaining+Home>`_ project aims to provide the ability to define an ordered list of a network services (e.g. firewalls, NAT, QoS). -These service are then "stitched" together in the network to create a service chain. +These services are then "stitched" together in the network to create a service chain. This project provides the infrastructure to install the upstream ODL SFC implementation project in an NFV environment. diff --git a/docs/development/design/usecases.rst b/docs/development/design/usecases.rst index cc20ecea..d3562b89 100644 --- a/docs/development/design/usecases.rst +++ b/docs/development/design/usecases.rst @@ -22,6 +22,6 @@ Use Case 2 - One chain traverses two service functions ****************************************************** This use case creates two service functions, and a chain that makes the traffic -flow through both of them. More information is available in OPNFV-SFC wiki: +flow through both of them. More information is available in the OPNFV-SFC wiki: https://wiki.opnfv.org/display/sfc/Functest+SFC-ODL+-+Test+2 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..94f59bd6 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,9 @@ +pbr>=1.8 # Apache-2.0 +paramiko>=2.0 # LGPLv2.1+ +python-glanceclient>=2.5.0 # Apache-2.0 +requests!=2.12.2,>=2.10.0 # Apache-2.0 +xmltodict>=0.10.1 # MIT +python-keystoneclient>=3.8.0 # Apache-2.0 +python-novaclient!=7.0.0,>=6.0.0 # Apache-2.0 +PyYAML>=3.10.0 # MIT +opnfv diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 00000000..edeeb5de --- /dev/null +++ b/setup.cfg @@ -0,0 +1,7 @@ +[metadata] +name = sfc +version = 5 +home-page = https://wiki.opnfv.org/display/sfc/Service+Function+Chaining+Home + +[files] +packages = sfc @@ -1,20 +1,22 @@ -############################################################################## +#!/usr/bin/env python + +# Copyright (c) 2017 Orange and others. +# # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -from setuptools import setup, find_packages +import setuptools +# In python < 2.7.4, a lazy loading of package `pbr` will break +# setuptools if some other modules registered functions in `atexit`. +# solution from: http://bugs.python.org/issue15881#msg170215 +try: + import multiprocessing # noqa +except ImportError: + pass -setup( - name="sfc", - version="danube", - packages=find_packages(), - include_package_data=True, - package_data={ - }, - url="https://www.opnfv.org" -) +setuptools.setup( + setup_requires=['pbr>=1.8'], + pbr=True) diff --git a/sfc/lib/cleanup.py b/sfc/lib/cleanup.py index 8c1f0d09..6259736a 100644 --- a/sfc/lib/cleanup.py +++ b/sfc/lib/cleanup.py @@ -1,12 +1,12 @@ import sys -import functest.utils.functest_logger as ft_logger +import logging import functest.utils.openstack_utils as os_utils import functest.utils.openstack_tacker as os_tacker import sfc.lib.utils as utils -logger = ft_logger.Logger(__name__).getLogger() +logger = logging.getLogger(__name__) def delete_odl_resources(odl_ip, odl_port, resource): diff --git a/sfc/lib/config.py b/sfc/lib/config.py index 3a8247e3..c1e73e46 100644 --- a/sfc/lib/config.py +++ b/sfc/lib/config.py @@ -12,11 +12,11 @@ import os import yaml from functest.utils.constants import CONST -import functest.utils.functest_logger as ft_logger +import logging import functest.utils.functest_utils as ft_utils -logger = ft_logger.Logger(__name__).getLogger() +logger = logging.getLogger(__name__) class CommonConfig(object): diff --git a/sfc/lib/results.py b/sfc/lib/results.py index c5172cb2..15d82e02 100644 --- a/sfc/lib/results.py +++ b/sfc/lib/results.py @@ -8,9 +8,9 @@ # http://www.apache.org/licenses/LICENSE-2.0 # -import functest.utils.functest_logger as ft_logger +import logging -logger = ft_logger.Logger(__name__).getLogger() +logger = logging.getLogger(__name__) class Results(object): diff --git a/sfc/lib/topology_shuffler.py b/sfc/lib/topology_shuffler.py index 7e957e97..1a97e270 100644 --- a/sfc/lib/topology_shuffler.py +++ b/sfc/lib/topology_shuffler.py @@ -1,9 +1,9 @@ import datetime import random -import functest.utils.functest_logger as ft_logger +import logging import sfc.lib.utils as sfc_utils -logger = ft_logger.Logger(__name__).getLogger() +logger = logging.getLogger(__name__) # The possible topologies we are testing TOPOLOGIES = [ diff --git a/sfc/lib/utils.py b/sfc/lib/utils.py index e7e93e15..36124d92 100644 --- a/sfc/lib/utils.py +++ b/sfc/lib/utils.py @@ -16,13 +16,13 @@ import time import xmltodict import yaml -import functest.utils.functest_logger as ft_logger +import logging import functest.utils.functest_utils as ft_utils import functest.utils.openstack_utils as os_utils import functest.utils.openstack_tacker as os_tacker -logger = ft_logger.Logger(__name__).getLogger() +logger = logging.getLogger(__name__) SSH_OPTIONS = '-q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' FUNCTEST_RESULTS_DIR = os.path.join("home", "opnfv", "functest", "results", "odl-sfc") diff --git a/sfc/tests/functest/config.yaml b/sfc/tests/functest/config.yaml index bc6e1726..77e5ffc1 100644 --- a/sfc/tests/functest/config.yaml +++ b/sfc/tests/functest/config.yaml @@ -22,7 +22,6 @@ testcases: enabled: true order: 1 description: "ODL-SFC tests" - testname_db: "sfc_two_chains_SSH_and_HTTP" net_name: example-net subnet_name: example-subnet router_name: example-router @@ -36,7 +35,6 @@ testcases: enabled: true order: 0 description: "ODL-SFC Testing SFs when they are located on the same chain" - testname_db: "sfc_one_chain_two_service_functions" net_name: example-net subnet_name: example-subnet router_name: example-router @@ -50,7 +48,6 @@ testcases: enabled: false order: 2 description: "Verify the behavior of a symmetric service chain" - testname_db: "sfc_symmetric_chain" net_name: example-net subnet_name: example-subnet router_name: example-router diff --git a/sfc/tests/functest/run_tests.py b/sfc/tests/functest/run_tests.py index 88a351a0..c569165b 100644 --- a/sfc/tests/functest/run_tests.py +++ b/sfc/tests/functest/run_tests.py @@ -8,172 +8,151 @@ # http://www.apache.org/licenses/LICENSE-2.0 # -import argparse import importlib import os -import sys import time +import sys import yaml -import functest.utils.functest_logger as ft_logger -import functest.utils.functest_utils as ft_utils -import functest.utils.openstack_utils as os_utils -import opnfv.utils.ovs_logger as ovs_log -import sfc.lib.cleanup as sfc_cleanup -import sfc.lib.config as sfc_config -import sfc.lib.utils as sfc_utils - -from collections import OrderedDict +from functest.core import testcase +from functest.utils import openstack_utils as os_utils +from opnfv.utils import ovs_logger as ovs_log from opnfv.deployment.factory import Factory as DeploymentFactory +from sfc.lib import cleanup as sfc_cleanup +from sfc.lib import config as sfc_config +from sfc.lib import utils as sfc_utils +from collections import OrderedDict +import logging -logger = ft_logger.Logger(__name__).getLogger() +logger = logging.getLogger(__name__) COMMON_CONFIG = sfc_config.CommonConfig() -def push_results(testname, start_time, end_time, criteria, details): - logger.info("Push testcase '%s' results into the DB...\n" % testname) - ft_utils.push_results_to_db("sfc", - testname, - start_time, - end_time, - criteria, - details) - - -def fetch_tackerc_file(controller_node): - rc_file = os.path.join(COMMON_CONFIG.sfc_test_dir, 'tackerc') - if not os.path.exists(rc_file): - logger.info("tackerc file not found, fetching it from controller") - controller_node.get_file("/root/tackerc", rc_file) - else: - logger.info("found tackerc file") - return rc_file - - -def disable_heat_resource_finder_cache(nodes): - controllers = [node for node in nodes if node.is_controller()] - remote_heat_conf = '/etc/heat/heat.conf' - local_heat_conf = '/tmp/heat.conf' - for controller in controllers: - logger.info("Fetch {0} from controller {1}" - .format(remote_heat_conf, controller.ip)) - controller.get_file(remote_heat_conf, local_heat_conf) - with open(local_heat_conf, 'a') as cfg: - cfg.write('\n[resource_finder_cache]\n') - cfg.write('caching=False\n') - logger.info("Replace {0} with {1} in controller {2}" - .format(remote_heat_conf, local_heat_conf, controller.ip)) - controller.run_cmd('rm -f {0}'.format(remote_heat_conf)) - controller.put_file(local_heat_conf, remote_heat_conf) - logger.info("Restart heat-engine in {0}".format(controller.ip)) - controller.run_cmd('service heat-engine restart') - os.remove(local_heat_conf) - logger.info("Waiting for heat-engine to restart in controllers") - time.sleep(10) - - -def main(report=False): - deploymentHandler = DeploymentFactory.get_handler( - COMMON_CONFIG.installer_type, - COMMON_CONFIG.installer_ip, - COMMON_CONFIG.installer_user, - installer_pwd=COMMON_CONFIG.installer_password) - - cluster = COMMON_CONFIG.installer_cluster - nodes = (deploymentHandler.get_nodes({'cluster': cluster}) - if cluster is not None - else deploymentHandler.get_nodes()) - - a_controller = [node for node in nodes - if node.is_controller()][0] - - disable_heat_resource_finder_cache(nodes) - - rc_file = fetch_tackerc_file(a_controller) - os_utils.source_credentials(rc_file) - - logger.info("Updating env with {0}".format(rc_file)) - logger.info("OS credentials:") - for var, value in os.environ.items(): - if var.startswith("OS_"): - logger.info("\t{0}={1}".format(var, value)) - - odl_ip, odl_port = sfc_utils.get_odl_ip_port(nodes) - - ovs_logger = ovs_log.OVSLogger( - os.path.join(COMMON_CONFIG.sfc_test_dir, 'ovs-logs'), - COMMON_CONFIG.functest_results_dir) - - config_file = os.path.join(COMMON_CONFIG.config_file) - with open(config_file) as f: - config_yaml = yaml.safe_load(f) - - testcases = config_yaml.get("testcases") - testcases_ordered = OrderedDict(sorted(testcases.items(), - key=lambda x: x[1]['order'])) - overall_details = {} - overall_status = "NOT TESTED" - overall_start_time = time.time() - for testcase, test_cfg in testcases_ordered.items(): - if test_cfg['enabled']: - test_name = testcase - test_descr = test_cfg['description'] - test_name_db = test_cfg['testname_db'] - title = ("Running '%s - %s'" % - (test_name, test_descr)) - logger.info(title) - logger.info("%s\n" % ("=" * len(title))) - t = importlib.import_module( - "sfc.tests.functest.{0}".format(testcase), - package=None) - start_time = time.time() - try: - result = t.main() - except Exception, e: - logger.error("Exception when executing: %s" % testcase) - logger.error(e) - result = {'status': 'FAILED'} - end_time = time.time() - duration = end_time - start_time - logger.info("Results of test case '%s - %s':\n%s\n" % - (test_name, test_descr, result)) - if result['status'] == 'PASS': - status = 'PASS' - overall_details.update({test_name_db: "worked"}) - if overall_status != "FAIL": - overall_status = "PASS" - else: - status = 'FAIL' - overall_status = "FAIL" - overall_details.update({test_name_db: "execution error."}) - ovs_logger.create_artifact_archive() - - if report: - details = result.get("details") - push_results( - test_name_db, start_time, end_time, status, details) - - dic = {"duration": duration, "status": status} - overall_details.update({test_name_db: dic}) - sfc_cleanup.cleanup(odl_ip=odl_ip, odl_port=odl_port) - - overall_end_time = time.time() - if report: - push_results( - "odl-sfc", overall_start_time, overall_end_time, - overall_status, overall_details) - - if overall_status == "FAIL": - sys.exit(-1) - - sys.exit(0) +class SfcFunctest(testcase.OSGCTestCase): + + def __fetch_tackerc_file(self, controller_node): + rc_file = os.path.join(COMMON_CONFIG.sfc_test_dir, 'tackerc') + if not os.path.exists(rc_file): + logger.info("tackerc file not found, fetching it from controller") + controller_node.get_file("/root/tackerc", rc_file) + else: + logger.info("found tackerc file") + return rc_file + + def __disable_heat_resource_finder_cache(self, nodes): + controllers = [node for node in nodes if node.is_controller()] + remote_heat_conf = '/etc/heat/heat.conf' + local_heat_conf = '/tmp/heat.conf' + for controller in controllers: + logger.info("Fetch {0} from controller {1}" + .format(remote_heat_conf, controller.ip)) + controller.get_file(remote_heat_conf, local_heat_conf) + with open(local_heat_conf, 'a') as cfg: + cfg.write('\n[resource_finder_cache]\n') + cfg.write('caching=False\n') + logger.info("Replace {0} with {1} in controller {2}" + .format(remote_heat_conf, + local_heat_conf, + controller.ip)) + controller.run_cmd('rm -f {0}'.format(remote_heat_conf)) + controller.put_file(local_heat_conf, remote_heat_conf) + logger.info("Restart heat-engine in {0}".format(controller.ip)) + controller.run_cmd('service heat-engine restart') + os.remove(local_heat_conf) + logger.info("Waiting for heat-engine to restart in controllers") + time.sleep(10) + + def run(self): + + deploymentHandler = DeploymentFactory.get_handler( + COMMON_CONFIG.installer_type, + COMMON_CONFIG.installer_ip, + COMMON_CONFIG.installer_user, + installer_pwd=COMMON_CONFIG.installer_password) + + cluster = COMMON_CONFIG.installer_cluster + nodes = (deploymentHandler.get_nodes({'cluster': cluster}) + if cluster is not None + else deploymentHandler.get_nodes()) + + a_controller = [node for node in nodes + if node.is_controller()][0] + + self.__disable_heat_resource_finder_cache(nodes) + + rc_file = self.__fetch_tackerc_file(a_controller) + os_utils.source_credentials(rc_file) + + logger.info("Updating env with {0}".format(rc_file)) + logger.info("OS credentials:") + for var, value in os.environ.items(): + if var.startswith("OS_"): + logger.info("\t{0}={1}".format(var, value)) + + odl_ip, odl_port = sfc_utils.get_odl_ip_port(nodes) + + ovs_logger = ovs_log.OVSLogger( + os.path.join(COMMON_CONFIG.sfc_test_dir, 'ovs-logs'), + COMMON_CONFIG.functest_results_dir) + + config_file = os.path.join(COMMON_CONFIG.config_file) + with open(config_file) as f: + config_yaml = yaml.safe_load(f) + + testcases = config_yaml.get("testcases") + testcases_ordered = OrderedDict(sorted(testcases.items(), + key=lambda x: x[1]['order'])) + overall_status = "NOT TESTED" + self.start_time = time.time() + for tc, test_cfg in testcases_ordered.items(): + if test_cfg['enabled']: + test_name = tc + test_descr = test_cfg['description'] + title = ("Running '%s - %s'" % + (test_name, test_descr)) + logger.info(title) + logger.info("%s\n" % ("=" * len(title))) + t = importlib.import_module( + "sfc.tests.functest.{0}".format(test_name), + package=None) + start_time = time.time() + try: + result = t.main() + except Exception as e: + logger.error("Exception when executing: %s" % test_name) + logger.error(e) + result = {'status': 'FAILED'} + end_time = time.time() + duration = end_time - start_time + logger.info("Results of test case '%s - %s':\n%s\n" % + (test_name, test_descr, result)) + if result['status'] == 'PASS': + status = 'PASS' + self.details.update({test_name: "worked"}) + if overall_status != "FAIL": + overall_status = "PASS" + else: + status = 'FAIL' + overall_status = "FAIL" + self.details.update({test_name: "execution error."}) + ovs_logger.create_artifact_archive() + + dic = {"duration": duration, "status": status} + self.details.update({test_name: dic}) + sfc_cleanup.cleanup(odl_ip=odl_ip, odl_port=odl_port) + + self.stop_time = time.time() + + if overall_status == "PASS": + self.result = 100 + return testcase.TestCase.EX_OK + + return testcase.TestCase.EX_RUN_ERROR if __name__ == '__main__': - parser = argparse.ArgumentParser() - parser.add_argument("-r", "--report", - help="Create json result file", - action="store_true") - args = parser.parse_args() - main(report=args.report) + logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s' + '- %(levelname)s - %(message)s') + SFC = SfcFunctest() + sys.exit(SFC.run()) diff --git a/sfc/tests/functest/sfc_one_chain_two_service_functions.py b/sfc/tests/functest/sfc_one_chain_two_service_functions.py index a32256cf..875eff9a 100644 --- a/sfc/tests/functest/sfc_one_chain_two_service_functions.py +++ b/sfc/tests/functest/sfc_one_chain_two_service_functions.py @@ -12,7 +12,8 @@ import os import sys import threading -import functest.utils.functest_logger as ft_logger +import logging +from functest.utils.constants import CONST import functest.utils.openstack_tacker as os_tacker import functest.utils.openstack_utils as os_utils import opnfv.utils.ovs_logger as ovs_log @@ -24,7 +25,7 @@ from opnfv.deployment.factory import Factory as DeploymentFactory import sfc.lib.topology_shuffler as topo_shuffler """ logging configuration """ -logger = ft_logger.Logger(__name__).getLogger() +logger = logging.getLogger(__name__) CLIENT = "client" SERVER = "server" @@ -274,4 +275,6 @@ def main(): if __name__ == '__main__': + logging.config.fileConfig( + CONST.__getattribute__('dir_functest_logging_cfg')) main() diff --git a/sfc/tests/functest/sfc_symmetric_chain.py b/sfc/tests/functest/sfc_symmetric_chain.py index 29ecee24..e3fd26f3 100644 --- a/sfc/tests/functest/sfc_symmetric_chain.py +++ b/sfc/tests/functest/sfc_symmetric_chain.py @@ -13,7 +13,7 @@ import os import sys import threading -import functest.utils.functest_logger as ft_logger +import logging import functest.utils.openstack_tacker as os_tacker import functest.utils.openstack_utils as os_utils import opnfv.utils.ovs_logger as ovs_log @@ -25,7 +25,8 @@ from sfc.lib.results import Results import sfc.lib.topology_shuffler as topo_shuffler -logger = ft_logger.Logger(__name__).getLogger() +from functest.utils.constants import CONST +logger = logging.getLogger(__name__) CLIENT = "client" SERVER = "server" @@ -249,4 +250,6 @@ def main(): if __name__ == '__main__': + logging.config.fileConfig( + CONST.__getattribute__('dir_functest_logging_cfg')) main() diff --git a/sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py b/sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py index 7cde7433..07bf5166 100644 --- a/sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py +++ b/sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py @@ -12,7 +12,7 @@ import os import sys import threading -import functest.utils.functest_logger as ft_logger +import logging import functest.utils.openstack_tacker as os_tacker import functest.utils.openstack_utils as os_utils import opnfv.utils.ovs_logger as ovs_log @@ -23,8 +23,9 @@ from sfc.lib.results import Results from opnfv.deployment.factory import Factory as DeploymentFactory import sfc.lib.topology_shuffler as topo_shuffler +from functest.utils.constants import CONST -logger = ft_logger.Logger(__name__).getLogger() +logger = logging.getLogger(__name__) CLIENT = "client" SERVER = "server" @@ -320,4 +321,6 @@ def main(): if __name__ == '__main__': + logging.config.fileConfig( + CONST.__getattribute__('dir_functest_logging_cfg')) main() diff --git a/vnfmgr/vnfmgr_odl/sample_config/RestConf-RSP-HttpPost.json b/vnfmgr/vnfmgr_odl/sample_config/RestConf-RSP-HttpPost.json index 998d1e07..c0085eae 100755 --- a/vnfmgr/vnfmgr_odl/sample_config/RestConf-RSP-HttpPost.json +++ b/vnfmgr/vnfmgr_odl/sample_config/RestConf-RSP-HttpPost.json @@ -1,7 +1,6 @@ { "input": { "name": "sfc-path-1", - "parent-service-function-path": "sfc-path-1", - "symmetric": true + "parent-service-function-path": "sfc-path-1" } } diff --git a/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFCs-HttpPut.json b/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFCs-HttpPut.json index 34449647..4728a669 100755 --- a/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFCs-HttpPut.json +++ b/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFCs-HttpPut.json @@ -3,15 +3,14 @@ "service-function-chain": [ { "name": "sfc-chain-1", - "symmetric": true, "sfc-service-function": [ { "name": "firewall-abstract1", - "type": "service-function-type:firewall" + "type": "firewall" }, { "name": "firewall-abstract2", - "type": "service-function-type:firewall" + "type": "firewall" } ] } diff --git a/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFFs-HttpPut.json b/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFFs-HttpPut.json index 7809f1c2..85513e9e 100755 --- a/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFFs-HttpPut.json +++ b/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFFs-HttpPut.json @@ -3,53 +3,41 @@ "service-function-forwarder": [ { "name": "SFF2", + "service-function-forwarder-ovs:ovs-bridge": { + "bridge-name": "br-int" + }, "sff-data-plane-locator": [ { "name": "sff2-dp1", - "service-function-forwarder-ovs:ovs-bridge": {}, "data-plane-locator": { "transport": "service-locator:vxlan-gpe", "port": 6633, - "ip": "192.168.1.100" + "ip": "159.107.45.19" }, "service-function-forwarder-ovs:ovs-options": { - "nshc1": "flow", - "nsp": "flow", "key": "flow", "remote-ip": "flow", - "nsi": "flow", - "nshc2": "flow", - "nshc3": "flow", "dst-port": "6633", - "nshc4": "flow" + "exts": "gpe" } } ], - "service-function-forwarder-ovs:ovs-bridge": { - "bridge-name": "ovs-br2" - }, "service-function-dictionary": [ { "name": "firewall-2", - "type": "service-function-type:firewall", "sff-sf-data-plane-locator": { "sf-dpl-name": "firewall-2-dp1", "sff-dpl-name": "sff2-dp1" } }, - { + { "name": "firewall-3", - "type": "service-function-type:firewall", "sff-sf-data-plane-locator": { - "service-function-forwarder-ovs:ovs-bridge": {}, - "transport": "service-locator:vxlan-gpe", - "port": 6633, - "ip": "192.168.1.12" + "sf-dpl-name": "firewall-3-dp1", + "sff-dpl-name": "sff2-dp1" } } - ], - "ip-mgmt-address": "192.168.1.100", - "service-node": "" + ] }, { "name": "SFF-CL", @@ -60,7 +48,7 @@ "data-plane-locator": { "transport": "service-locator:vxlan-gpe", "port": 30001, - "ip": "192.168.1.50" + "ip": "159.107.45.19" } } ], diff --git a/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFs-HttpPut.json b/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFs-HttpPut.json index 391394f3..9616d8bc 100755 --- a/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFs-HttpPut.json +++ b/vnfmgr/vnfmgr_odl/sample_config/RestConf-SFs-HttpPut.json @@ -13,7 +13,6 @@ } ], "rest-uri": "http://192.168.1.11:5000", - "nsh-aware": true, "ip-mgmt-address": "192.168.1.11", "type": "firewall" }, @@ -29,7 +28,6 @@ } ], "rest-uri": "http://192.168.1.12:5000", - "nsh-aware": true, "ip-mgmt-address": "192.168.1.12", "type": "firewall" } |