Merge "enable driver_type gre and ml2_gre"
authorSam Hague <shague@redhat.com>
Tue, 11 Sep 2018 10:21:19 +0000 (10:21 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Tue, 11 Sep 2018 10:21:19 +0000 (10:21 +0000)
1  2 
jjb/defaults.yaml
jjb/integration/integration-deploy-openstack-run-test.sh
jjb/integration/integration-templates.yaml

diff --combined jjb/defaults.yaml
index 74035748e3b987b2fe36c984535d98afef4ed0e4,27e67e78fc50d2af8deb6668d1946ad5294c0998..ef92697ecbff63d92955bc83e228d88e77099aa6
@@@ -56,6 -56,7 +56,7 @@@
      enable-openstack-services: ''
      enable-openstack-compute-services: ''
      enable-openstack-network-services: 'neutron,neutron-api,neutron-dhcp,neutron-metadata-agent'
+     enable-gre-type-driver: 'no'
      ipsec-vxlan-tunnels-enabled: 'no'
      lbaas-service-provider: ''
      num-openstack-sites: 1
@@@ -73,7 -74,6 +74,7 @@@
      os-ctl-cnt: 0
      os-cmp-cnt: 0
      os-std-topo: '0cmb-1ctl-2cmp'
 +    ovs-install: ''
  
      # openstack-infra-parameters defaults
      archive-artifacts: ''
@@@ -97,7 -97,7 +98,7 @@@
      docker_system_image: ZZCI - CentOS 7 - docker - 20180723-235456.035
      odl_system_count: 1
      odl_system_flavor: odl-highcpu-4
 -    odl_system_image: ZZCI - CentOS 7 - builder - 20180802-220823.782
 +    odl_system_image: ZZCI - CentOS 7 - builder - x86_64 - 20180823-152917.621
      openstack_system_count: 1
      openstack_system_flavor: odl-standard-4
      openstack_system_image: ZZCI - CentOS 7 - devstack - 20180723-235345.727
      10-exclude-value: ''
  
      # Manual CSIT job lists used by sanity or periodic in nature.
 +    csit-high-frequency-list-neon: >
 +        netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-neon
      csit-high-frequency-list-fluorine: >
          netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-fluorine
      csit-high-frequency-list-oxygen: >
          netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-oxygen
 +    csit-sanity-list-neon: >
 +        openflowplugin-csit-1node-sanity-only-neon,
 +        distribution-sanity-neon
      csit-sanity-list-fluorine: >
          openflowplugin-csit-1node-sanity-only-fluorine,
          distribution-sanity-fluorine
      csit-sanity-list-oxygen: >
          openflowplugin-csit-1node-sanity-only-oxygen,
          distribution-sanity-oxygen
 +    csit-weekly-list-neon: >
 +        controller-csit-1node-notifications-longevity-only-neon,
 +        controller-csit-3node-drb-partnheal-longevity-only-neon,
 +        controller-csit-3node-drb-precedence-longevity-only-neon,
 +        controller-csit-3node-ddb-expl-lead-movement-longevity-only-neon,
 +        bgpcep-csit-3node-bgpclustering-longevity-only-neon,
 +        distribution-deploy-neon,
 +        distribution-offline-neon,
 +        openflowplugin-csit-1node-longevity-only-neon
      csit-weekly-list-fluorine: >
          controller-csit-1node-notifications-longevity-only-fluorine,
          controller-csit-3node-drb-partnheal-longevity-only-fluorine,
index dc09fba4ce0cfcc3cdda2aa2affc967058bb6509,fd6cccd34efe309b1d1d816eae26c52977e22f93..7b7c12360c9e1e15c036ce824d650b6df42a02bb
@@@ -14,8 -14,9 +14,8 @@@ PYTHON="${ROBOT_VENV}/bin/python
  SSH="ssh -t -t"
  ADMIN_PASSWORD="admin"
  OPENSTACK_MASTER_CLIENTS_VERSION="queens"
 -
 -pip install odltools
 -odltools -V
 +#Size of the partition to /opt/stack in control and compute nodes
 +TMPFS_SIZE=2G
  
  # TODO: remove this work to run changes.py if/when it's moved higher up to be visible at the Robot level
  printf "\nshowing recent changes that made it into the distribution used by this job:\n"
@@@ -44,7 -45,7 +44,7 @@@ function trap_handler() 
      local prog="$0"
      local lastline="$1"
      local lasterr="$2"
 -    echo "trap_hanlder: ${prog}: line ${lastline}: exit status of last command: ${lasterr}"
 +    echo "trap_handler: ${prog}: line ${lastline}: exit status of last command: ${lasterr}"
      echo "trap_handler: command: ${BASH_COMMAND}"
      exit 1
  } # trap_handler()
@@@ -264,7 -265,7 +264,7 @@@ EO
              ENABLE_PLUGIN_ARGS="${DEVSTACK_LBAAS_PLUGIN_REPO} ${OPENSTACK_BRANCH}"
              IS_LBAAS_PLUGIN_ENABLED="yes"
          elif [ "$plugin_name" == "networking-sfc" ]; then
 -            ENABLE_PLUGIN_ARGS="${DEVSTACK_NETWORKING_SFC_PLUGIN_REPO} master"
 +            ENABLE_PLUGIN_ARGS="${DEVSTACK_NETWORKING_SFC_PLUGIN_REPO} ${OPENSTACK_BRANCH}"
              IS_SFC_PLUGIN_ENABLED="yes"
          else
              echo "Error: Invalid plugin $plugin_name, unsupported"
@@@ -317,7 -318,13 +317,13 @@@ minimize_polling=Tru
  physical_network_mtus = ${PUBLIC_PHYSICAL_NETWORK}:1400
  path_mtu = 1458
  EOF
+     if [ "${ENABLE_GRE_TYPE_DRIVERS}" == "yes" ]; then
+         cat >> ${local_conf_file_name} << EOF
+ type_drivers = local,flat,vlan,gre,vxlan
+ [ml2_type_gre]
+ tunnel_id_ranges = 1:1000
+ EOF
+     fi
      if [ "${ENABLE_NETWORKING_L2GW}" == "yes" ]; then
          cat >> ${local_conf_file_name} << EOF
  
@@@ -624,26 -631,6 +630,26 @@@ function retry() 
      return ${rc}
  }
  
 +function install_ovs() {
 +    local -r node=${1}
 +    local -r rpm_path=${2}
 +
 +    if [ "${OVS_INSTALL:0:1}" = "v" ]; then
 +       # An OVS version was given, so we build it ourselves from OVS git repo.
 +       # Only on the first node though, consecutive nodes will use RPMs
 +       # built for the first one.
 +       [ ! -d "${rpm_path}" ] && mkdir -p "${rpm_path}" && build_ovs ${node} ${OVS_INSTALL} "${rpm_path}"
 +       # Install OVS from path
 +       install_ovs_from_path ${node} "${rpm_path}"
 +    elif [ "${OVS_INSTALL:0:4}" = "http" ]; then
 +       # Otherwise, install from rpm repo directly.
 +       install_ovs_from_repo ${node} ${OVS_INSTALL}
 +    else
 +       echo "Expected either an OVS version git tag or a repo http url"
 +       exit 1
 +    fi
 +}
 +
  ODL_PROVIDER_MAPPINGS="\${PUBLIC_PHYSICAL_NETWORK}:${PUBLIC_BRIDGE}"
  RECLONE=False
  ODL_PORT=8181
@@@ -685,10 -672,6 +691,10 @@@ sudo iptables --line-numbers -nv
  true
  EOF
  
 +#For SFC Tests a larger partition is required for creating instances with Ubuntu
 +if [[ "${ENABLE_OS_PLUGINS}" =~ networking-sfc ]]; then
 +   TMPFS_SIZE=12G
 +fi
  cat > ${WORKSPACE}/get_devstack.sh << EOF
  sudo systemctl stop firewalld
  sudo yum install bridge-utils python-pip -y
@@@ -703,7 -686,7 +709,7 @@@ echo "::1         localhost \${HOSTNAME
  sudo mv /tmp/hosts /etc/hosts
  sudo mkdir /opt/stack
  echo "Create RAM disk for /opt/stack"
 -sudo mount -t tmpfs -o size=2G tmpfs /opt/stack
 +sudo mount -t tmpfs -o size=${TMPFS_SIZE} tmpfs /opt/stack
  sudo chmod 777 /opt/stack
  cd /opt/stack
  echo "git clone https://git.openstack.org/openstack-dev/devstack --branch ${OPENSTACK_BRANCH}"
@@@ -732,32 -715,31 +738,32 @@@ sudo nova-manage db syn
  sudo nova-manage cell_v2 discover_hosts
  EOF
  
 +cat > "${WORKSPACE}/workaround_networking_sfc.sh" << EOF
 +cd /opt/stack
 +git clone https://git.openstack.org/openstack/networking-sfc
 +cd networking-sfc
 +git checkout ${OPENSTACK_BRANCH}
 +git checkout master -- devstack/plugin.sh
 +EOF
 +
  NUM_OPENSTACK_SITES=${NUM_OPENSTACK_SITES:-1}
  compute_index=1
 -odl_index=1
  os_node_list=()
 -os_interval=$(( ${NUM_OPENSTACK_SYSTEM} / ${NUM_OPENSTACK_SITES} ))
 -ha_proxy_index=${os_interval}
 -
 -for i in `seq 1 ${NUM_OPENSTACK_SITES}`; do
 -    if [ "${ENABLE_HAPROXY_FOR_NEUTRON}" == "yes" ]; then
 -        echo "Configure HAProxy"
 -        ODL_HAPROXYIP_PARAM=OPENSTACK_HAPROXY_${i}_IP
 -        ha_proxy_index=$(( $ha_proxy_index + $os_interval ))
 -        odl_index=$(((i - 1) * 3 + 1))
 -        ODL_IP_PARAM1=ODL_SYSTEM_$((odl_index++))_IP
 -        ODL_IP_PARAM2=ODL_SYSTEM_$((odl_index++))_IP
 -        ODL_IP_PARAM3=ODL_SYSTEM_$((odl_index++))_IP
 -        ODLMGRIP[$i]=${!ODL_HAPROXYIP_PARAM} # ODL Northbound uses HAProxy VIP
 -        ODL_OVS_MGRS[$i]="${!ODL_IP_PARAM1},${!ODL_IP_PARAM2},${!ODL_IP_PARAM3}" # OVSDB connects to all ODL IPs
 -        configure_haproxy_for_neutron_requests ${!ODL_HAPROXYIP_PARAM} "${ODL_OVS_MGRS[$i]}"
 -    else
 -        ODL_IP_PARAM=ODL_SYSTEM_${i}_IP
 -        ODL_OVS_MGRS[$i]="${!ODL_IP_PARAM}" # ODL Northbound uses ODL IP
 -        ODLMGRIP[$i]=${!ODL_IP_PARAM} # OVSDB connects to ODL IP
 -    fi
 -done
 +
 +if [ "${ENABLE_HAPROXY_FOR_NEUTRON}" == "yes" ]; then
 +    echo "Configure HAProxy"
 +    ODL_HAPROXYIP_PARAM=OPENSTACK_HAPROXY_1_IP
 +    ODL_IP_PARAM1=ODL_SYSTEM_1_IP
 +    ODL_IP_PARAM2=ODL_SYSTEM_2_IP
 +    ODL_IP_PARAM3=ODL_SYSTEM_3_IP
 +    ODLMGRIP=${!ODL_HAPROXYIP_PARAM} # ODL Northbound uses HAProxy VIP
 +    ODL_OVS_MGRS="${!ODL_IP_PARAM1},${!ODL_IP_PARAM2},${!ODL_IP_PARAM3}" # OVSDB connects to all ODL IPs
 +    configure_haproxy_for_neutron_requests ${!ODL_HAPROXYIP_PARAM} "${ODL_OVS_MGRS}"
 +else
 +    ODL_IP_PARAM=ODL_SYSTEM_1_IP
 +    ODLMGRIP=${!ODL_IP_PARAM} # OVSDB connects to ODL IP
 +    ODL_OVS_MGRS="${!ODL_IP_PARAM}" # ODL Northbound uses ODL IP
 +fi
  
  os_ip_list=()
  for i in `seq 1 ${NUM_OPENSTACK_CONTROL_NODES}`; do
@@@ -777,7 -759,6 +783,7 @@@ for i in "${!os_ip_list[@]}"; d
      tcpdump_start "${i}" "${ip}" "port 6653"
  done
  
 +
  # Begin stacking the nodes, starting with the controller(s) and then the compute(s)
  
  for i in `seq 1 ${NUM_OPENSTACK_CONTROL_NODES}`; do
      if [ "${ODL_ML2_BRANCH}" == "stable/queens" ]; then
         ssh ${!CONTROLIP} "sed -i 's/flat_networks public/flat_networks public,physnet1/' /opt/stack/devstack/lib/neutron"
         ssh ${!CONTROLIP} "sed -i '186i iniset \$NEUTRON_CORE_PLUGIN_CONF ml2_type_vlan network_vlan_ranges public:1:4094,physnet1:1:4094' /opt/stack/devstack/lib/neutron"
 +       #Workaround for networking-sfc to configure the paramaters in neutron.conf if the
 +       # services used are neutron-api, neutron-dhcp etc instead of q-agt.
 +       # Can be removed if the patch https://review.openstack.org/#/c/596287/ gets merged
 +       if [[ "${ENABLE_OS_PLUGINS}" =~ networking-sfc ]]; then
 +           scp ${WORKSPACE}/workaround_networking_sfc.sh ${!CONTROLIP}:/tmp/
 +           ssh ${!CONTROLIP} "bash -x /tmp/workaround_networking_sfc.sh"
 +       fi
      fi
 -    create_control_node_local_conf ${!CONTROLIP} ${ODLMGRIP[$i]} "${ODL_OVS_MGRS[$i]}"
 +    create_control_node_local_conf ${!CONTROLIP} ${ODLMGRIP} "${ODL_OVS_MGRS}"
      scp ${WORKSPACE}/local.conf_control_${!CONTROLIP} ${!CONTROLIP}:/opt/stack/devstack/local.conf
      echo "Install rdo release to avoid incompatible Package versions"
      install_rdo_release ${!CONTROLIP}
      if [ "$(is_openstack_feature_enabled n-cpu)" == "1" ]; then
          setup_live_migration_compute ${!CONTROLIP} ${!CONTROLIP}
      fi
 +    [ -n "${OVS_INSTALL}" ] && install_ovs ${!CONTROLIP} /tmp/ovs_rpms
      echo "Stack the control node ${i} of ${NUM_OPENSTACK_CONTROL_NODES}: ${CONTROLIP}"
      ssh ${!CONTROLIP} "cd /opt/stack/devstack; nohup ./stack.sh > /opt/stack/devstack/nohup.out 2>&1 &"
      ssh ${!CONTROLIP} "ps -ef | grep stack.sh"
@@@ -850,8 -823,10 +856,8 @@@ if [ ${NUM_OPENSTACK_COMPUTE_NODES} -g
  fi
  
  for i in `seq 1 ${NUM_OPENSTACK_COMPUTE_NODES}`; do
 -    NUM_COMPUTES_PER_SITE=$((NUM_OPENSTACK_COMPUTE_NODES / NUM_OPENSTACK_SITES))
 -    SITE_INDEX=$((((i - 1) / NUM_COMPUTES_PER_SITE) + 1)) # We need the site index to infer the control node IP for this compute
      COMPUTEIP=OPENSTACK_COMPUTE_NODE_${i}_IP
 -    CONTROLIP=OPENSTACK_CONTROL_NODE_${SITE_INDEX}_IP
 +    CONTROLIP=OPENSTACK_CONTROL_NODE_1_IP
      echo "Configure the stack of the compute node ${i} of ${NUM_OPENSTACK_COMPUTE_NODES}: ${!COMPUTEIP}"
      scp ${WORKSPACE}/disable_firewall.sh "${!COMPUTEIP}:/tmp"
      ${SSH} "${!COMPUTEIP}" "sudo bash /tmp/disable_firewall.sh"
      scp ${WORKSPACE}/hosts_file ${!COMPUTEIP}:/tmp/hosts
      scp ${WORKSPACE}/get_devstack.sh  ${!COMPUTEIP}:/tmp
      ${SSH} ${!COMPUTEIP} "bash /tmp/get_devstack.sh > /tmp/get_devstack.sh.txt 2>&1"
 -    create_compute_node_local_conf ${!COMPUTEIP} ${!CONTROLIP} ${ODLMGRIP[$SITE_INDEX]} "${ODL_OVS_MGRS[$SITE_INDEX]}"
 +    create_compute_node_local_conf ${!COMPUTEIP} ${!CONTROLIP} ${ODLMGRIP} "${ODL_OVS_MGRS}"
      scp ${WORKSPACE}/local.conf_compute_${!COMPUTEIP} ${!COMPUTEIP}:/opt/stack/devstack/local.conf
      echo "Install rdo release to avoid incompatible Package versions"
      install_rdo_release ${!COMPUTEIP}
      setup_live_migration_compute ${!COMPUTEIP} ${!CONTROLIP}
 +    [ -n "${OVS_INSTALL}" ] && install_ovs ${!COMPUTEIP} /tmp/ovs_rpms
      echo "Stack the compute node ${i} of ${NUM_OPENSTACK_COMPUTE_NODES}: ${!COMPUTEIP}"
      ssh ${!COMPUTEIP} "cd /opt/stack/devstack; nohup ./stack.sh > /opt/stack/devstack/nohup.out 2>&1 &"
      ssh ${!COMPUTEIP} "ps -ef | grep stack.sh"
@@@ -931,111 -905,122 +937,111 @@@ while [ ${in_progress} -eq 1 ]; d
  done
  
  # Further configuration now that stacking is complete.
 -NUM_COMPUTES_PER_SITE=$((NUM_OPENSTACK_COMPUTE_NODES / NUM_OPENSTACK_SITES))
 -for i in `seq 1 ${NUM_OPENSTACK_SITES}`; do
 -    echo "Configure the Control Node"
 -    CONTROLIP=OPENSTACK_CONTROL_NODE_${i}_IP
 -    # Gather Compute IPs for the site
 -    for j in `seq 1 ${NUM_COMPUTES_PER_SITE}`; do
 -        COMPUTE_INDEX=$(((i-1) * NUM_COMPUTES_PER_SITE + j))
 -        IP_VAR=OPENSTACK_COMPUTE_NODE_${COMPUTE_INDEX}_IP
 -        COMPUTE_IPS[$((j-1))]=${!IP_VAR}
 -    done
 +echo "Configure the Control Node"
 +CONTROLIP=OPENSTACK_CONTROL_NODE_1_IP
 +# Gather Compute IPs for the site
 +for i in `seq 1 ${NUM_OPENSTACK_COMPUTE_NODES}`; do
 +    IP_VAR=OPENSTACK_COMPUTE_NODE_${i}_IP
 +    COMPUTE_IPS[$((i-1))]=${!IP_VAR}
 +done
  
 -    echo "sleep for 60s and print hypervisor-list"
 -    sleep 60
 -    ${SSH} ${!CONTROLIP} "cd /opt/stack/devstack; source openrc admin admin; nova hypervisor-list"
 -    # in the case that we are doing openstack (control + compute) all in one node, then the number of hypervisors
 -    # will be the same as the number of openstack systems. However, if we are doing multinode openstack then the
 -    # assumption is we have a single control node and the rest are compute nodes, so the number of expected hypervisors
 -    # is one less than the total number of openstack systems
 -    if [ $((NUM_OPENSTACK_SYSTEM / NUM_OPENSTACK_SITES)) -eq 1 ]; then
 -        expected_num_hypervisors=1
 -    else
 -        expected_num_hypervisors=${NUM_COMPUTES_PER_SITE}
 -        if [ "$(is_openstack_feature_enabled n-cpu)" == "1" ]; then
 -            expected_num_hypervisors=$((expected_num_hypervisors + 1))
 -        fi
 -    fi
 -    num_hypervisors=$(${SSH} ${!CONTROLIP} "cd /opt/stack/devstack; source openrc admin admin; openstack hypervisor list -f value | wc -l" | tail -1 | tr -d "\r")
 -    if ! [ "${num_hypervisors}" ] || ! [ ${num_hypervisors} -eq ${expected_num_hypervisors} ]; then
 -        echo "Error: Only $num_hypervisors hypervisors detected, expected $expected_num_hypervisors"
 -        exit 1
 +echo "sleep for 60s and print hypervisor-list"
 +sleep 60
 +${SSH} ${!CONTROLIP} "cd /opt/stack/devstack; source openrc admin admin; nova hypervisor-list"
 +# in the case that we are doing openstack (control + compute) all in one node, then the number of hypervisors
 +# will be the same as the number of openstack systems. However, if we are doing multinode openstack then the
 +# assumption is we have a single control node and the rest are compute nodes, so the number of expected hypervisors
 +# is one less than the total number of openstack systems
 +if [ ${NUM_OPENSTACK_SYSTEM} -eq 1 ]; then
 +    expected_num_hypervisors=1
 +else
 +    expected_num_hypervisors=${NUM_OPENSTACK_COMPUTE_NODES}
 +    if [ "$(is_openstack_feature_enabled n-cpu)" == "1" ]; then
 +        expected_num_hypervisors=$((expected_num_hypervisors + 1))
      fi
 +fi
 +num_hypervisors=$(${SSH} ${!CONTROLIP} "cd /opt/stack/devstack; source openrc admin admin; openstack hypervisor list -f value | wc -l" | tail -1 | tr -d "\r")
 +if ! [ "${num_hypervisors}" ] || ! [ ${num_hypervisors} -eq ${expected_num_hypervisors} ]; then
 +    echo "Error: Only $num_hypervisors hypervisors detected, expected $expected_num_hypervisors"
 +    exit 1
 +fi
 +
 +# External Network
 +echo "prepare external networks by adding vxlan tunnels between all nodes on a separate bridge..."
 +# FIXME Should there be a unique gateway IP and devstack index for each site?
 +devstack_index=1
 +for ip in ${!CONTROLIP} ${COMPUTE_IPS[*]}; do
 +    # FIXME - Workaround, ODL (new netvirt) currently adds PUBLIC_BRIDGE as a port in br-int since it doesn't see such a bridge existing when we stack
 +    ${SSH} $ip "sudo ovs-vsctl --if-exists del-port br-int $PUBLIC_BRIDGE"
 +    ${SSH} $ip "sudo ovs-vsctl --may-exist add-br $PUBLIC_BRIDGE -- set bridge $PUBLIC_BRIDGE other-config:disable-in-band=true other_config:hwaddr=f6:00:00:ff:01:0$((devstack_index++))"
 +done
  
 -    # Gather Compute IPs for the site
 -    for j in `seq 1 ${NUM_COMPUTES_PER_SITE}`; do
 -        COMPUTE_INDEX=$(((i-1) * NUM_COMPUTES_PER_SITE + j))
 -        IP_VAR=OPENSTACK_COMPUTE_NODE_${COMPUTE_INDEX}_IP
 -        COMPUTE_IPS[$((j-1))]=${!IP_VAR}
 +# ipsec support
 +if [ "${IPSEC_VXLAN_TUNNELS_ENABLED}" == "yes" ]; then
 +    # shellcheck disable=SC2206
 +    ALL_NODES=(${!CONTROLIP} ${COMPUTE_IPS[*]})
 +    for ((inx_ip1=0; inx_ip1<$((${#ALL_NODES[@]} - 1)); inx_ip1++)); do
 +        for ((inx_ip2=$((inx_ip1 + 1)); inx_ip2<${#ALL_NODES[@]}; inx_ip2++)); do
 +            KEY1=0x$(dd if=/dev/urandom count=32 bs=1 2> /dev/null| xxd -p -c 64)
 +            KEY2=0x$(dd if=/dev/urandom count=32 bs=1 2> /dev/null| xxd -p -c 64)
 +            ID=0x$(dd if=/dev/urandom count=4 bs=1 2> /dev/null| xxd -p -c 8)
 +            ip1=${ALL_NODES[$inx_ip1]}
 +            ip2=${ALL_NODES[$inx_ip2]}
 +            ${SSH} $ip1 "sudo ip xfrm state add src $ip1 dst $ip2 proto esp spi $ID reqid $ID mode transport auth sha256 $KEY1 enc aes $KEY2"
 +            ${SSH} $ip1 "sudo ip xfrm state add src $ip2 dst $ip1 proto esp spi $ID reqid $ID mode transport auth sha256 $KEY1 enc aes $KEY2"
 +            ${SSH} $ip1 "sudo ip xfrm policy add src $ip1 dst $ip2 proto udp dir out tmpl src $ip1 dst $ip2 proto esp reqid $ID mode transport"
 +            ${SSH} $ip1 "sudo ip xfrm policy add src $ip2 dst $ip1 proto udp dir in tmpl src $ip2 dst $ip1 proto esp reqid $ID mode transport"
 +
 +            ${SSH} $ip2 "sudo ip xfrm state add src $ip2 dst $ip1 proto esp spi $ID reqid $ID mode transport auth sha256 $KEY1 enc aes $KEY2"
 +            ${SSH} $ip2 "sudo ip xfrm state add src $ip1 dst $ip2 proto esp spi $ID reqid $ID mode transport auth sha256 $KEY1 enc aes $KEY2"
 +            ${SSH} $ip2 "sudo ip xfrm policy add src $ip2 dst $ip1 proto udp dir out tmpl src $ip2 dst $ip1 proto esp reqid $ID mode transport"
 +            ${SSH} $ip2 "sudo ip xfrm policy add src $ip1 dst $ip2 proto udp dir in tmpl src $ip1 dst $ip2 proto esp reqid $ID mode transport"
 +        done
      done
  
 -    # External Network
 -    echo "prepare external networks by adding vxlan tunnels between all nodes on a separate bridge..."
 -    # FIXME Should there be a unique gateway IP and devstack index for each site?
 -    devstack_index=1
      for ip in ${!CONTROLIP} ${COMPUTE_IPS[*]}; do
 -        # FIXME - Workaround, ODL (new netvirt) currently adds PUBLIC_BRIDGE as a port in br-int since it doesn't see such a bridge existing when we stack
 -        ${SSH} $ip "sudo ovs-vsctl --if-exists del-port br-int $PUBLIC_BRIDGE"
 -        ${SSH} $ip "sudo ovs-vsctl --may-exist add-br $PUBLIC_BRIDGE -- set bridge $PUBLIC_BRIDGE other-config:disable-in-band=true other_config:hwaddr=f6:00:00:ff:01:0$((devstack_index++))"
 +        echo "ip xfrm configuration for node $ip:"
 +        ${SSH} $ip "sudo ip xfrm policy list"
 +        ${SSH} $ip "sudo ip xfrm state list"
      done
 +fi
  
 -    # ipsec support
 -    if [ "${IPSEC_VXLAN_TUNNELS_ENABLED}" == "yes" ]; then
 -        # shellcheck disable=SC2206
 -        ALL_NODES=(${!CONTROLIP} ${COMPUTE_IPS[*]})
 -        for ((inx_ip1=0; inx_ip1<$((${#ALL_NODES[@]} - 1)); inx_ip1++)); do
 -            for ((inx_ip2=$((inx_ip1 + 1)); inx_ip2<${#ALL_NODES[@]}; inx_ip2++)); do
 -                KEY1=0x$(dd if=/dev/urandom count=32 bs=1 2> /dev/null| xxd -p -c 64)
 -                KEY2=0x$(dd if=/dev/urandom count=32 bs=1 2> /dev/null| xxd -p -c 64)
 -                ID=0x$(dd if=/dev/urandom count=4 bs=1 2> /dev/null| xxd -p -c 8)
 -                ip1=${ALL_NODES[$inx_ip1]}
 -                ip2=${ALL_NODES[$inx_ip2]}
 -                ${SSH} $ip1 "sudo ip xfrm state add src $ip1 dst $ip2 proto esp spi $ID reqid $ID mode transport auth sha256 $KEY1 enc aes $KEY2"
 -                ${SSH} $ip1 "sudo ip xfrm state add src $ip2 dst $ip1 proto esp spi $ID reqid $ID mode transport auth sha256 $KEY1 enc aes $KEY2"
 -                ${SSH} $ip1 "sudo ip xfrm policy add src $ip1 dst $ip2 proto udp dir out tmpl src $ip1 dst $ip2 proto esp reqid $ID mode transport"
 -                ${SSH} $ip1 "sudo ip xfrm policy add src $ip2 dst $ip1 proto udp dir in tmpl src $ip2 dst $ip1 proto esp reqid $ID mode transport"
 -
 -                ${SSH} $ip2 "sudo ip xfrm state add src $ip2 dst $ip1 proto esp spi $ID reqid $ID mode transport auth sha256 $KEY1 enc aes $KEY2"
 -                ${SSH} $ip2 "sudo ip xfrm state add src $ip1 dst $ip2 proto esp spi $ID reqid $ID mode transport auth sha256 $KEY1 enc aes $KEY2"
 -                ${SSH} $ip2 "sudo ip xfrm policy add src $ip2 dst $ip1 proto udp dir out tmpl src $ip2 dst $ip1 proto esp reqid $ID mode transport"
 -                ${SSH} $ip2 "sudo ip xfrm policy add src $ip1 dst $ip2 proto udp dir in tmpl src $ip1 dst $ip2 proto esp reqid $ID mode transport"
 -            done
 -        done
 -
 -        for ip in ${!CONTROLIP} ${COMPUTE_IPS[*]}; do
 -            echo "ip xfrm configuration for node $ip:"
 -            ${SSH} $ip "sudo ip xfrm policy list"
 -            ${SSH} $ip "sudo ip xfrm state list"
 -        done
 -    fi
 -
 -    # Control Node - PUBLIC_BRIDGE will act as the external router
 -    # Parameter values below are used in integration/test - changing them requires updates in intergration/test as well
 -    EXTNET_GATEWAY_IP="10.10.10.250"
 -    EXTNET_INTERNET_IP="10.9.9.9"
 -    EXTNET_PNF_IP="10.10.10.253"
 -    ${SSH} ${!CONTROLIP} "sudo ifconfig ${PUBLIC_BRIDGE} up ${EXTNET_GATEWAY_IP}/24"
 -
 -    # Control Node - external net PNF simulation
 +# Control Node - PUBLIC_BRIDGE will act as the external router
 +# Parameter values below are used in integration/test - changing them requires updates in intergration/test as well
 +EXTNET_GATEWAY_IP="10.10.10.250"
 +EXTNET_INTERNET_IP="10.9.9.9"
 +EXTNET_PNF_IP="10.10.10.253"
 +${SSH} ${!CONTROLIP} "sudo ifconfig ${PUBLIC_BRIDGE} up ${EXTNET_GATEWAY_IP}/24"
 +
 +# Control Node - external net PNF simulation
 +${SSH} ${!CONTROLIP} "
 +    sudo ip netns add pnf_ns;
 +    sudo ip link add pnf_veth0 type veth peer name pnf_veth1;
 +    sudo ip link set pnf_veth1 netns pnf_ns;
 +    sudo ip link set pnf_veth0 up;
 +    sudo ip netns exec pnf_ns ifconfig pnf_veth1 up ${EXTNET_PNF_IP}/24;
 +    sudo ovs-vsctl add-port ${PUBLIC_BRIDGE} pnf_veth0;
 +"
 +
 +# Control Node - external net internet address simulation
 +${SSH} ${!CONTROLIP} "
 +    sudo ip tuntap add dev internet_tap mode tap;
 +    sudo ifconfig internet_tap up ${EXTNET_INTERNET_IP}/24;
 +"
 +
 +# Computes
 +compute_index=1
 +for compute_ip in ${COMPUTE_IPS[*]}; do
 +    # Tunnel from controller to compute
 +    COMPUTEPORT=compute$(( compute_index++ ))_vxlan
      ${SSH} ${!CONTROLIP} "
 -        sudo ip netns add pnf_ns;
 -        sudo ip link add pnf_veth0 type veth peer name pnf_veth1;
 -        sudo ip link set pnf_veth1 netns pnf_ns;
 -        sudo ip link set pnf_veth0 up;
 -        sudo ip netns exec pnf_ns ifconfig pnf_veth1 up ${EXTNET_PNF_IP}/24;
 -        sudo ovs-vsctl add-port ${PUBLIC_BRIDGE} pnf_veth0;
 +        sudo ovs-vsctl add-port $PUBLIC_BRIDGE $COMPUTEPORT -- set interface $COMPUTEPORT type=vxlan options:local_ip=${!CONTROLIP} options:remote_ip=$compute_ip options:dst_port=9876 options:key=flow
      "
 -
 -    # Control Node - external net internet address simulation
 -    ${SSH} ${!CONTROLIP} "
 -        sudo ip tuntap add dev internet_tap mode tap;
 -        sudo ifconfig internet_tap up ${EXTNET_INTERNET_IP}/24;
 +    # Tunnel from compute to controller
 +    CONTROLPORT="control_vxlan"
 +    ${SSH} $compute_ip "
 +        sudo ovs-vsctl add-port $PUBLIC_BRIDGE $CONTROLPORT -- set interface $CONTROLPORT type=vxlan options:local_ip=$compute_ip options:remote_ip=${!CONTROLIP} options:dst_port=9876 options:key=flow
      "
 -
 -    # Computes
 -    compute_index=1
 -    for compute_ip in ${COMPUTE_IPS[*]}; do
 -        # Tunnel from controller to compute
 -        COMPUTEPORT=compute$(( compute_index++ ))_vxlan
 -        ${SSH} ${!CONTROLIP} "
 -            sudo ovs-vsctl add-port $PUBLIC_BRIDGE $COMPUTEPORT -- set interface $COMPUTEPORT type=vxlan options:local_ip=${!CONTROLIP} options:remote_ip=$compute_ip options:dst_port=9876 options:key=flow
 -        "
 -        # Tunnel from compute to controller
 -        CONTROLPORT="control_vxlan"
 -        ${SSH} $compute_ip "
 -            sudo ovs-vsctl add-port $PUBLIC_BRIDGE $CONTROLPORT -- set interface $CONTROLPORT type=vxlan options:local_ip=$compute_ip options:remote_ip=${!CONTROLIP} options:dst_port=9876 options:key=flow
 -        "
 -    done
  done
  
  if [ "${ENABLE_HAPROXY_FOR_NEUTRON}" == "yes" ]; then
@@@ -1146,6 -1131,7 +1152,6 @@@ for suite in ${SUITES}; d
      -v JENKINS_WORKSPACE:${WORKSPACE} \
      -v NEXUSURL_PREFIX:${NEXUSURL_PREFIX} \
      -v NUM_ODL_SYSTEM:${NUM_ODL_SYSTEM} \
 -    -v NUM_OPENSTACK_SITES:${NUM_OPENSTACK_SITES} \
      -v NUM_OS_SYSTEM:${NUM_OPENSTACK_SYSTEM} \
      -v NUM_TOOLS_SYSTEM:${NUM_TOOLS_SYSTEM} \
      -v ODL_SNAT_MODE:${ODL_SNAT_MODE} \
index c86808f73619f6c90931b1029cbbc9f49ccdd7f6,2d5752e383b80f9ec1920e64dc03b60838c072cc..e68d44d1e325df48d8ecb29b6418f8cd49988be1
  - job-template:
      name: '{prefix}{project}-csit-1node-{functionality}-{install}-{stream}'
      id: inttest-csit-1node
 -    disabled: false
 +    disable-job: false
 +    disabled: '{disable-job}'
  
      project-type: freestyle
      node: centos7-robot-2c-8g
            name: ODL_SNAT_MODE
            default: '{odl-snat-mode}'
            description: 'The SNAT mode to be configured - options are conntrack/controller.'
 +      - string:
 +          name: OVS_INSTALL
 +          default: '{ovs-install}'
 +          description: 'Install a custom OVS. It can be an OVS version to build (like v2.9.2 or v2.6.1-nsh) or a yum
 +          repo url to pull from.'
      scm:
        - integration-gerrit-scm:
            basedir: 'test'
            default: '{odl-ml2-port-binding}'
            description: 'Method of networking-odl port-binding (pseudo-agentdb-binding or legacy-port-binding or
            network-topology)'
+       - string:
+           name: ENABLE_GRE_TYPE_DRIVERS
+           default: '{enable-gre-type-driver}'
+           description: 'Enable gre tunnel'
        - string:
            name: DEVSTACK_KUBERNETES_PLUGIN_REPO
            default: '{devstack-kubernetes-plugin-repo}'
            default: '{lbaas-service-provider}'
            description: 'The NEUTRON_LBAAS_SERVICE_PROVIDERV2 value to be used in local.conf - only relevant when using
            neutron-lbaas'
 -      - string:
 -          name: NUM_OPENSTACK_SITES
 -          default: '{num-openstack-sites}'
 -          description: 'Number of openstack sites'
        - string:
            name: ODL_SFC_DRIVER
            default: '{odl-sfc-driver}'
            name: ODL_SNAT_MODE
            default: '{odl-snat-mode}'
            description: 'The SNAT mode to be configured - options are conntrack/controller.'
 -
 +      - string:
 +          name: OVS_INSTALL
 +          default: '{ovs-install}'
 +          description: 'Install a custom OVS. It can be an OVS version to build (like v2.9.2 or v2.6.1-nsh) or a yum
 +          repo url to pull from.'
      scm:
        - integration-gerrit-scm:
            basedir: 'test'