Merge "add onos deployment steps"
authorDan Radez <dradez@redhat.com>
Mon, 8 May 2017 15:58:35 +0000 (15:58 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Mon, 8 May 2017 15:58:35 +0000 (15:58 +0000)
14 files changed:
build/build_quagga.sh
build/first-boot.yaml
build/honeycomb-jar-replace.sh [deleted file]
build/overcloud-full.sh
build/overcloud-opendaylight.sh
build/ovs-dpdk-preconfig.yaml
build/patches/disable_odl_clustering.patch [deleted file]
build/rpm_specs/opnfv-apex-common.spec
build/variables.sh
config/deploy/os-odl_netvirt-fdio-noha.yaml [new file with mode: 0644]
lib/overcloud-deploy-functions.sh
lib/python/apex/deploy_settings.py
lib/python/apex/ip_utils.py
tests/smoke_tests/execute_smoke_tests.sh

index 7d298e5..a682b54 100755 (executable)
@@ -180,9 +180,10 @@ After=network.service
 
 [Service]
 ExecStart=/usr/sbin/zrpcd
-Type=forking
+Type=simple
+ExecStartPre=-/usr/bin/mkdir /var/run/quagga/
+ExecStartPre=/usr/bin/chown -R quagga:quagga /var/run/quagga/
 PIDFile=/var/run/zrpcd.pid
-Restart=on-failure
 
 [Install]
 WantedBy=default.target
index 6cd874c..d4ac5df 100644 (file)
@@ -39,7 +39,7 @@ resources:
             echo vm.hugetlb_shm_group=0 >> /usr/lib/sysctl.d/00-system.conf
             echo vm.max_map_count=$(printf "%.0f" $(echo 2.2*$hugepage_count | bc)) >> /usr/lib/sysctl.d/00-system.conf
             echo kernel.shmmax=$(($hugepage_count * 2 * 1024 * 1024)) >> /usr/lib/sysctl.d/00-system.conf
-
+            rm -f /etc/sysconfig/network-scripts/ifcfg-*
             reboot
           params:
             $KERNEL_ARGS: {get_param: ComputeKernelArgs}
diff --git a/build/honeycomb-jar-replace.sh b/build/honeycomb-jar-replace.sh
deleted file mode 100755 (executable)
index f89ddda..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env bash
-JARS=$(find /usr/share/java/ -type f -iname 'jvpp-*.jar')
-if [ -z "$JARS" ]; then
-  echo "ERROR: JARS to replace from vpp-api-java are empty!"
-  exit 1
-fi
-
-for JAR in $JARS; do
-  JAR_PREFIX=$(basename $JAR | sed -n 's/-[0-9]\+\.[0-9]\+\.jar$//p')
-  JAR_VERSION=$(basename $JAR | grep -Eo '[0-9]+.[0-9]+')
-  HC_JAR_DIR=/opt/honeycomb/lib/io/fd/vpp/${JAR_PREFIX}/${JAR_VERSION}-SNAPSHOT
-  if [ ! -d "$HC_JAR_DIR" ]; then
-    echo "ERROR: Honeycomb JAR destination directory does not exist!"
-    exit 1
-  else
-    cp -f ${JAR} ${HC_JAR_DIR}/${JAR_PREFIX}-${JAR_VERSION}-SNAPSHOT.jar
-    echo "INFO: VPP API JAR: ${JAR} copied to ${HC_JAR_DIR}"
-  fi
-done
index c6a53e3..9ecb1c3 100755 (executable)
@@ -68,37 +68,14 @@ pushd puppet-tacker > /dev/null
 git archive --format=tar.gz --prefix=tacker/ origin/stable/ocata > ${BUILD_DIR}/puppet-tacker.tar.gz
 popd > /dev/null
 
-# Master FD.IO Repo
-cat > ${BUILD_DIR}/fdio.repo << EOF
-[fdio-master]
-name=fd.io master branch latest merge
-baseurl=https://nexus.fd.io/content/repositories/fd.io.master.centos7/
-enabled=1
-gpgcheck=0
-EOF
-
 # Get Real Time Kernel from kvm4nfv
 populate_cache $kvmfornfv_uri_base/$kvmfornfv_kernel_rpm
 
-# ODL/FDIO packages frozen for L3 scenarios
-fdio_l3_pkg_str=''
-for package in ${fdio_l3_pkgs[@]}; do
-  wget "$fdio_l3_uri_base/$package"
-  fdio_l3_pkg_str+=" --upload ${BUILD_DIR}/${package}:/root/fdio_l3/"
-done
-
-# ODL/FDIO packages frozen for L2 scenarios
-fdio_l2_pkg_str=''
-for package in ${fdio_l2_pkgs[@]}; do
-  wget "$fdio_l2_uri_base/$package"
-  fdio_l2_pkg_str+=" --upload ${BUILD_DIR}/${package}:/root/fdio_l2/"
-done
-
-# FDIO packages frozen for nosdn scenarios
-fdio_nosdn_pkg_str=''
-for package in ${fdio_nosdn_pkgs[@]}; do
-  wget "$fdio_nosdn_uri_base/$package"
-  fdio_nosdn_pkg_str+=" --upload ${BUILD_DIR}/${package}:/root/fdio_nosdn/"
+# packages frozen for fdio scenarios
+fdio_pkg_str=''
+for package in ${fdio_pkgs[@]}; do
+  wget "$package"
+  fdio_pkg_str+=" --upload ${BUILD_DIR}/${package##*/}:/root/fdio/"
 done
 
 # Increase disk size by 900MB to accommodate more packages
@@ -124,16 +101,11 @@ LIBGUESTFS_BACKEND=direct virt-customize \
     --run-command "sed -i 's/^#UseDNS.*$/UseDNS no/' /etc/ssh/sshd_config" \
     --run-command "sed -i 's/^GSSAPIAuthentication.*$/GSSAPIAuthentication no/' /etc/ssh/sshd_config" \
     --run-command "mkdir /root/dpdk_rpms" \
-    --upload ${BUILD_DIR}/fdio.repo:/etc/yum.repos.d/fdio.repo \
     $dpdk_pkg_str \
-    --run-command "mkdir /root/fdio_l3" \
-    --run-command "mkdir /root/fdio_l2" \
-    --run-command "mkdir /root/fdio_nosdn" \
-    --upload ${BUILD_DIR}/noarch/$netvpp_pkg:/root/fdio_nosdn \
-    $fdio_l3_pkg_str \
-    $fdio_l2_pkg_str \
-    $fdio_nosdn_pkg_str \
-    --run-command "yum install -y /root/fdio_l2/*.rpm" \
+    --run-command "mkdir /root/fdio" \
+    --upload ${BUILD_DIR}/noarch/$netvpp_pkg:/root/fdio \
+    $fdio_pkg_str \
+    --run-command "yum install -y /root/fdio/*.rpm" \
     --run-command "yum install -y etcd" \
     --install python-etcd \
     --run-command "puppet module install cristifalcas/etcd" \
index f8682f6..d61c1f2 100755 (executable)
@@ -74,7 +74,10 @@ git archive --format=tar.gz HEAD:deploy/puppet/ > ${BUILD_DIR}/puppet-gluon.tar.
 popd > /dev/null
 
 # Download quagga/zrpc rpms
-populate_cache http://artifacts.opnfv.org/apex/danube/quagga/quagga.tar.gz
+populate_cache http://artifacts.opnfv.org/apex/danube/quagga/quagga-3.tar.gz
+
+# Download ODL netvirt for VPP
+populate_cache http://artifacts.opnfv.org/apex/danube/fdio_netvirt/odl-netvirt-vpp-distribution.tar.gz
 
 # install ODL packages
 # Patch in OPNFV custom puppet-tripleO
@@ -87,10 +90,9 @@ LIBGUESTFS_BACKEND=direct virt-customize \
     --upload ${BUILD_DIR}/opendaylight_master.repo:/etc/yum.repos.d/opendaylight.repo \
     --run-command "yum install --downloadonly --downloaddir=/root/master/ opendaylight" \
     --upload ${BUILD_DIR}/opendaylight.repo:/etc/yum.repos.d/opendaylight.repo \
-    --run-command "wget ${fdio_l2_uri_base}/honeycomb-1.17.04-2439.noarch.rpm -O /root/fdio_l2/honeycomb-1.17.04-2439.noarch.rpm" \
-    --run-command "wget ${fdio_l2_uri_base}/opendaylight-6.0.0-0.1.20170228snap4111.el7.noarch.rpm -O /root/fdio_l2/opendaylight-6.0.0-0.1.20170228snap4111.el7.noarch.rpm" \
+    --run-command "wget https://nexus.fd.io/content/repositories/fd.io.stable.1704.centos7/io/fd/hc2vpp/honeycomb/1.17.04-2048.noarch/honeycomb-1.17.04-2048.noarch.rpm -O /root/fdio/honeycomb-1.17.04-2048.noarch.rpm" \
     --install opendaylight,python-networking-odl \
-    --run-command "yum install -y /root/fdio_l2/honeycomb-1.17.04-2439.noarch.rpm" \
+    --run-command "yum install -y /root/fdio/honeycomb-1.17.04-2048.noarch.rpm" \
     --upload ${BUILD_DIR}/puppet-opendaylight.tar.gz:/etc/puppet/modules/ \
     --run-command "cd /etc/puppet/modules/ && tar xzf puppet-opendaylight.tar.gz" \
     --upload ${BUILD_DIR}/networking-bgpvpn.tar.gz:/root/ \
@@ -103,13 +105,15 @@ LIBGUESTFS_BACKEND=direct virt-customize \
     --install python-click \
     --upload ${CACHE_DIR}/$gluon_rpm:/root/\
     --install /root/$gluon_rpm \
-    --upload ${CACHE_DIR}/quagga.tar.gz:/root/ \
-    --run-command "cd /root/ && tar xzf quagga.tar.gz" \
+    --upload ${CACHE_DIR}/quagga-3.tar.gz:/root/ \
+    --run-command "cd /root/ && tar xzf quagga-3.tar.gz" \
     --run-command "yum downgrade -y python-zmq-14.3.1" \
-    --install zeromq-4.1.4,zeromq-devel-4.1.4 \
-    --install capnproto-devel,capnproto-libs,capnproto \
+    --install zeromq-4.1.4 \
+    --install capnproto-libs,capnproto \
+    --run-command "cd /root/quagga; packages=\$(ls |grep -vE 'debuginfo|devel|contrib'); yum -y install \$packages" \
+    --run-command "sudo usermod -a -G quaggavt quagga" \
     --upload ${BUILD_ROOT}/patches/neutron-patch-NSDriver.patch:/usr/lib/python2.7/site-packages/ \
-    --upload ${BUILD_ROOT}/patches/disable_odl_clustering.patch:/etc/puppet/modules/tripleo/ \
+    --upload ${CACHE_DIR}/odl-netvirt-vpp-distribution.tar.gz:/root/ \
     -a overcloud-full-opendaylight_build.qcow2
 
 LIBGUESTFS_BACKEND=direct virt-sparsify --compress overcloud-full-opendaylight_build.qcow2 overcloud-full-opendaylight.qcow2
index d57b0b7..a4663ff 100644 (file)
@@ -83,10 +83,10 @@ resources:
             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
+            if [[ -n "$pmd_cpu_mask" && -n "$PMD_CORES" ]]; then
               ovs-vsctl --no-wait set Open_vSwitch . other_config:pmd-cpu-mask=$pmd_cpu_mask
             fi
-            if [ -n "$dpdk_lcore_mask" ]; then
+            if [ -n "$dpdk_lcore_mask" && -n "$DPDK_CORES" ]]; then
               ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-lcore-mask=$dpdk_lcore_mask
             fi
             systemctl restart openvswitch
diff --git a/build/patches/disable_odl_clustering.patch b/build/patches/disable_odl_clustering.patch
deleted file mode 100644 (file)
index 151481f..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-diff --git a/manifests/profile/base/neutron/opendaylight.pp b/manifests/profile/base/neutron/opendaylight.pp
-index 3269f3e..556fe63 100644
---- a/manifests/profile/base/neutron/opendaylight.pp
-+++ b/manifests/profile/base/neutron/opendaylight.pp
-@@ -22,34 +22,19 @@
- #   (Optional) The current step of the deployment
- #   Defaults to hiera('step')
- #
--# [*odl_api_ips*]
--#   (Optional) List of OpenStack Controller IPs for ODL API
--#   Defaults to hiera('opendaylight_api_node_ips')
--#
--# [*node_name*]
--#   (Optional) The short hostname of node
--#   Defaults to hiera('bootstack_nodeid')
-+# [*primary_node*]
-+#   (Optional) The hostname of the first node of this role type
-+#   Defaults to hiera('bootstrap_nodeid', undef)
- #
- class tripleo::profile::base::neutron::opendaylight (
-   $step         = hiera('step'),
--  $odl_api_ips  = hiera('opendaylight_api_node_ips'),
--  $node_name    = hiera('bootstack_nodeid')
-+  $primary_node = hiera('bootstrap_nodeid', undef),
- ) {
-   if $step >= 1 {
--    if empty($odl_api_ips) {
--      fail('No IPs assigned to OpenDaylight Api Service')
--    } elsif size($odl_api_ips) == 2 {
--      fail('2 node OpenDaylight deployments are unsupported.  Use 1 or greater than 2')
--    } elsif size($odl_api_ips) > 2 {
--      $node_string = split($node_name, '-')
--      $ha_node_index = $node_string[-1] + 1
--      class { '::opendaylight':
--        enable_ha     => true,
--        ha_node_ips   => $odl_api_ips,
--        ha_node_index => $ha_node_index,
--      }
--    } else {
-+    # Configure ODL only on first node of the role where this service is
-+    # applied
-+    if $primary_node == downcase($::hostname) {
-       include ::opendaylight
-     }
-   }
index 431bd56..13a0481 100644 (file)
@@ -52,6 +52,7 @@ install config/deploy/os-odl-bgpvpn-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-a
 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-fdio-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl-fdio-noha.yaml
+install config/deploy/os-odl_netvirt-fdio-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_netvirt-fdio-noha.yaml
 install config/deploy/os-odl-fdio-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl-fdio-ha.yaml
 install config/deploy/os-odl-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl-nofeature-ha.yaml
 install config/deploy/os-odl-nofeature-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl-nofeature-noha.yaml
@@ -135,6 +136,7 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/
 %{_sysconfdir}/opnfv-apex/os-odl_l2-fdio-noha.yaml
 %{_sysconfdir}/opnfv-apex/os-odl_l2-fdio-ha.yaml
 %{_sysconfdir}/opnfv-apex/os-odl-fdio-noha.yaml
+%{_sysconfdir}/opnfv-apex/os-odl_netvirt-fdio-noha.yaml
 %{_sysconfdir}/opnfv-apex/os-odl-fdio-ha.yaml
 %{_sysconfdir}/opnfv-apex/os-odl-ovs_dpdk-noha.yaml
 %{_sysconfdir}/opnfv-apex/os-odl-ovs_dpdk-ha.yaml
index e5e37b2..fe37532 100644 (file)
@@ -32,8 +32,8 @@ dpdk_rpms=(
 'ovs4opnfv-e8acab14-dpdk-tools-16.11-5.el7.centos.x86_64.rpm'
 )
 
-kvmfornfv_uri_base="http://artifacts.opnfv.org/kvmfornfv"
-kvmfornfv_kernel_rpm="kernel-4.4.6_rt14_1703030237nfv-1.x86_64.rpm"
+kvmfornfv_uri_base="http://artifacts.opnfv.org/kvmfornfv/danube"
+kvmfornfv_kernel_rpm="kvmfornfv-8e1bfc88-apex-kernel-4.4.50_rt62_centos.x86_64.rpm"
 
 tacker_repo="http://github.com/openstack/tacker"
 tacker_branch="stable/newton"
@@ -57,27 +57,11 @@ netvpp_pkg=python-networking-vpp-0.0.1-1.git${NETVPP_COMMIT}$(rpm -E %dist).noar
 
 gluon_rpm=gluon-0.0.1-1_20170302.noarch.rpm
 
-fdio_l3_uri_base=http://artifacts.opnfv.org/apex/danube/fdio_l3_rpms
-fdio_l3_pkgs=(
-'vpp-17.04-rc0~399_g17a75cb~b2022.x86_64.rpm'
-'vpp-api-python-17.04-rc0~399_g17a75cb~b2022.x86_64.rpm'
-'vpp-lib-17.04-rc0~399_g17a75cb~b2022.x86_64.rpm'
-'vpp-plugins-17.04-rc0~399_g17a75cb~b2022.x86_64.rpm'
-'honeycomb-1.17.04-2503.noarch.rpm'
+fdio_pkgs=(
+'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp/17.04-release.x86_64/vpp-17.04-release.x86_64.rpm'
+'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp-api-python/17.04-release.x86_64/vpp-api-python-17.04-release.x86_64.rpm'
+'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp-lib/17.04-release.x86_64/vpp-lib-17.04-release.x86_64.rpm'
+'https://nexus.fd.io/content/repositories/fd.io.centos7/io/fd/vpp/vpp-plugins/17.04-release.x86_64/vpp-plugins-17.04-release.x86_64.rpm'
 )
 
-fdio_l2_uri_base=http://artifacts.opnfv.org/apex/danube/fdio_l2_rpms
-fdio_l2_pkgs=(
-'vpp-17.04-rc0~300_gdef19da~b1923.x86_64.rpm'
-'vpp-api-python-17.04-rc0~300_gdef19da~b1923.x86_64.rpm'
-'vpp-lib-17.04-rc0~300_gdef19da~b1923.x86_64.rpm'
-'vpp-plugins-17.04-rc0~300_gdef19da~b1923.x86_64.rpm'
-)
-
-fdio_nosdn_uri_base=http://artifacts.opnfv.org/apex/danube/fdio_nosdn_rpms
-fdio_nosdn_pkgs=(
-'vpp-17.04-rc0~476_geaabe07~b2100.x86_64.rpm'
-'vpp-api-python-17.04-rc0~476_geaabe07~b2100.x86_64.rpm'
-'vpp-lib-17.04-rc0~476_geaabe07~b2100.x86_64.rpm'
-'vpp-plugins-17.04-rc0~476_geaabe07~b2100.x86_64.rpm'
-)
+honeycomb_pkg='http://artifacts.opnfv.org/apex/danube/fdio_common_rpms/honeycomb-1.17.04-2048.noarch.rpm'
\ No newline at end of file
diff --git a/config/deploy/os-odl_netvirt-fdio-noha.yaml b/config/deploy/os-odl_netvirt-fdio-noha.yaml
new file mode 100644 (file)
index 0000000..fa6ba80
--- /dev/null
@@ -0,0 +1,38 @@
+global_params:
+  ha_enabled: false
+
+deploy_options:
+  sdn_controller: opendaylight
+  sdn_l3: true
+  odl_version: carbon
+  odl_vpp_netvirt: true
+  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
index f30e875..e5f9134 100755 (executable)
@@ -34,7 +34,9 @@ function overcloud_deploy {
         DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/services/gluon.yaml"
       fi
     elif [ "${deploy_options_array['vpp']}" == 'True' ]; then
-      if [ "${deploy_options_array['sdn_l3']}" == "True" ]; then
+      if [ "${deploy_options_array['odl_vpp_netvirt']}" == "True" ]; then
+        DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/neutron-opendaylight-netvirt-vpp.yaml"
+      elif [ "${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"
@@ -118,12 +120,10 @@ EOI
   if [ "${deploy_options_array['vpn']}" == 'True' ]; then
       echo -e "${blue}INFO: Enabling ZRPC and Quagga${reset}"
       ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
-      LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum -y install /root/quagga/*.rpm" \
-                                               --run-command "sudo usermod -a -G quaggavt quagga" \
-                                               --run-command "sudo mkdir -p /var/run/quagga/" \
-                                               --run-command "sudo chown quagga:quagga -R /var/run/quagga/" \
-                                               --run-command "systemctl enable zrpcd" \
-                                               -a overcloud-full.qcow2
+      LIBGUESTFS_BACKEND=direct virt-customize \
+         --run-command "systemctl enable zrpcd" \
+         --run-command "systemctl enable bgpd" \
+         -a overcloud-full.qcow2
 EOI
   fi
 
@@ -182,18 +182,12 @@ EOI
                                                -a overcloud-full.qcow2
 EOI
 
-    # Disable clustering for ODL FDIO HA scenarios
-    if [[ "${deploy_options_array['sdn_controller']}" == 'opendaylight' ]]; then
-      ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
-      LIBGUESTFS_BACKEND=direct virt-customize --run-command "cd /etc/puppet/modules/tripleo/ && patch -p1 < disable_odl_clustering.patch" \
-                                               -a overcloud-full.qcow2
-EOI
-    fi
-
-    # Configure routing node for odl-fdio
+    # Configure routing node and interface role mapping for odl-fdio
     if [[ "${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}
+        sed -i "/ControllerExtraConfig:/ c\  ControllerExtraConfig:\n    tripleo::profile::base::neutron::agents::honeycomb::interface_role_mapping:  \"['${tenant_nic_mapping_controller_members}:tenant-interface']\"" ${ENV_FILE}
+        sed -i "/NovaComputeExtraConfig:/ c\  NovaComputeExtraConfig:\n    tripleo::profile::base::neutron::agents::honeycomb::interface_role_mapping:  \"['${tenant_nic_mapping_compute_members}:tenant-interface','${external_nic_mapping_compute_members}:public-interface']\"" ${ENV_FILE}
 EOI
     fi
   fi
@@ -251,10 +245,6 @@ EOI
         echo -e "${blue}INFO: nosdn fdio deployment...installing correct vpp packages...${reset}"
         ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
           sed -i "/NeutronVPPAgentPhysnets:/c\  NeutronVPPAgentPhysnets: 'datacentre:${tenant_nic_mapping_controller_members}'" ${ENV_FILE}
-          LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum remove -y vpp vpp-api-python vpp-lib vpp-plugins" \
-                                                   --run-command "yum install -y /root/fdio_nosdn/*.rpm" \
-                                                   --run-command "rm -f /etc/sysctl.d/80-vpp.conf" \
-                                                   -a overcloud-full.qcow2
 EOI
       else
         echo -e "${red}Compute and Controller must use the same tenant nic name, please modify network setting file.${reset}"
@@ -284,22 +274,13 @@ EOI
 EOI
   fi
 
-  # Override ODL if FDIO and ODL L2
-  if [[ "${deploy_options_array['vpp']}" == 'True' && "${deploy_options_array['sdn_controller']}" == 'opendaylight' ]]; then
-    if [ "${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
-    else
-      ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
-         LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum remove -y vpp vpp-api-python vpp-lib vpp-plugins honeycomb" \
-                                                  --run-command "yum -y install /root/fdio_l3/*.rpm" \
-                                                  --run-command "rm -f /etc/sysctl.d/80-vpp.conf" \
-                                                  -a overcloud-full.qcow2
+  # Override ODL if we enable netvirt for fdio
+  if [[ "${deploy_options_array['odl_vpp_netvirt']}" == 'True' && "${deploy_options_array['sdn_controller']}" == 'opendaylight' ]]; then
+    ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
+      LIBGUESTFS_BACKEND=direct virt-customize --run-command "rm -rf /opt/opendaylight/*" \
+                                               --run-command "tar zxvf /root/odl-netvirt-vpp-distribution.tar.gz -C /opt/opendaylight/" \
+                                               -a overcloud-full.qcow2
 EOI
-    fi
   fi
 
   # check if ceph should be enabled
index dc58d76..48ce340 100644 (file)
@@ -31,7 +31,8 @@ OPT_DEPLOY_SETTINGS = ['performance',
                        'ceph_device',
                        'yardstick',
                        'dovetail',
-                       'odl_vpp_routing_node']
+                       'odl_vpp_routing_node',
+                       'odl_vpp_netvirt']
 
 VALID_ROLES = ['Controller', 'Compute', 'ObjectStorage']
 VALID_PERF_OPTS = ['kernel', 'nova', 'vpp', 'ovs']
index b039e26..ae60b70 100644 (file)
@@ -147,7 +147,7 @@ def get_interface(nic, address_family=4):
     if not nic.strip():
         logging.error("empty nic name specified")
         return None
-    output = subprocess.getoutput("ip -{} addr show {} scope global"
+    output = subprocess.getoutput("/usr/sbin/ip -{} addr show {} scope global"
                                   .format(address_family, nic))
     if address_family == 4:
         pattern = re.compile("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/\d{1,2}")
@@ -178,14 +178,15 @@ def find_gateway(interface):
     """
 
     address_family = interface.version
-    output = subprocess.getoutput("ip -{} route".format(address_family))
+    output = subprocess.getoutput("/usr/sbin/ip -{} route".format(
+        address_family))
 
     pattern = re.compile("default\s+via\s+(\S+)\s+")
     match = re.search(pattern, output)
 
     if match:
         gateway_ip = match.group(1)
-        reverse_route_output = subprocess.getoutput("ip route get {}"
+        reverse_route_output = subprocess.getoutput("/usr/sbin/ip route get {}"
                                                     .format(gateway_ip))
         pattern = re.compile("{}.+src\s+{}".format(gateway_ip, interface.ip))
         if not re.search(pattern, reverse_route_output):
index a9a7b74..27f9525 100755 (executable)
@@ -1,3 +1,3 @@
 #!/usr/bin/env bash
 
-python ~/snaps/snaps/unit_test_suite.py -e ~stack/overcloudrc -n external -k -l INFO &> ~stack/smoke-tests.out
\ No newline at end of file
+python ~/snaps/snaps/test_runner.py -e ~stack/overcloudrc -n external -c -a -i -f -k -l INFO &> ~stack/smoke-tests.out
\ No newline at end of file