summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/network-environment.yaml4
-rw-r--r--build/nics-template.yaml.jinja223
-rw-r--r--build/opnfv-environment.yaml3
-rw-r--r--build/ovs-dpdk-preconfig.yaml101
-rw-r--r--build/rpm_specs/opnfv-apex-common.spec6
-rwxr-xr-xbuild/undercloud.sh1
-rw-r--r--build/variables.sh11
-rw-r--r--config/deploy/os-nosdn-ovs-ha.yaml4
-rw-r--r--config/deploy/os-nosdn-ovs-noha.yaml4
-rw-r--r--config/deploy/os-odl_l3-ovs-ha.yaml27
-rw-r--r--config/deploy/os-odl_l3-ovs-noha.yaml27
-rw-r--r--config/network/network_settings.yaml15
-rwxr-xr-xlib/overcloud-deploy-functions.sh84
-rw-r--r--lib/python/apex/deploy_settings.py2
-rw-r--r--tests/test_apex_network_settings.py9
15 files changed, 266 insertions, 55 deletions
diff --git a/build/network-environment.yaml b/build/network-environment.yaml
index 8367371b..40f8e3be 100644
--- a/build/network-environment.yaml
+++ b/build/network-environment.yaml
@@ -44,6 +44,10 @@ resource_registry:
OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None
OS::TripleO::Services::SwiftProxy: OS::Heat::None
+ # Extra Config
+ OS::TripleO::ComputeExtraConfigPre: OS::Heat::None
+ OS::TripleO::ControllerExtraConfigPre: OS::Heat::None
+
parameter_defaults:
NeutronExternalNetworkBridge: 'br-ex'
diff --git a/build/nics-template.yaml.jinja2 b/build/nics-template.yaml.jinja2
index f2c8000a..0913fa98 100644
--- a/build/nics-template.yaml.jinja2
+++ b/build/nics-template.yaml.jinja2
@@ -156,7 +156,7 @@ resources:
{%- if nets['tenant']['enabled'] and nets['tenant']['nic_mapping'][role]['vlan'] == 'native' %}
{%- if ovs_dpdk_bridge == 'br-phy' and role == 'compute' %}
-
- type: ovs_bridge
+ type: ovs_user_bridge
name: {{ ovs_dpdk_bridge }}
use_dhcp: false
addresses:
@@ -164,14 +164,15 @@ resources:
ip_netmask: {get_param: TenantIpSubnet}
members:
-
- type: interface
- name: {{ nets['tenant']['nic_mapping'][role]['members'][0] }}
- # force the MAC address of the bridge to this interface
- primary: true
- -
- type: ovs_bridge
- name: br-tun
- use_dhcp: false
+ type: ovs_dpdk_port
+ name: dpdk0
+ driver: {{ nets['tenant']['nic_mapping'][role]['uio_driver'] }}
+ members:
+ -
+ type: interface
+ name: {{ nets['tenant']['nic_mapping'][role]['members'][0] }}
+ # force the MAC address of the bridge to this interface
+ primary: true
{%- else %}
-
type: {{ nets['tenant']['nic_mapping'][role]['phys_type'] }}
@@ -208,7 +209,11 @@ resources:
next_hop: {get_param: ExternalInterfaceDefaultRoute}
{%- elif nets['external'][0]['enabled'] and external_net_type == 'br-ex' and nets['external'][0]['nic_mapping'][role]['vlan'] == 'native' %}
-
+ {%- if ovs_dpdk_bridge == 'br-phy' and role == 'compute' %}
+ type: ovs_user_bridge
+ {%- else %}
type: ovs_bridge
+ {%- endif %}
name: {get_input: bridge_name}
use_dhcp: false
members:
diff --git a/build/opnfv-environment.yaml b/build/opnfv-environment.yaml
index 8b58b359..b42779ba 100644
--- a/build/opnfv-environment.yaml
+++ b/build/opnfv-environment.yaml
@@ -13,6 +13,9 @@ parameter_defaults:
#NovaSchedulerDefaultFilters: "RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter"
# Kernel arguments, this value will be set to kernel arguments specified for compute nodes in deploy setting file.
#ComputeKernelArgs: "intel_iommu=on iommu=pt default_hugepagesz=2MB hugepagesz=2MB hugepages=2048"
+ #PmdCoreList: 1
+ #OvsDpdkCoreList: 2
+ #OvsDpdkSocketMemory: 1024
ExtraConfig:
tripleo::ringbuilder::build_ring: False
nova::nova_public_key:
diff --git a/build/ovs-dpdk-preconfig.yaml b/build/ovs-dpdk-preconfig.yaml
new file mode 100644
index 00000000..d57b0b7a
--- /dev/null
+++ b/build/ovs-dpdk-preconfig.yaml
@@ -0,0 +1,101 @@
+heat_template_version: 2014-10-16
+
+description: >
+ Example extra config for post-deployment
+
+parameters:
+ server:
+ type: string
+ OvsDpdkCoreList:
+ description: >
+ List of logical cores for OVS DPDK
+ type: string
+ default: ""
+ OvsDpdkSocketMemory:
+ description: Memory allocated for each socket
+ default: ""
+ type: string
+ PmdCoreList:
+ description: >
+ A list or range of physical CPU cores to be pinned to PMD
+ The given args will be appended to the tuned cpu-partitioning profile.
+ Ex. HostCpusList: '4-12' will tune cores from 4-12
+ type: string
+ default: ""
+
+resources:
+ OvsDpdkSetup:
+ type: OS::Heat::StructuredDeployment
+ properties:
+ server: {get_param: server}
+ config: {get_resource: OvsDpdkConfig}
+
+ OvsDpdkConfig:
+ type: OS::Heat::SoftwareConfig
+ properties:
+ group: script
+ config:
+ str_replace:
+ template: |
+ #!/bin/bash
+ set -x
+ get_mask()
+ {
+ local list=$1
+ local mask=0
+ declare -a bm
+ max_idx=0
+ for core in $(echo $list | sed 's/,/ /g')
+ do
+ index=$(($core/32))
+ bm[$index]=0
+ if [ $max_idx -lt $index ]; then
+ max_idx=$index
+ fi
+ done
+ for ((i=$max_idx;i>=0;i--));
+ do
+ bm[$i]=0
+ done
+ for core in $(echo $list | sed 's/,/ /g')
+ do
+ index=$(($core/32))
+ temp=$((1<<$core))
+ bm[$index]=$((${bm[$index]} | $temp))
+ done
+ printf -v mask "%x" "${bm[$max_idx]}"
+ for ((i=$max_idx-1;i>=0;i--));
+ do
+ printf -v hex "%08x" "${bm[$i]}"
+ mask+=$hex
+ done
+ printf "%s" "$mask"
+ }
+ pmd_cpu_mask=$( get_mask $PMD_CORES )
+ dpdk_lcore_mask=$( get_mask $DPDK_CORES )
+ yum remove -y vpp-devel
+ yum install -y /root/dpdk_rpms/*
+ systemctl restart openvswitch
+ sleep 5
+ sed -i "s/#user\s*=.*/user = \"root\"/" /etc/libvirt/qemu.conf
+ sed -i "s/#group\s*=.*/group = \"root\"/" /etc/libvirt/qemu.conf
+ ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
+ if [ -n "$SOCKET_MEMORY" ]; then
+ ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-socket-mem=$SOCKET_MEMORY
+ fi
+ if [ -n "$pmd_cpu_mask" ]; then
+ ovs-vsctl --no-wait set Open_vSwitch . other_config:pmd-cpu-mask=$pmd_cpu_mask
+ fi
+ if [ -n "$dpdk_lcore_mask" ]; then
+ ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-lcore-mask=$dpdk_lcore_mask
+ fi
+ systemctl restart openvswitch
+
+ params:
+ $DPDK_CORES: {get_param: OvsDpdkCoreList}
+ $PMD_CORES: {get_param: PmdCoreList}
+ $SOCKET_MEMORY: {get_param: OvsDpdkSocketMemory}
+outputs:
+ deploy_stdout:
+ description: Output of the extra dpdk ovs deployment
+ value: {get_attr: [OvsDpdkSetup, deploy_stdout]}
diff --git a/build/rpm_specs/opnfv-apex-common.spec b/build/rpm_specs/opnfv-apex-common.spec
index 6a03be04..4266897c 100644
--- a/build/rpm_specs/opnfv-apex-common.spec
+++ b/build/rpm_specs/opnfv-apex-common.spec
@@ -56,6 +56,8 @@ install config/deploy/os-odl_l3-fdio-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-
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_l3-nofeature-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-noha.yaml
+install config/deploy/os-odl_l3-ovs-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l3-ovs-ha.yaml
+install config/deploy/os-odl_l3-ovs-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l3-ovs-noha.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
#install config/deploy/os-onos-sfc-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-onos-sfc-ha.yaml
@@ -137,6 +139,8 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/
%{_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-ovs-noha.yaml
+%{_sysconfdir}/opnfv-apex/os-odl_l3-ovs-ha.yaml
%{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-ha.yaml
%{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-noha.yaml
%{_sysconfdir}/opnfv-apex/os-odl-gluon-noha.yaml
@@ -157,6 +161,8 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/
%doc %{_docdir}/opnfv/inventory.yaml.example
%changelog
+* Thu Mar 23 2017 Tim Rozet <trozet@redhat.com> - 4.0-8
+- Adds os-odl_l3-ovs-ha and noha scenarios
* Mon Mar 12 2017 Feng Pan <fpan@redhat.com> - 4.0-7
- Add os-nosdn-fdio-ha.yaml
* Fri Mar 10 2017 Feng Pan <fpan@redhat.com> - 4.0-6
diff --git a/build/undercloud.sh b/build/undercloud.sh
index 424f6f86..e3194e2b 100755
--- a/build/undercloud.sh
+++ b/build/undercloud.sh
@@ -53,6 +53,7 @@ LIBGUESTFS_BACKEND=direct virt-customize \
--upload ${BUILD_ROOT}/first-boot.yaml:/home/stack/ \
--upload ${BUILD_ROOT}/kvm4nfv-1st-boot.yaml:/home/stack/ \
--upload ${BUILD_DIR}/enable_rt_kvm.yaml:/home/stack/ \
+ --upload ${BUILD_ROOT}/ovs-dpdk-preconfig.yaml:/home/stack/ \
--upload ${BUILD_ROOT}/csit-environment.yaml:/home/stack/ \
--upload ${BUILD_ROOT}/virtual-environment.yaml:/home/stack/ \
--install "python2-congressclient" \
diff --git a/build/variables.sh b/build/variables.sh
index 9322442e..5249c2ec 100644
--- a/build/variables.sh
+++ b/build/variables.sh
@@ -24,13 +24,12 @@ 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'
)
kvmfornfv_uri_base="http://artifacts.opnfv.org/kvmfornfv"
diff --git a/config/deploy/os-nosdn-ovs-ha.yaml b/config/deploy/os-nosdn-ovs-ha.yaml
index a72fef35..c9d58671 100644
--- a/config/deploy/os-nosdn-ovs-ha.yaml
+++ b/config/deploy/os-nosdn-ovs-ha.yaml
@@ -20,3 +20,7 @@ deploy_options:
hugepages: 2048
intel_iommu: 'on'
iommu: pt
+ ovs:
+ socket_memory: 1024
+ pmd_cores: 2
+ dpdk_cores: 1
diff --git a/config/deploy/os-nosdn-ovs-noha.yaml b/config/deploy/os-nosdn-ovs-noha.yaml
index 7d054cec..cf9b854d 100644
--- a/config/deploy/os-nosdn-ovs-noha.yaml
+++ b/config/deploy/os-nosdn-ovs-noha.yaml
@@ -20,3 +20,7 @@ deploy_options:
hugepages: 2048
intel_iommu: 'on'
iommu: pt
+ ovs:
+ socket_memory: 1024
+ pmd_cores: 2
+ dpdk_cores: 1
diff --git a/config/deploy/os-odl_l3-ovs-ha.yaml b/config/deploy/os-odl_l3-ovs-ha.yaml
new file mode 100644
index 00000000..ad265699
--- /dev/null
+++ b/config/deploy/os-odl_l3-ovs-ha.yaml
@@ -0,0 +1,27 @@
+global_params:
+ ha_enabled: true
+
+deploy_options:
+ sdn_controller: opendaylight
+ odl_version: boron
+ sdn_l3: true
+ tacker: true
+ congress: true
+ sfc: false
+ vpn: false
+ dataplane: ovs_dpdk
+ performance:
+ Controller:
+ kernel:
+ hugepagesz: 2M
+ hugepages: 1024
+ Compute:
+ kernel:
+ hugepagesz: 2M
+ hugepages: 2048
+ intel_iommu: 'on'
+ iommu: pt
+ ovs:
+ socket_memory: 1024
+ pmd_cores: 2
+ dpdk_cores: 1
diff --git a/config/deploy/os-odl_l3-ovs-noha.yaml b/config/deploy/os-odl_l3-ovs-noha.yaml
new file mode 100644
index 00000000..6f7630dc
--- /dev/null
+++ b/config/deploy/os-odl_l3-ovs-noha.yaml
@@ -0,0 +1,27 @@
+global_params:
+ ha_enabled: false
+
+deploy_options:
+ sdn_controller: opendaylight
+ odl_version: boron
+ sdn_l3: true
+ tacker: true
+ congress: true
+ sfc: false
+ vpn: false
+ dataplane: ovs_dpdk
+ performance:
+ Controller:
+ kernel:
+ hugepagesz: 2M
+ hugepages: 1024
+ Compute:
+ kernel:
+ hugepagesz: 2M
+ hugepages: 2048
+ intel_iommu: 'on'
+ iommu: pt
+ ovs:
+ socket_memory: 1024
+ pmd_cores: 2
+ dpdk_cores: 1
diff --git a/config/network/network_settings.yaml b/config/network/network_settings.yaml
index be0b6836..ba784391 100644
--- a/config/network/network_settings.yaml
+++ b/config/network/network_settings.yaml
@@ -84,7 +84,7 @@ networks: # Network configurations
controller: # Mapping for controller profile (nodes that will be used as Controller nodes)
phys_type: interface
members:
- - nic1
+ - eth0
#
tenant: # Tenant network configuration
enabled: true
@@ -97,6 +97,7 @@ networks: # Network configurations
nic_mapping: # Mapping of network configuration for Overcloud Nodes
compute: # Mapping for compute profile (nodes that will be used as Compute nodes)
phys_type: interface # Physical interface type (interface or bond)
+ uio_driver: uio_pci_generic # UIO driver to use for DPDK scenarios. The value is ignored for non-DPDK scenarios.
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, for Apex you may also use the logical nic name (found by nic order), such as "nic1"
@@ -104,7 +105,7 @@ networks: # Network configurations
phys_type: interface
vlan: native
members:
- - nic2 # Note, for Apex you may also use the logical nic name (found by nic order), such as "nic1"
+ - eth1 # Note, for Apex you may also use the logical nic name (found by nic order), such as "nic1"
#
external: # Can contain 1 or more external networks
- public: # "public" network will be the network the installer VM attaches to
@@ -135,7 +136,7 @@ networks: # Network configurations
phys_type: interface
vlan: native
members:
- - nic3
+ - eth2
external_overlay: # External network to be created in OpenStack by Services tenant
name: Public_internet
type: flat
@@ -168,7 +169,7 @@ networks: # Network configurations
phys_type: interface
vlan: 101
members:
- - nic3
+ - eth2
external_overlay: # External network to be created in OpenStack by Services tenant
name: private_cloud
type: vlan
@@ -189,7 +190,7 @@ networks: # Network configurations
phys_type: interface
vlan: native
members:
- - nic4
+ - eth3
#
api: # API network configuration
enabled: false
@@ -201,12 +202,12 @@ networks: # Network configurations
phys_type: interface # Physical interface type (interface or bond)
vlan: native # VLAN tag to use with this NIC
members: # Physical NIC members of this mapping (Single value allowed for interface phys_type)
- - nic5 # Note, for Apex you may also use the logical nic name (found by nic order), such as "nic1"
+ - eth4 # Note, for Apex you may also use the logical nic name (found by nic order), such as "nic1"
controller: # Mapping for controller profile (nodes that will be used as Controller nodes)
phys_type: interface
vlan: native
members:
- - nic5
+ - eth4
# Apex specific settings
apex:
diff --git a/lib/overcloud-deploy-functions.sh b/lib/overcloud-deploy-functions.sh
index 97f809da..8f5b1a21 100755
--- a/lib/overcloud-deploy-functions.sh
+++ b/lib/overcloud-deploy-functions.sh
@@ -13,6 +13,12 @@
function overcloud_deploy {
local num_compute_nodes
local num_control_nodes
+ local dpdk_cores pmd_cores socket_mem ovs_dpdk_perf_flag ovs_option_heat_arr
+ declare -A ovs_option_heat_arr
+
+ ovs_option_heat_arr['dpdk_cores']=OvsDpdkCoreList
+ ovs_option_heat_arr['pmd_cores']=PmdCoreList
+ ovs_option_heat_arr['socket_memory']=OvsDpdkSocketMemory
# OPNFV Default Environment and Network settings
DEPLOY_OPTIONS+=" -e ${ENV_FILE}"
@@ -56,6 +62,8 @@ function overcloud_deploy {
echo -e "${blue}INFO: SDN Controller disabled...will deploy nosdn scenario${reset}"
if [ "${deploy_options_array['vpp']}" == 'True' ]; then
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-vpp.yaml"
+ elif [ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' ]; then
+ DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ovs-dpdk.yaml"
fi
SDN_IMAGE=opendaylight
else
@@ -90,6 +98,16 @@ function overcloud_deploy {
ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" "rm -f overcloud-full.qcow2"
scp ${SSH_OPTIONS[@]} $IMAGES/overcloud-full-${SDN_IMAGE}.qcow2 "stack@$UNDERCLOUD":overcloud-full.qcow2
+ # disable neutron openvswitch agent from starting
+ if [[ -n "${deploy_options_array['sdn_controller']}" && "${deploy_options_array['sdn_controller']}" != 'False' ]]; then
+ echo -e "${blue}INFO: Disabling neutron-openvswitch-agent from systemd${reset}"
+ ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
+ LIBGUESTFS_BACKEND=direct virt-customize --run-command "rm -f /etc/systemd/system/multi-user.target.wants/neutron-openvswitch-agent.service" \
+ --run-command "rm -f /usr/lib/systemd/system/neutron-openvswitch-agent.service" \
+ -a overcloud-full.qcow2
+EOI
+ fi
+
if [ "${deploy_options_array['vpn']}" == 'True' ]; then
echo -e "${blue}INFO: Enabling ZRPC and Quagga${reset}"
ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
@@ -122,11 +140,7 @@ EOF
-a overcloud-full.qcow2
if [ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' ]; then
- LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum install -y /root/dpdk_rpms/*" \
- --run-command "sed -i '/RuntimeDirectoryMode=.*/d' /usr/lib/systemd/system/openvswitch-nonetwork.service" \
- --run-command "printf \"%s\\n\" RuntimeDirectoryMode=0775 Group=qemu UMask=0002 >> /usr/lib/systemd/system/openvswitch-nonetwork.service" \
- --run-command "sed -i 's/\\(^\\s\\+\\)\\(start_daemon "$OVS_VSWITCHD_PRIORITY"\\)/\\1umask 0002 \\&\\& \\2/' /usr/share/openvswitch/scripts/ovs-ctl" \
- -a overcloud-full.qcow2
+ sed -i "/OS::TripleO::ComputeExtraConfigPre:/c\ OS::TripleO::ComputeExtraConfigPre: ./ovs-dpdk-preconfig.yaml" network-environment.yaml
fi
EOI
@@ -164,19 +178,34 @@ EOI
fi
if [ -n "${deploy_options_array['performance']}" ]; then
+ ovs_dpdk_perf_flag="False"
for option in "${performance_options[@]}" ; do
- arr=($option)
- # use compute's kernel settings for all nodes for now.
- if [ "${arr[0]}" == "Compute" ] && [ "${arr[1]}" == "kernel" ]; then
- kernel_args+=" ${arr[2]}=${arr[3]}"
- fi
+ arr=($option)
+ # use compute's kernel settings for all nodes for now.
+ if [ "${arr[0]}" == "Compute" ] && [ "${arr[1]}" == "kernel" ]; then
+ kernel_args+=" ${arr[2]}=${arr[3]}"
+ fi
+ if [ "${arr[0]}" == "Compute" ] && [ "${arr[1]}" == "ovs" ]; then
+ eval "${arr[2]}=${arr[3]}"
+ ovs_dpdk_perf_flag="True"
+ fi
done
ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
- sed -i "/ComputeKernelArgs:/c\ ComputeKernelArgs: '$kernel_args'" ${ENV_FILE}
- sed -i "$ a\resource_registry:\n OS::TripleO::NodeUserData: first-boot.yaml" ${ENV_FILE}
- sed -i "/NovaSchedulerDefaultFilters:/c\ NovaSchedulerDefaultFilters: 'RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter'" ${ENV_FILE}
+ sed -i "/ComputeKernelArgs:/c\ ComputeKernelArgs: '$kernel_args'" ${ENV_FILE}
+ sed -i "$ a\resource_registry:\n OS::TripleO::NodeUserData: first-boot.yaml" ${ENV_FILE}
+ sed -i "/NovaSchedulerDefaultFilters:/c\ NovaSchedulerDefaultFilters: 'RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter'" ${ENV_FILE}
EOI
+
+ if [[ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' && "$ovs_dpdk_perf_flag" == "True" ]]; then
+ for ovs_option in ${!ovs_option_heat_arr[@]}; do
+ if [ -n "${!ovs_option}" ]; then
+ ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
+ sed -i "/${ovs_option_heat_arr[$ovs_option]}:/c\ ${ovs_option_heat_arr[$ovs_option]}: ${!ovs_option}" ${ENV_FILE}
+EOI
+ fi
+ done
+ fi
fi
if [[ -z "${deploy_options_array['sdn_controller']}" || "${deploy_options_array['sdn_controller']}" == 'False' ]]; then
@@ -213,15 +242,14 @@ EOI
EOI
fi
- # Override any previous packages if FDIO and ODL L2
- #if [[ "${deploy_options_array['vpp']}" == 'True' && "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "${deploy_options_array['sdn_l3']}" == "False" ]]; then
- # ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
- # LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum -y remove opendaylight vpp vpp-api-python vpp-lib vpp-plugins honeycomb" \
- # --run-command "yum -y install /root/fdio_l2/*.rpm" \
- # --run-command "rm -f /etc/sysctl.d/80-vpp.conf" \
- # -a overcloud-full.qcow2
-#EOI
- #fi
+ # Override ODL if FDIO and ODL L2
+ if [[ "${deploy_options_array['vpp']}" == 'True' && "${deploy_options_array['sdn_controller']}" == 'opendaylight' && "${deploy_options_array['sdn_l3']}" == "False" ]]; then
+ ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
+ LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum -y remove opendaylight" \
+ --run-command "yum -y install /root/fdio_l2/opendaylight*.rpm" \
+ -a overcloud-full.qcow2
+EOI
+ fi
# check if ceph should be enabled
if [ "${deploy_options_array['ceph']}" == 'True' ]; then
@@ -344,17 +372,21 @@ if ! openstack stack list | grep CREATE_COMPLETE 1>/dev/null; then
fi
EOI
- # Configure DPDK
+ # Configure DPDK and restart ovs agent after bringing up br-phy
if [ "${deploy_options_array['dataplane']}" == 'ovs_dpdk' ]; then
ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI || (echo "DPDK config failed, exiting..."; exit 1)
source stackrc
set -o errexit
for node in \$(nova list | grep novacompute | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"); do
-echo "Running DPDK test app on \$node"
+echo "Checking DPDK status and bringing up br-phy on \$node"
ssh -T ${SSH_OPTIONS[@]} "heat-admin@\$node" <<EOF
set -o errexit
-sudo dpdk_helloworld --no-pci
-sudo dpdk_nic_bind -s
+sudo dpdk-devbind -s
+sudo ifup br-phy
+if [[ -z "${deploy_options_array['sdn_controller']}" || "${deploy_options_array['sdn_controller']}" == 'False' ]]; then
+ echo "Restarting openvswitch agent to pick up VXLAN tunneling"
+ sudo systemctl restart neutron-openvswitch-agent
+fi
EOF
done
EOI
diff --git a/lib/python/apex/deploy_settings.py b/lib/python/apex/deploy_settings.py
index 9fb4c6f7..dc58d764 100644
--- a/lib/python/apex/deploy_settings.py
+++ b/lib/python/apex/deploy_settings.py
@@ -34,7 +34,7 @@ OPT_DEPLOY_SETTINGS = ['performance',
'odl_vpp_routing_node']
VALID_ROLES = ['Controller', 'Compute', 'ObjectStorage']
-VALID_PERF_OPTS = ['kernel', 'nova', 'vpp']
+VALID_PERF_OPTS = ['kernel', 'nova', 'vpp', 'ovs']
VALID_DATAPLANES = ['ovs', 'ovs_dpdk', 'fdio']
diff --git a/tests/test_apex_network_settings.py b/tests/test_apex_network_settings.py
index 8f994352..a1dbaf1c 100644
--- a/tests/test_apex_network_settings.py
+++ b/tests/test_apex_network_settings.py
@@ -89,13 +89,10 @@ class TestNetworkSettings(object):
ns = NetworkSettings('../config/network/network_settings.yaml')
assert_is_instance(ns, NetworkSettings)
for role in ['controller', 'compute']:
- nic_index = 1
+ nic_index = 0
print(ns.nics)
for network in ns.enabled_network_list:
- if role == 'compute':
- nic = 'eth' + str(nic_index - 1)
- else:
- nic = 'nic' + str(nic_index)
+ nic = 'eth' + str(nic_index)
assert_equal(ns.nics[role][network], nic)
nic_index += 1
@@ -107,7 +104,7 @@ class TestNetworkSettings(object):
ns = NetworkSettings(files_dir+'network_settings.yaml')
storage_net_nicmap = ns['networks'][STORAGE_NETWORK]['nic_mapping']
# set duplicate nic
- storage_net_nicmap['controller']['members'][0] = 'nic1'
+ storage_net_nicmap['controller']['members'][0] = 'eth0'
assert_raises(NetworkSettingsException, NetworkSettings, ns)
# remove nic members
storage_net_nicmap['controller']['members'] = []