diff --git a/.zuul.yaml b/.zuul.yaml new file mode 100644 index 00000000..a7ae6d05 --- /dev/null +++ b/.zuul.yaml @@ -0,0 +1,63 @@ +--- +- project: + check: + jobs: + - bosh-openstack-cpi-release-acceptance-test + - bosh-openstack-cpi-release-acceptance-test-queens + - bosh-openstack-cpi-release-acceptance-test-pike + - bosh-openstack-cpi-release-acceptance-test-ocata + - bosh-openstack-cpi-release-acceptance-test-newton + - bosh-openstack-cpi-release-acceptance-test-mitaka + +- job: + name: bosh-openstack-cpi-release-acceptance-test + parent: init-test + description: | + This job validation tests of bosh-openstack-cpi-release aganist OpenStack master branch + run: .zuul/playbooks/bosh-openstack-cpi-release-acceptance-test/run.yaml + +- job: + name: bosh-openstack-cpi-release-acceptance-test-queens + parent: bosh-openstack-cpi-release-acceptance-test + description: | + This job validation tests of bosh-openstack-cpi-release aganist OpenStack Queens release + vars: + global_env: + OS_BRANCH: stable/queens + +- job: + name: bosh-openstack-cpi-release-acceptance-test-pike + parent: bosh-openstack-cpi-release-acceptance-test + description: | + This job validation tests of bosh-openstack-cpi-release aganist OpenStack Pike release + vars: + global_env: + OS_BRANCH: stable/pike + +- job: + name: bosh-openstack-cpi-release-acceptance-test-ocata + parent: bosh-openstack-cpi-release-acceptance-test + description: | + This job validation tests of bosh-openstack-cpi-release aganist OpenStack Ocata release + vars: + global_env: + OS_BRANCH: stable/ocata + +- job: + name: bosh-openstack-cpi-release-acceptance-test-newton + parent: bosh-openstack-cpi-release-acceptance-test + description: | + This job validation tests of bosh-openstack-cpi-release aganist OpenStack Newton release + vars: + global_env: + OS_BRANCH: stable/newton + +- job: + name: bosh-openstack-cpi-release-acceptance-test-mitaka + parent: bosh-openstack-cpi-release-acceptance-test + description: | + This job validation tests of bosh-openstack-cpi-release aganist OpenStack Mitaka release + vars: + global_env: + OS_BRANCH: stable/mitaka + nodeset: ubuntu-trusty diff --git a/.zuul/playbooks/bosh-openstack-cpi-release-acceptance-test/run.yaml b/.zuul/playbooks/bosh-openstack-cpi-release-acceptance-test/run.yaml new file mode 100644 index 00000000..38eab440 --- /dev/null +++ b/.zuul/playbooks/bosh-openstack-cpi-release-acceptance-test/run.yaml @@ -0,0 +1,93 @@ +- hosts: all + become: yes + + pre_tasks: + - name: Prepare local conf for cf validation tests + shell: | + set -ex + + cat >> /tmp/dg-local.conf <<< ' + [[local|localrc]] + NETWORK_GATEWAY=10.0.0.1 + IDENTITY_API_VERSION=3 + OS_USER_DOMAIN_ID=default + OS_PROJECT_DOMAIN_ID=default + VOLUME_BACKING_FILE_SIZE=62000M + ' + args: + executable: /bin/bash + + roles: + - clone-devstack-gate-to-workspace + - install-devstack + + tasks: + - name: Run validation tests of cf-openstack-validator aganist devstack + shell: | + set -ex + + # Install bosh client and dependencies + curl -Lo ./bosh https://s3.amazonaws.com/bosh-cli-artifacts/bosh-cli-3.0.1-linux-amd64 + chmod +x ./bosh + mv ./bosh /usr/local/bin/bosh + apt-get install -y build-essential zlibc zlib1g-dev ruby ruby-dev openssl libxslt-dev libxml2-dev libssl-dev libreadline6 libreadline6-dev libyaml-dev libsqlite3-dev sqlite3 + gem install bundler + + # Create latest cpi release + bosh create-release --force --tarball bosh-openstack-cpi.tgz + + # Git clone cf-openstack-validator + git clone https://github.com/cloudfoundry-incubator/cf-openstack-validator '{{ ansible_user_dir }}/src/github.com/cloudfoundry-incubator/cf-openstack-validator' + cp bosh-openstack-cpi.tgz '{{ ansible_user_dir }}/src/github.com/cloudfoundry-incubator/cf-openstack-validator' + + pushd '{{ ansible_user_dir }}/src/github.com/cloudfoundry-incubator/cf-openstack-validator' + source /opt/stack/new/devstack/openrc admin admin + INSTANCE_TYPE=m1.cf + openstack flavor create --ram 512 --disk 4 --vcpu 1 --id 99 "$INSTANCE_TYPE" + + source /opt/stack/new/devstack/openrc demo demo + FLOATING_IP=$(openstack floating ip create public -f value -c floating_ip_address) + STATIC_IP=10.0.0.50 + # Allow ssh access in the default security group + openstack security group rule create --ingress --protocol tcp --dst-port 22 default + ssh-keygen -t rsa -b 4096 -N '' -f cf-validator.rsa_id + openstack keypair create cf-validator --public-key cf-validator.rsa_id.pub + NETWORK_ID=$(openstack network show private -f value -c id) + # Update subnet dns to allow access to internet + neutron subnet-update --dns-nameserver 8.8.8.8 private-subnet + + # Populate validator.yml + cp validator.template.yml validator.yml + sed -i "/auth_url/ s||$OS_AUTH_URL|" validator.yml + sed -i "/username/ s||$OS_USERNAME|" validator.yml + sed -i "/password/ s||$OS_PASSWORD|" validator.yml + sed -i "/domain/ s||$OS_PROJECT_DOMAIN_ID|" validator.yml + sed -i "/project/ s||$OS_PROJECT_NAME|" validator.yml + sed -i "/network_id/ s||$NETWORK_ID|" validator.yml + sed -i "/floating_ip/ s||$FLOATING_IP|" validator.yml + sed -i "/static_ip/ s||$STATIC_IP|" validator.yml + sed -i "/instance_type/ s||$INSTANCE_TYPE|" validator.yml + sed -i "/use_external_ip/ s|false|true|" validator.yml + + # Download stemcell and change the hypervisor to qemu + mkdir bosh-openstack-kvm-ubuntu-trusty-go_agent + pushd bosh-openstack-kvm-ubuntu-trusty-go_agent + wget --content-disposition https://bosh.io/d/stemcells/bosh-openstack-kvm-ubuntu-trusty-go_agent -O bosh-openstack-kvm-ubuntu-trusty-go_agent.tgz + tar -zxvf bosh-openstack-kvm-ubuntu-trusty-go_agent.tgz + rm bosh-openstack-kvm-ubuntu-trusty-go_agent.tgz + sed -i 's/kvm/qemu/g' stemcell.MF + tar -zcvf bosh-openstack-qemu-ubuntu-trusty-go_agent.tgz * + mv bosh-openstack-qemu-ubuntu-trusty-go_agent.tgz ../ + popd + + # Collect cpi logs + mkdir -p ~/.cf-openstack-validator/logs + ln -s ~/.cf-openstack-validator/logs '{{ ansible_user_dir }}/workspace/logs/cpi-logs' + + # Run test + bundle install + ./validate -s bosh-openstack-qemu-ubuntu-trusty-go_agent.tgz -c validator.yml -r bosh-openstack-cpi.tgz --tag cpi_api + popd + args: + executable: /bin/bash + chdir: '{{ zuul.project.src_dir }}'