Move entirely to dynamic job execution

If the gate job's scenario, action, or install method are not
directly provided via vars, attempt to identify them from the Zuul
job name.

Change-Id: Id33c85d1547e385ae9bd083880b0374c6f684f17
This commit is contained in:
Logan V 2019-05-11 03:17:56 -05:00
parent 900376c5bf
commit 463d25ee0d
3 changed files with 59 additions and 114 deletions

View File

@ -24,6 +24,7 @@ bootstrap_host_special_word_list:
- source
- telemetry
- translations
- varstest
bootstrap_host_services: >-
{%- set scenario_list = (bootstrap_host_scenario.split('_') | reject('equalto', '')) | list %}

View File

@ -34,10 +34,6 @@
- ^setup\.(cfg|py)$
- ^tox.ini$
- ^Vagrantfile
vars:
action: deploy
scenario: aio_lxc
install_method: source
# Ensuring overrides work
- job:
@ -78,9 +74,6 @@
name: openstack-ansible-deploy-aio_metal-debian-stable
parent: openstack-ansible-deploy-aio
nodeset: debian-stable
vars:
action: deploy
scenario: aio_metal
# ubuntu
- job:
@ -92,107 +85,68 @@
name: openstack-ansible-deploy-aio_distro_lxc-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
install_method: distro
- job:
name: openstack-ansible-deploy-aio_ceph-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
action: deploy
scenario: aio_ceph
- job:
name: openstack-ansible-deploy-aio_proxy-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
action: deploy
scenario: aio_proxy
- job:
name: openstack-ansible-deploy-aio_distro_ceph-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
action: deploy
scenario: aio_ceph
install_method: distro
- job:
name: openstack-ansible-deploy-aio_metal-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
action: deploy
scenario: aio_metal
- job:
name: openstack-ansible-deploy-aio_telemetry_metal-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
action: deploy
scenario: aio_telemetry_metal
- job:
name: openstack-ansible-deploy-aio_distro_metal-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
action: deploy
scenario: aio_metal
install_method: distro
- job:
name: openstack-ansible-upgrade-aio_lxc-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
timeout: 10800
vars:
action: upgrade
scenario: aio_lxc
- job:
name: openstack-ansible-deploy-aio_nspawn-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
scenario: aio_nspawn
- job:
name: openstack-ansible-upgrade-aio_ceph-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
timeout: 10800
vars:
action: upgrade
scenario: aio_ceph
- job:
name: openstack-ansible-deploy-aio_octavia-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
action: deploy
scenario: aio_octavia
- job:
name: openstack-ansible-deploy-aio_qdrouterd-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
action: deploy
scenario: aio_qdrouterd
- job:
name: openstack-ansible-deploy-translations-ubuntu-bionic
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-bionic
vars:
action: deploy
scenario: translations
# centos
- job:
@ -204,84 +158,54 @@
name: openstack-ansible-deploy-aio_distro_lxc-centos-7
parent: openstack-ansible-deploy-aio
nodeset: centos-7
vars:
install_method: distro
- job:
name: openstack-ansible-deploy-aio_ceph-centos-7
parent: openstack-ansible-deploy-aio
nodeset: centos-7
vars:
action: deploy
scenario: aio_ceph
- job:
name: openstack-ansible-deploy-aio_distro_ceph-centos-7
parent: openstack-ansible-deploy-aio
nodeset: centos-7
vars:
action: deploy
scenario: aio_ceph
install_method: distro
- job:
name: openstack-ansible-upgrade-aio_lxc-centos-7
parent: openstack-ansible-deploy-aio
nodeset: centos-7
timeout: 10800
vars:
action: upgrade
scenario: aio_lxc
- job:
name: openstack-ansible-deploy-aio_metal-centos-7
parent: openstack-ansible-deploy-aio
nodeset: centos-7
vars:
actio: deploy
scenario: aio_metal
- job:
name: openstack-ansible-deploy-aio_telemetry_metal-centos-7
parent: openstack-ansible-deploy-aio
nodeset: centos-7
vars:
action: deploy
scenario: aio_telemetry_metal
- job:
name: openstack-ansible-deploy-aio_distro_metal-centos-7
parent: openstack-ansible-deploy-aio
nodeset: centos-7
vars:
action: deploy
scenario: aio_metal
install_method: distro
- job:
name: openstack-ansible-deploy-aio_nspawn-centos-7
parent: openstack-ansible-deploy-aio
nodeset: centos-7
vars:
scenario: aio_nspawn
- job:
name: openstack-ansible-upgrade-aio_ceph-centos-7
parent: openstack-ansible-deploy-aio
nodeset: centos-7
timeout: 10800
vars:
action: upgrade
scenario: aio_ceph
# debian
- job:
name: openstack-ansible-deploy-aio_telemetry_metal-debian-stable
parent: openstack-ansible-deploy-aio
nodeset: debian-stable
vars:
action: deploy
scenario: aio_telemetry_metal
- job:
name: openstack-ansible-deploy-aio_lxc-debian-stable
@ -298,54 +222,33 @@
name: openstack-ansible-deploy-aio_distro_lxc-opensuse-150
parent: openstack-ansible-deploy-aio
nodeset: opensuse-150
vars:
install_method: distro
- job:
name: openstack-ansible-deploy-aio_ceph-opensuse-150
parent: openstack-ansible-deploy-aio
nodeset: opensuse-150
vars:
action: deploy
scenario: aio_ceph
- job:
name: openstack-ansible-deploy-aio_distro_ceph-opensuse-150
parent: openstack-ansible-deploy-aio
nodeset: opensuse-150
vars:
action: deploy
scenario: aio_ceph
install_method: distro
- job:
name: openstack-ansible-deploy-aio_metal-opensuse-150
parent: openstack-ansible-deploy-aio
nodeset: opensuse-150
vars:
action: deploy
scenario: aio_metal
- job:
name: openstack-ansible-deploy-aio_telemetry_metal-opensuse-150
parent: openstack-ansible-deploy-aio
nodeset: opensuse-150
vars:
action: deploy
scenario: aio_telemetry_metal
- job:
name: openstack-ansible-deploy-aio_distro_metal-opensuse-150
parent: openstack-ansible-deploy-aio
nodeset: opensuse-150
vars:
action: deploy
scenario: aio_metal
install_method: distro
- job:
name: openstack-ansible-deploy-aio_nspawn-opensuse-150
parent: openstack-ansible-deploy-aio
nodeset: opensuse-150
vars:
scenario: aio_nspawn

View File

@ -5,32 +5,73 @@
ceilometer: telemetry
gnocchi: telemetry
horizon: lxc
install_methods:
- distro
- source
tasks:
- name: Dynamically determine additional scenario elements
- name: Dynamically create scenario if not set
set_fact:
scenario: |-
{% set _scenario = [] %}
{# Add the scenarios based on the job name #}
{# ex. openstack-ansible-deploy-$scenario1_$scenario2-$os #}
{% if zuul.job is match('^openstack-ansible-deploy-([^-]+)-.*$') %}
{% set _ = _scenario.extend(
(zuul.job |
regex_replace('^openstack-ansible-deploy-([^-]+)-.*$', '\\1')).split('_')
)
%}
{% endif %}
{# If testing a role, add the role service name to the scenario list #}
{% if zuul.project.short_name is match('^openstack-ansible-os_(.*)$') %}
{% set role_service_name = zuul.project.short_name |
regex_replace('^openstack-ansible-os_(.*)$', '\\1')
%}
{% set _ = _scenario.append(role_service_name) %}
{# Add special scenarios based on the project name #}
{% if role_service_name in scenario_map %}
{% set _ = _scenario.extend(scenario_map[service_name].split('_')) %}
{% endif %}
{% endif %}
{{ _scenario | join('_') }}
when:
- zuul.project.short_name is match("^openstack-ansible-os_(.*)$")
- (dynamic_scenario | default(True)) | bool
block:
- name: Set service_name
set_fact:
service_name: "{{ zuul.project.short_name | regex_replace('^openstack-ansible-os_(.*)$', '\\1') }}"
- scenario is not defined
- name: Set scenario_suffix
set_fact:
scenario_suffix: "{{ scenario_map[service_name] | default(service_name) }}"
- name: Dynamically set action if not set
set_fact:
action: "{{ zuul.job | regex_replace('^openstack-ansible-([^-]+)-.*$', '\\1') }}"
when:
- action is not defined
# Horizon's apache uses the same ip:port combinations as
# the repo server's nginx service. As such, we force the
# use of containers to ensure that they do not conflict.
- name: Add services based on test repo name
set_fact:
scenario: "{{ (service_name == 'horizon') | ternary(scenario | regex_replace('_metal', ''), scenario) }}_{{ scenario_suffix }}"
- name: Dynamically set install method if not set
set_fact:
install_method: "{{ (scenario.split('_') | intersect(install_methods))[0] }}"
when:
- install_method is not defined
- scenario.split('_') | intersect(install_methods) | length > 0
- name: Set install method to source as a baseline default
set_fact:
install_method: source
when:
- install_method is not defined
- name: Print gate check configuration
debug:
msg: |-
Running gate-check-commit with the following arguments:
Scenario: {{ scenario }}
Action: {{ action }}
Install Method: {{ install_method }}
- name: Run gate-check-commit.sh script
become: yes
become_user: root
shell: >-
scripts/gate-check-commit.sh {{ scenario }} {{ action }} {{ install_method }}
scripts/gate-check-commit.sh
{{ scenario | quote }}
{{ action | quote }}
{{ install_method | quote }}
args:
chdir: "src/opendev.org/openstack/openstack-ansible"
executable: /bin/bash