project: '{project}'
branch: '{branch}'
files: '**/*.xml'
+ forbidden-files: ''
builders:
- autorelease-checkout-gerrit-patch
build-days-to-keep: 30
use-features-boot: 'True'
+ # File triggers
+ files: '**'
+ forbidden-files: ''
+
# Timeout in minutes
build-timeout: 360
build-node: centos7-builder-4c-4g
printf "Finished running ${type} plans\n"
} # function run_plan()
+# Return elapsed time. Usage:
+# - Call first time with no arguments and a new timer is returned.
+# - Next call with the first argument as the timer and the elapsed time is returned.
+function timer()
+{
+ if [ $# -eq 0 ]; then
+ # return the current time
+ printf "$(date "+%s")"
+ else
+ local start_time=$1
+ end_time=$(date "+%s")
+
+ if [ -z "$start_time" ]; then
+ start_time=$end_time;
+ fi
+
+ delta_time=$((end_time - start_time))
+ ds=$((delta_time % 60))
+ dm=$(((delta_time / 60) % 60))
+ dh=$((delta_time / 3600))
+ # return the elapsed time
+ printf "%d:%02d:%02d" $dh $dm $ds
+ fi
+}
+
# convert commas in csv strings to spaces (ssv)
function csv2ssv() {
local csv=$1
echo "${ssv}"
} # csv2ssv
+function is_openstack_feature_enabled() {
+ local feature=$1
+ for enabled_feature in $(csv2ssv ${ENABLE_OS_SERVICES}); do
+ if [ "${enabled_feature}" == "${feature}" ]; then
+ echo 1
+ return
+ fi
+ done
+ echo 0
+}
+
SSH="ssh -t -t"
# shellcheck disable=SC2153
# Control Node
for i in `seq 1 ${NUM_OPENSTACK_CONTROL_NODES}`; do
OSIP=OPENSTACK_CONTROL_NODE_${i}_IP
- echo "collect_logs: for openstack control node ip: ${!OSIP}"
- NODE_FOLDER="control_${i}"
+ if [ "$(is_openstack_feature_enabled n-cpu)" == "1" ]; then
+ echo "collect_logs: for openstack combo node ip: ${!OSIP}"
+ NODE_FOLDER="combo_${i}"
+ else
+ echo "collect_logs: for openstack control node ip: ${!OSIP}"
+ NODE_FOLDER="control_${i}"
+ fi
mkdir -p ${NODE_FOLDER}
scp extra_debug.sh ${!OSIP}:/tmp
+ # Capture compute logs if this is a combo node
+ if [ "$(is_openstack_feature_enabled n-cpu)" == "1" ]; then
+ scp ${!OSIP}:/etc/nova/nova.conf ${NODE_FOLDER}
+ scp ${!OSIP}:/etc/nova/nova-cpu.conf ${NODE_FOLDER}
+ scp ${!OSIP}:/etc/openstack/clouds.yaml ${NODE_FOLDER}
+ rsync --rsync-path="sudo rsync" -avhe ssh ${!OSIP}:/var/log/nova-agent.log ${NODE_FOLDER}
+ fi
${SSH} ${!OSIP} "bash /tmp/extra_debug.sh > /tmp/extra_debug.log 2>&1"
scp ${!OSIP}:/etc/dnsmasq.conf ${NODE_FOLDER}
scp ${!OSIP}:/etc/keystone/keystone.conf ${NODE_FOLDER}
daexim-csit-1node-basic-only-fluorine,
daexim-csit-3node-clustering-basic-only-fluorine,
distribution-csit-1node-userfeatures-all-fluorine,
+distribution-csit-managed-fluorine,
genius-csit-1node-upstream-all-fluorine,
genius-csit-3node-upstream-all-fluorine,
lispflowmapping-csit-1node-msmr-all-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-1node-1cmb-0ctl-0cmp-openstack-pike-upstream-stateful-fluorine,
+netvirt-csit-1node-1cmb-0ctl-0cmp-openstack-pike-upstream-stateful-itm-direct-tunnels-fluorine,
+netvirt-csit-1node-1cmb-0ctl-0cmp-openstack-pike-upstream-stateful-snat-conntrack-fluorine,
+netvirt-csit-1node-1cmb-0ctl-0cmp-openstack-queens-upstream-stateful-fluorine,
+netvirt-csit-1node-1cmb-0ctl-0cmp-openstack-queens-upstream-stateful-itm-direct-tunnels-fluorine,
+netvirt-csit-1node-1cmb-0ctl-0cmp-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-3node-1cmb-0ctl-0cmp-openstack-pike-upstream-stateful-fluorine,
+netvirt-csit-3node-1cmb-0ctl-0cmp-openstack-pike-upstream-stateful-itm-direct-tunnels-fluorine,
+netvirt-csit-3node-1cmb-0ctl-0cmp-openstack-pike-upstream-stateful-snat-conntrack-fluorine,
+netvirt-csit-3node-1cmb-0ctl-0cmp-openstack-queens-upstream-stateful-fluorine,
+netvirt-csit-3node-1cmb-0ctl-0cmp-openstack-queens-upstream-stateful-itm-direct-tunnels-fluorine,
+netvirt-csit-3node-1cmb-0ctl-0cmp-openstack-queens-upstream-stateful-snat-conntrack-fluorine,
netvirt-csit-hwvtep-1node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-fluorine,
netvirt-csit-hwvtep-1node-0cmb-1ctl-2cmp-openstack-queens-upstream-stateful-fluorine,
netvirt-csit-hwvtep-3node-0cmb-1ctl-2cmp-openstack-pike-upstream-stateful-fluorine,
daexim-csit-1node-basic-only-oxygen,
daexim-csit-3node-clustering-basic-only-oxygen,
distribution-csit-1node-userfeatures-all-oxygen,
+distribution-csit-managed-oxygen,
dluxapps-csit-1node-yangman-all-oxygen,
genius-csit-1node-upstream-all-oxygen,
genius-csit-3node-upstream-all-oxygen,
name: distribution
jobs:
# gerrit- is generic template, distribution- is project specific.
- - 'distribution-merge-{stream}'
- - 'distribution-verify-{stream}'
- - 'distribution-check-{stream}'
- 'distribution-sanity-{stream}'
- - 'distribution-managed-{stream}'
- gerrit-maven-clm
- gerrit-maven-verify-dependencies
- gerrit-tox-verify
mvn-settings: integration-distribution-settings
mvn-goals: 'clean install dependency:tree -DoutputFile=dependency_tree.txt'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
- dependencies: ''
email-upstream: '[int/dist]'
-
stream:
- fluorine:
branch: 'master'
karaf-version: karaf4
- project:
- name: distribution-sonar
+ name: distribution-managed
jobs:
- - gerrit-maven-sonar
+ # gerrit- is generic template, distribution- is project specific.
+ - 'distribution-merge-{type}-{stream}'
+ - 'distribution-verify-{type}-{stream}'
+ - 'distribution-check-{type}-{stream}'
+ - 'distribution-csit-managed-{stream}'
project: integration/distribution
project-name: distribution
- branch: master
mvn-settings: integration-distribution-settings
- mvn-goals: clean install dependency:tree -DoutputFile=dependency_tree.txt
+ mvn-goals: 'clean install dependency:tree -DoutputFile=dependency_tree.txt'
mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+ email-upstream: '[int/dist]'
+ type: managed
+ profile: '-Pmanaged'
+ forbidden-files: 'opendaylight/**'
+ karaf-version: karaf4
-- job-template:
- name: 'distribution-verify-{stream}'
-
- project-type: freestyle
- node: centos7-builder-8c-8g
- concurrent: true
- jdk: '{java-version}'
-
- properties:
- - opendaylight-infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
-
- parameters:
- - opendaylight-infra-parameters:
- os-cloud: '{os-cloud}'
- project: '{project}'
- branch: '{branch}'
- refspec: 'refs/heads/{branch}'
- artifacts: '{archive-artifacts}'
-
- scm:
- - gerrit-trigger-scm:
- refspec: '$GERRIT_REFSPEC'
- choosing-strategy: 'gerrit'
-
- wrappers:
- - opendaylight-infra-wrappers:
- build-timeout: '{build-timeout}'
-
- triggers:
- - gerrit-trigger-patch-submitted:
- gerrit-server-name: '{gerrit-server-name}'
- project: '{project}'
- branch: '{branch}'
- files: '**'
-
- builders:
- - wipe-org-opendaylight-repo
- - provide-maven-settings:
- global-settings-file: 'global-settings'
- settings-file: 'integration-settings'
- - maven-target:
- maven-version: mvn35
- pom: pom.xml
- goals: |
- clean install dependency:tree -DoutputFile=dependency_tree.txt
- -Dstream={stream}
- -Dsft.heap.max=4g
- -Pmanaged -Punmanaged
- {opendaylight-infra-mvn-opts}
- # {opendaylight-infra-parallel-mvn-opts} is bad when there are multiple big features in SFT.
- java-opts:
- - '-Xmx1024m -XX:MaxPermSize=256m'
- settings: integration-settings
- settings-type: cfp
- global-settings: global-settings
- global-settings-type: cfp
-
- publishers:
- - findbugs
- - lf-jacoco-report
- - lf-infra-publish
- - email-notification:
- email-recipients: '{email-recipients}'
- email-prefix: '[{project-name}]'
-
-- job-template:
- name: 'distribution-merge-{stream}'
-
- # Need to keep jobs that deploy to Nexus at end of build as Maven
- # projects. Maybe reconsider this once upstream moves deploy to a
- # separate lifecycle:
- # https://issues.apache.org/jira/browse/MNG-5666
-
- project-type: maven
- node: 'centos7-builder-8c-8g'
- jdk: '{java-version}'
-
- properties:
- - opendaylight-infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
-
- parameters:
- - opendaylight-infra-parameters:
- os-cloud: '{os-cloud}'
- project: '{project}'
- branch: '{branch}'
- refspec: 'refs/heads/{branch}'
- artifacts: '{archive-artifacts}'
- - distribution-karaf-version:
- karaf-version: '{karaf-version}'
-
- scm:
- - gerrit-trigger-scm:
- refspec: ''
- choosing-strategy: 'default'
-
- wrappers:
- - opendaylight-infra-wrappers:
- build-timeout: '{build-timeout}'
-
- triggers:
- - gerrit-trigger-patch-merged:
- gerrit-server-name: '{gerrit-server-name}'
- name: '{project}'
- branch: '{branch}'
-
- prebuilders:
- - wipe-org-opendaylight-repo
- - jacoco-nojava-workaround
- - provide-maven-settings:
- global-settings-file: 'global-settings'
- settings-file: 'integration-settings'
- - integration-set-variables
- - distribute-build-url:
- path: '$KARAF_ARTIFACT/src/main/assembly'
-
- maven:
- maven-name: 'mvn35'
- root-pom: 'pom.xml'
- goals: >
- clean install dependency:tree -DoutputFile=dependency_tree.txt -V -B
- -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
- -Dsft.heap.max=4g
- -Djenkins -Dmerge -Dstream={stream}
- -Pmanaged -Punmanaged
- maven-opts: '-Xmx1024m -XX:MaxPermSize=256m'
- settings: integration-settings
- settings-type: cfp
- global-settings: global-settings
- global-settings-type: cfp
-
- postbuilders:
- - integration-compare-distributions
- # TODO: the output of the above command is not *friendly* for the reader because the most important info
- # is listed last. This is fine/best for command line output, but for keeping in a file it would be better
- # to put the summary at the beginning of the file. Some bash magic can be done here to make that happen.
-
- reporters:
- - findbugs
-
- publishers:
- - maven-deploy:
- id: ''
- unique-version: true
- deploy-unstable: false
- - lf-jacoco-report
- - lf-infra-publish
- - email-notification:
- email-recipients: '{email-recipients}'
- email-prefix: '[{project-name}]'
-
-- job-template:
- name: 'distribution-check-{stream}'
-
- ######################
- # Default parameters #
- ######################
-
- mvn-version: mvn35
-
- #####################
- # Job Configuration #
- #####################
-
- # Like a {project}-distribution-check, but few steps less as there is no upstream project involved.
- disabled: false
-
- project-type: freestyle
- node: 'centos7-builder-8c-8g'
- concurrent: true
- jdk: '{java-version}'
-
- properties:
- - opendaylight-infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
-
- parameters:
- - opendaylight-infra-parameters:
- os-cloud: '{os-cloud}'
- project: '{project}'
- branch: '{branch}'
- refspec: 'refs/heads/{branch}'
- artifacts: '{archive-artifacts}'
- - integration-distribution-stream:
- stream: '{stream}'
- - distribution-karaf-version:
- karaf-version: '{karaf-version}'
- - maven-exec:
- maven-version: mvn35
-
- scm:
- - integration-gerrit-scm:
- basedir: 'distribution'
- refspec: '$GERRIT_REFSPEC'
- branch: '{branch}'
-
- wrappers:
- - opendaylight-infra-wrappers:
- # Distro-check jobs typically run within 10 - 30 minutes
- # with 45 minutes being the occassional edge case.
- # enforce a 60 minute limit to ensure stuck jobs get
- # cleared up sooner.
- # Double that as Karaf 3+4 may take longer.
- build-timeout: '120'
-
- triggers:
- - gerrit-trigger-patch-submitted:
- gerrit-server-name: '{gerrit-server-name}'
- project: '{project}'
- branch: '{branch}'
- files: '**'
-
- builders:
- - distribution-check-wipe
- - inject:
- properties-file: 'allowed_projects.txt'
- - distribution-check-build-project:
- pom: 'distribution/pom.xml'
- mvn-opts: '{opendaylight-infra-mvn-opts}'
- mvn-version: '{mvn-version}'
- # '{opendaylight-infra-parallel-mvn-opts}' is bad when there are multiple big features in SFT.
- - distribution-check-verify-groupid:
- gerrit-project: 'integration'
- - distribution-check-delete-snapshots
- - distribution-check-configure-remotes
- - distribution-check-repeat-project-build:
- pom: 'distribution/pom.xml'
- mvn-opts: '{opendaylight-infra-mvn-opts}'
- mvn-version: '{mvn-version}'
- # '{opendaylight-infra-parallel-mvn-opts}' is bad when there are multiple big features in SFT.
- - integration-set-variables
- - distribution-check-warn-9191
- - distribution-check-warn-9192
- - integration-upload-distribution:
- dist-pom: distribution/pom.xml
- - distribution-check-bootup
-
- publishers:
- - email-notification:
- email-recipients: '{email-recipients}'
- email-prefix: '[{project-name}]'
- - integration-csit-archive-build
- - lf-infra-publish
-
-- job-template:
- name: 'distribution-sanity-{stream}'
- # Goal: Verify distribution starts with no issues when all features are loaded.
- # Operation: This job deploys odl-integration-all + list of UM features.
- # This job works for both managed & self-managed distro.
-
- project-type: freestyle
- node: centos7-builder-4c-4g
- concurrent: false
-
- properties:
- - opendaylight-infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
-
- parameters:
- - opendaylight-infra-parameters:
- os-cloud: '{os-cloud}'
- project: '{project}'
- branch: '{branch}'
- refspec: 'refs/heads/{branch}'
- artifacts: '{archive-artifacts}'
- - integration-distribution-stream:
- stream: '{stream}'
- - integration-distribution-branch:
- branch: '{branch}'
- - integration-bundle-url:
- bundle-url: '{bundle-url}'
- - integration-repo-url:
- repo-url: '{sm-repos}'
- - integration-controller-features:
- controller-features: '{sm-features}'
- - integration-jdk-version:
- jdkversion: '{jre}'
- - distribution-karaf-version:
- karaf-version: '{karaf-version}'
-
- wrappers:
- - opendaylight-infra-wrappers:
- build-timeout: '{build-timeout}'
-
- builders:
- - integration-detect-variables
- - distribution-check-bootup
-
- publishers:
- - email-notification:
- email-recipients: '{email-recipients}'
- email-prefix: '[{project-name}]'
- - integration-csit-archive-build
- - lf-infra-publish
-
-- job-template:
- name: 'distribution-managed-{stream}'
- # Goal: Verify distribution starts with no issues when all features are loaded.
- # Operation: This job deploys odl-integration-all.
- # This job works for just managed distro.
+ stream:
+ - fluorine:
+ branch: 'master'
+ dependencies: >
+ aaa-merge-{stream},
+ bgpcep-merge-{stream},
+ coe-merge-{stream},
+ controller-merge-{stream},
+ daexim-merge-{stream},
+ genius-merge-{stream},
+ infrautils-merge-{stream},
+ lispflowmapping-merge-{stream},
+ mdsal-merge-{stream},
+ netconf-merge-{stream},
+ netvirt-merge-{stream}
+ neutron-merge-{stream},
+ openflowplugin-merge-{stream},
+ ovsdb-merge-{stream},
+ serviceutils-merge-{stream},
+ sfc-merge-{stream}
- project-type: freestyle
- node: centos7-builder-4c-4g
- concurrent: false
+ - oxygen:
+ branch: 'stable/oxygen'
+ dependencies: >
+ aaa-merge-{stream},
+ alto-merge-{stream},
+ bgpcep-merge-{stream},
+ bier-merge-{stream},
+ coe-merge-{stream},
+ controller-merge-{stream},
+ daexim-merge-{stream},
+ dluxapps-merge-{stream},
+ dlux-merge-{stream},
+ faas-merge-{stream},
+ genius-merge-{stream},
+ groupbasedpolicy-merge-{stream},
+ infrautils-merge-{stream},
+ jsonrpc-merge-{stream},
+ l2switch-merge-{stream},
+ lispflowmapping-merge-{stream},
+ mdsal-merge-{stream},
+ nemo-merge-{stream},
+ netconf-merge-{stream},
+ netvirt-merge-{stream},
+ neutron-merge-{stream},
+ of-config-merge-{stream},
+ openflowplugin-merge-{stream},
+ ovsdb-merge-{stream},
+ p4plugin-merge-{stream},
+ packetcable-merge-{stream},
+ serviceutils-merge-{stream},
+ sfc-merge-{stream},
+ snmp4sdn-merge-{stream},
+ snmp-merge-{stream},
+ sxp-merge-{stream},
+ tsdr-merge-{stream},
+ usc-merge-{stream},
+ vbd-merge-{stream}
- properties:
- - opendaylight-infra-properties:
- build-days-to-keep: '{build-days-to-keep}'
+- project:
+ name: distribution-full
+ jobs:
+ # gerrit- is generic template, distribution- is project specific.
+ - 'distribution-merge-{type}-{stream}'
+ - 'distribution-verify-{type}-{stream}'
+ - 'distribution-check-{type}-{stream}'
- parameters:
- - opendaylight-infra-parameters:
- os-cloud: '{os-cloud}'
- project: '{project}'
- branch: '{branch}'
- refspec: 'refs/heads/{branch}'
- artifacts: '{archive-artifacts}'
- - integration-distribution-stream:
- stream: '{stream}'
- - integration-distribution-branch:
- branch: '{branch}'
- - integration-bundle-url:
- bundle-url: '{bundle-url}'
- - integration-jdk-version:
- jdkversion: '{jre}'
- - distribution-karaf-version:
- karaf-version: 'karaf4'
+ project: integration/distribution
+ project-name: distribution
+ mvn-settings: integration-distribution-settings
+ mvn-goals: 'clean install dependency:tree -DoutputFile=dependency_tree.txt'
+ mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+ email-upstream: '[int/dist]'
+ type: full
+ profile: '-Punmanaged'
+ files: 'opendaylight/**'
+ karaf-version: odl
- wrappers:
- - opendaylight-infra-wrappers:
- build-timeout: '{build-timeout}'
+ stream:
+ - fluorine:
+ branch: 'master'
+ karaf-version: odl
+ dependencies: >
+ distribution-merge-managed-{stream},
+ sxp-merge-{stream}
- builders:
- - integration-detect-variables
- - distribution-check-bootup
+- project:
+ name: distribution-sonar
+ jobs:
+ - gerrit-maven-sonar
- publishers:
- - email-notification:
- email-recipients: '{email-recipients}'
- email-prefix: '[{project-name}]'
- - integration-csit-archive-build
- - lf-infra-publish
+ project: integration/distribution
+ project-name: distribution
+ branch: master
+ mvn-settings: integration-distribution-settings
+ mvn-goals: clean install dependency:tree -DoutputFile=dependency_tree.txt
+ mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m'
- view:
name: distribution
echo "detecting distribution allowed projects"
# Some allowed projects cannot be detected in distribution because they do not produce features.
ALLOW_PROJECTS=(yangtools mdsal openflowjava)
+ if [[ "$KARAF_VERSION" == "odl" ]]; then
ALLOW_PROJECTS+=(`grep '<groupId>org.opendaylight.' -Rh distribution \
| sed -e 's%^[ \t]*<groupId>org.opendaylight.%%' \
| sed -e 's%</groupId>%%' | sort -u`)
+ else
+ # For Managed distro we only look at the features folder
+ ALLOW_PROJECTS+=(`grep '<groupId>org.opendaylight.' -Rh distribution/features \
+ | sed -e 's%^[ \t]*<groupId>org.opendaylight.%%' \
+ | sed -e 's%</groupId>%%' | sort -u`)
+ fi
echo "Allowed projects are ${ALLOW_PROJECTS[@]}"
echo "ALLOW_PROJECTS=${ALLOW_PROJECTS[@]}" > allowed_projects.txt
goals: |
clean deploy
dependency:tree -DoutputFile=dependency_tree.txt
- -Pq -Pmanaged -Punmanaged
+ -Pq
-DaltDeploymentRepository=fake-nexus::default::file:///tmp/n/
{mvn-opts}
java-opts:
goals: |
clean install
dependency:tree -DoutputFile=dependency_tree.txt
- -Pq -Pmanaged -Punmanaged
+ -Pq
{mvn-opts}
java-opts:
- '-Xmx1024m -XX:MaxPermSize=256m -Dmaven.compile.fork=true'
clean install
dependency:tree -DoutputFile=dependency_tree.txt
-s fake_remotes.xml
- -Pq -Pmanaged -Punmanaged
+ -Pq
{mvn-opts}
java-opts:
- '-Xmx4096m -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
clean install
dependency:tree -DoutputFile=dependency_tree.txt
-s fake_remotes.xml
- -Pq -Pmananaged -Punmanaged
+ -Pq
-Dsft.heap.max=4g
-DskipTests=false
{mvn-opts}
project: '{project}'
branch: '{branch}'
files: '**'
+ forbidden-files: ''
builders:
- distribution-check-wipe
email-prefix: '[{project-name}]'
- integration-csit-archive-build
- lf-infra-publish
+
+- job-template:
+ name: 'distribution-verify-{type}-{stream}'
+
+ project-type: freestyle
+ node: centos7-builder-8c-8g
+ concurrent: true
+ jdk: '{java-version}'
+
+ properties:
+ - opendaylight-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+
+ parameters:
+ - opendaylight-infra-parameters:
+ os-cloud: '{os-cloud}'
+ project: '{project}'
+ branch: '{branch}'
+ refspec: 'refs/heads/{branch}'
+ artifacts: '{archive-artifacts}'
+
+ scm:
+ - gerrit-trigger-scm:
+ refspec: '$GERRIT_REFSPEC'
+ choosing-strategy: 'gerrit'
+
+ wrappers:
+ - opendaylight-infra-wrappers:
+ build-timeout: '{build-timeout}'
+
+ triggers:
+ - gerrit-trigger-patch-submitted:
+ gerrit-server-name: '{gerrit-server-name}'
+ project: '{project}'
+ branch: '{branch}'
+ files: '{files}'
+ forbidden-files: '{forbidden-files}'
+
+ builders:
+ - wipe-org-opendaylight-repo
+ - provide-maven-settings:
+ global-settings-file: 'global-settings'
+ settings-file: 'integration-settings'
+ - maven-target:
+ maven-version: mvn35
+ pom: pom.xml
+ goals: |
+ clean install dependency:tree -DoutputFile=dependency_tree.txt
+ -Dstream={stream}
+ -Dsft.heap.max=4g
+ {opendaylight-infra-mvn-opts}
+ {profile}
+ # {opendaylight-infra-parallel-mvn-opts} is bad when there are multiple big features in SFT.
+ java-opts:
+ - '-Xmx1024m -XX:MaxPermSize=256m'
+ settings: integration-settings
+ settings-type: cfp
+ global-settings: global-settings
+ global-settings-type: cfp
+
+ publishers:
+ - findbugs
+ - lf-jacoco-report
+ - lf-infra-publish
+ - email-notification:
+ email-recipients: '{email-recipients}'
+ email-prefix: '[{project-name}]'
+
+- job-template:
+ name: 'distribution-merge-{type}-{stream}'
+
+ # Need to keep jobs that deploy to Nexus at end of build as Maven
+ # projects. Maybe reconsider this once upstream moves deploy to a
+ # separate lifecycle:
+ # https://issues.apache.org/jira/browse/MNG-5666
+
+ project-type: maven
+ node: 'centos7-builder-8c-8g'
+ jdk: '{java-version}'
+
+ properties:
+ - opendaylight-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+
+ parameters:
+ - opendaylight-infra-parameters:
+ os-cloud: '{os-cloud}'
+ project: '{project}'
+ branch: '{branch}'
+ refspec: 'refs/heads/{branch}'
+ artifacts: '{archive-artifacts}'
+ - distribution-karaf-version:
+ karaf-version: '{karaf-version}'
+
+ scm:
+ - gerrit-trigger-scm:
+ refspec: ''
+ choosing-strategy: 'default'
+
+ wrappers:
+ - opendaylight-infra-wrappers:
+ build-timeout: '{build-timeout}'
+
+ triggers:
+ - gerrit-trigger-patch-merged:
+ gerrit-server-name: '{gerrit-server-name}'
+ name: '{project}'
+ branch: '{branch}'
+ files: '{files}'
+ forbidden-files: '{forbidden-files}'
+ - reverse:
+ jobs: '{dependencies}'
+
+ prebuilders:
+ - wipe-org-opendaylight-repo
+ - jacoco-nojava-workaround
+ - provide-maven-settings:
+ global-settings-file: 'global-settings'
+ settings-file: 'integration-settings'
+ - integration-set-variables
+ - distribute-build-url:
+ path: '$KARAF_ARTIFACT/src/main/assembly'
+
+ maven:
+ maven-name: 'mvn35'
+ root-pom: 'pom.xml'
+ goals: >
+ clean install dependency:tree -DoutputFile=dependency_tree.txt -V -B
+ -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r
+ -Dsft.heap.max=4g
+ -Djenkins -Dmerge -Dstream={stream}
+ {profile}
+ maven-opts: '-Xmx1024m -XX:MaxPermSize=256m'
+ settings: integration-settings
+ settings-type: cfp
+ global-settings: global-settings
+ global-settings-type: cfp
+
+ postbuilders:
+ - integration-compare-distributions
+ # TODO: the output of the above command is not *friendly* for the reader because the most important info
+ # is listed last. This is fine/best for command line output, but for keeping in a file it would be better
+ # to put the summary at the beginning of the file. Some bash magic can be done here to make that happen.
+
+ reporters:
+ - findbugs
+
+ publishers:
+ - maven-deploy:
+ id: ''
+ unique-version: true
+ deploy-unstable: false
+ - lf-jacoco-report
+ - lf-infra-publish
+ - email-notification:
+ email-recipients: '{email-recipients}'
+ email-prefix: '[{project-name}]'
+
+- job-template:
+ name: 'distribution-check-{type}-{stream}'
+
+ ######################
+ # Default parameters #
+ ######################
+
+ mvn-version: mvn35
+
+ #####################
+ # Job Configuration #
+ #####################
+
+ # Like a {project}-distribution-check, but few steps less as there is no upstream project involved.
+ disabled: false
+
+ project-type: freestyle
+ node: 'centos7-builder-8c-8g'
+ concurrent: true
+ jdk: '{java-version}'
+
+ properties:
+ - opendaylight-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+
+ parameters:
+ - opendaylight-infra-parameters:
+ os-cloud: '{os-cloud}'
+ project: '{project}'
+ branch: '{branch}'
+ refspec: 'refs/heads/{branch}'
+ artifacts: '{archive-artifacts}'
+ - integration-distribution-stream:
+ stream: '{stream}'
+ - distribution-karaf-version:
+ karaf-version: '{karaf-version}'
+ - maven-exec:
+ maven-version: mvn35
+
+ scm:
+ - integration-gerrit-scm:
+ basedir: 'distribution'
+ refspec: '$GERRIT_REFSPEC'
+ branch: '{branch}'
+
+ wrappers:
+ - opendaylight-infra-wrappers:
+ # Distro-check jobs typically run within 10 - 30 minutes
+ # with 45 minutes being the occassional edge case.
+ # enforce a 60 minute limit to ensure stuck jobs get
+ # cleared up sooner.
+ # Double that as Karaf 3+4 may take longer.
+ build-timeout: '120'
+
+ triggers:
+ - gerrit-trigger-patch-submitted:
+ gerrit-server-name: '{gerrit-server-name}'
+ project: '{project}'
+ branch: '{branch}'
+ files: '{files}'
+ forbidden-files: '{forbidden-files}'
+
+ builders:
+ - distribution-check-wipe
+ - inject:
+ properties-file: 'allowed_projects.txt'
+ - distribution-check-build-project:
+ pom: 'distribution/pom.xml'
+ mvn-opts: |
+ {opendaylight-infra-mvn-opts}
+ {profile}
+ mvn-version: '{mvn-version}'
+ # '{opendaylight-infra-parallel-mvn-opts}' is bad when there are multiple big features in SFT.
+ - distribution-check-verify-groupid:
+ gerrit-project: 'integration'
+ - distribution-check-delete-snapshots
+ - distribution-check-configure-remotes
+ - distribution-check-repeat-project-build:
+ pom: 'distribution/pom.xml'
+ mvn-opts: |
+ {opendaylight-infra-mvn-opts}
+ {profile}
+ mvn-version: '{mvn-version}'
+ # '{opendaylight-infra-parallel-mvn-opts}' is bad when there are multiple big features in SFT.
+ - integration-set-variables
+ - distribution-check-warn-9191
+ - distribution-check-warn-9192
+ - integration-upload-distribution:
+ dist-pom: distribution/pom.xml
+ - distribution-check-bootup
+
+ publishers:
+ - email-notification:
+ email-recipients: '{email-recipients}'
+ email-prefix: '[{project-name}]'
+ - integration-csit-archive-build
+ - lf-infra-publish
+
+- job-template:
+ name: 'distribution-sanity-{stream}'
+ # Goal: Verify distribution starts with no issues when all features are loaded.
+ # Operation: This job deploys odl-integration-all + list of UM features.
+ # This job works for both managed & self-managed distro.
+
+ project-type: freestyle
+ node: centos7-builder-4c-4g
+ concurrent: false
+
+ properties:
+ - opendaylight-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+
+ parameters:
+ - opendaylight-infra-parameters:
+ os-cloud: '{os-cloud}'
+ project: '{project}'
+ branch: '{branch}'
+ refspec: 'refs/heads/{branch}'
+ artifacts: '{archive-artifacts}'
+ - integration-distribution-stream:
+ stream: '{stream}'
+ - integration-distribution-branch:
+ branch: '{branch}'
+ - integration-bundle-url:
+ bundle-url: '{bundle-url}'
+ - integration-repo-url:
+ repo-url: '{sm-repos}'
+ - integration-controller-features:
+ controller-features: '{sm-features}'
+ - integration-jdk-version:
+ jdkversion: '{jre}'
+ - distribution-karaf-version:
+ karaf-version: '{karaf-version}'
+
+ wrappers:
+ - opendaylight-infra-wrappers:
+ build-timeout: '{build-timeout}'
+
+ builders:
+ - integration-detect-variables
+ - distribution-check-bootup
+
+ publishers:
+ - email-notification:
+ email-recipients: '{email-recipients}'
+ email-prefix: '[{project-name}]'
+ - integration-csit-archive-build
+ - lf-infra-publish
+
+- job-template:
+ name: 'distribution-csit-managed-{stream}'
+ # Goal: Verify distribution starts with no issues when all features are loaded.
+ # Operation: This job deploys odl-integration-all.
+ # This job works for just managed distro.
+
+ project-type: freestyle
+ node: centos7-builder-4c-4g
+ concurrent: false
+
+ properties:
+ - opendaylight-infra-properties:
+ build-days-to-keep: '{build-days-to-keep}'
+
+ parameters:
+ - opendaylight-infra-parameters:
+ os-cloud: '{os-cloud}'
+ project: '{project}'
+ branch: '{branch}'
+ refspec: 'refs/heads/{branch}'
+ artifacts: '{archive-artifacts}'
+ - integration-distribution-stream:
+ stream: '{stream}'
+ - integration-distribution-branch:
+ branch: '{branch}'
+ - integration-bundle-url:
+ bundle-url: '{bundle-url}'
+ - integration-jdk-version:
+ jdkversion: '{jre}'
+ - distribution-karaf-version:
+ karaf-version: 'karaf4'
+
+ wrappers:
+ - opendaylight-infra-wrappers:
+ build-timeout: '{build-timeout}'
+
+ builders:
+ - integration-detect-variables
+ - distribution-check-bootup
+
+ publishers:
+ - email-notification:
+ email-recipients: '{email-recipients}'
+ email-prefix: '[{project-name}]'
+ - integration-csit-archive-build
+ - lf-infra-publish
+
# shellcheck source=${ROBOT_VENV}/bin/activate disable=SC1091
source ${ROBOT_VENV}/bin/activate
source /tmp/common-functions.sh ${BUNDLEFOLDER}
+totaltmr=$(timer)
+# Ensure we fail the job if any steps fail.
+set -ex -o pipefail
PYTHON="${ROBOT_VENV}/bin/python"
SSH="ssh -t -t"
NODE_IP=$1
CTRL_IP=$2
: > ${WORKSPACE}/hosts_file
- for iter in `seq 1 ${NUM_OPENSTACK_COMPUTE_NODES}`
- do
+ for iter in `seq 1 ${NUM_OPENSTACK_COMPUTE_NODES}`; do
COMPUTE_IP=OPENSTACK_COMPUTE_NODE_${iter}_IP
if [ "${!COMPUTE_IP}" == "${NODE_IP}" ]; then
CONTROL_HNAME=$(${SSH} ${CTRL_IP} "hostname")
fi
}
-function is_openstack_feature_enabled() {
- local feature=$1
- for enabled_feature in $(csv2ssv ${ENABLE_OS_SERVICES})
- do
- if [ "${enabled_feature}" == "${feature}" ]; then
- echo 1
- return
- fi
- done
- echo 0
-}
-
#Function to install rdo release
# This will help avoiding installing wrong version of packages which causes
# functionality failures
log_dir = /opt/stack/logs
[[post-config|/etc/nova/nova.conf]]
+[scheduler]
+discover_hosts_in_cells_interval = 30
+
[DEFAULT]
force_config_drive = False
force_raw_images = False
log_dir = /opt/stack/logs
-[scheduler]
-discover_hosts_in_cells_interval = 30
EOF
- echo "Control local.conf created:"
+ if [ "$(is_openstack_feature_enabled n-cpu)" == "1" ]; then
+ cat >> ${local_conf_file_name} << EOF
+use_neutron = True
+force_raw_images = False
+log_dir = /opt/stack/logs
+[libvirt]
+live_migration_uri = qemu+tcp://%s/system
+virt_type = qemu
+EOF
+ fi
+
+ if [ "$(is_openstack_feature_enabled n-cpu)" == "1" ]; then
+ echo "Combo local.conf created:"
+ else
+ echo "Control local.conf created:"
+ fi
cat ${local_conf_file_name}
} # create_control_node_local_conf()
PUBLIC_BRIDGE=${PUBLIC_BRIDGE}
PUBLIC_PHYSICAL_NETWORK=${PUBLIC_PHYSICAL_NETWORK}
ODL_PROVIDER_MAPPINGS=${ODL_PROVIDER_MAPPINGS}
-Q_L3_ENABLED=True
-ODL_L3=${ODL_L3}
EOF
if [[ "${ENABLE_OS_PLUGINS}" =~ networking-odl ]]; then
}
ODL_PROVIDER_MAPPINGS="\${PUBLIC_PHYSICAL_NETWORK}:${PUBLIC_BRIDGE}"
-ODL_L3=False
RECLONE=False
ODL_PORT=8181
echo "Install rdo release to avoid incompatible Package versions"
install_rdo_release ${!COMPUTEIP}
setup_live_migration_compute ${!COMPUTEIP} ${!CONTROLIP}
- echo "Stack the compute node ${i} of ${NUM_OPENSTACK_COMPUTE_NODES}: ${COMPUTEIP}"
+ echo "Stack the compute node ${i} of ${NUM_OPENSTACK_COMPUTE_NODES}: ${!COMPUTEIP}"
ssh ${!COMPUTEIP} "cd /opt/stack/devstack; nohup ./stack.sh > /opt/stack/devstack/nohup.out 2>&1 &"
ssh ${!COMPUTEIP} "ps -ef | grep stack.sh"
os_node_list+=("${!COMPUTEIP}")
expected_num_hypervisors=1
else
expected_num_hypervisors=${NUM_COMPUTES_PER_SITE}
+ if [ "$(is_openstack_feature_enabled n-cpu)" == "1" ]; then
+ expected_num_hypervisors=$((expected_num_hypervisors + 1))
+ fi
fi
num_hypervisors=$(${SSH} ${!CONTROLIP} "cd /opt/stack/devstack; source openrc admin admin; openstack hypervisor list -f value | wc -l" | tail -1 | tr -d "\r")
if ! [ "${num_hypervisors}" ] || ! [ ${num_hypervisors} -eq ${expected_num_hypervisors} ]; then
which neutron
neutron --version
+stacktime=$(timer $totaltmr)
+printf "Stacking elapsed time: %s\n" "${stacktime}"
+
echo "Starting Robot test suites ${SUITES} ..."
# please add pybot -v arguments on a single line and alphabetized
suite_num=0
ssh ${ODL_SYSTEM_IP} "du -hs /tmp/${BUNDLEFOLDER}/data/log/*"
echo "Tests Executed"
-
+printf "Total elapsed time: %s, stacking time: %s\n" "$(timer $totaltmr)" "${stacktime}"
true # perhaps Jenkins is testing last exit code
# vim: ts=4 sw=4 sts=4 et ft=sh :
odl-ml2-port-binding: 'pseudo-agentdb-binding'
openstack_system_image: '{openstack_system_image_queens}'
openstack_system2_image: '{openstack_system_image_queens}'
+
+- project:
+ name: netvirt-csit-1cmb-0ctl-0cmp-openstack-integration-fluorine
+ jobs:
+ - inttest-csit-openstack
+
+ project: 'netvirt'
+ stream: 'fluorine'
+ branch: 'master'
+ testplan: '{project}-{topology}-openstack.txt'
+ odl-ml2-driver-version: 'v2'
+ enable-openstack-services: 'n-cpu,placement-api,tempest'
+ security-group-mode: 'stateful'
+ odl_system_flavor: odl-highcpu-8
+ openstack_system_flavor: odl-highcpu-8
+ os-cmb-cnt: 1
+ os-ctl-cnt: 0
+ os-cmp-cnt: 0
+
+ topology:
+ - 1node:
+ openstack_system2_count: 0
+ odl_system_count: 1
+ enable-haproxy: 'no'
+ 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,decanter-collector-jmx,decanter-appender-elasticsearch'
+
+ functionality:
+ - upstream-stateful
+ - upstream-stateful-itm-direct-tunnels:
+ enable-itm-direct-tunnels: 'true'
+ - 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:
+ 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/pike'
+ odl-ml2-branch: 'stable/pike'
+ odl-ml2-port-binding: 'pseudo-agentdb-binding'
+ openstack_system_image: '{openstack_system_image_pike}'
+ openstack_system2_image: '{openstack_system_image_pike}'
+ enable-openstack-network-services: '{openstack_legacy_default_network_services}'
+ - queens:
+ openstack-branch: 'stable/queens'
+ odl-ml2-branch: 'stable/queens'
+ odl-ml2-port-binding: 'pseudo-agentdb-binding'
+ openstack_system_image: '{openstack_system_image_queens}'
+ openstack_system2_image: '{openstack_system_image_queens}'
project: '{project}'
branch: '{branch}'
files: '**'
+ forbidden-files: ''
builders:
- opflex-build:
gerrit-server-name: '{gerrit-server-name}'
name: 'opflex'
branch: '{branch}'
+ files: '**'
+ forbidden-files: ''
builders:
- opflex-build:
project: '{project}'
branch: '{branch}'
files: '**'
+ forbidden-files: ''
+
publishers:
- lf-infra-publish
project: '{project}'
branch: '{branch}'
files: '**'
+ forbidden-files: ''
publishers:
- lf-infra-publish
project: '{project}'
branch: '{branch}'
files: 'packages/**'
+ forbidden-files: ''
publishers:
- lf-infra-publish
project: '{project}'
branch: '{branch}'
files: '**'
+ forbidden-files: ''
publishers:
- lf-infra-publish
file-paths:
- compare-type: ANT
pattern: '{files}'
+ forbidden-file-paths:
+ - compare-type: ANT
+ pattern: '{forbidden-files}'
# TODO: Unify argument names across gerrit-trigger-* macros.
- trigger:
branches:
- branch-compare-type: 'ANT'
branch-pattern: '**/{branch}'
+ file-paths:
+ - compare-type: ANT
+ pattern: '{files}'
+ forbidden-file-paths:
+ - compare-type: ANT
+ pattern: '{forbidden-files}'
skip-vote:
successful: true
failed: true
gerrit-server-name: '{gerrit-server-name}'
name: '{project}'
branch: '{branch}'
+ files: '**'
+ forbidden-files: ''
prebuilders:
- jacoco-nojava-workaround
deploy-unstable: false
- lf-jacoco-report
- lf-infra-publish
- - trigger:
- project: 'distribution-merge-{stream}'
- threshold: SUCCESS