--- /dev/null
+# SPDX-License-Identifier: EPL-1.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+"""Ensures that the prefix MUST be set to blank.
+
+The production prefix MUST always be a blank string.
+"""
+
+__author__ = 'Thanh Ha'
+
+
+import os
+import re
+import sys
+
+
+def check_prefix(filename):
+ with open(filename, 'r') as _file:
+ for num, line in enumerate(_file, 1):
+ if re.search('prefix:', line):
+ if "''" not in line:
+ print(
+ 'ERROR: A non-blank prefix is defined in '
+ 'jjb/defaults.yaml. The prefix MUST be set to blank '
+ '\'\' in production!'
+ )
+ sys.exit(1)
+
+
+if __name__ == "__main__":
+ check_prefix(os.path.join('jjb', 'defaults.yaml'))
--- /dev/null
+# SPDX-License-Identifier: EPL-1.0
+##############################################################################
+# Copyright (c) 2018 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+# Ensures that we are only ever using one robot system
+#
+# Due to the way the Jenkins OpenStack Cloud plugin works we can only limit
+# max parallel robot systems by the VM. So having multiple VM types makes it
+# very difficult for us to properly limit the amount of parallel robot runs.
+
+__author__ = 'Thanh Ha'
+
+
+import fnmatch
+import os
+import re
+import sys
+
+
+def get_robot_systems(filename):
+ """Scan for robot vms.
+
+ Returns a list of Robot systems found in file.
+ """
+ robots = set()
+
+ with open(filename, 'r') as _file:
+ for num, line in enumerate(_file, 1):
+ if re.search('centos7-robot', line):
+ robots.add(line.rsplit(maxsplit=1)[1])
+
+ return robots
+
+
+if __name__ == "__main__":
+ robots = []
+ for root, dirnames, filenames in os.walk('jjb'):
+ for filename in fnmatch.filter(filenames, '*.yaml'):
+ robots += get_robot_systems(os.path.join(root, filename))
+
+ if len(robots) > 1:
+ print("ERROR: More than one robot system type definition detected.")
+ print("Please ensure that ALL templates use the same robot nodes.")
+ print("Infra does not support more than 1 robot node type in use.")
+ sys.exit(1)
+++ /dev/null
-#!/bin/bash
-# SPDX-License-Identifier: EPL-1.0
-##############################################################################
-# Copyright (c) 2018 The Linux Foundation and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-##############################################################################
-# Ensures that we are only ever using one robot system
-#
-# Due to the way the Jenkins OpenStack Cloud plugin works we can only limit
-# max parallel robot systems by the VM. So having multiple VM types makes it
-# very difficult for us to properly limit the amount of parallel robot runs.
-
-robots=$(find . -name "*.yaml" -print0 \
- | xargs -0 grep centos7-robot | awk '{print $NF}' \
- | sort | uniq | wc -l)
-
-if [ "$robots" -gt 1 ]; then
- echo "ERROR: More than one robot system type definition detected."
- echo "Please ensure that ALL templates use the same robot nodes."
- echo "Infra does not support more than 1 robot node type in use."
- exit 1
-fi
# Edit jenkins.ini with your username, API token and ODL's sandbox URL
$ cat jenkins.ini
<snip>
+ [job_builder]
+ retain_anchors=True
+
[jenkins]
user=<your ODL username>
password=<your ODL Jenkins sandbox API token>
JJB jobs <Testing Jobs_>`_ produce valid XML descriptions of Jenkins jobs you
can push them to the Jenkins sandbox.
+Add the --jobs-only (-j) option to push only jobs to Jenkins sandbox. Pushing
+views to Jenkins sandbox requires admin access.
+
.. important::
When pushing with `jenkins-jobs`, a log message with the number
.. code-block:: bash
# Don't push all jobs by omitting the final param! (ctrl+c to abort)
- jenkins-jobs --conf jenkins.ini update jjb/ <job-name>
+ jenkins-jobs --conf jenkins.ini update -j jjb/ <job-name>
Alternatively, you can push a job to the Jenkins sandbox with a special comment in a
releng/builder gerrit patch. The job will be based off of the code your patch is
NETWORK_ID=b5fcd86e-efac-4997-b8bc-dbe0d35bc229
USER_DATA_ID=jenkins-init-script
INSTANCE_CAP=75
-SANDBOX_CAP=6
+SANDBOX_CAP=8
FLOATING_IP_POOL=
SECURITY_GROUPS=default
AVAILABILITY_ZONE=ca-ymq-2
--- /dev/null
+#!/bin/bash
+# vim: sw=2 ts=2 sts=2 et :
+
+yum clean all
+
+# disable the firewall
+/bin/bash ./disable_firewall.sh
+
+cat <<EOF >/etc/sudoers.d/89-jenkins-user-defaults
+Defaults:jenkins !requiretty
+jenkins ALL = NOPASSWD: ALL
+EOF
--- /dev/null
+#!/bin/bash
+
+# It looks like the devstack gate is stomping on our dnsmasq setup which
+# therefore kills our ability to do proper lookups of some resources.
+# Let's capture the 3 nexus IPs into /etc/hosts
+cat <<EOHOSTS >> /etc/hosts
+# the internal address for nexus
+$(dig +short nexus.opendaylight.org) nexus.opendaylight.org
+# all the nexus proxies
+$(dig +short nexus01.dfw.opendaylight.org) nexus01.dfw.opendaylight.org
+$(dig +short nexus02.dfw.opendaylight.org) nexus02.dfw.opendaylight.org
+$(dig +short nexus03.ord.opendaylight.org) nexus03.ord.opendaylight.org
+EOHOSTS
+
+# make sure we don't require tty for sudo operations
+cat <<EOF >/etc/sudoers.d/89-jenkins-user-defaults
+Defaults:jenkins !requiretty
+jenkins ALL = NOPASSWD: ALL
+EOF
+
+# vim: sw=2 ts=2 sts=2 et :
--- /dev/null
+#!/bin/bash
+
+# make sure we don't require tty for sudo operations
+cat <<EOF >/etc/sudoers.d/89-jenkins-user-defaults
+Defaults:jenkins !requiretty
+jenkins ALL = NOPASSWD: ALL
+EOF
+
+# make sure jenkins is part of the docker only if jenkins has already been
+# created
+
+if grep -q jenkins /etc/passwd
+then
+ /usr/sbin/usermod -a -G docker jenkins
+fi
+
+# vim: sw=2 ts=2 sts=2 et :
#!/bin/bash
# SPDX-License-Identifier: EPL-1.0
##############################################################################
-# Copyright (c) 2018 The Linux Foundation and others.
+# Copyright (c) 2016 The Linux Foundation and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
##############################################################################
-# Ensures that the prefix MUST be set to blank
-#
-# The production prefix MUST always be a blank string.
-if grep 'prefix:' jjb/defaults.yaml | grep -v "''"; then
- echo "ERROR: A non-blank prefix is defined in jjb/defaults.yaml"
- echo "The prefix MUST be set to blank '' in production!"
- exit 1
-fi
+INIT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
+"${INIT_DIR}/system_type.sh"
+# shellcheck disable=SC1091
+source /tmp/system_type.sh
+"${INIT_DIR}/${SYSTEM_TYPE}.sh"
--- /dev/null
+#!/bin/bash
+
+# make sure we don't require tty for sudo operations
+cat <<EOF >/etc/sudoers.d/89-jenkins-user-defaults
+Defaults:jenkins !requiretty
+jenkins ALL = NOPASSWD: ALL
+EOF
+
+# disable the firewall
+/bin/bash ./disable_firewall.sh
+
+# Add 'hostname' into /etc/hosts during node spinup time to avoid sudo returning
+# an 'unable to resolve host' message or some Java API's returning an unknown
+# host exception. The workaround on adding "myhostname" into /etc/nss-switch.conf
+# does not work on Ubuntu flavours.
+sed -i "/127.0.0.1/s/$/\t$(hostname)/" /etc/hosts
--- /dev/null
+#!/bin/bash
+
+# make sure we don't require tty for sudo operations
+cat <<EOF >/etc/sudoers.d/89-jenkins-user-defaults
+Defaults:jenkins !requiretty
+jenkins ALL = NOPASSWD: ALL
+EOF
+
+# make sure the firewall is stopped
+service iptables stop
+
+# vim: sw=2 ts=2 sts=2 et :
--- /dev/null
+#!/bin/bash
+# SPDX-License-Identifier: EPL-1.0
+##############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+
+HOST=$(/bin/hostname)
+SYSTEM_TYPE=''
+
+IFS=','
+for i in "java-builder,builder" \
+ "builder,builder" \
+ "devstack,devstack" \
+ "docker,docker" \
+ "gbp,ubuntu-docker-ovs" \
+ "kubernetes,mininet-ubuntu" \
+ "robot,robot" \
+ "mininet,mininet-ubuntu"
+do set -- $i
+ if [[ $HOST == *"$1"* ]]; then
+ SYSTEM_TYPE="$2"
+ break
+ fi
+done
+
+# Write out the system type to an environment file to then be sourced
+echo "SYSTEM_TYPE=${SYSTEM_TYPE}" > /tmp/system_type.sh
+
+# vim: sw=4 ts=4 sts=4 et :
--- /dev/null
+#!/bin/bash
+
+# make sure we don't require tty for sudo operations
+cat <<EOF >/etc/sudoers.d/89-jenkins-user-defaults
+Defaults:jenkins !requiretty
+jenkins ALL = NOPASSWD: ALL
+EOF
+
+# Add 'hostname' into /etc/hosts during node spinup time to avoid sudo returning
+# an 'unable to resolve host' message or some Java API's returning an unknown
+# host exception. The workaround on adding "myhostname" into /etc/nss-switch.conf
+# does not work on Ubuntu flavours.
+sed -i "/127.0.0.1/s/$/\t$(hostname)/" /etc/hosts
+
+# Do the final install of OVS that the has to be done at boot time for
+# some reason due to how the snapshots keep behaving.
+dpkg --install /root/openvswitch-datapath-dkms* && \
+dpkg --install /root/openvswitch-{common,switch}*
+
+# add user jenkins to docker group
+/usr/sbin/usermod -a -G docker jenkins
+
+# pull docker images
+docker pull alagalah/odlpoc_ovs230
+
+# vim: sw=2 ts=2 sts=2 et :
branch: 'master'
mvn-settings: 'aaa-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: aaa
+ description: 'List of aaa jobs'
+ regex: '^aaa-.*'
+ <<: *releng_view_common
build-node: centos7-builder-2c-8g
mvn-settings: 'alto-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: alto
+ description: 'List of alto jobs'
+ regex: '^alto-.*'
+ <<: *releng_view_common
project-name: 'archetypes'
branch: 'master'
mvn-settings: 'archetypes-settings'
+
+- view:
+ name: archetypes
+ regex: '^archetypes-.*'
+ description: 'List of archetypes jobs'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'atrium-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: atrium
+ description: 'List of atrium jobs'
+ regex: '^atrium-.*'
+ <<: *releng_view_common
**/hs_err_*.log
**/target/feature/feature.xml
# TODO: **/*.hprof is too large, compress with xz first
+
+- view:
+ name: autorelease
+ description: 'List of autorelease jobs'
+ regex: '^autorelease-.*'
+ <<: *releng_view_common
project: openflowplugin
- ovsdb:
project: ovsdb
+ - serviceutils:
+ project: serviceutils
- sfc:
project: sfc
- 'neutron-maven-merge-fluorine'
- 'openflowplugin-maven-merge-fluorine'
- 'ovsdb-maven-merge-fluorine'
+ - 'serviceutils-maven-merge-fluorine'
- 'sfc-maven-merge-fluorine'
<<: *releng_autorelease_view_common_fluorine
branch: 'master'
mvn-settings: 'bgpcep-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: bgpcep
+ description: 'List of bgpcep jobs'
+ regex: '^bgpcep-.*'
+ <<: *releng_view_common
build-node: centos7-builder-2c-8g
mvn-settings: 'bier-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: bier
+ description: 'List of bier jobs'
+ regex: '^bier-.*'
+ <<: *releng_view_common
branch: master
mvn-settings: 'capwap-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: capwap
+ description: 'List of capwap jobs'
+ regex: '^capwap-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'cardinal-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: cardinal
+ description: 'List of cardinal jobs'
+ regex: '^cardinal-.*'
+ <<: *releng_view_common
branch: master
mvn-settings: 'centinel-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: centinel
+ description: 'List of centinel jobs'
+ regex: '^centinel-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'coe-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: coe
+ description: 'List of coe jobs'
+ regex: '^coe-.*'
+ <<: *releng_view_common
- inttest-csit-3node
- inttest-csit-verify-3node
- # The project name
project: 'controller'
-
- # The functionality under test
functionality: 'clustering'
- # Project branches
stream:
- fluorine:
branch: 'master'
- all:
scope: 'all'
- # No tools system VMs needed in JCloud configuration
tools_system_count: 0
- # Features to install
install-features: >
- odl-restconf-noauth,
+ odl-restconf,
odl-clustering-test-app
-
- # Robot custom options
- robot-options: ''
mvn-settings: 'controller-settings'
mvn-goals: 'clean deploy -Pintegrationtests,docs'
mvn-opts: '-Xmx4096m -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
+
+- view:
+ name: controller
+ description: 'List of controller jobs'
+ regex: '^controller-.*'
+ <<: *releng_view_common
mvn-settings: 'coretutorials-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
build-timeout: 120
+
+- view:
+ name: coretutorials
+ description: 'List of coretutorials jobs'
+ regex: '^coretutorials-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'daexim-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: daexim
+ description: 'List of daexim jobs'
+ regex: '^daexim-.*'
+ <<: *releng_view_common
- defaults:
name: global
+ functionality: global
+ stream: global
prefix: '' # A prefix for job names sandbox for example: user-
+ scriptplan: '{project}.txt'
+ configplan: '{project}.txt'
+ testplan: '{project}-{functionality}.txt'
+ streamtestplan: '{project}-{functionality}-{stream}.txt'
karaf-version: karaf4
build-days-to-keep: 30
use-features-boot: 'True'
odl-snat-mode: 'controller'
enable-itm-direct-tunnels: 'false'
openstack_legacy_default_network_services: 'q-dhcp,q-meta,q-svc'
+ os-cmb-cnt: 1
+ os-ctl-cnt: 0
+ os-cmp-cnt: 0
+ os-std-topo: '0cmb-1ctl-2cmp'
# openstack-infra-parameters defaults
archive-artifacts: ''
sm-features: ''
# CSIT images configuration
- openstack_system_image_ocata: ZZCI - CentOS 7 - devstack-ocata - 20171208-1649
+ openstack_system_image_queens: ZZCI - CentOS 7 - devstack-pike - 20171208-1649
openstack_system_image_pike: ZZCI - CentOS 7 - devstack-pike - 20171208-1649
stack-template: csit-2-instance-type.yaml
docker_system_count: 1
# Manual CSIT job lists used by sanity or periodic in nature.
csit-high-frequency-list-fluorine: >
- netvirt-csit-1node-openstack-queens-upstream-stateful-fluorine
+ netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-fluorine
csit-high-frequency-list-oxygen: >
- netvirt-csit-1node-openstack-queens-upstream-stateful-oxygen
+ netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-oxygen
csit-sanity-list-fluorine: >
openflowplugin-csit-1node-sanity-only-fluorine,
distribution-sanity-fluorine
branch: 'master'
mvn-settings: 'didm-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: didm
+ description: 'List of didm jobs'
+ regex: '^didm-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'dlux-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: dlux
+ description: 'List of dlux jobs'
+ regex: '^dlux-.*'
+ <<: *releng_view_common
build-node: centos7-builder-2c-8g
mvn-settings: 'dluxapps-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: dluxapps
+ description: 'List of dluxapps jobs'
+ regex: '^dluxapps-.*'
+ <<: *releng_view_common
build-timeout: 60
rtd-build-url: https://readthedocs.org/api/v2/webhook/opendaylight/32322/
rtd-token: 86e54dd38c651e2164ea63c183ae601d19cd1f3c
+
+- view:
+ name: docs
+ description: 'List of docs jobs'
+ regex: '^docs-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'eman-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: eman
+ description: 'List of eman jobs'
+ regex: '^eman-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'faas-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: faas
+ description: 'List of faas jobs'
+ regex: '^faas-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'federation-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: federation
+ description: 'List of federation jobs'
+ regex: '^federation-.*'
+ <<: *releng_view_common
feature:
- netvirt:
csit-list: >
- netvirt-csit-1node-openstack-{os-branch}-gate-stateful-{stream}
+ netvirt-csit-1node-{os-std-topo}-openstack-{os-branch}-gate-stateful-{stream}
- cluster-netvirt:
csit-list: >
- netvirt-csit-3node-openstack-{os-branch}-gate-stateful-{stream}
+ netvirt-csit-3node-{os-std-topo}-openstack-{os-branch}-gate-stateful-{stream}
+
+ - netvirt-itm-direct-tunnels:
+ csit-list: >
+ netvirt-csit-1node-{os-std-topo}-openstack-{os-branch}-gate-stateful-itm-direct-tunnels-{stream}
- genius:
csit-list: >
build-node: centos7-builder-2c-8g
mvn-settings: 'genius-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: genius
+ description: 'List of genius jobs'
+ regex: '^genius-.*'
+ <<: *releng_view_common
-Subproject commit f58aa56acc44a8eb7498af10e5d229e1690e58b0
+Subproject commit 5ca1149a99351cc571d21b315e4acecae6b109b5
install-features: 'odl-groupbasedpolicy-neutron-and-ofoverlay,odl-restconf'
openstack:
- - ocata:
- openstack-branch: 'stable/ocata'
- odl-ml2-branch: 'stable/ocata'
+ - pike:
+ openstack-branch: 'stable/pike'
+ odl-ml2-branch: 'stable/pike'
public-bridge: 'br-int'
mvn-settings: 'groupbasedpolicy-settings'
mvn-goals: '-U clean deploy findbugs:findbugs'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: groupbasedpolicy
+ description: 'List of groupbasedpolicy jobs'
+ regex: '^groupbasedpolicy-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'honeycomb-vbd-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: vbd
+ description: 'List of vbd jobs'
+ regex: '^vbd-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'infrautils-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: infrautils
+ description: 'List of infrautils jobs'
+ regex: '^infrautils-.*'
+ <<: *releng_view_common
echo "Set JAVA_HOME"
export JAVA_HOME="${java_home}"
+
# shellcheck disable=SC2037
JAVA_RESOLVED=$(readlink -e "${java_home}/bin/java")
echo "Java binary pointed at by JAVA_HOME: ${JAVA_RESOLVED}"
cat ${LOGCONF}
} # function configure_karaf_log()
+function run_plan() {
+ local -r type=$1
+
+ case ${type} in
+ script)
+ plan=$SCRIPTPLAN
+ ;;
+ config|*)
+ plan=$CONFIGPLAN
+ ;;
+ esac
+
+ printf "Locating ${type} plan to use...\n"
+ plan_filepath="${WORKSPACE}/test/csit/${type}plans/$plan"
+ if [ ! -f "${plan_filepath}" ]; then
+ plan_filepath="${WORKSPACE}/test/csit/${type}plans/${STREAMTESTPLAN}"
+ if [ ! -f "${plan_filepath}" ]; then
+ plan_filepath="${WORKSPACE}/test/csit/${type}plans/${TESTPLAN}"
+ fi
+ fi
+
+ if [ -f "${plan_filepath}" ]; then
+ printf "${type} plan exists!!!\n"
+ printf "Changing the ${type} plan path...\n"
+ cat ${plan_filepath} | sed "s:integration:${WORKSPACE}:" > ${type}plan.txt
+ cat ${type}plan.txt
+ for line in $( egrep -v '(^[[:space:]]*#|^[[:space:]]*$)' ${type}plan.txt ); do
+ printf "Executing ${line}...\n"
+ # shellcheck source=${line} disable=SC1091
+ source ${line}
+ done
+ fi
+ printf "Finished running ${type} plans\n"
+} # function run_plan()
+
# convert commas in csv strings to spaces (ssv)
function csv2ssv() {
local csv=$1
ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_after.log
pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_after.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "jstack ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
+ ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
echo "killing karaf process..."
${SSH} "${!CONTROLLERIP}" bash -c 'ps axf | grep karaf | grep -v grep | awk '"'"'{print "kill -9 " $1}'"'"' | sh'
${SSH} ${!CONTROLLERIP} "sudo journalctl > /tmp/journalctl.log"
netconf-csit-3node-cluster-stress-all-fluorine,
netconf-csit-3node-clustering-all-fluorine,
netconf-csit-3node-clustering-scale-all-fluorine,
-netvirt-csit-1node-openstack-pike-upstream-stateful-fluorine,
-netvirt-csit-1node-openstack-pike-upstream-stateful-itm-direct-tunnels-fluorine,
-netvirt-csit-1node-openstack-pike-upstream-stateful-snat-conntrack-fluorine,
-netvirt-csit-1node-openstack-queens-sfc-fluorine,
-netvirt-csit-1node-openstack-queens-upgrade-fluorine,
-netvirt-csit-1node-openstack-queens-upgrade-snat-conntrack-fluorine,
-netvirt-csit-1node-openstack-queens-upstream-stateful-fluorine,
-netvirt-csit-1node-openstack-queens-upstream-stateful-itm-direct-tunnels-fluorine,
-netvirt-csit-1node-openstack-queens-upstream-stateful-snat-conntrack-fluorine,
-netvirt-csit-3node-openstack-pike-upstream-stateful-fluorine,
-netvirt-csit-3node-openstack-pike-upstream-stateful-itm-direct-tunnels-fluorine,
-netvirt-csit-3node-openstack-pike-upstream-stateful-snat-conntrack-fluorine,
-netvirt-csit-3node-openstack-queens-upstream-stateful-fluorine,
-netvirt-csit-3node-openstack-queens-upstream-stateful-itm-direct-tunnels-fluorine,
-netvirt-csit-3node-openstack-queens-upstream-stateful-snat-conntrack-fluorine,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-fluorine,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-itm-direct-tunnels-fluorine,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-snat-conntrack-fluorine,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-sfc-fluorine,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upgrade-fluorine,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upgrade-snat-conntrack-fluorine,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-fluorine,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-itm-direct-tunnels-fluorine,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-snat-conntrack-fluorine,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-fluorine,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-itm-direct-tunnels-fluorine,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-snat-conntrack-fluorine,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-fluorine,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-itm-direct-tunnels-fluorine,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-snat-conntrack-fluorine,
netvirt-csit-hwvtep-1node-openstack-pike-upstream-stateful-fluorine,
netvirt-csit-hwvtep-1node-openstack-queens-upstream-stateful-fluorine,
netvirt-csit-hwvtep-3node-openstack-pike-upstream-stateful-fluorine,
dluxapps-csit-1node-yangman-all-oxygen,
genius-csit-1node-upstream-all-oxygen,
genius-csit-3node-upstream-all-oxygen,
+groupbasedpolicy-csit-1node-1cmb-0ctl-0cmp-openstack-pike-openstack-oxygen,
groupbasedpolicy-csit-1node-3-node-all-oxygen,
groupbasedpolicy-csit-1node-6node-all-oxygen,
-groupbasedpolicy-csit-1node-openstack-ocata-openstack-oxygen,
groupbasedpolicy-csit-1node-sxp-only-oxygen,
groupbasedpolicy-csit-3node-clustering-all-oxygen,
l2switch-csit-1node-host-scalability-daily-only-oxygen,
netconf-csit-3node-cluster-stress-all-oxygen,
netconf-csit-3node-clustering-all-oxygen,
netconf-csit-3node-clustering-scale-all-oxygen,
-netvirt-csit-1node-openstack-pike-upstream-stateful-itm-direct-tunnels-oxygen,
-netvirt-csit-1node-openstack-pike-upstream-stateful-oxygen,
-netvirt-csit-1node-openstack-pike-upstream-stateful-snat-conntrack-oxygen,
-netvirt-csit-1node-openstack-queens-sfc-oxygen,
-netvirt-csit-1node-openstack-queens-upstream-stateful-itm-direct-tunnels-oxygen,
-netvirt-csit-1node-openstack-queens-upstream-stateful-oxygen,
-netvirt-csit-1node-openstack-queens-upstream-stateful-snat-conntrack-oxygen,
-netvirt-csit-3node-openstack-pike-upstream-stateful-itm-direct-tunnels-oxygen,
-netvirt-csit-3node-openstack-pike-upstream-stateful-oxygen,
-netvirt-csit-3node-openstack-pike-upstream-stateful-snat-conntrack-oxygen,
-netvirt-csit-3node-openstack-queens-upstream-stateful-itm-direct-tunnels-oxygen,
-netvirt-csit-3node-openstack-queens-upstream-stateful-oxygen,
-netvirt-csit-3node-openstack-queens-upstream-stateful-snat-conntrack-oxygen,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-itm-direct-tunnels-oxygen,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-oxygen,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-snat-conntrack-oxygen,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-sfc-oxygen,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-itm-direct-tunnels-oxygen,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-oxygen,
+netvirt-csit-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-snat-conntrack-oxygen,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-itm-direct-tunnels-oxygen,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-oxygen,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-snat-conntrack-oxygen,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-itm-direct-tunnels-oxygen,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-oxygen,
+netvirt-csit-3node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-snat-conntrack-oxygen,
netvirt-csit-hwvtep-1node-openstack-pike-upstream-stateful-oxygen,
netvirt-csit-hwvtep-1node-openstack-queens-upstream-stateful-oxygen,
netvirt-csit-hwvtep-3node-openstack-pike-upstream-stateful-oxygen,
karaf-version: odl
# Self-Managed projects repos and features:
sm-repos: mvn:org.opendaylight.sxp/features-sxp//xml/features
- sm-features: odl-sxp-controller
+ sm-features: odl-sxp-routing
- oxygen:
branch: 'stable/oxygen'
karaf-version: karaf4
- integration-csit-archive-build
- lf-infra-publish
+- view:
+ name: distribution
+ description: 'List of distribution jobs'
+ regex: '^(integration-)?distribution-.*'
+ <<: *releng_view_common
echo ${nodes_list}
-# Run script plan in case it exists
-if [ -f ${WORKSPACE}/test/csit/scriptplans/${TESTPLAN} ]; then
- echo "scriptplan exists!!!"
- echo "Reading the scriptplan:"
- cat ${WORKSPACE}/test/csit/scriptplans/${TESTPLAN} | sed "s:integration:${WORKSPACE}:" > scriptplan.txt
- cat scriptplan.txt
- for line in $( egrep -v '(^[[:space:]]*#|^[[:space:]]*$)' scriptplan.txt ); do
- echo "Executing ${line}..."
- source ${line}
- done
-fi
+run_plan "script"
# Create the configuration script to be run on controllers.
cat > ${WORKSPACE}/configuration-script.sh <<EOF
ssh ${!CONTROLLERIP} "bash /tmp/configuration-script.sh ${i}"
done
-# Run config plan in case it exists
-configplan_filepath="${WORKSPACE}/test/csit/configplans/${STREAMTESTPLAN}"
-if [ ! -f "${configplan_filepath}" ]; then
- configplan_filepath="${WORKSPACE}/test/csit/configplans/${TESTPLAN}"
-fi
-
-if [ -f ${configplan_filepath} ]; then
- echo "configplan exists!!!"
- echo "Reading the configplan:"
- cat ${configplan_filepath} | sed "s:integration:${WORKSPACE}:" > configplan.txt
- cat configplan.txt
- for line in $( egrep -v '(^[[:space:]]*#|^[[:space:]]*$)' configplan.txt ); do
- echo "Executing ${line}..."
- source ${line}
- done
-fi
+run_plan "config"
# Copy over the startup script to each controller and execute it.
for i in `seq 1 ${NUM_ODL_SYSTEM}`
SPACE_SEPARATED_FEATURES=$(echo "${ACTUALFEATURES}" | tr ',' ' ')
echo "SPACE_SEPARATED_FEATURES: ${SPACE_SEPARATED_FEATURES}"
-if [ -f "${WORKSPACE}/test/csit/scriptplans/${TESTPLAN}" ]; then
- echo "scriptplan exists!!!"
- echo "Changing the scriptplan path..."
- cat ${WORKSPACE}/test/csit/scriptplans/${TESTPLAN} | sed "s:integration:${WORKSPACE}:" > scriptplan.txt
- cat scriptplan.txt
- for line in $( egrep -v '(^[[:space:]]*#|^[[:space:]]*$)' scriptplan.txt ); do
- echo "Executing ${line}..."
- # shellcheck source=${line} disable=SC1091
- source ${line}
- done
-fi
+run_plan "script"
cat > ${WORKSPACE}/configuration-script.sh <<EOF
set -x
done
done
-echo "Locating config plan to use..."
-configplan_filepath="${WORKSPACE}/test/csit/configplans/${STREAMTESTPLAN}"
-if [ ! -f "${configplan_filepath}" ]; then
- configplan_filepath="${WORKSPACE}/test/csit/configplans/${TESTPLAN}"
-fi
-
-if [ -f "${configplan_filepath}" ]; then
- echo "configplan exists!!!"
- echo "Changing the configplan path..."
- cat ${configplan_filepath} | sed "s:integration:${WORKSPACE}:" > configplan.txt
- cat configplan.txt
- for line in $( egrep -v '(^[[:space:]]*#|^[[:space:]]*$)' configplan.txt ); do
- echo "Executing ${line}..."
- # shellcheck source=${line} disable=SC1091
- source ${line}
- done
-fi
+run_plan "config"
# Copy over the startup script to controller and execute it.
for i in `seq 1 ${NUM_ODL_SYSTEM}`
ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_before.log
pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_before.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "jstack ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_before.log || true
+ ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_before.log || true
done
if [ ${NUM_OPENSTACK_SYSTEM} -gt 0 ]; then
ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_after.log
pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_after.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "jstack ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
+ ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
echo "Killing ODL"
set +e # We do not want to create red dot just because something went wrong while fetching logs.
ssh "${!CONTROLLERIP}" bash -c 'ps axf | grep karaf | grep -v grep | awk '"'"'{print "kill -9 " $1}'"'"' | sh'
BUNDLE_URL: ${BUNDLE_URL}
CONTROLLERFEATURES: ${CONTROLLERFEATURES}
CONTROLLERDEBUGMAP: ${CONTROLLERDEBUGMAP}
+SCRIPTPLAN: ${SCRIPTPLAN}
+CONFIGPLAN: ${CONFIGPLAN}
+STREAMTESTPLAN: ${STREAMTESTPLAN}
TESTPLAN: ${TESTPLAN}
SUITES: ${SUITES}
PATCHREFSPEC: ${PATCHREFSPEC}
done
if [ "${ENABLE_NETWORKING_L2GW}" == "yes" ]; then
- #networking-l2gw is not officially available in any release yet. Gettting the latest stable version.
+ #networking-l2gw is not officially available in any release yet. Getting the latest stable version.
$PYTHON -m pip install networking-l2gw==11.0.0
fi
}
echo 0
}
-function fix_libvirt_version_n_cpu_pike() {
- local ip=$1
- ${SSH} ${ip} "
- cd /opt/stack;
- git clone https://git.openstack.org/openstack/requirements;
- cd requirements;
- git checkout stable/pike;
- sed -i s/libvirt-python===3.5.0/libvirt-python===4.2.0/ upper-constraints.txt
- "
-}
-
#Function to install rdo release
# This will help avoiding installing wrong version of packages which causes
# functionality failures
return ${rc}
}
-# if we are using the new netvirt impl, as determined by the feature name
-# odl-netvirt-openstack (note: old impl is odl-ovsdb-openstack) then we
-# want PROVIDER_MAPPINGS to be used -- this should be fixed if we want to support
-# external networks in legacy netvirt
-if [[ ${CONTROLLERFEATURES} == *"odl-netvirt-openstack"* ]]; then
- ODL_PROVIDER_MAPPINGS="\${PUBLIC_PHYSICAL_NETWORK}:${PUBLIC_BRIDGE}"
-else
- ODL_PROVIDER_MAPPINGS=
-fi
-
-# if we are using the old netvirt impl, as determined by the feature name
-# odl-ovsdb-openstack (note: new impl is odl-netvirt-openstack) then we
-# want ODL_L3 to be True. New impl wants it False
-if [[ ${CONTROLLERFEATURES} == *"odl-ovsdb-openstack"* ]]; then
- ODL_L3=True
-else
- ODL_L3=False
-fi
-
+ODL_PROVIDER_MAPPINGS="\${PUBLIC_PHYSICAL_NETWORK}:${PUBLIC_BRIDGE}"
+ODL_L3=False
RECLONE=False
ODL_PORT=8181
scp ${WORKSPACE}/get_devstack.sh ${!CONTROLIP}:/tmp
# devstack Master is yet to migrate fully to lib/neutron, there are some ugly hacks that is
# affecting the stacking.
- #Workaround For Queens, Make the physical Network as physnet1 in lib/neutron
- #Workaround Comment out creating initial Networks in lib/neutron
+ # Workaround For Queens, Make the physical Network as physnet1 in lib/neutron
+ # In Queens the neutron new libs are used and do not have the following options from Pike and earlier:
+ # Q_ML2_PLUGIN_FLAT_TYPE_OPTIONS could be used for the flat_networks
+ # and Q_ML2_PLUGIN_VLAN_TYPE_OPTIONS could be used for the ml2_type_vlan
${SSH} ${!CONTROLIP} "bash /tmp/get_devstack.sh > /tmp/get_devstack.sh.txt 2>&1"
if [ "${ODL_ML2_BRANCH}" == "stable/queens" ]; then
ssh ${!CONTROLIP} "sed -i 's/flat_networks public/flat_networks public,physnet1/' /opt/stack/devstack/lib/neutron"
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"
- if [ "${ODL_ML2_BRANCH}" == "stable/pike" ]; then
- echo "Updating requirements for ${ODL_ML2_BRANCH}"
- echo "Workaround for libvirt-python failing installation"
- echo "Modify upper-constraints to use libvirt-python 4.2.0"
- fix_libvirt_version_n_cpu_pike ${!COMPUTEIP}
- fi
create_compute_node_local_conf ${!COMPUTEIP} ${!CONTROLIP} ${ODLMGRIP[$SITE_INDEX]} "${ODL_OVS_MGRS[$SITE_INDEX]}"
scp ${WORKSPACE}/local.conf_compute_${!COMPUTEIP} ${!COMPUTEIP}:/opt/stack/devstack/local.conf
echo "Install rdo release to avoid incompatible Package versions"
default: '{stream}'
description: 'Distribution stream string, for suites to know which behavior to expect'
+- parameter:
+ name: integration-script-plan
+ parameters:
+ - string:
+ name: SCRIPTPLAN
+ default: '{script-plan}'
+ description: 'Script plan we will run before downloading and un-archiving am ODL distribution'
+
+- parameter:
+ name: integration-config-plan
+ parameters:
+ - string:
+ name: CONFIGPLAN
+ default: '{config-plan}'
+ description: 'Config plan we will run after un-archiving and starting an ODL distribution'
+
- parameter:
name: integration-stream-test-plan
parameters:
description: |
List of space-separated suites. Useful when running specific suites within a testplan.
Do not include ${{WORKSPACE}}/test/csit/suites/ in the values:
- (ex. openstack/connectivity/l2.robot openstack/tempest/tempest.robot
- integration/test/csit/suites/netvirt/ElanService/).
+ (ex. openstack/connectivity/l2.robot openstack/clustering/ha_l2.robot
+ openstack/tempest/tempest.robot netvirt/elan/elan.robot).
- parameter:
name: integration-test-options
exclude-no-code-change: false
- draft-published-event
- comment-added-contains-event:
- comment-contains-value: 'recheck$'
+ comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
override-votes: true
gerrit-build-unstable-verified-value: +1
gerrit-build-unstable-codereview-value: 0
#!/bin/bash
cd $WORKSPACE
mkdir -p ./archives
+ for i in `seq 1 ${NUM_ODL_SYSTEM}`; do
+ NODE_FOLDER="./archives/odl_${i}"
+ mkdir -p ${NODE_FOLDER}
+ mv odl${i}_karaf* ${NODE_FOLDER} || true
+ mv karaf_${i}_*_threads* ${NODE_FOLDER} || true
+ mv *_${i}.png ${NODE_FOLDER} || true
+ done
curl --output robot-plugin.zip "$BUILD_URL/robot/report/*zip*/robot-plugin.zip"
unzip -d ./archives robot-plugin.zip
mv *.log *.log.gz *.csv *.png ./archives || true # Don't fail if file missing
ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_before.log
pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_before.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "jstack ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_before.log || true
+ ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_before.log || true
done
echo "Generating mininet variables..."
ssh ${!CONTROLLERIP} "sudo ps aux" > ${WORKSPACE}/ps_after.log
pid=$(grep org.apache.karaf.main.Main ${WORKSPACE}/ps_after.log | grep -v grep | tr -s ' ' | cut -f2 -d' ')
echo "karaf main: org.apache.karaf.main.Main, pid:${pid}"
- ssh ${!CONTROLLERIP} "jstack ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
+ ssh ${!CONTROLLERIP} "${JAVA_HOME}/bin/jstack -l ${pid}" > ${WORKSPACE}/karaf_${i}_${pid}_threads_after.log || true
echo "killing karaf process..."
ssh "${!CONTROLLERIP}" bash -c 'ps axf | grep karaf | grep -v grep | awk '"'"'{print "kill -9 " $1}'"'"' | sh'
done
controller-features: '{install-features}'
- integration-test-options:
test-options: '{robot-options}'
+ - integration-script-plan:
+ script-plan: '{scriptplan}'
+ - integration-config-plan:
+ config-plan: '{configplan}'
- integration-stream-test-plan:
stream-test-plan: '{project}-{functionality}-{verify-stream}.txt'
- integration-test-plan:
controller-debug-map: '{debug-map}'
- integration-test-options:
test-options: '{robot-options}'
+ - integration-script-plan:
+ script-plan: '{scriptplan}'
+ - integration-config-plan:
+ config-plan: '{configplan}'
- integration-stream-test-plan:
- stream-test-plan: '{project}-{functionality}-{stream}.txt'
+ stream-test-plan: '{streamtestplan}'
- integration-test-plan:
- test-plan: '{project}-{functionality}.txt'
+ test-plan: '{testplan}'
- integration-test-suites:
test-suites: '{test-suites}'
- integration-patch-refspec:
controller-features: 'odl-jolokia,{install-features}'
- integration-test-options:
test-options: '{robot-options}'
+ - integration-script-plan:
+ script-plan: '{scriptplan}'
+ - integration-config-plan:
+ config-plan: '{configplan}'
- integration-stream-test-plan:
stream-test-plan: '{project}-{functionality}-{verify-stream}.txt'
- integration-test-plan:
controller-debug-map: '{debug-map}'
- integration-test-options:
test-options: '{robot-options}'
+ - integration-script-plan:
+ script-plan: '{scriptplan}'
+ - integration-config-plan:
+ config-plan: '{configplan}'
- integration-stream-test-plan:
- stream-test-plan: '{project}-{functionality}-{stream}.txt'
+ stream-test-plan: '{streamtestplan}'
- integration-test-plan:
- test-plan: '{project}-{functionality}.txt'
+ test-plan: '{testplan}'
- integration-test-suites:
test-suites: '{test-suites}'
- integration-patch-refspec:
controller-features: 'odl-jolokia,{install-features}'
- integration-test-options:
test-options: '{robot-options}'
+ - integration-script-plan:
+ script-plan: '{scriptplan}'
+ - integration-config-plan:
+ config-plan: '{configplan}'
- integration-stream-test-plan:
stream-test-plan: '{project}-{functionality}-{stream}.txt'
- integration-test-plan:
controller-debug-map: '{debug-map}'
- integration-test-options:
test-options: '{robot-options}'
+ - integration-script-plan:
+ script-plan: '{scriptplan}'
+ - integration-config-plan:
+ config-plan: '{configplan}'
- integration-test-plan:
test-plan: '{testplan}'
- integration-test-suites:
- lf-infra-publish
- job-template:
- name: '{prefix}{project}-csit-{topology}-openstack-{openstack}-{functionality}-{stream}'
+ # yamllint disable-line rule:line-length
+ name: '{prefix}{project}-csit-{topology}-{os-cmb-cnt}cmb-{os-ctl-cnt}ctl-{os-cmp-cnt}cmp-openstack-{openstack}-{functionality}-{stream}'
id: inttest-csit-openstack
disabled: false
controller-debug-map: '{debug-map}'
- integration-test-options:
test-options: '{robot-options}'
+ - integration-script-plan:
+ script-plan: '{scriptplan}'
+ - integration-config-plan:
+ config-plan: '{configplan}'
- integration-test-plan:
test-plan: '{testplan}'
- integration-test-suites:
mvn-version: 'mvn35'
csit-list: !include: csit-jobs-fluorine.lst
build-order: >
- infrautils mdsal controller aaa netconf daexim bgpcep ovsdb neutron
- lispflowmapping openflowplugin coe genius sfc netvirt
+ odlparent yangtools infrautils mdsal controller aaa netconf daexim bgpcep
+ ovsdb neutron lispflowmapping openflowplugin coe genius sfc netvirt
- oxygen:
branch: 'stable/oxygen'
mvn-version: 'mvn35'
csit-list: !include: csit-jobs-oxygen.lst
build-order: >
- infrautils mdsal controller aaa netconf daexim bgpcep ovsdb neutron
- lispflowmapping openflowplugin coe genius sfc netvirt
+ odlparent yangtools infrautils mdsal controller aaa netconf daexim bgpcep
+ ovsdb neutron lispflowmapping openflowplugin coe genius sfc netvirt
- project:
name: integration-distribution
csit-blacklist: >
alto bier capwap centinel didm dluxapps groupbasedpolicy iotdm jsonrpc lacp
l2switch messaging4transport nemo netide nic ocpplugin of-config p4plugin packetcable
- sdninterfaceapp sxp tsdr unimgr usc usecplugin vtn gate longevity sanity tdd wip
+ sdninterfaceapp sxp tsdr unimgr usc usecplugin vtn gate longevity sanity tdd tempest wip
csit-list: !include: csit-jobs-fluorine.lst
csit-weekly-list: '{csit-weekly-list-fluorine}'
csit-high-frequency-list: '{csit-high-frequency-list-fluorine}'
branch: 'stable/oxygen'
csit-blacklist: >
capwap centinel didm iotdm jsonrpc lacp messaging4transport netide nic
- ocpplugin sdninterfaceapp unimgr usecplugin gate longevity sanity tdd wip
+ ocpplugin sdninterfaceapp unimgr usecplugin gate longevity sanity tdd tempest wip
csit-list: !include: csit-jobs-oxygen.lst
csit-weekly-list: '{csit-weekly-list-oxygen}'
csit-high-frequency-list: '{csit-high-frequency-list-oxygen}'
publishers:
- lf-infra-publish
+
+- view:
+ name: integration
+ description: 'List of integration jobs'
+ regex: '^integration-.*'
+ <<: *releng_view_common
set -e
-# TODO: 1) clean up inline todo's below :)
-# TODO: 2) Use just a topic branch to create a distribution. see this email:
-# https://lists.opendaylight.org/pipermail/discuss/2015-December/006040.html
-# TODO: 3) Bubble up CSIT jobs that are triggered by the multipatch job to a jenkins
-# parameter. the default can be distribution-test which calls all CSIT jobs
-# but being able to easily override it to a smaller subset (or none) will be
-# helpful
-
# create a fresh empty place to build this custom distribution
BUILD_DIR=${WORKSPACE}/patch_tester
DISTRIBUTION_BRANCH_TO_BUILD=$DISTROBRANCH #renaming variable for clarity
export GIT_COMMITTER_NAME="Multipatch Job"
# Extract a list of patches per project from an comment trigger. An example is:
-# Patch Set 1:
-#
# multipatch-build:openflowplugin:45/69445/1,genius:46/69446/1,netvirt:47/69447/1
if [ -n "$GERRIT_EVENT_COMMENT_TEXT" ]; then
if [[ "$GERRIT_EVENT_COMMENT_TEXT" == *fast* ]]; then
# get all patches number for a topic for a given project
IFS=$'\n' read -rd '' -a GERRIT_PATCH_LIST <<< "$(ssh -p 29418 jenkins-$SILO@git.opendaylight.org gerrit query status:open topic:${TOPIC} project:${PROJECT} \
| grep 'number:' | awk '{{ print $2 }}')" || true
- echo "Add ${PROJECT}:${GERRIT_PATCH_LIST[*]}"
# add project if it is the first with patches or it is not the first
if [[ -z "${PATCHES_TO_BUILD}" && ! -z "${GERRIT_PATCH_LIST[*]}" ]]; then
PATCHES_TO_BUILD="${PROJECT}"
elif [[ ! -z "${PATCHES_TO_BUILD}" ]]; then
+ if [[ ! -z "${GERRIT_PATCH_LIST[*]}" ]]; then
+ echo "Add ${PROJECT}:${DISTRIBUTION_BRANCH_TO_BUILD}"
+ fi
PATCHES_TO_BUILD="${PATCHES_TO_BUILD},${PROJECT}"
fi
# sort project patches
if [[ ! -z "${GERRIT_PATCH_LIST[*]}" ]]; then
+ echo "Add ${PROJECT}:${GERRIT_PATCH_LIST[*]}"
REF_LIST=()
# create reference list with patch number-refspec
for PATCH in "${GERRIT_PATCH_LIST[@]}"; do
declare -a PROJECTS
# For each patch:
-# * Clone the project.
-# * Optionally, checkout a specific (typically unmerged) Gerrit patch. If none,
+# 1. Clone the project.
+# 2. Optionally, checkout a specific (typically unmerged) Gerrit patch. If none,
# default to Integration/Distribution branch via {branch} JJB param.
-# * Also optionally, cherry-pick series of patches on top of the checkout.
-# * Final option: perform a 'release' by removing "-SNAPSHOT" everywhere within the project.
+# 3. Also optionally, cherry-pick series of patches on top of the checkout.
#
# Each patch is found in the ${PATCHES_TO_BUILD} variable as a comma separated
-# list of project[=checkout][:cherry-pick]* values.
+# list of project[=checkout][:cherry-pick]* values. Examples:
#
# Checkout a (typically unmerged) Gerrit patch on top of odlparent's git clone:
-#
# PATCHES_TO_BUILD='odlparent=45/30045/2'
#
# Checkout patches for both odlparent and yangtools:
-#
# PATCHES_TO_BUILD='odlparent=45/30045/2,yangtools:53/26853/25'
#
# Checkout a patch for controller, cherry-pick another patch on top of it:
-#
# PATCHES_TO_BUILD='controller=61/29761/5:45/29645/6'
distribution_status="not_included"
-for proto_patch in "${PATCHES[@]}"
+for patch in "${PATCHES[@]}"
do
- echo "working on ${proto_patch}"
+ echo "working on ${patch}"
# For patch=controller=61/29761/5:45/29645/6, this gives controller
- PROJECT="$(echo ${proto_patch} | cut -d\: -f 1 | cut -d\= -f 1)"
+ PROJECT="$(echo ${patch} | cut -d\: -f 1 | cut -d\= -f 1)"
if [ "${PROJECT}" == "integration/distribution" ]; then
distribution_status="included"
fi
echo "cloning project ${PROJECT}"
git clone "https://git.opendaylight.org/gerrit/p/${PROJECT}"
cd ${PROJECT_SHORTNAME}
- if [ "$(echo -n ${proto_patch} | tail -c 1)" == 'r' ]; then
- pure_patch="$(echo -n $proto_patch | head -c -1)"
- else
- pure_patch="$proto_patch"
- fi
# For patch = controller=61/29761/5:45/29645/6, this gives 61/29761/5
- CHECKOUT="$(echo ${pure_patch} | cut -d\= -s -f 2 | cut -d\: -f 1)"
+ CHECKOUT="$(echo ${patch} | cut -d\= -s -f 2 | cut -d\: -f 1)"
+ # If project has a patch, checkout patch, otherwise use distribution branch
if [ "x${CHECKOUT}" != "x" ]; then
echo "checking out ${CHECKOUT}"
# TODO: Make this script accept "29645/6" as a shorthand for "45/29645/6".
git fetch "https://git.opendaylight.org/gerrit/${PROJECT}" "refs/changes/$CHECKOUT"
git checkout FETCH_HEAD
+
else
- echo "checking out ${DISTRIBUTION_BRANCH_TO_BUILD}"
- git checkout "${DISTRIBUTION_BRANCH_TO_BUILD}"
+ # If project with no patch = yangtools, download master branch
+ if [ "${PROJECT}" == "yangtools" ]; then
+ echo "checking out master"
+ git checkout master
+ else
+ echo "checking out ${DISTRIBUTION_BRANCH_TO_BUILD}"
+ git checkout "${DISTRIBUTION_BRANCH_TO_BUILD}"
+ fi
fi
# For patch=controller=61/29761/5:45/29645/6, this gives 45/29645/6
- PICK_SEGMENT="$(echo "${pure_patch}" | cut -d\: -s -f 2-)"
+ PICK_SEGMENT="$(echo "${patch}" | cut -d\: -s -f 2-)"
IFS=':' read -ra PICKS <<< "${PICK_SEGMENT}"
for pick in "${PICKS[@]}"
do
git fetch "https://git.opendaylight.org/gerrit/${PROJECT}" "refs/changes/${pick}"
git cherry-pick --ff --keep-redundant-commits FETCH_HEAD
done
- # Check whether the patch ends with 'r', and the patch isn't the project
- # (to avoid releasing controller...)
- if [ "${proto_patch: -1}" = "r" ] && [ "${proto_patch}" != "${PROJECT}" ]; then
- # Here 'r' means release. Useful for testing Nitrogen Odlparent changes.
- find . -name "*.xml" -print0 | xargs -0 sed -i 's/-SNAPSHOT//g'
- fi
cd "${BUILD_DIR}"
done
+# Finally add distribution if there is no int/dist patch
if [ "${distribution_status}" == "not_included" ]; then
echo "adding integration/distribution"
PROJECTS+=(distribution)
cd "${BUILD_DIR}"
fi
+# If there is a patch for odlparent or yangtools (MRI projects), adjust version to mdsal project:
+# 1. Extract project version in patch
+# 2. Extract project MSI version from mdsal project
+# 3. Replace version in patch by MSI version
+# Otherwise release the MRI project
+if [[ -d "odlparent" ]]; then
+ if [[ -d "mdsal" ]]; then
+ # Extract patch and MSI used version
+ patch_version="$(xpath ./odlparent/odlparent-lite/pom.xml '/project/version/text()' 2> /dev/null)"
+ msi_version="$(xpath ./mdsal/pom.xml '/project/parent/version/text()' 2> /dev/null)"
+ # Replace version
+ find ./odlparent -name "*.xml" -print0 | xargs -0 sed -i "s/${patch_version}/${msi_version}/g"
+ else
+ # Release project
+ find ./odlparent -name "*.xml" -print0 | xargs -0 sed -i 's/-SNAPSHOT//g'
+ fi
+fi
+if [[ -d "yangtools" ]]; then
+ if [[ -d "mdsal" ]]; then
+ # Extract patch and MSI used version
+ patch_version="$(xpath ./yangtools/pom.xml '/project/version/text()' 2> /dev/null)"
+ msi_version="$(xpath ./mdsal/binding/yang-binding/pom.xml '/project/dependencyManagement/dependencies/dependency/version/text()' 2> /dev/null)"
+ # Replace version
+ find ./yangtools -name "*.xml" -print0 | xargs -0 sed -i "s/${patch_version}/${msi_version}/g"
+ else
+ # Release project
+ find ./yangtools -name "*.xml" -print0 | xargs -0 sed -i 's/-SNAPSHOT//g'
+ fi
+fi
+
# Second phase: build everything
for PROJECT_SHORTNAME in "${PROJECTS[@]}"; do
build-node: centos7-builder-2c-8g
mvn-settings: 'iotdm-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: iotdm
+ description: 'List of iotdm jobs'
+ regex: '^iotdm-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'jsonrpc-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: jsonrpc
+ description: 'List of jsonrpc jobs'
+ regex: '^jsonrpc-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'l2switch-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m -Dmaven.compile.fork=true'
+
+- view:
+ name: l2switch
+ description: 'List of l2switch jobs'
+ regex: '^l2switch-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'lacp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: lacp
+ description: 'List of lacp jobs'
+ regex: '^lacp-.*'
+ <<: *releng_view_common
git-url: https://gerrit.linuxfoundation.org/infra/$GERRIT_PROJECT
gerrit-server-name: LinuxFoundation
+
+- view:
+ name: lf-infra
+ description: 'List of lf-infra jobs'
+ regex: '^lf-infra-.*'
+ <<: *releng_view_common
---
- project:
- name: lf-infra-lfn-process
+ name: lfn-process
jobs:
- '{project-name}-rtd-jobs'
- gerrit-tox-verify
- project-name: lf-infra-lfn-process
+ project-name: lfn-process
project: lfn/process
project-pattern: lfn/process
build-node: centos7-builder-2c-1g
git-url: https://gerrit.linuxfoundation.org/infra/$GERRIT_PROJECT
gerrit-server-name: LinuxFoundation
+- view:
+ name: lfn
+ description: 'List of LF Networking jobs'
+ regex: '^lfn-.*'
+ <<: *releng_view_common
mvn-settings: 'lispflowmapping-settings'
mvn-goals: 'clean deploy findbugs:findbugs javadoc:aggregate -DrepoBuild'
mvn-opts: '-Xmx2048m -XX:MaxPermSize=512m -Dmaven.compile.fork=true'
+
+- view:
+ name: lispflowmapping
+ description: 'List of lispflowmapping jobs'
+ regex: '^lispflowmapping-.*'
+ <<: *releng_view_common
mvn-settings: 'mdsal-settings'
mvn-goals: '-Dmaven.compile.fork=true clean deploy -Dintegrationtests'
mvn-opts: '-Xmx2048m -XX:MaxPermSize=1024m'
+
+- view:
+ name: mdsal
+ description: 'List of mdsal jobs'
+ regex: '^mdsal-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'messaging4transport-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: messaging4transport
+ description: 'List of messaging4transport jobs'
+ regex: '^messaging4transport-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'natapp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: natapp
+ description: 'List of natapp jobs'
+ regex: '^natapp-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'nemo-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: nemo
+ description: 'List of nemo jobs'
+ regex: '^nemo-.*'
+ <<: *releng_view_common
mvn-settings: 'netconf-settings'
mvn-goals: 'clean deploy -Pintegrationtests'
mvn-opts: '-Xmx2048m -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
+
+- view:
+ name: netconf
+ description: 'List of netconf jobs'
+ regex: '^netconf-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'netide-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: netide
+ description: 'List of netide jobs'
+ regex: '^netide-.*'
+ <<: *releng_view_common
enable-openstack-services: 'placement-api,l2gw-plugin'
enable-openstack-compute-services: 'placement-client'
security-group-mode: 'stateful'
- odl_system_flavor: odl-standard-8
- openstack_system_flavor: odl-standard-8
- openstack_system2_flavor: odl-standard-4
+ odl_system_flavor: odl-highcpu-8
+ openstack_system_flavor: odl-highcpu-8
+ openstack_system2_flavor: odl-highcpu-4
tools_system_count: 2
tools_system_image: ZZCI - Ubuntu 16.04 - mininet-ovs-26 - 20171208-1847
openstack_system2_count: 2
odl_system_count: 1
enable-haproxy: 'no'
- install-features: 'odl-netvirt-openstack'
+ install-features: 'odl-netvirt-openstack,decanter-collector-jmx,decanter-appender-elasticsearch'
- 3node:
openstack_system2_count: 2
odl_system_count: 3
enable-haproxy: 'yes'
- install-features: 'odl-jolokia,odl-netvirt-openstack'
+ install-features: 'odl-jolokia,odl-netvirt-openstack,decanter-collector-jmx,decanter-appender-elasticsearch'
functionality:
- upstream-stateful
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
- project:
name: netvirt-csit-hwvtep-openstack-integration-oxygen
enable-openstack-services: 'placement-api,l2gw-plugin'
enable-openstack-compute-services: 'placement-client'
security-group-mode: 'stateful'
- odl_system_flavor: odl-standard-8
- openstack_system_flavor: odl-standard-8
- openstack_system2_flavor: odl-standard-4
+ odl_system_flavor: odl-highcpu-8
+ openstack_system_flavor: odl-highcpu-8
+ openstack_system2_flavor: odl-highcpu-4
tools_system_count: 2
tools_system_image: ZZCI - Ubuntu 16.04 - mininet-ovs-26 - 20171208-1847
openstack_system2_count: 2
odl_system_count: 1
enable-haproxy: 'no'
- install-features: 'odl-netvirt-openstack'
+ install-features: 'odl-netvirt-openstack,decanter-collector-jmx,decanter-appender-elasticsearch'
- 3node:
openstack_system2_count: 2
odl_system_count: 3
enable-haproxy: 'yes'
- install-features: 'odl-jolokia,odl-netvirt-openstack'
+ install-features: 'odl-jolokia,odl-netvirt-openstack,decanter-collector-jmx,decanter-appender-elasticsearch'
functionality:
- upstream-stateful
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
enable-openstack-services: 'placement-api,l2gw-plugin'
enable-openstack-compute-services: 'placement-client'
security-group-mode: 'stateful'
- odl_system_flavor: odl-standard-8
- openstack_system_flavor: odl-standard-8
- openstack_system2_flavor: odl-standard-4
+ odl_system_flavor: odl-highcpu-8
+ openstack_system_flavor: odl-highcpu-8
+ openstack_system2_flavor: odl-highcpu-4
+ os-cmb-cnt: 0
+ os-ctl-cnt: 1
+ os-cmp-cnt: 2
topology:
- 1node:
openstack_system2_count: 2
odl_system_count: 1
enable-haproxy: 'no'
- install-features: 'odl-netvirt-openstack'
+ install-features: 'odl-netvirt-openstack,decanter-collector-jmx,decanter-appender-elasticsearch'
functionality:
- upgrade
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
enable-openstack-services: 'placement-api,tempest'
enable-openstack-compute-services: 'placement-client'
security-group-mode: 'stateful'
- odl_system_flavor: odl-standard-8
- openstack_system_flavor: odl-standard-8
- openstack_system2_flavor: odl-standard-4
+ odl_system_flavor: odl-highcpu-8
+ openstack_system_flavor: odl-highcpu-8
+ openstack_system2_flavor: odl-highcpu-4
+ os-cmb-cnt: 0
+ os-ctl-cnt: 1
+ os-cmp-cnt: 2
topology:
- 1node:
openstack_system2_count: 2
odl_system_count: 1
enable-haproxy: 'no'
- install-features: 'odl-netvirt-openstack'
+ install-features: 'odl-netvirt-openstack,decanter-collector-jmx,decanter-appender-elasticsearch'
robot-options: '-v FAIL_ON_EXCEPTIONS:True'
- 3node:
openstack_system2_count: 3
odl_system_count: 3
enable-haproxy: 'yes'
- install-features: 'odl-jolokia,odl-netvirt-openstack'
+ install-features: 'odl-jolokia,odl-netvirt-openstack,decanter-collector-jmx,decanter-appender-elasticsearch'
functionality:
- upstream-stateful
- upstream-stateful-snat-conntrack:
odl-snat-mode: 'conntrack'
- gate-stateful
+ - gate-stateful-itm-direct-tunnels:
+ enable-itm-direct-tunnels: 'true'
- gate-stateful-snat-conntrack:
odl-snat-mode: 'conntrack'
- gate-minimal-cluster:
- tempest-stateful:
test-suites: 'openstack/tempest/tempest.robot'
testplan: '{project}-{topology}-openstack-tempest.txt'
+ schedule: '{schedule-daily}'
- tempest-stateful-snat-conntrack:
test-suites: 'openstack/tempest/tempest.robot'
testplan: '{project}-{topology}-openstack-tempest.txt'
odl-snat-mode: 'conntrack'
+ schedule: '{schedule-daily}'
- gate-tempest-stateful:
test-suites: 'openstack/tempest/tempest.robot'
testplan: '{project}-{topology}-openstack-tempest.txt'
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
- project:
name: netvirt-csit-openstack-integration-oxygen
enable-openstack-services: 'placement-api,tempest'
enable-openstack-compute-services: 'placement-client'
security-group-mode: 'stateful'
- odl_system_flavor: odl-standard-8
- openstack_system_flavor: odl-standard-8
- openstack_system2_flavor: odl-standard-4
+ odl_system_flavor: odl-highcpu-8
+ openstack_system_flavor: odl-highcpu-8
+ openstack_system2_flavor: odl-highcpu-4
+ os-cmb-cnt: 0
+ os-ctl-cnt: 1
+ os-cmp-cnt: 2
topology:
- 1node:
openstack_system2_count: 2
odl_system_count: 1
enable-haproxy: 'no'
- install-features: 'odl-netvirt-openstack'
+ install-features: 'odl-netvirt-openstack,decanter-collector-jmx,decanter-appender-elasticsearch'
robot-options: '-v FAIL_ON_EXCEPTIONS:True'
- 3node:
openstack_system2_count: 3
odl_system_count: 3
enable-haproxy: 'yes'
- install-features: 'odl-jolokia,odl-netvirt-openstack'
+ install-features: 'odl-jolokia,odl-netvirt-openstack,decanter-collector-jmx,decanter-appender-elasticsearch'
functionality:
- upstream-stateful
- gate-stateful
- gate-stateful-snat-conntrack:
odl-snat-mode: 'conntrack'
+ - gate-stateful-itm-direct-tunnels:
+ enable-itm-direct-tunnels: 'true'
- gate-minimal-cluster:
testplan: '{project}-{topology}-minimal-openstack.txt'
# Job for Test Driven Development with it's own testplan to run new/non-passing suites. scheduled manually.
- gate-tdd-wip:
testplan: '{project}-{topology}-tdd-wip-openstack.txt'
schedule: ''
+ - tempest-stateful:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ schedule: '{schedule-daily}'
+ - tempest-stateful-snat-conntrack:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ odl-snat-mode: 'conntrack'
+ schedule: '{schedule-daily}'
+ - gate-tempest-stateful:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ - gate-tempest-stateful-snat-conntrack:
+ test-suites: 'openstack/tempest/tempest.robot'
+ testplan: '{project}-{topology}-openstack-tempest.txt'
+ odl-snat-mode: 'conntrack'
openstack:
- pike:
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
- project:
name: netvirt-csit-sfc-openstack-integration
project: 'netvirt'
security-group-mode: 'stateful'
- odl_system_flavor: odl-standard-4
- openstack_system2_flavor: odl-standard-2
+ odl_system_flavor: odl-highcpu-4
+ openstack_system2_flavor: odl-highcpu-2
+ os-cmb-cnt: 0
+ os-ctl-cnt: 1
+ os-cmp-cnt: 2
topology:
- 1node:
openstack-branch: 'stable/queens'
odl-ml2-branch: 'stable/queens'
odl-ml2-port-binding: 'pseudo-agentdb-binding'
- openstack_system_image: '{openstack_system_image_pike}'
- openstack_system2_image: '{openstack_system_image_pike}'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
feature:
- current:
csit-list: >
- netvirt-csit-1node-openstack-{os-branch}-gate-stateful-{stream}
+ netvirt-csit-1node-{os-std-topo}-openstack-{os-branch}-gate-stateful-{stream}
- cluster-current:
csit-list: >
- netvirt-csit-3node-openstack-{os-branch}-gate-stateful-{stream}
+ netvirt-csit-3node-{os-std-topo}-openstack-{os-branch}-gate-stateful-{stream}
- cluster-minimal-current:
csit-list: >
- netvirt-csit-3node-openstack-{os-branch}-gate-minimal-cluster-{stream}
+ netvirt-csit-3node-{os-std-topo}-openstack-{os-branch}-gate-minimal-cluster-{stream}
- snat-conntrack:
csit-list: >
- netvirt-csit-1node-openstack-{os-branch}-gate-stateful-snat-conntrack-{stream}
+ netvirt-csit-1node-{os-std-topo}-openstack-{os-branch}-gate-stateful-snat-conntrack-{stream}
- cluster-snat-conntrack:
csit-list: >
- netvirt-csit-3node-openstack-{os-branch}-gate-stateful-snat-conntrack-{stream}
+ netvirt-csit-3node-{os-std-topo}-openstack-{os-branch}-gate-stateful-snat-conntrack-{stream}
- l2gw:
csit-list: >
netvirt-csit-hwvtep-1node-openstack-{os-branch}-gate-stateful-{stream}
- tdd-wip:
csit-list: >
- netvirt-csit-1node-openstack-{os-branch}-gate-tdd-wip-{stream}
+ netvirt-csit-1node-{os-std-topo}-openstack-{os-branch}-gate-tdd-wip-{stream}
- coe:
csit-list: >
coe-csit-1node-container-networking-all-{stream}
- itm-direct-tunnels:
csit-list: >
- netvirt-csit-1node-openstack-{os-branch}-upstream-stateful-itm-direct-tunnels-{stream}
+ netvirt-csit-1node-{os-std-topo}-openstack-{os-branch}-gate-stateful-itm-direct-tunnels-{stream}
- upgrade:
csit-list: >
- netvirt-csit-1node-openstack-{os-branch}-upgrade-{stream}
+ netvirt-csit-1node-{os-std-topo}-openstack-{os-branch}-upgrade-{stream}
- tempest:
csit-list: >
- netvirt-csit-1node-openstack-{os-branch}-gate-tempest-stateful-{stream}
+ netvirt-csit-1node-{os-std-topo}-openstack-{os-branch}-gate-tempest-stateful-{stream}
- cluster-tempest:
csit-list: >
- netvirt-csit-3node-openstack-{os-branch}-gate-tempest-stateful-{stream}
+ netvirt-csit-3node-{os-std-topo}-openstack-{os-branch}-gate-tempest-stateful-{stream}
- tempest-snat-conntrack:
csit-list: >
- netvirt-csit-1node-openstack-{os-branch}-gate-tempest-stateful-snat-conntrack-{stream}
+ netvirt-csit-1node-{os-std-topo}-openstack-{os-branch}-gate-tempest-stateful-snat-conntrack-{stream}
- cluster-tempest-snat-conntrack:
csit-list: >
- netvirt-csit-3node-openstack-{os-branch}-gate-tempest-stateful-snat-conntrack-{stream}
+ netvirt-csit-3node-{os-std-topo}-openstack-{os-branch}-gate-tempest-stateful-snat-conntrack-{stream}
branch: 'master'
mvn-settings: 'netvirt-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: netvirt
+ description: 'List of netvirt jobs'
+ regex: '^netvirt-.*'
+ <<: *releng_view_common
+
+- view:
+ name: netvirt-csit
+ description: 'List of netvirt-csit jobs'
+ regex: 'netvirt-csit(?!(.*gate)|(.*hwvtep)).*'
+ <<: *integration_view_csit
branch: 'master'
mvn-settings: 'neutron-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: neutron
+ description: 'List of neutron jobs'
+ regex: '^neutron-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'next-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: next
+ description: 'List of next jobs'
+ regex: '^next-.*'
+ <<: *releng_view_common
build-node: centos7-builder-2c-8g
mvn-settings: 'nic-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: nic
+ description: 'List of nic jobs'
+ regex: '^nic-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'ocpplugin-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: ocpplugin
+ description: 'List of ocpplugin jobs'
+ regex: '^ocpplugin-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'odlparent-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: odlparent
+ description: 'List of odlparent jobs'
+ regex: '^odlparent-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'of-config-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: of-config
+ description: 'List of of-config jobs'
+ regex: '^of-config-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'ofextensions-circuitsw-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: circuitsw
+ description: 'List of circuitsw jobs'
+ regex: '^circuitsw-.*'
+ <<: *releng_view_common
echo $CI_MESSAGE
echo "----------------------------------"
echo " Promoted ODL Autorelease artifact as release candidate!"
+
+- view:
+ name: openci
+ description: 'List of openci jobs'
+ regex: '^openci-.*'
+ <<: *releng_view_common
pip install --upgrade cmd2==0.8.5 python-openstackclient python-heatclient
pip freeze
-cd /builder/openstack-hot || exit 1
+# TODO: Remove the if-statement once we have fully migrated to /opt/ciman
+if [ -d "/opt/ciman" ]; then
+ cd /opt/ciman || exit 1
+else
+ cd /builder/openstack-hot || exit 1
+fi
JOB_SUM=$(echo "$JOB_NAME" | sum | awk '{{ print $1 }}')
VM_NAME="$JOB_SUM-$BUILD_NUMBER"
mvn-settings: 'openflowplugin-settings'
mvn-goals: 'clean deploy javadoc:aggregate'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: openflowplugin
+ description: 'List of openflowplugin jobs'
+ regex: '^openflowplugin-.*'
+ <<: *releng_view_common
+
+- view:
+ name: openflowplugin-oxygen
+ description: 'List of openflowplugin oxygen jobs'
+ regex: 'openflowplugin-.*-oxygen'
+ <<: *releng_view_common
email-recipients: '{email-recipients}'
email-prefix: '[opflex]'
- lf-infra-publish
+
+- view:
+ name: opflex
+ description: 'List of opflex jobs'
+ regex: '^opflex-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'ovil-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: ovil
+ description: 'List of ovil jobs'
+ regex: '^ovil-.*'
+ <<: *releng_view_common
# Used by the release job
staging-profile-id: a68b188166958
+
+- view:
+ name: ovsdb
+ description: 'List of ovsdb jobs'
+ regex: '^ovsdb-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'p4plugin-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: p4plugin
+ description: 'List of p4plugin jobs'
+ regex: '^p4plugin-.*'
+ <<: *releng_view_common
direct \
--download_url "$DOWNLOAD_URL"
-# Publish RPMs to Nexus if in production Jenkins, else host on sandbox Jenkins
-if [ "$SILO" == "sandbox" ]; then
- echo "Not uploading RPMs to Nexus because running in sandbox"
-elif [ "$SILO" == "releng" ]; then
+# Always allow push to scratch repos, only push to CD repos in RelEng Jenkins
+if [ "$DEPLOY_TO_REPO" == "opendaylight-epel-7-x86_64-devel" ]; then
# Move RPMs (SRPM and noarch) to dir of files that will be uploaded to Nexus
UPLOAD_FILES_PATH="$WORKSPACE/upload_files"
mkdir -p "$UPLOAD_FILES_PATH"
cp "$HOME/rpmbuild/RPMS/noarch/"*.rpm "$_"
cp "$HOME/rpmbuild/SRPMS/"*.rpm "$_"
else
- echo "Unknown Jenkins silo: $SILO"
- exit 1
+ # Publish RPMs to CD repos if in production Jenkins, not in sandbox Jenkins
+ if [ "$SILO" == "sandbox" ]; then
+ echo "Not uploading RPMs to Nexus because running in sandbox"
+ elif [ "$SILO" == "releng" ]; then
+ # Move RPMs (SRPM+noarch) to dir of files that will be uploaded to Nexus
+ UPLOAD_FILES_PATH="$WORKSPACE/upload_files"
+ mkdir -p "$UPLOAD_FILES_PATH"
+ cp "$HOME/rpmbuild/RPMS/noarch/"*.rpm "$_"
+ cp "$HOME/rpmbuild/SRPMS/"*.rpm "$_"
+ else
+ echo "Unknown Jenkins silo: $SILO"
+ exit 1
+ fi
fi
name: CHANGELOG_EMAIL
default: 'jenkins-donotreply@opendaylight.org'
description: 'Email of person who defined RPM'
+ - string:
+ name: DEPLOY_TO_REPO
+ default: 'opendaylight-{stream}-epel-7-x86_64-devel'
+ description: 'Repository to deploy resulting package to'
scm:
- integration-gerrit-scm:
global-settings-file: 'global-settings'
settings-file: 'packaging-settings'
mvn-version: '{mvn-version}'
- repo-id: 'opendaylight-{stream}-epel-7-x86_64-devel'
+ repo-id: '$DEPLOY_TO_REPO'
group-id: '{group-id}'
upload-files-dir: '{upload-files-dir}'
maven-repo-url: '{maven-repo-url}'
# NB: This will need to be updated as old builds expire
- inject:
# yamllint disable-line rule:line-length
- properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180620.055735-63.zip'
+ properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180626.171605-65.zip'
- shell: !include-raw-escape: build-rpm.sh
- install-test-uninstall-rpm
- install-test-uninstall-rpm
triggers:
- - gerrit:
- server-name: '{gerrit-server-name}'
- trigger-on:
- - comment-added-contains-event:
- comment-contains-value: 'rpm-verify'
- projects:
- - project-compare-type: ANT
- project-pattern: '{project}'
- branches:
- - branch-compare-type: ANT
- branch-pattern: '**/{branch}'
- file-paths:
- - compare-type: ANT
- pattern: 'packages/**'
+ - gerrit-trigger-patch-submitted:
+ gerrit-server-name: '{gerrit-server-name}'
+ project: '{project}'
+ branch: '{branch}'
+ files: 'packages/**'
publishers:
- lf-infra-publish
# NB: This will need to be updated as old builds expire
- inject:
# yamllint disable-line rule:line-length
- properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.8.3-SNAPSHOT/karaf-0.8.3-20180620.173319-5.zip'
+ properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.8.3-SNAPSHOT/karaf-0.8.3-20180627.184938-10.zip'
- shell: !include-raw-escape: build-rpm.sh
- install-test-uninstall-rpm
# NB: This will need to be updated as old builds expire
- inject:
# yamllint disable-line rule:line-length
- properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180620.055735-63.zip'
+ properties-content: 'DOWNLOAD_URL=https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/integration/integration/distribution/karaf/0.9.0-SNAPSHOT/karaf-0.9.0-20180626.171605-65.zip'
- shell: !include-raw-escape: build-rpm.sh
- install-test-uninstall-rpm
publishers:
- lf-infra-publish
+
+- view:
+ name: packaging
+ description: 'List of packaging, ansible and puppet jobs'
+ regex: '^packaging.*|ansible.*|puppet.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'packetcable-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: packetcable
+ description: 'List of packetcable jobs'
+ regex: '^packetcable-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'persistence-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: persistence
+ description: 'List of persistence jobs'
+ regex: '^persistence-.*'
+ <<: *releng_view_common
exclude-no-code-change: false
- draft-published-event
- comment-added-contains-event:
- comment-contains-value: 'recheck$'
+ comment-contains-value: '^Patch Set[ ]+[0-9]+:([ ]+|[\n]+)(recheck|reverify)$'
projects:
- project-compare-type: ANT
project-pattern: '{project}'
templates: devstack
platforms: centos-7
-- project:
- name: packer-devstack-pre-pip-ocata-jobs
- jobs:
- - gerrit-packer-merge
-
- project: releng/builder
- project-name: builder
- branch: master
- archive-artifacts: '**/*.log'
-
- build-node: centos7-builder-2c-1g
- build-timeout: 75
- cron: '00 H 1 * *'
-
- templates: devstack-pre-pip-ocata
- platforms: centos-7
-
- project:
name: packer-devstack-pre-pip-pike-jobs
jobs:
- view:
name: Distribution-Jobs
- description: 'List of Distribution jobs (test, check, merge, deploy, offline, verify)'
+ description: >
+ List of Distribution jobs (test, check, merge, deploy, offline, verify)
regex: '^.*-distribution-(?!(test|check|merge|deploy|offline|verify)).*'
<<: *releng_view_common
regex: '.*-gate-.*'
<<: *releng_view_common
-# Note: column plugins implementations requires JJB 2.1 to be released.
- view:
name: Integration
description: 'List of Integration jobs'
regex: '.*-integration-.*'
- view-type: list
- filter-executors: false
- filter-queue: false
- columns:
- - status
- - weather
- - job
- - last-success
- - last-failure
- - last-duration
- - build-button
- - jacoco
- - find-bugs
- - robot-list
- recurse: false
+ <<: *releng_view_common
- view:
name: Merge-Jobs
regex: '^(?!.*-csit).*-verify-.*'
<<: *releng_view_common
-- view:
- name: aaa
- description: 'List of aaa jobs'
- regex: '^aaa-.*'
- <<: *releng_view_common
-
-- view:
- name: alto
- description: 'List of alto jobs'
- regex: '^alto-.*'
- <<: *releng_view_common
-
-- view:
- name: archetypes
- regex: '^archetypes-.*'
- description: 'List of archetypes jobs'
- <<: *releng_view_common
-
-- view:
- name: atrium
- description: 'List of atrium jobs'
- regex: '^atrium-.*'
- <<: *releng_view_common
-
-- view:
- name: autorelease
- description: 'List of autorelease jobs'
- regex: '^autorelease-.*'
- <<: *releng_view_common
-
-- view:
- name: bgpcep
- description: 'List of bgpcep jobs'
- regex: '^bgpcep-.*'
- <<: *releng_view_common
-
-- view:
- name: bier
- description: 'List of bier jobs'
- regex: '^bier-.*'
- <<: *releng_view_common
-
- view:
name: builder
description: 'List of builder jobs'
- regex: '^(builder|lf-infra)-.*'
- <<: *releng_view_common
-
-- view:
- name: capwap
- description: 'List of capwap jobs'
- regex: '^capwap-.*'
- <<: *releng_view_common
-
-- view:
- name: cardinal
- description: 'List of cardinal jobs'
- regex: '^cardinal-.*'
- <<: *releng_view_common
-
-- view:
- name: centinel
- description: 'List of centinel jobs'
- regex: '^centinel-.*'
- <<: *releng_view_common
-
-- view:
- name: circuitsw
- description: 'List of circuitsw jobs'
- regex: '^circuitsw-.*'
- <<: *releng_view_common
-
-- view:
- name: coe
- description: 'List of coe jobs'
- regex: '^coe-.*'
- <<: *releng_view_common
-
-- view:
- name: controller
- description: 'List of controller jobs'
- regex: '^controller-.*'
- <<: *releng_view_common
-
-- view:
- name: coretutorials
- description: 'List of coretutorials jobs'
- regex: '^coretutorials-.*'
- <<: *releng_view_common
-
-- view:
- name: daexim
- description: 'List of daexim jobs'
- regex: '^daexim-.*'
- <<: *releng_view_common
-
-- view:
- name: didm
- description: 'List of didm jobs'
- regex: '^didm-.*'
- <<: *releng_view_common
-
-- view:
- name: distribution
- description: 'List of distribution jobs'
- regex: '^(integration-)?distribution-.*'
- <<: *releng_view_common
-
-- view:
- name: dlux
- description: 'List of dlux jobs'
- regex: '^dlux-.*'
- <<: *releng_view_common
-
-- view:
- name: dluxapps
- description: 'List of dluxapps jobs'
- regex: '^dluxapps-.*'
- <<: *releng_view_common
-
-- view:
- name: docs
- description: 'List of docs jobs'
- regex: '^docs-.*'
- <<: *releng_view_common
-
-- view:
- name: eman
- description: 'List of eman jobs'
- regex: '^eman-.*'
- <<: *releng_view_common
-
-- view:
- name: epc
- description: 'List of epc jobs'
- regex: '^epc-.*'
- <<: *releng_view_common
-
-- view:
- name: faas
- description: 'List of faas jobs'
- regex: '^faas-.*'
- <<: *releng_view_common
-
-- view:
- name: federation
- description: 'List of federation jobs'
- regex: '^federation-.*'
- <<: *releng_view_common
-
-- view:
- name: fpc
- description: 'List of fpc jobs'
- regex: '^fpc-.*'
- <<: *releng_view_common
-
-- view:
- name: genius
- description: 'List of genius jobs'
- regex: '^genius-.*'
- <<: *releng_view_common
-
-- view:
- name: gnt
- description: 'List of gnt jobs'
- regex: '^gnt-.*'
- <<: *releng_view_common
-
-- view:
- name: groupbasedpolicy
- description: 'List of groupbasedpolicy jobs'
- regex: '^groupbasedpolicy-.*'
- <<: *releng_view_common
-
-- view:
- name: infrautils
- description: 'List of infrautils jobs'
- regex: '^infrautils-.*'
- <<: *releng_view_common
-
-- view:
- name: integration
- description: 'List of integration jobs'
- regex: '^integration-.*'
- <<: *releng_view_common
-
-- view:
- name: iotdm
- description: 'List of iotdm jobs'
- regex: '^iotdm-.*'
- <<: *releng_view_common
-
-- view:
- name: jsonrpc
- description: 'List of jsonrpc jobs'
- regex: '^jsonrpc-.*'
- <<: *releng_view_common
-
-- view:
- name: kafkaproducer
- description: 'List of kafkaproducer jobs'
- regex: '^kafkaproducer-.*'
- <<: *releng_view_common
-
-- view:
- name: l2switch
- description: 'List of l2switch jobs'
- regex: '^l2switch-.*'
- <<: *releng_view_common
-
-- view:
- name: lacp
- description: 'List of lacp jobs'
- regex: '^lacp-.*'
- <<: *releng_view_common
-
-- view:
- name: lispflowmapping
- description: 'List of lispflowmapping jobs'
- regex: '^lispflowmapping-.*'
- <<: *releng_view_common
-
-- view:
- name: mdsal
- description: 'List of mdsal jobs'
- regex: '^mdsal-.*'
- <<: *releng_view_common
-
-- view:
- name: messaging4transport
- description: 'List of messaging4transport jobs'
- regex: '^messaging4transport-.*'
- <<: *releng_view_common
-
-- view:
- name: natapp
- description: 'List of natapp jobs'
- regex: '^natapp-.*'
- <<: *releng_view_common
-
-- view:
- name: nemo
- description: 'List of nemo jobs'
- regex: '^nemo-.*'
- <<: *releng_view_common
-
-- view:
- name: netconf
- description: 'List of netconf jobs'
- regex: '^netconf-.*'
- <<: *releng_view_common
-
-- view:
- name: netide
- description: 'List of netide jobs'
- regex: '^netide-.*'
- <<: *releng_view_common
-
-- view:
- name: netvirt
- description: 'List of netvirt jobs'
- regex: '^netvirt-.*'
- <<: *releng_view_common
-
-- view:
- name: netvirt-csit
- description: 'List of netvirt-csit jobs'
- regex: 'netvirt-csit(?!(.*gate)|(.*hwvtep)).*'
- <<: *integration_view_csit
-
-- view:
- name: neutron
- description: 'List of neutron jobs'
- regex: '^neutron-.*'
- <<: *releng_view_common
-
-- view:
- name: next
- description: 'List of next jobs'
- regex: '^next-.*'
- <<: *releng_view_common
-
-- view:
- name: nic
- description: 'List of nic jobs'
- regex: '^nic-.*'
- <<: *releng_view_common
-
-- view:
- name: ocpplugin
- description: 'List of ocpplugin jobs'
- regex: '^ocpplugin-.*'
- <<: *releng_view_common
-
-- view:
- name: odlparent
- description: 'List of odlparent jobs'
- regex: '^odlparent-.*'
- <<: *releng_view_common
-
-- view:
- name: of-config
- description: 'List of of-config jobs'
- regex: '^of-config-.*'
- <<: *releng_view_common
-
-- view:
- name: openci
- description: 'List of openci jobs'
- regex: '^openci-.*'
- <<: *releng_view_common
-
-- view:
- name: openflowplugin
- description: 'List of openflowplugin jobs'
- regex: '^openflowplugin-.*'
- <<: *releng_view_common
-
-- view:
- name: openflowplugin-oxygen
- description: 'List of openflowplugin oxygen jobs'
- regex: 'openflowplugin-.*-oxygen'
- <<: *releng_view_common
-
-- view:
- name: opflex
- description: 'List of opflex jobs'
- regex: '^opflex-.*'
- <<: *releng_view_common
-
-- view:
- name: ovil
- description: 'List of ovil jobs'
- regex: '^ovil-.*'
- <<: *releng_view_common
-
-- view:
- name: ovsdb
- description: 'List of ovsdb jobs'
- regex: '^ovsdb-.*'
- <<: *releng_view_common
-
-- view:
- name: p4plugin
- description: 'List of p4plugin jobs'
- regex: '^p4plugin-.*'
- <<: *releng_view_common
-
-- view:
- name: packaging
- description: 'List of packaging, ansible and puppet jobs'
- regex: '^packaging.*|ansible.*|puppet.*'
- <<: *releng_view_common
-
-- view:
- name: packer
- description: 'List of packer jobs'
- regex: '^builder-.*packer.*'
- <<: *releng_view_common
-
-- view:
- name: packetcable
- description: 'List of packetcable jobs'
- regex: '^packetcable-.*'
- <<: *releng_view_common
-
-- view:
- name: persistence
- description: 'List of persistence jobs'
- regex: '^persistence-.*'
- <<: *releng_view_common
-
-- view:
- name: reservation
- description: 'List of reservation jobs'
- regex: '^reservation-.*'
- <<: *releng_view_common
-
-- view:
- name: sdninterfaceapp
- description: 'List of sdninterfaceapp jobs'
- regex: '^sdninterfaceapp-.*'
- <<: *releng_view_common
-
-- view:
- name: sfc
- description: 'List of sfc jobs'
- regex: '^sfc-.*'
- <<: *releng_view_common
-
-- view:
- name: snbi
- description: 'List of snbi jobs'
- regex: '^snbi-.*'
- <<: *releng_view_common
-
-- view:
- name: snmp
- description: 'List of snmp jobs'
- regex: '^snmp-.*'
- <<: *releng_view_common
-
-- view:
- name: snmp4sdn
- description: 'List of snmp4sdn jobs'
- regex: '^snmp4sdn-.*'
- <<: *releng_view_common
-
-- view:
- name: sxp
- description: 'List of sxp jobs'
- regex: '^sxp-.*'
- <<: *releng_view_common
-
-- view:
- name: systemmetrics
- description: 'List of systemmetrics jobs'
- regex: '^systemmetrics-.*'
- <<: *releng_view_common
-
-- view:
- name: telemetry
- description: 'List of telemetry jobs'
- regex: '^telemetry-.*'
- <<: *releng_view_common
-
-- view:
- name: topoprocessing
- description: 'List of topoprocessing jobs'
- regex: '^topoprocessing-.*'
- <<: *releng_view_common
-
-- view:
- name: transportpce
- description: 'List of transportpce jobs'
- regex: '^transportpce-.*'
- <<: *releng_view_common
-
-- view:
- name: tsdr
- description: 'List of tsdr jobs'
- regex: '^tsdr-.*'
- <<: *releng_view_common
-
-- view:
- name: ttp
- description: 'List of ttp jobs'
- regex: '^ttp-.*'
- <<: *releng_view_common
-
-- view:
- name: unimgr
- description: 'List of unimgr jobs'
- regex: '^unimgr-.*'
- <<: *releng_view_common
-
-- view:
- name: usc
- description: 'List of usc jobs'
- regex: '^usc-.*'
- <<: *releng_view_common
-
-- view:
- name: uscplugin
- description: 'List of uscplugin jobs'
- regex: '^usecplugin-.*'
- <<: *releng_view_common
-
-- view:
- name: vbd
- description: 'List of vbd jobs'
- regex: '^vbd-.*'
- <<: *releng_view_common
-
-- view:
- name: yang-push
- description: 'List of yang-push jobs'
- regex: '^yang-push-.*'
- <<: *releng_view_common
-
-- view:
- name: yangide
- description: 'List of yangide jobs'
- regex: '^yangide-.*'
- <<: *releng_view_common
-
-- view:
- name: yangtools
- description: 'List of yangtools jobs'
- regex: '^yangtools-.*'
+ regex: '^builder-.*'
<<: *releng_view_common
branch: 'master'
mvn-settings: 'reservation-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: reservation
+ description: 'List of reservation jobs'
+ regex: '^reservation-.*'
+ <<: *releng_view_common
build-node: centos7-builder-2c-8g
mvn-settings: 'sdninterfaceapp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: sdninterfaceapp
+ description: 'List of sdninterfaceapp jobs'
+ regex: '^sdninterfaceapp-.*'
+ <<: *releng_view_common
stream:
- fluorine:
branch: 'master'
+ os-branch: 'queens'
- oxygen:
branch: 'stable/oxygen'
+ os-branch: 'queens'
feature:
- basic:
- full:
csit-list: >
sfc-csit-3node-docker-full-deploy-all-{stream}
+
+ - netvirt:
+ csit-list: >
+ netvirt-csit-1node-openstack-{os-branch}-sfc-{stream}
branch: 'master'
mvn-settings: 'sfc-settings'
mvn-opts: '-Xmx2048m -XX:MaxPermSize=256m -Dmaven.compile.fork=true'
+
+- view:
+ name: sfc
+ description: 'List of sfc jobs'
+ regex: '^sfc-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'snbi-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: snbi
+ description: 'List of snbi jobs'
+ regex: '^snbi-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'snmp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: snmp
+ description: 'List of snmp jobs'
+ regex: '^snmp-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'snmp4sdn-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: snmp4sdn
+ description: 'List of snmp4sdn jobs'
+ regex: '^snmp4sdn-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'sxp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: sxp
+ description: 'List of sxp jobs'
+ regex: '^sxp-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'systemmetrics-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: systemmetrics
+ description: 'List of systemmetrics jobs'
+ regex: '^systemmetrics-.*'
+ <<: *releng_view_common
mvn-settings: 'telemetry-settings'
mvn-goals: 'clean install'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: telemetry
+ description: 'List of telemetry jobs'
+ regex: '^telemetry-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'topoprocessing-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: topoprocessing
+ description: 'List of topoprocessing jobs'
+ regex: '^topoprocessing-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'transportpce-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: transportpce
+ description: 'List of transportpce jobs'
+ regex: '^transportpce-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'tsdr-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: tsdr
+ description: 'List of tsdr jobs'
+ regex: '^tsdr-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'ttp-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: ttp
+ description: 'List of ttp jobs'
+ regex: '^ttp-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'unimgr-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: unimgr
+ description: 'List of unimgr jobs'
+ regex: '^unimgr-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'usc-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: usc
+ description: 'List of usc jobs'
+ regex: '^usc-.*'
+ <<: *releng_view_common
project-name: 'usecplugin'
mvn-settings: 'usecplugin-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: usecplugin
+ description: 'List of usecplugin jobs'
+ regex: '^usecplugin-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'yang-push-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: yang-push
+ description: 'List of yang-push jobs'
+ regex: '^yang-push-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'yangide-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: yangide
+ description: 'List of yangide jobs'
+ regex: '^yangide-.*'
+ <<: *releng_view_common
branch: 'master'
mvn-settings: 'yangtools-settings'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+
+- view:
+ name: yangtools
+ description: 'List of yangtools jobs'
+ regex: '^yangtools-.*'
+ <<: *releng_view_common
# strip the "stable" off of the branch
branch_name=$(cut -d'/' -f2 <<< "${branch}")
-wget https://bootstrap.pypa.io/get-pip.py
-python get-pip.py
+# Do not upgrade pip to v10. v10 does not allow uninstalling
+# distutils installed packages. This fails the openstack pip installs
+# below when it attempts to uninstall packages.
+# devstack patch that is trying to get pip 10 working:
+# https://review.openstack.org/#/c/561597/
+# wget https://bootstrap.pypa.io/get-pip.py
+# python get-pip.py
mkdir tmp
cd tmp
echo '---> Installing openvswitch from relevant openstack branch'
yum install -y "centos-release-openstack-${branch_name}"
-yum install -y --nogpgcheck openvswitch
-
+# install 2.8.2 for queens.
+# 2.9.0 is the current version in openstack-queens, but it is buggy.
+# Remove this when https://review.rdoproject.org/r/#/c/13839/ merges and 2.9.2 is in the repo.
+yum repolist
+yum --showduplicates list openvswitch
+if [ "${branch}" == "stable/queens" ]; then
+ yum install -y --nogpgcheck openvswitch-2.8.2-1.el7
+else
+ yum install -y --nogpgcheck openvswitch
+fi
cd "$OLDPWD"
rm -fr tmp
src: '/tmp/hbase-{{hbase_version}}.tar.gz'
dest: /tmp/Hbase
remote_src: true
- - name: Install Quagga
- block:
- - name: Fetch Quagga git repo
- git:
- repo: https://github.com/6WIND/zrpcd.git
- dest: /tmp/build_quagga/zrpcd
- version: master
- - name: Set compile script executable
- file:
- path: /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh
- mode: 0755
- - name: Compile Quagga
- shell: /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh -d -b -t
- args:
- chdir: /tmp/build_quagga/zrpcd
- executable: /bin/bash
- become: true
post_tasks:
- name: System Reseal
# Install netaddr package which is needed by some custom mininet topologies
apt-get install python-netaddr
-
-# Check out quagga , compile and install for router functionalities
-echo "Installing the Quagga..."
-mkdir -p /tmp/build_quagga
-cd /tmp/build_quagga
-git clone https://github.com/6WIND/zrpcd.git
-cd zrpcd
-git checkout 20170731
-chmod a+x /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh
-/tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh -d -b -t
-
-# Removing the build_quagga folder
-rm -rf /tmp/build_quagga/
# Install netaddr package which is needed by some custom mininet topologies
apt-get install python-netaddr
-
-# Check out quagga , compile and install for router functionalities
-echo "Installing the Quagga..."
-mkdir -p /tmp/build_quagga
-cd /tmp/build_quagga
-git clone https://github.com/6WIND/zrpcd.git
-cd zrpcd
-git checkout 20170731
-chmod a+x /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh
-/tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh -d -b -t
-
-# Removing the build_quagga folder
-rm -rf /tmp/build_quagga/
apt: name=vlan state=present
become: true
- - name: Install Quagga
- block:
- - name: Fetch Quagga git repo
- git:
- repo: https://github.com/6WIND/zrpcd.git
- dest: /tmp/build_quagga/zrpcd
- version: 20170731
- - name: Set compile script executable
- file:
- path: /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh
- mode: 0755
- - name: Compile Quagga
- shell: /tmp/build_quagga/zrpcd/pkgsrc/dev_compile_script.sh -d -b -t
- args:
- chdir: /tmp/build_quagga/zrpcd
- executable: /bin/bash
- become: true
-
post_tasks:
- name: System Reseal
script: ../common-packer/provision/system-reseal.sh
+++ /dev/null
-{
- "variables": {
- "base_image": null,
- "distro": null,
- "cloud_auth_url": null,
- "cloud_user": null,
- "cloud_pass": null,
- "cloud_network": null,
- "cloud_tenant": null,
- "cloud_user_data": null,
- "ssh_user": null,
- "ssh_proxy_host": ""
- },
- "builders": [
- {
- "type": "openstack",
- "identity_endpoint": "{{user `cloud_auth_url`}}",
- "domain_name": "Default",
- "tenant_name": "{{user `cloud_tenant`}}",
- "username": "{{user `cloud_user`}}",
- "password": "{{user `cloud_pass`}}",
- "region": "ca-ymq-1",
- "availability_zone": "ca-ymq-2",
- "ssh_username": "{{user `ssh_user`}}",
- "ssh_proxy_host": "{{user `ssh_proxy_host`}}",
- "image_name": "ZZCI - {{user `distro`}} - devstack-ocata - {{isotime \"20060102-150405.000\"}}",
- "instance_name": "{{user `distro`}}-devstack-ocata-{{uuid}}",
- "source_image_name": "{{user `base_image`}}",
- "flavor": "v1-standard-1",
- "networks": [
- "{{user `cloud_network`}}"
- ],
- "user_data_file": "{{user `cloud_user_data`}}",
- "metadata": {
- "ci_managed": "yes"
- }
- }
- ],
- "provisioners": [
- {
- "type": "shell",
- "environment_vars": [
- "os_branch=stable/ocata"
- ],
- "scripts": [
- "provision/baseline.sh",
- "provision/devstack-pre-pip.sh",
- "provision/system_reseal_local_env.sh",
- "provision/system_reseal.sh"
- ],
- "execute_command": "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else {{ .Vars }} sudo -E '{{ .Path }}'; fi"
- }
- ]
-}
],
"execute_command": "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else {{ .Vars }} sudo -E '{{ .Path }}'; fi"
},
+ {
+ "type": "shell-local",
+ "command": "./common-packer/ansible-galaxy.sh {{user `ansible_roles_path`}}"
+ },
{
"type": "ansible",
"playbook_file": "provision/mininet-ovs-2.8.yaml",
],
"execute_command": "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else {{ .Vars }} sudo -E '{{ .Path }}'; fi"
},
+ {
+ "type": "shell-local",
+ "command": "./common-packer/ansible-galaxy.sh {{user `ansible_roles_path`}}"
+ },
{
"type": "ansible",
"playbook_file": "provision/robot.yaml",
[testenv:pep8]
deps = flake8
-commands = flake8 scripts/
+commands = flake8 scripts/ *.py
[testenv:prefix]
-commands = ./check_prefix.sh
+commands = python {toxinidir}/check_prefix.py
[testenv:robot]
-commands = ./check_robot.sh
-
+basepython = python3
+commands = python {toxinidir}/check_robot.py