Add voting and gating test with Keystone enabled

Without this test, the Ironic services might end up
misconfigured and machines can not be provisioned
properly. The Ironic configuration templates
that Bifrost uses should be validated for both
Keystone enabled and disabled.

Change-Id: Iab4457a6dcea232b5c19e681dc87b08570c2a120
Depends-On: I4c733dba8e65fe624c9de5b9c5722cef2df59109
This commit is contained in:
Olivier Bourdon 2018-09-04 11:48:49 +02:00
parent 5a688a0110
commit 99e97c4cc7
6 changed files with 58 additions and 5 deletions

View File

@ -6,6 +6,16 @@
tasks: tasks:
- name: Set script name for testing without Keystone
set_fact:
script_name: scripts/test-bifrost.sh
when: not (use_keystone | default(false) | bool)
- name: Set script name for testing with Keystone
set_fact:
script_name: scripts/test-bifrost-keystone-auth.sh
when: use_keystone | default(false) | bool
- name: Ensure legacy workspace directory - name: Ensure legacy workspace directory
file: file:
path: '{{ ansible_user_dir }}/workspace' path: '{{ ansible_user_dir }}/workspace'
@ -66,7 +76,7 @@
export GIT_BASE=$(pwd) export GIT_BASE=$(pwd)
export UPPER_CONSTRAINTS_FILE=$WORKSPACE/upper-constraints.txt export UPPER_CONSTRAINTS_FILE=$WORKSPACE/upper-constraints.txt
cd openstack/bifrost cd openstack/bifrost
scripts/test-bifrost.sh "{{ script_name }}"
executable: /bin/bash executable: /bin/bash
chdir: '{{ ansible_user_dir }}/workspace' chdir: '{{ ansible_user_dir }}/workspace'
environment: '{{ zuul | zuul_legacy_vars }}' environment: '{{ zuul | zuul_legacy_vars }}'

View File

@ -35,7 +35,11 @@ log_dir = {{ ironic_log_dir }}
{% endif %} {% endif %}
[pxe] [pxe]
{% if testing | bool %}
pxe_append_params = console=/dev/ttyS0
{% else %}
pxe_append_params = systemd.journald.forward_to_console=yes {{ extra_kernel_options | default('') }} pxe_append_params = systemd.journald.forward_to_console=yes {{ extra_kernel_options | default('') }}
{% endif %}
pxe_config_template = $pybasedir/drivers/modules/ipxe_config.template pxe_config_template = $pybasedir/drivers/modules/ipxe_config.template
tftp_server = {{ hostvars[inventory_hostname]['ansible_' + ans_network_interface]['ipv4']['address'] }} tftp_server = {{ hostvars[inventory_hostname]['ansible_' + ans_network_interface]['ipv4']['address'] }}
tftp_root = /tftpboot tftp_root = /tftpboot
@ -108,5 +112,5 @@ project_domain_id = default
region_name = {{ keystone.bootstrap.region_name | default('RegionOne')}} region_name = {{ keystone.bootstrap.region_name | default('RegionOne')}}
{% else %} {% else %}
auth_type = none auth_type = none
endpoint_override = http://{{ hostvars[inventory_hostname]['ansible_' + ans_network_interface]['ipv4']['address'] }}:6385
{% endif %} {% endif %}
endpoint_override = http://{{ hostvars[inventory_hostname]['ansible_' + ans_network_interface]['ipv4']['address'] }}:6385

View File

@ -11,18 +11,47 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
--- ---
- name: "Install {{ package }} package from pip"
- name: set virtualenv_command
set_fact:
venv_command: "{{ hostvars[inventory_hostname].ansible_python.executable }} -m virtualenv"
when: enable_venv|bool
- name: "Install {{ package }} package from pip using virtualenv"
pip: pip:
name: "{{ package }}" name: "{{ package }}"
state: "{{ state | default(omit) }}" state: "{{ state | default(omit) }}"
version: "{{ version | default(omit) }}" version: "{{ version | default(omit) }}"
virtualenv: "{{ bifrost_venv_dir if enable_venv else omit }}" virtualenv: "{{ bifrost_venv_dir }}"
virtualenv_command: "{{ venv_command | default(omit) }}"
extra_args: "{{ extra_args | default(omit) }}" extra_args: "{{ extra_args | default(omit) }}"
when: source_install is not defined or source_install == false register: pip_package_install_done
until: pip_package_install_done|succeeded
retries: 5
delay: 10
when: (source_install is not defined or source_install == false) and enable_venv|bool
- name: "Install {{ package }} package from pip without virtualenv"
pip:
name: "{{ package }}"
state: "{{ state | default(omit) }}"
version: "{{ version | default(omit) }}"
extra_args: "{{ extra_args | default(omit) }}"
requirements: "{{ requirements_file | default(omit) }}"
register: pip_package_install_done
until: pip_package_install_done|succeeded
retries: 5
delay: 10
when: (source_install is not defined or source_install == false) and not enable_venv|bool
# NOTE (cinerama): We should be able to use the pip module here and # NOTE (cinerama): We should be able to use the pip module here and
# possibly merge these two tasks when # possibly merge these two tasks when
# https://github.com/ansible/ansible-modules-core/pull/2600 lands. # https://github.com/ansible/ansible-modules-core/pull/2600 lands.
- name: "Install from {{ sourcedir }} using pip" - name: "Install from {{ sourcedir }} using pip"
command: pip install --upgrade {{ sourcedir }} {{ extra_args | default('') }} command: pip install --upgrade {{ sourcedir }} {{ extra_args | default('') }}
register: pip_package_install_done
until: pip_package_install_done|succeeded
retries: 5
delay: 10
when: source_install is defined and (source_install | bool == true) when: source_install is defined and (source_install | bool == true)
environment: "{{ bifrost_venv_env if enable_venv else {} }}" environment: "{{ bifrost_venv_env if enable_venv else {} }}"

View File

@ -200,6 +200,7 @@ ${ANSIBLE} -vvvv \
-e wait_timeout=${PROVISION_WAIT_TIMEOUT} \ -e wait_timeout=${PROVISION_WAIT_TIMEOUT} \
-e noauth_mode=${NOAUTH_MODE} \ -e noauth_mode=${NOAUTH_MODE} \
-e enable_keystone=${ENABLE_KEYSTONE} \ -e enable_keystone=${ENABLE_KEYSTONE} \
-e use_public_urls=${ENABLE_KEYSTONE} \
-e wait_for_node_deploy=${WAIT_FOR_DEPLOY} \ -e wait_for_node_deploy=${WAIT_FOR_DEPLOY} \
-e not_enrolled_data_file=${BAREMETAL_DATA_FILE}.rest \ -e not_enrolled_data_file=${BAREMETAL_DATA_FILE}.rest \
${CLOUD_CONFIG} ${CLOUD_CONFIG}

View File

@ -83,6 +83,13 @@
parent: bifrost-integration-tinyipa parent: bifrost-integration-tinyipa
nodeset: ubuntu-xenial nodeset: ubuntu-xenial
- job:
name: bifrost-integration-tinyipa-keystone-ubuntu-xenial
parent: bifrost-integration-tinyipa
nodeset: ubuntu-xenial
vars:
use_keystone: true
- job: - job:
name: bifrost-integration-tinyipa-centos-7 name: bifrost-integration-tinyipa-centos-7
parent: bifrost-integration-tinyipa parent: bifrost-integration-tinyipa

View File

@ -7,6 +7,7 @@
check: check:
jobs: jobs:
- bifrost-integration-tinyipa-ubuntu-xenial - bifrost-integration-tinyipa-ubuntu-xenial
- bifrost-integration-tinyipa-keystone-ubuntu-xenial
- bifrost-integration-tinyipa-opensuse-423 - bifrost-integration-tinyipa-opensuse-423
# Non-voting jobs # Non-voting jobs
- bifrost-integration-dhcp-ubuntu-xenial: - bifrost-integration-dhcp-ubuntu-xenial:
@ -27,5 +28,6 @@
gate: gate:
jobs: jobs:
- bifrost-integration-tinyipa-ubuntu-xenial - bifrost-integration-tinyipa-ubuntu-xenial
- bifrost-integration-tinyipa-keystone-ubuntu-xenial
- bifrost-integration-tinyipa-opensuse-423 - bifrost-integration-tinyipa-opensuse-423
- openstack-tox-lower-constraints - openstack-tox-lower-constraints