xci: Enable VM provisioning using bifrost for daily runs 03/31103/4
authorFatih Degirmenci <fatih.degirmenci@ericsson.com>
Mon, 20 Mar 2017 14:01:52 +0000 (15:01 +0100)
committerFatih Degirmenci <fatih.degirmenci@ericsson.com>
Mon, 20 Mar 2017 21:31:42 +0000 (22:31 +0100)
- create script to provision VMs (log upload is not enabled yet)
- remove leftover inventory files (baremetal.csv, baremetal.json)
- set BIFROST_INVENTORY_SOURCE as needed by stable/ocata
- rename playbook used during bifrost and adjust scripts using it
- remove puppet-infracloud stuff

Change-Id: I1c4412d0725c00ab9a1b3497e358d33998b4e7e6
Signed-off-by: Fatih Degirmenci <fatih.degirmenci@ericsson.com>
jjb/xci/bifrost-verify.sh
jjb/xci/xci-daily-jobs.yml
jjb/xci/xci-provision.sh
prototypes/bifrost/playbooks/opnfv-virtual.yaml [moved from prototypes/bifrost/playbooks/test-bifrost-infracloud.yaml with 98% similarity]
prototypes/bifrost/scripts/destroy-env.sh
prototypes/bifrost/scripts/osa-bifrost-deployment.sh
prototypes/bifrost/scripts/test-bifrost-deployment.sh

index 4115ffc..e0c5090 100755 (executable)
@@ -95,14 +95,13 @@ if [[ ! "$DISTRO" =~ (trusty|centos7|suse) ]]; then
 fi
 
 # remove previously cloned repos
-sudo /bin/rm -rf /opt/bifrost /opt/puppet-infracloud /opt/stack /opt/releng
+sudo /bin/rm -rf /opt/bifrost /opt/stack /opt/releng
 
 # Fix up permissions
 fix_ownership
 
 # clone all the repos first and checkout the patch afterwards
 sudo git clone https://git.openstack.org/openstack/bifrost /opt/bifrost
-sudo git clone https://git.openstack.org/openstack-infra/puppet-infracloud /opt/puppet-infracloud
 sudo git clone https://gerrit.opnfv.org/gerrit/releng /opt/releng
 
 # checkout the patch
@@ -112,13 +111,6 @@ sudo git fetch $PROJECT_REPO $GERRIT_REFSPEC && sudo git checkout FETCH_HEAD
 # combine opnfv and upstream scripts/playbooks
 sudo /bin/cp -rf /opt/releng/prototypes/bifrost/* /opt/bifrost/
 
-# place bridge creation file on the right path
-sudo mkdir -p /opt/puppet-infracloud/files/elements/infra-cloud-bridge/static/opt
-sudo cp /opt/puppet-infracloud/templates/bifrost/create_bridge.py.erb /opt/puppet-infracloud/files/elements/infra-cloud-bridge/static/opt/create_bridge.py
-
-# replace bridge name
-sudo sed -i s/"<%= @bridge_name -%>"/br_opnfv/g /opt/puppet-infracloud/files/elements/infra-cloud-bridge/static/opt/create_bridge.py
-
 # cleanup remnants of previous deployment
 cd /opt/bifrost
 sudo -E ./scripts/destroy-env.sh
index a71b9b7..c685aa9 100644 (file)
@@ -5,11 +5,13 @@
 #--------------------------------
     master: &master
         stream: master
-        branch: '{stream}'
+        openstack-branch: '{stream}'
+        opnfv-branch: 'master'
         gs-pathname: ''
     ocata: &ocata
         stream: ocata
-        branch: 'stable/{stream}'
+        openstack-branch: 'stable/{stream}'
+        opnfv-branch: 'master'
         gs-pathname: '/{stream}'
 #--------------------------------
 #       scenarios
 #        Phases
 #--------------------------------
     phase:
-        - 'provision':
-            project: 'openstack'
-            project-repo: 'https://git.openstack.org/openstack/bifrost'
-            project-branch: '{branch}'
-            clone-location: '/opt/bifrost'
-        - 'deploy':
-            project: 'openstack'
-            project-repo: 'https://git.openstack.org/openstack/openstack-ansible'
-            project-branch: '{branch}'
-            clone-location: '/opt/openstack-ansible'
-        - 'functest':
-            project: 'opnfv'
-            project-repo: 'https://gerrit.opnfv.org/gerrit/functest'
-            project-branch: 'master'
-            clone-location: '/opt/functest'
+        - 'provision'
+        - 'deploy'
+        - 'functest'
 #--------------------------------
 # jobs
 #--------------------------------
 
     parameters:
         - string:
-            name: PROJECT
-            default: '{project}'
+            name: OPENSTACK_BRANCH
+            default: '{openstack-branch}'
         - string:
-            name: PROJECT_REPO
-            default: '{project-repo}'
+            name: OPNFV_BRANCH
+            default: '{opnfv-branch}'
         - string:
-            name: DEPLOY_SCENARIO
-            default: '{scenario}'
+            name: USE_PROMOTED_VERSIONS
+            default: 'true'
         - string:
-            name: CLONE_LOCATION
-            default: '{clone-location}'
+            name: DEPLOY_SCENARIO
+            default: 'os-nosdn-nofeature-ha'
         - string:
             name: DISTRO
             default: '{distro}'
             name: CLEAN_DIB_IMAGES
             default: 'true'
 
-    scm:
-        - git:
-            url: '$PROJECT_REPO'
-            branches:
-                - 'origin/{project-branch}'
-            wipe-workspace: true
-            timeout: 15
-
     builders:
         - description-setter:
             description: "Built on $NODE_NAME - Scenario: $DEPLOY_SCENARIO"
index b77c79c..4308c7e 100755 (executable)
@@ -1,3 +1,74 @@
 #!/bin/bash
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 Ericsson AB 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
+##############################################################################
+set -o errexit
+set -o nounset
+set -o pipefail
 
-echo "Provisioning via bifrost"
+trap cleanup_and_upload EXIT
+
+function fix_ownership() {
+    if [ -z "${JOB_URL+x}" ]; then
+        echo "Not running as part of Jenkins. Handle the logs manually."
+    else
+        # Make sure cache exists
+        [[ ! -d ${HOME}/.cache ]] && mkdir ${HOME}/.cache
+
+        sudo chown -R jenkins:jenkins $WORKSPACE
+        sudo chown -R jenkins:jenkins ${HOME}/.cache
+    fi
+}
+
+function cleanup_and_upload() {
+    original_exit=$?
+    fix_ownership
+    exit $original_exit
+}
+
+# check distro to see if we support it
+if [[ ! "$DISTRO" =~ (xenial|centos7|suse) ]]; then
+    echo "Distro $DISTRO is not supported!"
+    exit 1
+fi
+
+# remove previously cloned repos
+sudo /bin/rm -rf /opt/bifrost /opt/openstack-ansible /opt/stack /opt/releng /opt/functest
+
+# Fix up permissions
+fix_ownership
+
+# clone all the repos first and checkout the patch afterwards
+OPENSTACK_BRANCH=${OPENSTACK_BRANCH:-master}
+OPNFV_BRANCH=${OPNFV_BRANCH:-master}
+sudo git clone -b $OPENSTACK_BRANCH https://git.openstack.org/openstack/bifrost /opt/bifrost
+sudo git clone -b $OPNFV_BRANCH https://gerrit.opnfv.org/gerrit/releng /opt/releng
+
+# this script will be reused for promoting bifrost versions and using
+# promoted bifrost versions as part of xci daily.
+USE_PROMOTED_VERSIONS=${USE_PROMOTED_VERSIONS:-false}
+if [ $USE_PROMOTED_VERSIONS = "true" ]; then
+    echo "TBD: Will use the promoted versions of openstack/opnfv projects"
+fi
+
+# combine opnfv and upstream scripts/playbooks
+sudo /bin/cp -rf /opt/releng/prototypes/bifrost/* /opt/bifrost/
+
+# cleanup remnants of previous deployment
+cd /opt/bifrost
+sudo -E ./scripts/destroy-env.sh
+
+# provision 6 VMs; jumphost, controller00, controller01, controller02, compute00, and compute01
+cd /opt/bifrost
+sudo -E ./scripts/osa-bifrost-deployment.sh
+
+# list the provisioned VMs
+cd /opt/bifrost
+source env-vars
+ironic node-list
+virsh list
@@ -54,7 +54,7 @@
       dib_os_element: "{{ lookup('env','DIB_OS_ELEMENT') }}"
       dib_os_release: "{{ lookup('env', 'DIB_OS_RELEASE') }}"
       extra_dib_elements: "{{ lookup('env', 'EXTRA_DIB_ELEMENTS') | default('') }}"
-      dib_elements: "vm enable-serial-console simple-init devuser infra-cloud-bridge puppet growroot {{ extra_dib_elements }}"
+      dib_elements: "vm enable-serial-console simple-init devuser growroot {{ extra_dib_elements }}"
       dib_packages: "{{ lookup('env', 'DIB_OS_PACKAGES') }}"
       when: create_image_via_dib | bool == true and transform_boot_image | bool == false
   environment:
index 1138da9..7d3db90 100755 (executable)
@@ -27,6 +27,9 @@ done
 
 service ironic-conductor stop || true
 
+echo "removing inventory files created by previous builds"
+rm -rf /tmp/baremetal.*
+
 echo "removing ironic database"
 if $(which mysql &> /dev/null); then
     mysql -u root ironic --execute "drop database ironic;"
index cca30c2..bd6e543 100755 (executable)
@@ -18,7 +18,8 @@ ENABLE_VENV="false"
 USE_DHCP="false"
 USE_VENV="false"
 BUILD_IMAGE=true
-BAREMETAL_DATA_FILE=${BAREMETAL_DATA_FILE:-'/tmp/baremetal.json'}
+export BAREMETAL_DATA_FILE=${BAREMETAL_DATA_FILE:-'/tmp/baremetal.json'}
+export BIFROST_INVENTORY_SOURCE=${BIFROST_INVENTORY_SOURCE:-'/tmp/baremetal.csv'}
 PROVISION_WAIT_TIMEOUT=${PROVISION_WAIT_TIMEOUT:-3600}
 
 # Set defaults for ansible command-line options to drive the different
@@ -39,7 +40,7 @@ export VM_DOMAIN_TYPE="kvm"
 export VM_CPU=${VM_CPU:-8}
 export VM_DISK=${VM_DISK:-100}
 export VM_DISK_CACHE=${VM_DISK_CACHE:-unsafe}
-TEST_PLAYBOOK="test-bifrost-infracloud.yaml"
+TEST_PLAYBOOK="opnfv-virtual.yaml"
 USE_INSPECTOR=true
 USE_CIRROS=false
 TESTING_USER=root
@@ -53,8 +54,6 @@ INVENTORY_DHCP=false
 INVENTORY_DHCP_STATIC_IP=false
 WRITE_INTERFACES_FILE=true
 
-# Set BIFROST_INVENTORY_SOURCE
-export BIFROST_INVENTORY_SOURCE=/tmp/baremetal.json
 
 # DIB custom elements path
 export ELEMENTS_PATH=/opt/puppet-infracloud/files/elements
@@ -93,11 +92,11 @@ cd $BIFROST_HOME/playbooks
 
 # Syntax check of dynamic inventory test path
 for task in syntax-check list-tasks; do
-    ${ANSIBLE} -vvvv \
+    ${ANSIBLE} \
            -i inventory/localhost \
            test-bifrost-create-vm.yaml \
            --${task}
-    ${ANSIBLE} -vvvv \
+    ${ANSIBLE} \
            -i inventory/localhost \
            ${TEST_PLAYBOOK} \
            --${task} \
@@ -105,7 +104,7 @@ for task in syntax-check list-tasks; do
 done
 
 # Create the test VMS
-${ANSIBLE} -vvvv \
+${ANSIBLE} \
        -i inventory/localhost \
        test-bifrost-create-vm.yaml \
        -e test_vm_num_nodes=${TEST_VM_NUM_NODES} \
@@ -115,7 +114,7 @@ ${ANSIBLE} -vvvv \
        -e baremetal_json_file=${BAREMETAL_DATA_FILE}
 
 # Execute the installation and VM startup test.
-${ANSIBLE} -vvvv \
+${ANSIBLE} \
     -i inventory/bifrost_inventory.py \
     ${TEST_PLAYBOOK} \
     -e use_cirros=${USE_CIRROS} \
index b7165ff..3c3b6ba 100755 (executable)
@@ -18,7 +18,8 @@ ENABLE_VENV="false"
 USE_DHCP="false"
 USE_VENV="false"
 BUILD_IMAGE=true
-BAREMETAL_DATA_FILE=${BAREMETAL_DATA_FILE:-'/tmp/baremetal.json'}
+export BAREMETAL_DATA_FILE=${BAREMETAL_DATA_FILE:-'/tmp/baremetal.json'}
+export BIFROST_INVENTORY_SOURCE=${BIFROST_INVENTORY_SOURCE:-'/tmp/baremetal.csv'}
 PROVISION_WAIT_TIMEOUT=${PROVISION_WAIT_TIMEOUT:-3600}
 
 # Set defaults for ansible command-line options to drive the different
@@ -38,7 +39,7 @@ export VM_DOMAIN_TYPE="kvm"
 export VM_CPU=${VM_CPU:-4}
 export VM_DISK=${VM_DISK:-100}
 export VM_DISK_CACHE=${VM_DISK_CACHE:-unsafe}
-TEST_PLAYBOOK="test-bifrost-infracloud.yaml"
+TEST_PLAYBOOK="opnfv-virtual.yaml"
 USE_INSPECTOR=true
 USE_CIRROS=false
 TESTING_USER=root