summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFeng Pan <fpan@redhat.com>2017-02-22 14:44:39 -0500
committerTim Rozet <trozet@redhat.com>2017-03-12 22:43:53 -0400
commit78a9d70f7f6a5b0b0f941c849a9250da2181c428 (patch)
treed9256a30c6b973ded974a22b38c19d78f6761078
parent05954847525a0eab9db88ab6f327fb960e1fbd03 (diff)
Add support for odl_l3-fdio
This patch adds support for ODL L3 FDIO scenario. Introduces a new deploy settings parameter, odl_routing_node, to indicate the routing node's hostname. This parameter will only be used for this scenario. Change-Id: I8df3eb701299007761c6cec42c4ca318b124a0b8 opnfv-tht-pr: 108 os-net-config-pr: 4 Signed-off-by: Feng Pan <fpan@redhat.com> (cherry picked from commit 7d994a3c3e18227c26bf58049e4d5780144ecf98)
-rw-r--r--build/nics-template.yaml.jinja211
-rw-r--r--build/opnfv-environment.yaml4
-rw-r--r--build/rpm_specs/opnfv-apex-common.spec6
-rw-r--r--build/variables.sh12
-rw-r--r--config/deploy/os-odl_l3-fdio-ha.yaml37
-rw-r--r--config/deploy/os-odl_l3-fdio-noha.yaml37
-rw-r--r--config/network/network_settings_vpp.yaml6
-rwxr-xr-xlib/overcloud-deploy-functions.sh20
-rw-r--r--lib/python/apex/deploy_settings.py3
-rwxr-xr-xlib/python/apex_python_utils.py22
-rwxr-xr-xlib/undercloud-functions.sh10
-rw-r--r--tests/test_apex_python_utils_py.py3
12 files changed, 140 insertions, 31 deletions
diff --git a/build/nics-template.yaml.jinja2 b/build/nics-template.yaml.jinja2
index 920e9a1b..f2c8000a 100644
--- a/build/nics-template.yaml.jinja2
+++ b/build/nics-template.yaml.jinja2
@@ -176,8 +176,8 @@ resources:
-
type: {{ nets['tenant']['nic_mapping'][role]['phys_type'] }}
name: {{ nets['tenant']['nic_mapping'][role]['members'][0] }}
- {%- if 'uio_driver' in nets['tenant']['nic_mapping'][role] %}
- uio_driver: {{ nets['tenant']['nic_mapping'][role]['uio_driver'] }}
+ {%- if 'uio-driver' in nets['tenant']['nic_mapping'][role] %}
+ uio_driver: {{ nets['tenant']['nic_mapping'][role]['uio-driver'] }}
{%- endif %}
use_dhcp: false
addresses:
@@ -185,10 +185,13 @@ resources:
ip_netmask: {get_param: TenantIpSubnet}
{%- endif %}
{%- endif %}
- {%- if nets['external'][0]['enabled'] and external_net_type == 'interface' and nets['external'][0]['nic_mapping'][role]['vlan'] == 'native' %}
+ {%- if nets['external'][0]['enabled'] and external_net_type != 'br-ex' and nets['external'][0]['nic_mapping'][role]['vlan'] == 'native' %}
-
- type: interface
+ type: {{ nets['external'][0]['nic_mapping'][role]['phys_type'] }}
name: {{ nets['external'][0]['nic_mapping'][role]['members'][0] }}
+ {%- if 'uio-driver' in nets['external'][0]['nic_mapping'][role] %}
+ uio_driver: {{ nets['external'][0]['nic_mapping'][role]['uio-driver'] }}
+ {%- endif %}
{%- if role == 'controller' %}
dns_servers: {get_param: DnsServers}
{%- endif %}
diff --git a/build/opnfv-environment.yaml b/build/opnfv-environment.yaml
index 30e68997..ff8d501d 100644
--- a/build/opnfv-environment.yaml
+++ b/build/opnfv-environment.yaml
@@ -25,8 +25,8 @@ parameter_defaults:
key: 'os_compute_api:servers:show:host_status'
value: 'rule:admin_or_owner'
nova::api::default_floating_pool: 'external'
- #neutron::agents::dhcp::interface_driver: "neutron.agent.linux.interface.NSDriver"
- #neutron::agents::l3::interface_driver: "neutron.agent.linux.interface.NSDriver"
+ #VPP routing node, used for odl_l3-fdio only.
+ #opendaylight::vpp_routing_node: overcloud-novacompute-0.opnfvlf.org
ControllerServices:
- OS::TripleO::Services::CACerts
# - OS::TripleO::Services::CephClient
diff --git a/build/rpm_specs/opnfv-apex-common.spec b/build/rpm_specs/opnfv-apex-common.spec
index a004542b..702e26b4 100644
--- a/build/rpm_specs/opnfv-apex-common.spec
+++ b/build/rpm_specs/opnfv-apex-common.spec
@@ -51,6 +51,8 @@ install config/deploy/os-odl-bgpvpn-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-ape
install config/deploy/os-odl-bgpvpn-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl-bgpvpn-noha.yaml
install config/deploy/os-odl_l2-fdio-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l2-fdio-ha.yaml
install config/deploy/os-odl_l2-fdio-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l2-fdio-noha.yaml
+install config/deploy/os-odl_l3-fdio-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l3-fdio-noha.yaml
+install config/deploy/os-odl_l3-fdio-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l3-fdio-ha.yaml
install config/deploy/os-odl_l3-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-ha.yaml
install config/deploy/os-odl-gluon-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl-gluon-noha.yaml
#install config/deploy/os-onos-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-onos-nofeature-ha.yaml
@@ -130,6 +132,8 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/
%{_sysconfdir}/opnfv-apex/os-odl-bgpvpn-noha.yaml
%{_sysconfdir}/opnfv-apex/os-odl_l2-fdio-noha.yaml
%{_sysconfdir}/opnfv-apex/os-odl_l2-fdio-ha.yaml
+%{_sysconfdir}/opnfv-apex/os-odl_l3-fdio-noha.yaml
+%{_sysconfdir}/opnfv-apex/os-odl_l3-fdio-ha.yaml
%{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-ha.yaml
%{_sysconfdir}/opnfv-apex/os-odl-gluon-noha.yaml
#%{_sysconfdir}/opnfv-apex/os-onos-nofeature-ha.yaml
@@ -149,6 +153,8 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/
%doc %{_docdir}/opnfv/inventory.yaml.example
%changelog
+* Fri Mar 10 2017 Feng Pan <fpan@redhat.com> - 4.0-6
+- Add os-odl_l3-fdio-noha.yaml and os-odl_l3-fdio-ha.yaml
* Wed Mar 08 2017 Dan Radez <dradez@redhat.com> - 4.0-5
- Commenting out ONOS, unsupported in Danube
- Adding kvm4nfv files
diff --git a/build/variables.sh b/build/variables.sh
index be610d43..c4eb57bc 100644
--- a/build/variables.sh
+++ b/build/variables.sh
@@ -24,13 +24,13 @@ onos_ovs_pkg=package_ovs_rpm3.tar.gz
if [ -z ${GS_PATHNAME+x} ]; then
GS_PATHNAME=/colorado
fi
-dpdk_uri_base=http://artifacts.opnfv.org/ovsnfv$GS_PATHNAME
+dpdk_uri_base=http://artifacts.opnfv.org/ovsnfv
dpdk_rpms=(
-'ovs4opnfv-e8acab14-dpdk-16.04.0-1.el7.centos.x86_64.rpm'
-'ovs4opnfv-e8acab14-dpdk-devel-16.04.0-1.el7.centos.x86_64.rpm'
-'ovs4opnfv-e8acab14-dpdk-examples-16.04.0-1.el7.centos.x86_64.rpm'
-'ovs4opnfv-e8acab14-dpdk-tools-16.04.0-1.el7.centos.x86_64.rpm'
-'ovs4opnfv-e8acab14-openvswitch-2.5.90-0.12032.gitc61e93d6.1.el7.centos.x86_64.rpm'
+'ovs4opnfv-e8acab14-dpdk-16.11-5.el7.centos.x86_64.rpm'
+'ovs4opnfv-e8acab14-dpdk-devel-16.11-5.el7.centos.x86_64.rpm'
+'ovs4opnfv-e8acab14-dpdk-examples-16.11-5.el7.centos.x86_64.rpm'
+'ovs4opnfv-e8acab14-dpdk-tools-16.11-5.el7.centos.x86_64.rpm'
+'ovs4opnfv-e8acab14-openvswitch-2.6.0-1.el7.centos.x86_64.rpm'
)
kvmfornfv_uri_base="http://artifacts.opnfv.org/kvmfornfv"
diff --git a/config/deploy/os-odl_l3-fdio-ha.yaml b/config/deploy/os-odl_l3-fdio-ha.yaml
new file mode 100644
index 00000000..af81e5a5
--- /dev/null
+++ b/config/deploy/os-odl_l3-fdio-ha.yaml
@@ -0,0 +1,37 @@
+global_params:
+ ha_enabled: true
+
+deploy_options:
+ sdn_controller: opendaylight
+ sdn_l3: true
+ odl_version: carbon
+ odl_vpp_routing_node: overcloud-novacompute-0
+ tacker: true
+ congress: true
+ sfc: false
+ vpn: false
+ vpp: true
+ dataplane: fdio
+ performance:
+ Controller:
+ kernel:
+ hugepages: 1024
+ hugepagesz: 2M
+ intel_iommu: 'on'
+ iommu: pt
+ isolcpus: 1,2
+ vpp:
+ main-core: 1
+ corelist-workers: 2
+ uio-driver: uio_pci_generic
+ Compute:
+ kernel:
+ hugepagesz: 2M
+ hugepages: 2048
+ intel_iommu: 'on'
+ iommu: pt
+ isolcpus: 1,2
+ vpp:
+ main-core: 1
+ corelist-workers: 2
+ uio-driver: uio_pci_generic
diff --git a/config/deploy/os-odl_l3-fdio-noha.yaml b/config/deploy/os-odl_l3-fdio-noha.yaml
new file mode 100644
index 00000000..adb37f3d
--- /dev/null
+++ b/config/deploy/os-odl_l3-fdio-noha.yaml
@@ -0,0 +1,37 @@
+global_params:
+ ha_enabled: false
+
+deploy_options:
+ sdn_controller: opendaylight
+ sdn_l3: true
+ odl_version: carbon
+ odl_vpp_routing_node: overcloud-novacompute-0
+ tacker: true
+ congress: true
+ sfc: false
+ vpn: false
+ vpp: true
+ dataplane: fdio
+ performance:
+ Controller:
+ kernel:
+ hugepages: 1024
+ hugepagesz: 2M
+ intel_iommu: 'on'
+ iommu: pt
+ isolcpus: 1,2
+ vpp:
+ main-core: 1
+ corelist-workers: 2
+ uio-driver: uio_pci_generic
+ Compute:
+ kernel:
+ hugepagesz: 2M
+ hugepages: 2048
+ intel_iommu: 'on'
+ iommu: pt
+ isolcpus: 1,2
+ vpp:
+ main-core: 1
+ corelist-workers: 2
+ uio-driver: uio_pci_generic
diff --git a/config/network/network_settings_vpp.yaml b/config/network/network_settings_vpp.yaml
index 4b50745f..c6792157 100644
--- a/config/network/network_settings_vpp.yaml
+++ b/config/network/network_settings_vpp.yaml
@@ -96,14 +96,12 @@ networks: # Network configurations
# vlan, vxlan, gre
nic_mapping: # Mapping of network configuration for Overcloud Nodes
compute: # Mapping for compute profile (nodes that will be used as Compute nodes)
- phys_type: vpp_interface # Physical interface type (interface/vpp_interface)
- uio_driver: uio_pci_generic # uio driver, for vpp interfaces only
+ phys_type: interface # Physical interface type (interface/bond)
vlan: native # VLAN tag to use with this NIC
members: # Physical NIC members of this mapping (Single value allowed for interface phys_type)
- eth1 # Note that logic nic name like nic1 cannot be used for fdio deployment yet.
controller: # Mapping for controller profile (nodes that will be used as Controller nodes)
- phys_type: vpp_interface # Physical interface type (interface/vpp_interface)
- uio_driver: uio_pci_generic # uio driver, for vpp interfaces only
+ phys_type: interface # Physical interface type (interface/bond)
vlan: native
members:
- eth1 # Note that logic nic name like nic1 cannot be used for fdio deployment yet.
diff --git a/lib/overcloud-deploy-functions.sh b/lib/overcloud-deploy-functions.sh
index a46c6c6b..4d4b7647 100755
--- a/lib/overcloud-deploy-functions.sh
+++ b/lib/overcloud-deploy-functions.sh
@@ -28,7 +28,11 @@ function overcloud_deploy {
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/services/gluon.yaml"
fi
elif [ "${deploy_options_array['vpp']}" == 'True' ]; then
- DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-honeycomb.yaml"
+ if [ "${deploy_options_array['sdn_l3']}" == "True" ]; then
+ DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-honeycomb.yaml"
+ else
+ DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-honeycomb-l2.yaml"
+ fi
else
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-l3.yaml"
fi
@@ -145,6 +149,13 @@ EOI
EOI
fi
+ #Configure routing node for odl_l3-fdio
+ if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "${deploy_options_array['dataplane']}" == 'fdio' && "${deploy_options_array['sdn_l3']}" == 'True' ]]; then
+ ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
+ sed -i "/opendaylight::vpp_routing_node:/c\ opendaylight::vpp_routing_node: ${deploy_options_array['odl_vpp_routing_node']}.${domain_name}" ${ENV_FILE}
+EOI
+ fi
+
if [ -n "${deploy_options_array['performance']}" ]; then
for option in "${performance_options[@]}" ; do
arr=($option)
@@ -161,13 +172,6 @@ EOI
EOI
fi
- if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "${deploy_options_array['dataplane']}" == 'fdio' ]]; then
- ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
- sed -i "/neutron::agents::dhcp::interface_driver:/c\ neutron::agents::dhcp::interface_driver: neutron.agent.linux.interface.NSDriver" ${ENV_FILE}
- sed -i "/neutron::agents::l3::interface_driver:/c\ neutron::agents::l3::interface_driver: neutron.agent.linux.interface.NSDriver" ${ENV_FILE}
-EOI
- fi
-
# Set ODL version accordingly
if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' && -n "${deploy_options_array['odl_version']}" ]]; then
case "${deploy_options_array['odl_version']}" in
diff --git a/lib/python/apex/deploy_settings.py b/lib/python/apex/deploy_settings.py
index 566e8bea..9fb4c6f7 100644
--- a/lib/python/apex/deploy_settings.py
+++ b/lib/python/apex/deploy_settings.py
@@ -30,7 +30,8 @@ OPT_DEPLOY_SETTINGS = ['performance',
'vsperf',
'ceph_device',
'yardstick',
- 'dovetail']
+ 'dovetail',
+ 'odl_vpp_routing_node']
VALID_ROLES = ['Controller', 'Compute', 'ObjectStorage']
VALID_PERF_OPTS = ['kernel', 'nova', 'vpp']
diff --git a/lib/python/apex_python_utils.py b/lib/python/apex_python_utils.py
index e21d0464..830af360 100755
--- a/lib/python/apex_python_utils.py
+++ b/lib/python/apex_python_utils.py
@@ -106,10 +106,25 @@ def build_nic_template(args):
template_dir, template = args.template.rsplit('/', 1)
netsets = NetworkSettings(args.net_settings_file)
+ nets = netsets.get('networks')
+ ds = DeploySettings(args.deploy_settings_file).get('deploy_options')
env = Environment(loader=FileSystemLoader(template_dir), autoescape=True)
template = env.get_template(template)
- print(template.render(nets=netsets['networks'],
+ if ds['dataplane'] == 'fdio':
+ nets['tenant']['nic_mapping'][args.role]['phys_type'] = 'vpp_interface'
+ if ds['sdn_l3']:
+ nets['external'][0]['nic_mapping'][args.role]['phys_type'] =\
+ 'vpp_interface'
+ if ds.get('performance', {}).get(args.role.title(), {}).get('vpp', {})\
+ .get('uio-driver'):
+ nets['tenant']['nic_mapping'][args.role]['uio-driver'] =\
+ ds['performance'][args.role.title()]['vpp']['uio-driver']
+ if ds['sdn_l3']:
+ nets['external'][0]['nic_mapping'][args.role]['uio-driver'] =\
+ ds['performance'][args.role.title()]['vpp']['uio-driver']
+
+ print(template.render(nets=nets,
role=args.role,
external_net_af=netsets.get_ip_addr_family(),
external_net_type=args.ext_net_type,
@@ -175,11 +190,14 @@ def get_parser():
help='path to network settings file')
nic_template.add_argument('-e', '--ext-net-type', default='interface',
dest='ext_net_type',
- choices=['interface', 'br-ex'],
+ choices=['interface', 'vpp_interface', 'br-ex'],
help='External network type')
nic_template.add_argument('-d', '--ovs-dpdk-bridge',
default=None, dest='ovs_dpdk_bridge',
help='OVS DPDK Bridge Name')
+ nic_template.add_argument('--deploy-settings-file',
+ help='path to deploy settings file')
+
nic_template.set_defaults(func=build_nic_template)
# parse-deploy-settings
deploy_settings = subparsers.add_parser('parse-deploy-settings',
diff --git a/lib/undercloud-functions.sh b/lib/undercloud-functions.sh
index 080fcbbd..2a370bff 100755
--- a/lib/undercloud-functions.sh
+++ b/lib/undercloud-functions.sh
@@ -127,7 +127,11 @@ function configure_undercloud {
# check for ODL L3/ONOS
if [ "${deploy_options_array['sdn_l3']}" == 'True' ]; then
- ext_net_type=br-ex
+ if [ "${deploy_options_array['dataplane']}" == 'fdio' ]; then
+ ext_net_type=vpp_interface
+ else
+ ext_net_type=br-ex
+ fi
fi
if [ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' ]; then
@@ -136,12 +140,12 @@ function configure_undercloud {
ovs_dpdk_bridge=''
fi
- if ! controller_nic_template=$(python3 -B $LIB/python/apex_python_utils.py nic-template -r controller -s $NETSETS -t $BASE/nics-template.yaml.jinja2 -e "br-ex"); then
+ if ! controller_nic_template=$(python3 -B $LIB/python/apex_python_utils.py nic-template -r controller -s $NETSETS -t $BASE/nics-template.yaml.jinja2 -e "br-ex" --deploy-settings-file $DEPLOY_SETTINGS_FILE); then
echo -e "${red}ERROR: Failed to generate controller NIC heat template ${reset}"
exit 1
fi
- if ! compute_nic_template=$(python3 -B $LIB/python/apex_python_utils.py nic-template -r compute -s $NETSETS -t $BASE/nics-template.yaml.jinja2 -e $ext_net_type -d "$ovs_dpdk_bridge"); then
+ if ! compute_nic_template=$(python3 -B $LIB/python/apex_python_utils.py nic-template -r compute -s $NETSETS -t $BASE/nics-template.yaml.jinja2 -e $ext_net_type -d "$ovs_dpdk_bridge" --deploy-settings-file $DEPLOY_SETTINGS_FILE); then
echo -e "${red}ERROR: Failed to generate compute NIC heat template ${reset}"
exit 1
fi
diff --git a/tests/test_apex_python_utils_py.py b/tests/test_apex_python_utils_py.py
index eb16f67d..550042f5 100644
--- a/tests/test_apex_python_utils_py.py
+++ b/tests/test_apex_python_utils_py.py
@@ -81,7 +81,8 @@ class TestCommonUtils(object):
args = self.parser.parse_args(['nic-template',
'-s', net_sets,
'-r', 'compute',
- '-t', nic_template])
+ '-t', nic_template,
+ '--deploy-settings-file', deploy_sets])
assert_equal(build_nic_template(args), None)
def test_parse_inventory(self):