--- /dev/null
+---
+project: 'Release Engineering (Releng)'
+project_creation_date: '2015-06-14'
+project_category: 'Integration & Testing'
+lifecycle_state: 'Incubation'
+project_lead: &opnfv_releng_ptl
+ name: 'Fatih Degirmenci'
+ email: 'fatih.degirmenci@ericsson.com'
+ id: 'fdegir'
+ company: 'Ericsson'
+ timezone: 'Europe/Stockholm'
+primary_contact: *opnfv_releng_ptl
+issue_tracking:
+ type: 'jira'
+ url: 'https://jira.opnfv.org/projects/RELENG'
+ key: 'RELENG'
+mailing_list:
+ type: 'mailman2'
+ url: 'opnfv-tech-discuss@lists.opnfv.org'
+ tag: '[releng]'
+realtime_discussion:
+ type: 'irc'
+ server: 'freenode.net'
+ channel: '#lf-releng'
+meetings:
+ - type: 'gotomeeting+irc'
+ agenda: 'https://wiki.opnfv.org/display/INF/Infra+Working+Group'
+ url: 'https://global.gotomeeting.com/join/819733085'
+ server: 'freenode.net'
+ channel: '#opnfv-meeting'
+ repeats: 'weekly'
+ time: '16:00 UTC'
+repositories:
+ - 'releng'
+ - 'releng-anteater'
+ - 'releng-testresults'
+ - 'releng-utils'
+ - 'releng-xci'
+committers:
+ - <<: *opnfv_releng_ptl
+ - name: 'Aric Gardner'
+ email: 'agardner@linuxfoundation.org'
+ company: 'The Linux Foundation'
+ id: 'agardner'
+ timezone: 'Canada/Atlantic'
+ - name: 'Tim Rozet'
+ email: 'trozet@redhat.com'
+ company: 'Red Hat'
+ id: 'trozet'
+ timezone: 'America/New_York'
+ - name: 'Morgan Richomme'
+ email: 'morgan.richomme@orange.com'
+ company: 'Orange'
+ id: 'mrichomme'
+ timezone: 'Europe/Paris'
+ - name: 'Jose Lausuch'
+ company: 'SUSE'
+ email: 'jose.lausuch@ericsson.com'
+ id: 'jose.lausuch'
+ timezone: 'Europe/Madrid'
+ - name: 'Ryota Mibu'
+ company: 'NEC'
+ email: 'r-mibu@cq.jp.nec.com'
+ id: 'r-mibu'
+ timezone: 'Asia/Tokyo'
+ - name: 'Mei Mei'
+ company: 'Huawei'
+ email: 'meimei@huawei.com'
+ id: 'm00133142'
+ timezone: 'Asia/Shanghai'
+ - name: 'Trevor Bramwell'
+ company: 'The Linux Foundation'
+ email: 'tbramwell@linuxfoundation.org'
+ id: 'bramwelt'
+ timezone: 'America/Los_Angeles'
+ - name: 'Serena Feng'
+ company: 'ZTE'
+ email: 'feng.xiaowei@zte.com.cn'
+ id: 'SerenaFeng'
+ timezone: 'Asia/Shanghai'
+ - name: 'Yolanda Robla Mota'
+ company: 'Red Hat'
+ email: 'yroblamo@redhat.com'
+ id: 'yrobla'
+ timezone: 'America/New_York'
+ - name: 'Markos Chandras'
+ company: 'SUSE'
+ email: 'mchandras@suse.de'
+ id: 'mchandras'
+ timezone: 'Europe/Berlin'
+ - name: 'Luke Hinds'
+ company: 'Red Hat'
+ email: 'lhinds@redhat.com'
+ id: 'lukehinds'
+ timezone: 'Europe/London'
+tsc:
+ approval: 'http://ircbot.wl.linuxfoundation.org/meetings/opnfv-meeting/2015/opnfv-meeting.2015-07-14-14.00.html'
+ changes:
+ - type: 'removal'
+ name: 'Guy Rodrigue Koffi'
+ link: ''
+ - type: 'removal'
+ name: 'Victor Laza'
+ link: 'http://meetbot.opnfv.org/meetings/opnfv-meeting/2016/opnfv-meeting.2016-02-16-14.59.html'
+ - type: 'promotion'
+ name: 'Mei Mei'
+ link: 'http://lists.opnfv.org/pipermail/opnfv-tsc/2016-March/002228.html'
+ - type: 'removal'
+ name: 'Peter Banzi'
+ link: ''
+ - type: 'promotion'
+ name: 'Trevor Bramwell'
+ link: 'http://lists.opnfv.org/pipermail/opnfv-tech-discuss/2016-July/011659.html'
+ - type: 'promotion'
+ name: 'Serena Feng'
+ link: ''
+ - type: 'promotion'
+ name: 'Yolanda Robla Mota'
+ link: ''
+ - type: 'promotion'
+ name: 'Markos'
+ link: ''
+ - type: 'promotion'
+ name: 'Luke Hinds'
+ link: ''
<<: *master
- 'os-odl-bgpvpn-ha':
<<: *master
+ - 'os-odl-bgpvpn-noha':
+ <<: *master
- 'os-ovn-nofeature-noha':
<<: *master
- 'os-nosdn-fdio-noha':
kill-phase-on: NEVER
abort-all-job: true
git-revision: false
+ - name: 'apex-os-odl-bgpvpn-noha-baremetal-master'
+ node-parameters: false
+ current-parameters: false
+ predefined-parameters: |
+ OPNFV_CLEAN=yes
+ kill-phase-on: NEVER
+ abort-all-job: true
+ git-revision: false
- name: 'apex-os-ovn-nofeature-noha-baremetal-master'
node-parameters: false
current-parameters: false
- 'os-odl-nofeature-ha'
- 'os-odl-nofeature-noha'
- 'os-odl-bgpvpn-ha'
+ - 'os-odl-bgpvpn-noha'
- 'os-ovn-nofeature-noha'
- 'os-nosdn-fdio-noha'
- 'os-nosdn-fdio-ha'
project: '{name}'
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
-
jobs:
- - 'auto-verify-{stream}'
-
-- job-template:
- name: 'auto-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
+ - '{project}-verify-basic'
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: availability
project: '{name}'
jobs:
- - 'availability-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: 'false'
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: 'false'
-
-- job-template:
- name: 'availability-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
+ - '{project}-verify-basic'
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: conductor
project: '{name}'
jobs:
- - 'conductor-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'conductor-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
+ - '{project}-verify-basic'
jobs:
- 'container4nfv-verify-{stream}'
- - 'container4nfv-daily-{stream}'
+ - 'container4nfv-daily-upload-{stream}'
+ - 'container4nfv-daily-deploy-{stream}'
stream:
- master:
cd $WORKSPACE/ci
./build.sh
+- job-template:
+ name: 'container4nfv-daily-upload-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ concurrent: false
+
+ scm:
+ - git-scm
+
+ wrappers:
+ - fix-workspace-permissions
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - 'opnfv-build-ubuntu-defaults'
+ - 'container4nfv-defaults':
+ gs-pathname: '{gs-pathname}'
+
+ builders:
+ - shell: |
+ cd $WORKSPACE/ci
+ ./upload.sh
- job-template:
- name: 'container4nfv-daily-{stream}'
+ name: 'container4nfv-daily-deploy-{stream}'
project-type: freestyle
- shell: |
cd $WORKSPACE/ci
./deploy.sh
+
+###################
+# parameter macros
+###################
+- parameter:
+ name: 'container4nfv-defaults'
+ parameters:
+ - string:
+ name: GS_URL
+ default: artifacts.opnfv.org/$PROJECT{gs-pathname}
+ description: "URL to Google Storage."
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: copper
project: '{name}'
jobs:
- - 'copper-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'copper-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- #!/bin/bash
- set -o errexit
- set -o nounset
- set -o pipefail
-
- # shellcheck -f tty tests/*.sh
+ - '{project}-verify-basic'
- baremetal:
slave-label: zte-pod3
<<: *master
-
+ - zte-pod9:
+ slave-label: zte-pod9
+ <<: *master
# -------------------------------
# None-CI PODs
# -------------------------------
# ODL_L3 scenarios
- 'os-odl-nofeature-ha':
auto-trigger-name: 'daisy-{scenario}-{pod}-daily-{stream}-trigger'
+ # ovs_dpdk scenarios
+ - 'os-nosdn-ovs_dpdk-noha':
+ auto-trigger-name: 'daisy-{scenario}-{pod}-daily-{stream}-trigger'
jobs:
- '{project}-{scenario}-{pod}-daily-{stream}'
- trigger:
name: 'daisy-os-nosdn-nofeature-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '0 18 * * *'
+ - timed: '0 12 * * *'
# Basic NOHA Scenarios
- trigger:
name: 'daisy-os-nosdn-nofeature-noha-baremetal-daily-master-trigger'
- trigger:
name: 'daisy-os-odl-nofeature-ha-baremetal-daily-master-trigger'
triggers:
- - timed: '0 12 * * *'
+ - timed: '0 18 * * *'
+# ovs_dpdk Scenarios
+- trigger:
+ name: 'daisy-os-nosdn-ovs_dpdk-noha-baremetal-daily-master-trigger'
+ triggers:
+ - timed: ''
# ----------------------------------------------
# Triggers for job running on daisy-virtual against master branch
name: 'daisy-os-odl-nofeature-ha-virtual-daily-master-trigger'
triggers:
- timed: '0 12 * * *'
+# ovs_dpdk Scenarios
+- trigger:
+ name: 'daisy-os-nosdn-ovs_dpdk-noha-virtual-daily-master-trigger'
+ triggers:
+ - timed: ''
# ----------------------------------------------
# Triggers for job running on daisy-baremetal against euphrates branch
name: 'daisy-os-odl-nofeature-ha-baremetal-daily-euphrates-trigger'
triggers:
- timed: '0 20 * * *'
+# ovs_dpdk Scenarios
+- trigger:
+ name: 'daisy-os-nosdn-ovs_dpdk-noha-baremetal-daily-euphrates-trigger'
+ triggers:
+ - timed: ''
# ----------------------------------------------
# Triggers for job running on daisy-virtual against euphrates branch
name: 'daisy-os-odl-nofeature-ha-virtual-daily-euphrates-trigger'
triggers:
- timed: '0 20 * * *'
+# ovs_dpdk Scenarios
+- trigger:
+ name: 'daisy-os-nosdn-ovs_dpdk-noha-virtual-daily-euphrates-trigger'
+ triggers:
+ - timed: ''
+
+# ----------------------------------------------
+# ZTE POD9 Triggers running against master branch
+# ----------------------------------------------
+# ovs_dpdk Scenarios
+- trigger:
+ name: 'daisy-os-nosdn-ovs_dpdk-noha-zte-pod9-daily-master-trigger'
+ triggers:
+ - timed: '0 10 * * *'
+# Basic HA Scenarios
+- trigger:
+ name: 'daisy-os-nosdn-nofeature-ha-zte-pod9-daily-master-trigger'
+ triggers:
+ - timed: ''
+# Basic NOHA Scenarios
+- trigger:
+ name: 'daisy-os-nosdn-nofeature-noha-zte-pod9-daily-master-trigger'
+ triggers:
+ - timed: ''
+# ODL Scenarios
+- trigger:
+ name: 'daisy-os-odl-nofeature-ha-zte-pod9-daily-master-trigger'
+ triggers:
+ - timed: ''
# clone the securedlab repo
cd $WORKSPACE
-SECURELAB_DIR=/var/tmp/opnfv-securedlab
-echo "Cloning securedlab repo $BRANCH to $SECURELAB_DIR"
-rm -rf $SECURELAB_DIR
-git clone ssh://jenkins-zte@gerrit.opnfv.org:29418/securedlab --quiet \
- --branch $BRANCH $SECURELAB_DIR
+# There are no PDFs in euphrates branch of pharos repo.
+if [[ "$BRANCH" =~ "euphrates" ]]; then
+ CONFIG_REPO_NAME=securedlab
+else
+ CONFIG_REPO_NAME=pharos
+fi
+
+LABS_DIR=/var/tmp/opnfv-${CONFIG_REPO_NAME}
+
+echo "Cloning ${CONFIG_REPO_NAME} repo $BRANCH to $LABS_DIR"
+rm -rf $LABS_DIR
+git clone ssh://jenkins-zte@gerrit.opnfv.org:29418/${CONFIG_REPO_NAME} \
+ --quiet --branch $BRANCH $LABS_DIR
-DEPLOY_COMMAND="sudo -E ./ci/deploy/deploy.sh -L $SECURELAB_DIR \
+DEPLOY_COMMAND="sudo -E ./ci/deploy/deploy.sh -L $LABS_DIR \
-l $LAB_NAME -p $POD_NAME -B $BRIDGE -s $DEPLOY_SCENARIO"
# log info to console
task:
- verify:
auto-trigger-name: 'doctor-verify'
- is-python: false
- - python-verify:
- auto-trigger-name: 'doctor-verify'
- is-python: true
exclude:
- installer: 'apex'
- git-scm-gerrit
triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- file-paths:
- - compare-type: ANT
- pattern: 'doctor_tests/**'
+ - 'doctor-verify':
+ project: '{project}'
+ branch: '{branch}'
+ files: 'doctor_tests/**'
+ is-skip-vote: false
builders:
- shell: |
publishers:
- 'doctor-verify-unit-test-publishers-macro'
-
- job-template:
name: 'doctor-{task}-{inspector}-{stream}'
- string:
name: TESTCASE_OPTIONS
# yamllint disable rule:line-length
- default: '-e INSPECTOR_TYPE={inspector} -e PYTHON_ENABLE={is-python} -v $WORKSPACE:/home/opnfv/repos/doctor'
+ default: '-e INSPECTOR_TYPE={inspector} -v $WORKSPACE:/home/opnfv/repos/doctor'
# yamllint enable rule:line-length
description: 'Addtional parameters specific to test case(s)'
# functest-parameter
project: '{project}'
branch: '{branch}'
files: 'doctor_tests/**'
+ is-skip-vote: true
builders:
- shell: |
- builder:
name: 'doctor-verify-unit-test-builders-macro'
builders:
- - shell: "[ -e tests/run.sh ] && bash -n ./tests/run.sh"
+ - shell: "tox -e pep8"
+
- builder:
name: 'doctor-verify-installer-inspector-builders-macro'
builders:
- archive:
artifacts: 'functest_results/$FUNCTEST_SUITE_NAME.log'
- email-jenkins-admins-on-failure
+
- publisher:
name: 'doctor-verify-unit-test-publishers-macro'
publishers:
- email-jenkins-admins-on-failure
+ - archive:
+ artifacts: '.tox/'
+
#####################################
# trigger macros
- compare-type: ANT
pattern: '{files}'
skip-vote:
- successful: true
- failed: true
- unstable: true
- notbuilt: true
+ successful: '{is-skip-vote}'
+ failed: '{is-skip-vote}'
+ unstable: '{is-skip-vote}'
+ notbuilt: '{is-skip-vote}'
DOVETAIL_CONFIG=${DOVETAIL_HOME}/pre_config
mkdir -p ${DOVETAIL_CONFIG}
+ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+
sshkey=""
# The path of openrc.sh is defined in fetch_os_creds.sh
OPENRC=${DOVETAIL_CONFIG}/env_config.sh
EOF
fi
+if [[ ! "${SUT_BRANCH}" =~ "danube" && ${INSTALLER_TYPE} == 'fuel' && ${DEPLOY_TYPE} == 'baremetal' ]]; then
+ fuel_ctl_ssh_options="${ssh_options} -i ${SSH_KEY}"
+ ssh_user="ubuntu"
+ fuel_ctl_ip=$(ssh 2>/dev/null ${fuel_ctl_ssh_options} "${ssh_user}@${INSTALLER_IP}" \
+ "sudo salt --out yaml 'ctl*' pillar.get _param:openstack_control_address | \
+ awk '{print \$2; exit}'") &> /dev/null
+ cat << EOF >${DOVETAIL_CONFIG}/pod.yaml
+nodes:
+- {ip: ${fuel_ctl_ip}, name: node1, key_filename: /root/.ssh/id_rsa, role: controller, user: ${ssh_user}}
+
+EOF
+fi
+
if [[ ! -f ${DOVETAIL_CONFIG}/pod.yaml ]]; then
set +e
options="-u root -p r00tme"
elif [[ ${INSTALLER_TYPE} == apex ]]; then
options="-u stack -k /root/.ssh/id_rsa"
+ elif [[ ${INSTALLER_TYPE} == daisy ]]; then
+ options="-u root -p r00tme"
else
echo "Don't support to generate pod.yaml on ${INSTALLER_TYPE} currently."
echo "HA test cases may not run properly."
echo "HA test cases may not run properly."
fi
-ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
-
if [ "$INSTALLER_TYPE" == "fuel" ]; then
if [[ "${SUT_BRANCH}" =~ "danube" ]]; then
echo "Fetching id_rsa file from jump_server $INSTALLER_IP..."
sudo scp $ssh_options stack@${INSTALLER_IP}:~/.ssh/id_rsa ${DOVETAIL_CONFIG}/id_rsa
fi
+if [ "$INSTALLER_TYPE" == "daisy" ]; then
+ echo "Fetching id_dsa file from jump_server $INSTALLER_IP..."
+ sshpass -p r00tme sudo scp $ssh_options root@${INSTALLER_IP}:~/.ssh/id_dsa ${DOVETAIL_CONFIG}/id_rsa
+fi
+
+
image_path=${HOME}/opnfv/dovetail/images
if [[ ! -d ${image_path} ]]; then
mkdir -p ${image_path}
public_url=$(sudo docker exec "$container_id" /bin/bash -c "${source_cmd} && ${get_public_url_cmd}")
sed -i 's#OS_AUTH_URL=.*#OS_AUTH_URL='"${public_url}"'#g' ${OPENRC}
sed -i 's/internal/public/g' ${OPENRC}
+ if [[ ${public_url} =~ 'v2' ]]; then
+ sed -i "s/OS_IDENTITY_API_VERSION=3/OS_IDENTITY_API_VERSION=2.0/g" ${OPENRC}
+ sed -i '/OS_PROJECT_DOMAIN_NAME/d' ${OPENRC}
+ sed -i '/OS_USER_DOMAIN_NAME/d' ${OPENRC}
+ fi
cat ${OPENRC}
fi
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: dpacc
project: '{name}'
jobs:
- - 'dpacc-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'dpacc-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
+ - '{project}-verify-basic'
--- /dev/null
+---
+##
+# Basic Job Config
+#
+# This is used for project which don't have any jobs of substance
+# defined yet, but still need 'Verified+1'.
+##
+- job-group:
+ name: '{project}-verify-basic'
+
+ stream:
+ - master:
+ branch: '{stream}'
+ gs-pathname: ''
+ disabled: false
+ - euphrates:
+ branch: 'stable/{stream}'
+ gs-pathname: '/{stream}'
+ disabled: false
+
+ jobs:
+ - '{project}-verify-{stream}'
+
+- job-template:
+ name: '{project}-verify-{stream}'
+
+ disabled: '{obj:disabled}'
+
+ parameters:
+ - project-parameter:
+ project: '{project}'
+ branch: '{branch}'
+ - 'opnfv-build-defaults'
+
+ scm:
+ - git-scm-gerrit
+
+ triggers:
+ - gerrit-trigger-patchset-created:
+ project: '{project}'
+ branch: '{branch}'
+ files: 'docs/**|.gitignore'
+
+ builders:
+ - shell: |
+ echo "Nothing to verify!"
default: $WORKSPACE/build_output
description: "Directory where the build artifact will be located upon the completion of the build."
+- parameter:
+ name: 'pharos-dashboard-defaults'
+ parameters:
+ - label:
+ name: SLAVE_LABEL
+ default: 'pharos-dashboard'
+ description: 'Slave label on Jenkins'
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+ - string:
+ name: BUILD_DIRECTORY
+ default: $WORKSPACE/build_output
+ description: "Directory where the build artifact will be located upon the completion of the build."
+
- parameter:
name: 'opnfv-build-defaults'
parameters:
default: 'br0'
description: 'pxe bridge for booting of Daisy master'
+- parameter:
+ name: 'zte-pod9-defaults'
+ parameters:
+ - node:
+ name: SLAVE_NAME
+ description: 'Slave name on Jenkins'
+ allowed-slaves:
+ - zte-pod9
+ default-slaves:
+ - zte-pod9
+ - string:
+ name: GIT_BASE
+ default: https://gerrit.opnfv.org/gerrit/$PROJECT
+ description: 'Git URL to use on this Jenkins Slave'
+ - string:
+ name: INSTALLER_IP
+ default: '10.20.7.2'
+ description: 'IP of the installer'
+ - string:
+ name: BRIDGE
+ default: 'br0'
+ description: 'pxe bridge for booting of Daisy master'
+
- parameter:
name: zte-virtual5-defaults
parameters:
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: ipv6
project: '{name}'
jobs:
- - 'ipv6-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'ipv6-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
+ - '{project}-verify-basic'
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: models
project: '{name}'
jobs:
- - 'models-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'models-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- #!/bin/bash
- set -o errexit
- set -o nounset
- set -o pipefail
-
- # shellcheck -f tty tests/*.sh
+ - '{project}-verify-basic'
project: '{name}'
jobs:
- - 'netready-verify-{stream}'
+ - '{project}-verify-{stream}'
- 'netready-build-gluon-packages-daily-{stream}'
stream:
gs-pathname: ''
disabled: false
-- job-template:
- name: 'netready-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
-
-
- job-template:
name: 'netready-build-gluon-packages-daily-{stream}'
project: '{name}'
jobs:
- - 'octopus-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'octopus-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
+ - '{project}-verify-basic'
file-paths:
- compare-type: ANT
pattern: '**/*.yaml'
+ - compare-type: ANT
+ pattern: 'config/installers/**/*.j2'
- compare-type: ANT
pattern: 'check-jinja2.sh'
skip-vote:
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: pharos
- '{name}-tools'
jobs:
- - '{project}-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
+ - '{project}-verify-basic'
+ - 'backup-pharos-dashboard'
- job-template:
- name: '{project}-verify-{stream}'
+ name: 'backup-pharos-dashboard'
disabled: '{obj:disabled}'
parameters:
- project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
+ project: 'pharos-tools'
+ branch: 'master'
+ - 'pharos-dashboard-defaults'
scm:
- git-scm-gerrit
triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
+ - timed: '@daily'
builders:
- shell: |
- echo "Nothing to verify!"
+ mkdir -p /home/backups/
+ DATE=$(date +%Y%m%d)
+ echo "-- $DATE --"
+ echo "Backing up Pharos Dashboard data..."
+ sudo docker run -it --rm \
+ -v pharos_data:/pharos_data:ro \
+ -v /tmp:/backup \
+ alpine \
+ tar -czf /backup/pharos-dashboard-db-$(date +%Y%m%d).tar.gz -C /pharos_data ./
+ sudo mv /tmp/pharos-dashboard-db-$(date +%Y%m%d).tar.gz /home/backups/
+ sudo chown $USER:$USER $WORKSPACE/backups/pharos-dashboard-db-$(date +%Y%m%d).tar.gz
+ echo "...complete"
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: prediction
project: '{name}'
jobs:
- - 'prediction-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'prediction-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
+ - '{project}-verify-basic'
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: promise
project: '{name}'
jobs:
- - 'promise-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'promise-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
+ - '{project}-verify-basic'
project: qtip
jobs:
- 'qtip-verify-{stream}'
- - 'qtip-verify-notebook-{stream}'
- - 'qtip-merged-notebook-{stream}'
stream:
- master:
branch: '{stream}'
- publish-coverage
- email-jenkins-admins-on-failure
-# upload juypter notebook to artifacts for review
+# Upload juypter notebook to artifacts for review
+# TODO(yujunz): deal with *.ipynb deletion
- job-template:
name: 'qtip-verify-notebook-{stream}'
receivers: >
cristina.pauna@enea.com
alexandru.avadanii@enea.com
- alexandru.nemes@enea.com
storperf-arm-receivers: &storperf-arm-receivers
receivers: >
cristina.pauna@enea.com
receivers: >
cristina.pauna@enea.com
alexandru.avadanii@enea.com
- alexandru.nemes@enea.com
- catalina.focsa@enea.com
delia.popescu@enea.com
other-receivers: &other-receivers
receivers: ''
<<: *other-receivers
- 'barometer':
project: 'barometer'
+ dockerdir: '.'
+ dockerfile: 'docker/Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'barometer-grafana':
+ project: 'barometer'
+ dockerdir: '.'
+ dockerfile: 'docker/barometer-grafana/Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'barometer-influxdb':
+ project: 'barometer'
+ dockerdir: '.'
+ dockerfile: 'docker/barometer-influxdb/Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'barometer-kafka':
+ project: 'barometer'
+ dockerdir: '.'
+ dockerfile: 'docker/barometer-kafka/Dockerfile'
+ <<: *master
+ <<: *other-receivers
+ - 'barometer-ves':
+ project: 'barometer'
+ dockerdir: '.'
+ dockerfile: 'docker/barometer-ves/Dockerfile'
<<: *master
<<: *other-receivers
- 'bottlenecks':
- 'qtip':
project: 'qtip'
dockerdir: '.'
- dockerfile: 'docker/Dockerfile'
+ dockerfile: 'docker/Dockerfile.local'
<<: *master
<<: *other-receivers
- 'storperf-master':
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: stor4nfv
project: '{name}'
jobs:
- - 'stor4nfv-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'stor4nfv-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
+ - '{project}-verify-basic'
---
-###################################################
-# All the jobs except verify have been removed!
-# They will only be enabled on request by projects!
-###################################################
- project:
name: ves
project: '{name}'
jobs:
- - 'ves-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'ves-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- - 'opnfv-build-ubuntu-defaults'
-
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
- disable-strict-forbidden-file-verification: 'true'
- forbidden-file-paths:
- - compare-type: ANT
- pattern: 'docs/**|.gitignore'
-
- builders:
- - shell: |
- #!/bin/bash
- set -o errexit
- set -o nounset
- set -o pipefail
-
- # shellcheck -f tty tests/*.sh
- # shellcheck -f tty utils/*.sh
+ - '{project}-verify-basic'
project: '{name}'
jobs:
- - 'vnf_forwarding_graph-verify-{stream}'
-
- stream:
- - master:
- branch: '{stream}'
- gs-pathname: ''
- disabled: false
- - euphrates:
- branch: 'stable/{stream}'
- gs-pathname: '/{stream}'
- disabled: false
-
-- job-template:
- name: 'vnf_forwarding_graph-verify-{stream}'
-
- disabled: '{obj:disabled}'
-
- parameters:
- - project-parameter:
- project: '{project}'
- branch: '{branch}'
- scm:
- - git-scm-gerrit
-
- triggers:
- - gerrit:
- server-name: 'gerrit.opnfv.org'
- trigger-on:
- - patchset-created-event:
- exclude-drafts: 'false'
- exclude-trivial-rebase: 'false'
- exclude-no-code-change: 'false'
- - draft-published-event
- - comment-added-contains-event:
- comment-contains-value: 'recheck'
- - comment-added-contains-event:
- comment-contains-value: 'reverify'
- projects:
- - project-compare-type: 'ANT'
- project-pattern: '{project}'
- branches:
- - branch-compare-type: 'ANT'
- branch-pattern: '**/{branch}'
-
- builders:
- - shell: |
- echo "Nothing to verify!"
+ - '{project}-verify-basic'
--- /dev/null
+##############################################################################
+# Copyright (c) 2017 ZTE Corporation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+from opnfv.deployment import manager
+from opnfv.utils import opnfv_logger as logger
+from opnfv.utils import ssh_utils
+
+logger = logger.Logger(__name__).getLogger()
+
+
+class DaisyAdapter(manager.DeploymentHandler):
+
+ def __init__(self, installer_ip, installer_user, installer_pwd):
+ super(DaisyAdapter, self).__init__(installer='daisy',
+ installer_ip=installer_ip,
+ installer_user=installer_user,
+ installer_pwd=installer_pwd,
+ pkey_file=None)
+
+ def _get_clusters(self):
+ clusters = []
+ cmd = 'source /root/daisyrc_admin; daisy cluster-list | grep -v "+--"'
+ output = self.installer_node.run_cmd(cmd)
+ lines = output.rsplit('\n')
+ if len(lines) < 2:
+ logger.info("No environments found in the deployment.")
+ return None
+ else:
+ fields = lines[0].rsplit('|')
+
+ index_id = -1
+ index_status = -1
+ index_name = -1
+ index_nodes = -1
+
+ for i in range(len(fields)):
+ if "ID" in fields[i]:
+ index_id = i
+ elif "Status" in fields[i]:
+ index_status = i
+ elif "Name" in fields[i]:
+ index_name = i
+ elif "Nodes" in fields[i]:
+ index_nodes = i
+
+ # order env info
+ for i in range(1, len(lines)):
+ fields = lines[i].rsplit('|')
+ dict = {"id": fields[index_id].strip(),
+ "status": fields[index_status].strip(),
+ "name": fields[index_name].strip(),
+ "nodes": fields[index_nodes].strip()}
+ clusters.append(dict)
+
+ return clusters
+
+ def get_nodes(self, options=None):
+ if hasattr(self, 'nodes') and len(self.nodes) > 0:
+ if options and 'cluster' in options and options['cluster']:
+ nodes = []
+ for node in self.nodes:
+ if str(node.info['cluster']) == str(options['cluster']):
+ nodes.append(node)
+ return nodes
+ else:
+ return self.nodes
+
+ clusters = self._get_clusters()
+ nodes = []
+ for cluster in clusters:
+ if options and 'cluster' in options and options['cluster']:
+ if cluster["id"] != options['cluster']:
+ continue
+ cmd = 'source /root/daisyrc_admin; daisy host-list ' \
+ '--cluster-id {} | grep -v "+--"'.format(cluster["id"])
+ output = self.installer_node.run_cmd(cmd)
+ lines = output.rsplit('\n')
+ if len(lines) < 2:
+ logger.info("No nodes found in the cluster {}".format(
+ cluster["id"]))
+ continue
+
+ fields = lines[0].rsplit('|')
+ index_id = -1
+ index_status = -1
+ index_name = -1
+
+ for i in range(len(fields)):
+ if "ID" in fields[i]:
+ index_id = i
+ elif "Role_status" in fields[i]:
+ index_status = i
+ elif "Name" in fields[i]:
+ index_name = i
+
+ for i in range(1, len(lines)):
+ fields = lines[i].rsplit('|')
+ id = fields[index_id].strip().encode()
+ status_node = fields[index_status].strip().encode().lower()
+ name = fields[index_name].strip().encode()
+ ip = ".".join(name.split("-")[1:])
+
+ cmd_role = 'source /root/daisyrc_admin; ' \
+ 'daisy host-detail {} | grep "^| role"'.format(id)
+ output_role = self.installer_node.run_cmd(cmd_role)
+ role_all = output_role.rsplit('|')[2].strip().encode()
+ roles = []
+ if 'COMPUTER' in role_all:
+ roles.append(manager.Role.COMPUTE)
+ if 'CONTROLLER_LB' in role_all or 'CONTROLLER_HA' in role_all:
+ roles.append(manager.Role.CONTROLLER)
+
+ ssh_client = None
+ if status_node == 'active':
+ status = manager.NodeStatus.STATUS_OK
+ proxy = {'ip': self.installer_ip,
+ 'username': self.installer_user,
+ 'password': self.installer_pwd,
+ 'pkey_file': '/root/.ssh/id_dsa'}
+ ssh_client = ssh_utils.get_ssh_client(hostname=ip,
+ username='root',
+ proxy=proxy)
+ else:
+ status = manager.NodeStatus.STATUS_INACTIVE
+
+ node = DaisyNode(id, ip, name, status, roles, ssh_client)
+ nodes.append(node)
+ return nodes
+
+ def get_openstack_version(self):
+ cmd = 'docker exec nova_api nova-manage version 2>/dev/null'
+ version = None
+ for node in self.nodes:
+ if node.is_controller() and node.is_active():
+ version = node.run_cmd(cmd)
+ break
+ return version
+
+ def get_sdn_version(self):
+ version = None
+ for node in self.nodes:
+ if manager.Role.CONTROLLER in node.roles and node.is_active():
+ cmd = 'docker inspect --format=\'{{.Name}}\' `docker ps -q`'
+ output = node.run_cmd(cmd)
+ if '/opendaylight' in output.rsplit('\n'):
+ cmd2 = 'docker exec opendaylight ' \
+ 'sudo yum info opendaylight 2>/dev/null ' \
+ '| grep Version | tail -1'
+ odl_ver = node.run_cmd(cmd2)
+ if odl_ver:
+ version = 'OpenDaylight: ' + odl_ver.split(' ')[-1]
+ break
+ return version
+
+ def get_deployment_status(self):
+ clusters = self._get_clusters()
+ if clusters is None or len(clusters) == 0:
+ return 'unknown'
+ else:
+ return clusters[0]['status']
+
+
+class DaisyNode(manager.Node):
+
+ def __init__(self,
+ id,
+ ip,
+ name,
+ status,
+ roles=None,
+ ssh_client=None,
+ info=None):
+ super(DaisyNode, self).__init__(id, ip, name, status,
+ roles, ssh_client, info)
+
+ def is_odl(self):
+ '''
+ Returns if the node is an opendaylight
+ '''
+ if manager.Role.CONTROLLER in self.roles and self.is_active():
+ cmd = 'docker inspect --format=\'{{.Name}}\' `docker ps -q`'
+ output = self.run_cmd(cmd)
+ if '/opendaylight' in output.rsplit('\n'):
+ return True
+ return False
+
+ def get_ovs_info(self):
+ '''
+ Returns the ovs version installed
+ '''
+ if self.is_active():
+ cmd = 'docker exec openvswitch_vswitchd ' \
+ 'ovs-vsctl --version | head -1 | awk \'{print $NF}\''
+ return self.run_cmd(cmd)
+ return None
from opnfv.deployment.compass import adapter as compass_adapter
from opnfv.deployment.fuel import adapter as fuel_adapter
from opnfv.deployment.osa import adapter as osa_adapter
+from opnfv.deployment.daisy import adapter as daisy_adapter
from opnfv.utils import opnfv_logger as logger
logger = logger.Logger(__name__).getLogger()
return osa_adapter.OSAAdapter(installer_ip=installer_ip,
installer_user=installer_user,
pkey_file=pkey_file)
+ elif installer.lower() == "daisy":
+ return daisy_adapter.DaisyAdapter(installer_ip=installer_ip,
+ installer_user=installer_user,
+ installer_pwd=installer_pwd)
else:
raise Exception("Installer adapter is not implemented for "
"the given installer.")
client = paramiko.SSHClient()
else:
client = ProxyHopClient()
+ proxy_pkey_file = proxy.get('pkey_file', '/root/.ssh/id_rsa')
client.configure_jump_host(proxy['ip'],
proxy['username'],
- proxy['password'])
+ proxy['password'],
+ proxy_pkey_file)
if client is None:
raise Exception('Could not connect to client')
jh_ssh_key='/root/.ssh/id_rsa'):
self.proxy_ip = jh_ip
self.proxy_ssh_key = jh_ssh_key
+ self.local_ssh_key = os.path.join(os.getcwd(),
+ jh_ssh_key.split('/')[-1])
self.proxy_ssh = paramiko.SSHClient()
self.proxy_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.proxy_ssh.connect(jh_ip,
self.local_ssh_key)
if get_file_res is None:
raise Exception('Could\'t fetch SSH key from jump host')
- proxy_key = (paramiko.RSAKey
- .from_private_key_file(self.local_ssh_key))
+ if self.proxy_ssh_key.split('/')[-1] == 'id_dsa':
+ proxy_key = (paramiko.DSSKey
+ .from_private_key_file(self.local_ssh_key))
+ else:
+ proxy_key = (paramiko.RSAKey
+ .from_private_key_file(self.local_ssh_key))
self.proxy_channel = self.proxy_transport.open_channel(
"direct-tcpip",
if args.INSTALLER_TYPE == 'compass':
for item in node_list:
item['password'] = 'root'
+ elif args.INSTALLER_TYPE == 'daisy':
+ for item in node_list:
+ item['key_filename'] = '/root/.ssh/id_dsa'
else:
for item in node_list:
item['key_filename'] = args.sshkey