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>
-
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:
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 %}
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
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
%{_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
%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
--- /dev/null
+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
--- /dev/null
+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
# 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.
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
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)
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
'vsperf',
'ceph_device',
'yardstick',
- 'dovetail']
+ 'dovetail',
+ 'odl_vpp_routing_node']
VALID_ROLES = ['Controller', 'Compute', 'ObjectStorage']
VALID_PERF_OPTS = ['kernel', 'nova', 'vpp']
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,
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',
# 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
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
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):