aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README2
-rw-r--r--docs/development/design/architecture.rst8
-rw-r--r--docs/development/design/introduction.rst2
-rw-r--r--docs/development/design/usecases.rst2
-rw-r--r--requirements.txt9
-rw-r--r--setup.cfg7
-rw-r--r--setup.py28
-rw-r--r--sfc/lib/cleanup.py4
-rw-r--r--sfc/lib/config.py4
-rw-r--r--sfc/lib/results.py4
-rw-r--r--sfc/lib/topology_shuffler.py4
-rw-r--r--sfc/lib/utils.py4
-rw-r--r--sfc/tests/functest/config.yaml3
-rw-r--r--sfc/tests/functest/run_tests.py289
-rw-r--r--sfc/tests/functest/sfc_one_chain_two_service_functions.py7
-rw-r--r--sfc/tests/functest/sfc_symmetric_chain.py7
-rw-r--r--sfc/tests/functest/sfc_two_chains_SSH_and_HTTP.py7
-rwxr-xr-xvnfmgr/vnfmgr_odl/sample_config/RestConf-RSP-HttpPost.json3
-rwxr-xr-xvnfmgr/vnfmgr_odl/sample_config/RestConf-SFCs-HttpPut.json5
-rwxr-xr-xvnfmgr/vnfmgr_odl/sample_config/RestConf-SFFs-HttpPut.json32
-rwxr-xr-xvnfmgr/vnfmgr_odl/sample_config/RestConf-SFs-HttpPut.json2
21 files changed, 210 insertions, 223 deletions
diff --git a/README b/README
index 04d252a4..9872f35f 100644
--- a/README
+++ b/README
@@ -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
diff --git a/setup.py b/setup.py
index 07de7888..a1e9b3bb 100644
--- a/setup.py
+++ b/setup.py
@@ -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"
}