Merge "Apply NSDriver patch for neutron for all FD.io scenarios"
authorTim Rozet <trozet@redhat.com>
Mon, 27 Mar 2017 14:03:59 +0000 (14:03 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Mon, 27 Mar 2017 14:03:59 +0000 (14:03 +0000)
15 files changed:
build/network-environment.yaml
build/nics-template.yaml.jinja2
build/opnfv-environment.yaml
build/ovs-dpdk-preconfig.yaml [new file with mode: 0644]
build/rpm_specs/opnfv-apex-common.spec
build/undercloud.sh
build/variables.sh
config/deploy/os-nosdn-ovs-ha.yaml
config/deploy/os-nosdn-ovs-noha.yaml
config/deploy/os-odl_l3-ovs-ha.yaml [new file with mode: 0644]
config/deploy/os-odl_l3-ovs-noha.yaml [new file with mode: 0644]
config/network/network_settings.yaml
lib/overcloud-deploy-functions.sh
lib/python/apex/deploy_settings.py
tests/test_apex_network_settings.py

index 8367371..40f8e3b 100644 (file)
@@ -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'
 
index f2c8000..0913fa9 100644 (file)
@@ -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:
index 8b58b35..b42779b 100644 (file)
@@ -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 (file)
index 0000000..d57b0b7
--- /dev/null
@@ -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]}
index 6a03be0..4266897 100644 (file)
@@ -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
index 424f6f8..e3194e2 100755 (executable)
@@ -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" \
index 9322442..5249c2e 100644 (file)
@@ -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"
index a72fef3..c9d5867 100644 (file)
@@ -20,3 +20,7 @@ deploy_options:
         hugepages: 2048
         intel_iommu: 'on'
         iommu: pt
+      ovs:
+        socket_memory: 1024
+        pmd_cores: 2
+        dpdk_cores: 1
index 7d054ce..cf9b854 100644 (file)
@@ -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 (file)
index 0000000..ad26569
--- /dev/null
@@ -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 (file)
index 0000000..6f7630d
--- /dev/null
@@ -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
index be0b683..ba78439 100644 (file)
@@ -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:
index 97f809d..8f5b1a2 100755 (executable)
 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
index 9fb4c6f..dc58d76 100644 (file)
@@ -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']
 
 
index 8f99435..a1dbaf1 100644 (file)
@@ -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'] = []