Migrate to Zuul v3
Migrate all functional jobs and gate to zuul v3. We will have to migrate all other legacy jobs too later. This patch do step 1 in the docs: Move Legacy Jobs to Projects. Co-Authored-By: Dai Dang Van <daidv@vn.fujitsu.com> Needed-By: If7dfc17ccc93cd5d99cc899abf7c7cbe08a738dd Needed-By: I18b026fbfc1741ca397f36c8cbf24aa02c03f4b5 Change-Id: I5c230a5cdd9ee42eee218f84e678d4f155dfc953
This commit is contained in:
parent
d2ab56c61c
commit
a61105bd55
177
.zuul.yaml
Normal file
177
.zuul.yaml
Normal file
@ -0,0 +1,177 @@
|
||||
- job:
|
||||
name: barbican-devstack-functional-base
|
||||
# start running with Pike
|
||||
branches: ^(?!stable/ocata).*$
|
||||
parent: legacy-dsvm-base
|
||||
vars:
|
||||
database: sql
|
||||
python_version: py27
|
||||
services: "tempest,rabbit,mysql,key"
|
||||
required-projects:
|
||||
- openstack-infra/devstack-gate
|
||||
- openstack/barbican
|
||||
- openstack/barbican-tempest-plugin
|
||||
- openstack/python-barbicanclient
|
||||
run: playbooks/legacy/barbican-devstack-functional-base/run
|
||||
post-run: playbooks/legacy/barbican-devstack-functional-base/post
|
||||
timeout: 4200
|
||||
|
||||
- job:
|
||||
name: barbican-devstack-base
|
||||
parent: legacy-base
|
||||
vars:
|
||||
database: sql
|
||||
python_version: py27
|
||||
services: "tempest,keystone"
|
||||
required-projects:
|
||||
- openstack-dev/devstack
|
||||
- openstack-infra/devstack-gate
|
||||
- openstack/barbican
|
||||
- openstack/barbican-tempest-plugin
|
||||
- openstack/python-barbicanclient
|
||||
run: playbooks/legacy/barbican-devstack-base/run
|
||||
post-run: playbooks/legacy/barbican-devstack-base/post
|
||||
timeout: 4200
|
||||
|
||||
- job:
|
||||
name: barbican-devstack-tempest-base
|
||||
parent: legacy-dsvm-base
|
||||
vars:
|
||||
python_version: py27
|
||||
database: sql
|
||||
castellan_from_git: 0
|
||||
cursive: 0
|
||||
required-projects:
|
||||
- openstack-infra/devstack-gate
|
||||
- openstack/barbican
|
||||
- openstack/barbican-tempest-plugin
|
||||
- openstack/castellan
|
||||
- openstack/cursive
|
||||
- openstack/python-barbicanclient
|
||||
- openstack/tempest
|
||||
run: playbooks/legacy/barbican-devstack-tempest-base/run
|
||||
post-run: playbooks/legacy/barbican-devstack-tempest-base/post
|
||||
timeout: 4200
|
||||
|
||||
- job:
|
||||
name: barbican-dogtag-devstack-functional-fedora-26
|
||||
nodeset: legacy-fedora-26
|
||||
parent: barbican-devstack-functional-base
|
||||
vars:
|
||||
services: "barbican-dogtag,tempest,rabbit,mysql,key"
|
||||
plugin: dogtag
|
||||
|
||||
- job:
|
||||
name: barbican-kmip-devstack-functional
|
||||
parent: barbican-devstack-functional-base
|
||||
vars:
|
||||
services: "barbican-pykmip,pykmip-server,tempest,rabbit,mysql,key"
|
||||
plugin: kmip
|
||||
|
||||
- job:
|
||||
name: barbican-simple-crypto-devstack-functional
|
||||
parent: barbican-devstack-functional-base
|
||||
vars:
|
||||
plugin: simple-crypto
|
||||
|
||||
- job:
|
||||
name: barbican-simple-crypto-devstack-functional-postgres
|
||||
parent: barbican-devstack-functional-base
|
||||
voting: false
|
||||
vars:
|
||||
database: postgres
|
||||
plugin: simple-crypto
|
||||
|
||||
- job:
|
||||
name: barbican-simple-crypto-devstack-functional-py35
|
||||
parent: barbican-devstack-functional-base
|
||||
vars:
|
||||
python_version: py35
|
||||
plugin: simple-crypto
|
||||
|
||||
- job:
|
||||
name: barbican-dogtag-devstack-fedora-26
|
||||
nodeset: legacy-fedora-26
|
||||
parent: barbican-devstack-base
|
||||
vars:
|
||||
services: "barbican-dogtag,tempest,keystone"
|
||||
plugin: dogtag
|
||||
|
||||
- job:
|
||||
name: barbican-simple-crypto-devstack
|
||||
parent: barbican-devstack-base
|
||||
vars:
|
||||
plugin: simple-crypto
|
||||
|
||||
- job:
|
||||
name: barbican-simple-crypto-devstack-postgres
|
||||
parent: barbican-devstack-base
|
||||
voting: false
|
||||
vars:
|
||||
plugin: simple-crypto
|
||||
database: postgres
|
||||
|
||||
- job:
|
||||
name: barbican-simple-crypto-devstack-tempest
|
||||
parent: barbican-devstack-tempest-base
|
||||
|
||||
- job:
|
||||
name: barbican-simple-crypto-devstack-tempest-castellan-from-git
|
||||
parent: barbican-devstack-tempest-base
|
||||
vars:
|
||||
castellan_from_git: 1
|
||||
|
||||
- job:
|
||||
name: barbican-simple-crypto-devstack-tempest-cursive
|
||||
parent: barbican-devstack-tempest-base
|
||||
vars:
|
||||
cursive: 1
|
||||
|
||||
- job:
|
||||
name: barbican-simple-crypto-devstack-tempest-py35
|
||||
parent: barbican-devstack-tempest-base
|
||||
voting: false
|
||||
vars:
|
||||
python_version: py35
|
||||
|
||||
- job:
|
||||
name: grenade-devstack-barbican
|
||||
parent: legacy-dsvm-base
|
||||
# Start testing with pike
|
||||
branches: ^(?!stable/ocata).*$
|
||||
irrelevant-files:
|
||||
- ^(test-|)requirements.txt$
|
||||
- ^setup.cfg$
|
||||
post-run: playbooks/legacy/grenade-devstack-barbican/post
|
||||
required-projects:
|
||||
- openstack-dev/grenade
|
||||
- openstack-infra/devstack-gate
|
||||
- openstack/barbican
|
||||
- openstack/barbican-tempest-plugin
|
||||
- openstack/python-barbicanclient
|
||||
run: playbooks/legacy/grenade-devstack-barbican/run
|
||||
timeout: 7800
|
||||
|
||||
- project:
|
||||
name: openstack/barbican
|
||||
check:
|
||||
jobs:
|
||||
- barbican-simple-crypto-devstack-tempest
|
||||
- barbican-simple-crypto-devstack-functional
|
||||
- barbican-simple-crypto-devstack-functional-py35
|
||||
- barbican-simple-crypto-devstack-functional-postgres
|
||||
- barbican-dogtag-devstack-functional-fedora-26
|
||||
- barbican-kmip-devstack-functional
|
||||
- grenade-devstack-barbican
|
||||
gate:
|
||||
queue: barbican
|
||||
jobs:
|
||||
- barbican-simple-crypto-devstack-tempest
|
||||
- barbican-simple-crypto-devstack-functional
|
||||
- barbican-simple-crypto-devstack-functional-py35
|
||||
- barbican-kmip-devstack-functional
|
||||
- barbican-dogtag-devstack-functional-fedora-26
|
||||
- grenade-devstack-barbican
|
||||
experimental:
|
||||
jobs:
|
||||
- barbican-simple-crypto-devstack-tempest-py35
|
15
playbooks/legacy/barbican-devstack-base/post.yaml
Normal file
15
playbooks/legacy/barbican-devstack-base/post.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
- hosts: primary
|
||||
tasks:
|
||||
|
||||
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
|
||||
synchronize:
|
||||
src: '{{ ansible_user_dir }}/workspace/'
|
||||
dest: '{{ zuul.executor.log_root }}'
|
||||
mode: pull
|
||||
copy_links: true
|
||||
verify_host: true
|
||||
rsync_opts:
|
||||
- --include=/logs/**
|
||||
- --include=*/
|
||||
- --exclude=*
|
||||
- --prune-empty-dirs
|
65
playbooks/legacy/barbican-devstack-base/run.yaml
Normal file
65
playbooks/legacy/barbican-devstack-base/run.yaml
Normal file
@ -0,0 +1,65 @@
|
||||
- hosts: all
|
||||
name: Barbican devstack base
|
||||
tasks:
|
||||
|
||||
- name: Ensure legacy workspace directory
|
||||
file:
|
||||
path: '{{ ansible_user_dir }}/workspace'
|
||||
state: directory
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
cat > clonemap.yaml << EOF
|
||||
clonemap:
|
||||
- name: openstack-infra/devstack-gate
|
||||
dest: devstack-gate
|
||||
EOF
|
||||
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
|
||||
git://git.openstack.org \
|
||||
openstack-infra/devstack-gate
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
export PYTHONUNBUFFERED=true
|
||||
export ENABLED_SERVICES="{{ services }}"
|
||||
export PROJECTS="openstack/barbican $PROJECTS"
|
||||
export PROJECTS="openstack/python-barbicanclient $PROJECTS"
|
||||
export PROJECTS="openstack/barbican-tempest-plugin $PROJECTS"
|
||||
export DEVSTACK_LOCAL_CONFIG="enable_plugin barbican git://git.openstack.org/openstack/barbican"
|
||||
if [ "{{ python_version }}" == "py35" ] ; then
|
||||
export DEVSTACK_GATE_USE_PYTHON3=True
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-account"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-container"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-object"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-proxy"
|
||||
else
|
||||
export DEVSTACK_GATE_USE_PYTHON3=False
|
||||
fi
|
||||
|
||||
function gate_hook {
|
||||
$BASE/new/barbican/devstack/gate_hook.sh
|
||||
}
|
||||
export -f gate_hook
|
||||
|
||||
function post_test_hook {
|
||||
cd /opt/stack/new/barbican/functionaltests
|
||||
./post_test_hook.sh "{{ plugin }}"
|
||||
}
|
||||
export -f post_test_hook
|
||||
|
||||
if [ "{{ database }}" == "postgres" ] ; then
|
||||
export DEVSTACK_GATE_POSTGRES=1
|
||||
fi
|
||||
|
||||
cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
|
||||
./safe-devstack-vm-gate-wrap.sh
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
15
playbooks/legacy/barbican-devstack-functional-base/post.yaml
Normal file
15
playbooks/legacy/barbican-devstack-functional-base/post.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
- hosts: primary
|
||||
tasks:
|
||||
|
||||
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
|
||||
synchronize:
|
||||
src: '{{ ansible_user_dir }}/workspace/'
|
||||
dest: '{{ zuul.executor.log_root }}'
|
||||
mode: pull
|
||||
copy_links: true
|
||||
verify_host: true
|
||||
rsync_opts:
|
||||
- --include=/logs/**
|
||||
- --include=*/
|
||||
- --exclude=*
|
||||
- --prune-empty-dirs
|
74
playbooks/legacy/barbican-devstack-functional-base/run.yaml
Normal file
74
playbooks/legacy/barbican-devstack-functional-base/run.yaml
Normal file
@ -0,0 +1,74 @@
|
||||
- hosts: all
|
||||
name: Barbican devstack functional base
|
||||
tasks:
|
||||
|
||||
- name: Ensure legacy workspace directory
|
||||
file:
|
||||
path: '{{ ansible_user_dir }}/workspace'
|
||||
state: directory
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
cat > clonemap.yaml << EOF
|
||||
clonemap:
|
||||
- name: openstack-infra/devstack-gate
|
||||
dest: devstack-gate
|
||||
EOF
|
||||
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
|
||||
git://git.openstack.org \
|
||||
openstack-infra/devstack-gate
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
cat << 'EOF' >>"/tmp/dg-local.conf"
|
||||
[[local|localrc]]
|
||||
enable_plugin barbican git://git.openstack.org/openstack/barbican
|
||||
|
||||
EOF
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
export PYTHONUNBUFFERED=true
|
||||
export OVERRIDE_ENABLED_SERVICES="{{ services }}"
|
||||
export PROJECTS="openstack/barbican $PROJECTS"
|
||||
export PROJECTS="openstack/python-barbicanclient $PROJECTS"
|
||||
export PROJECTS="openstack/barbican-tempest-plugin $PROJECTS"
|
||||
|
||||
if [ "{{ python_version }}" == "py35" ] ; then
|
||||
export DEVSTACK_GATE_USE_PYTHON3=True
|
||||
else
|
||||
export DEVSTACK_GATE_USE_PYTHON3=False
|
||||
fi
|
||||
|
||||
function gate_hook {
|
||||
$BASE/new/barbican/devstack/gate_hook.sh
|
||||
}
|
||||
export -f gate_hook
|
||||
|
||||
function post_test_hook {
|
||||
cd /opt/stack/new/barbican/functionaltests
|
||||
./post_test_hook.sh "{{plugin}}"
|
||||
}
|
||||
export -f post_test_hook
|
||||
|
||||
if [ "{{ database }}" == "postgres" ] ; then
|
||||
export DEVSTACK_GATE_POSTGRES=1
|
||||
fi
|
||||
|
||||
cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
|
||||
./safe-devstack-vm-gate-wrap.sh
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
15
playbooks/legacy/barbican-devstack-tempest-base/post.yaml
Normal file
15
playbooks/legacy/barbican-devstack-tempest-base/post.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
- hosts: primary
|
||||
tasks:
|
||||
|
||||
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
|
||||
synchronize:
|
||||
src: '{{ ansible_user_dir }}/workspace/'
|
||||
dest: '{{ zuul.executor.log_root }}'
|
||||
mode: pull
|
||||
copy_links: true
|
||||
verify_host: true
|
||||
rsync_opts:
|
||||
- --include=/logs/**
|
||||
- --include=*/
|
||||
- --exclude=*
|
||||
- --prune-empty-dirs
|
72
playbooks/legacy/barbican-devstack-tempest-base/run.yaml
Normal file
72
playbooks/legacy/barbican-devstack-tempest-base/run.yaml
Normal file
@ -0,0 +1,72 @@
|
||||
- hosts: all
|
||||
name: Barbican devstack tempest base
|
||||
tasks:
|
||||
|
||||
- name: Ensure legacy workspace directory
|
||||
file:
|
||||
path: '{{ ansible_user_dir }}/workspace'
|
||||
state: directory
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
cat > clonemap.yaml << EOF
|
||||
clonemap:
|
||||
- name: openstack-infra/devstack-gate
|
||||
dest: devstack-gate
|
||||
EOF
|
||||
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
|
||||
git://git.openstack.org \
|
||||
openstack-infra/devstack-gate
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
export PYTHONUNBUFFERED=true
|
||||
export DEVSTACK_GATE_TEMPEST=1
|
||||
export DEVSTACK_GATE_TEMPEST_REGEX=barbican
|
||||
export KEEP_LOCALRC=1
|
||||
|
||||
export PROJECTS="openstack/barbican $PROJECTS"
|
||||
export PROJECTS="openstack/python-barbicanclient $PROJECTS"
|
||||
export PROJECTS="openstack/barbican-tempest-plugin $PROJECTS"
|
||||
export DEVSTACK_LOCAL_CONFIG="enable_plugin barbican git://git.openstack.org/openstack/barbican"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"export TEMPEST_PLUGINS='/opt/stack/new/barbican-tempest-plugin'"
|
||||
|
||||
export BRANCH_OVERRIDE=default
|
||||
if [ "$BRANCH_OVERRIDE" != "default" ] ; then
|
||||
export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
|
||||
fi
|
||||
# Add configuration values for enabling security features in local.conf
|
||||
function pre_test_hook {
|
||||
if [ -f $BASE/new/barbican-tempest-plugin/tools/pre_test_hook.sh ] ; then
|
||||
. $BASE/new/barbican-tempest-plugin/tools/pre_test_hook.sh
|
||||
fi
|
||||
}
|
||||
export -f pre_test_hook
|
||||
|
||||
if [ "{{ database }}" == "postgres" ] ; then
|
||||
export DEVSTACK_GATE_POSTGRES=1
|
||||
elif [ "{{ castellan_from_git }}" == "1" ] ; then
|
||||
export DEVSTACK_PROJECT_FROM_GIT="castellan"
|
||||
elif [ "{{ cursive }}" == "1" ] ; then
|
||||
export DEVSTACK_PROJECT_FROM_GIT="cursive"
|
||||
elif [ "{{ python_version }}" == "py35" ] ; then
|
||||
export DEVSTACK_GATE_USE_PYTHON3=True
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-account"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-container"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-object"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"disable_service s-proxy"
|
||||
fi
|
||||
|
||||
cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
|
||||
|
||||
./safe-devstack-vm-gate-wrap.sh
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
15
playbooks/legacy/grenade-devstack-barbican/post.yaml
Normal file
15
playbooks/legacy/grenade-devstack-barbican/post.yaml
Normal file
@ -0,0 +1,15 @@
|
||||
- hosts: primary
|
||||
tasks:
|
||||
|
||||
- name: Copy files from {{ ansible_user_dir }}/workspace/ on node
|
||||
synchronize:
|
||||
src: '{{ ansible_user_dir }}/workspace/'
|
||||
dest: '{{ zuul.executor.log_root }}'
|
||||
mode: pull
|
||||
copy_links: true
|
||||
verify_host: true
|
||||
rsync_opts:
|
||||
- --include=/logs/**
|
||||
- --include=*/
|
||||
- --exclude=*
|
||||
- --prune-empty-dirs
|
60
playbooks/legacy/grenade-devstack-barbican/run.yaml
Normal file
60
playbooks/legacy/grenade-devstack-barbican/run.yaml
Normal file
@ -0,0 +1,60 @@
|
||||
- hosts: all
|
||||
name: Autoconverted job legacy-grenade-dsvm-barbican from old job gate-grenade-dsvm-barbican-ubuntu-xenial
|
||||
tasks:
|
||||
|
||||
- name: Ensure legacy workspace directory
|
||||
file:
|
||||
path: '{{ ansible_user_dir }}/workspace'
|
||||
state: directory
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
cat > clonemap.yaml << EOF
|
||||
clonemap:
|
||||
- name: openstack-infra/devstack-gate
|
||||
dest: devstack-gate
|
||||
EOF
|
||||
/usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
|
||||
git://git.openstack.org \
|
||||
openstack-infra/devstack-gate
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
||||
|
||||
- shell:
|
||||
cmd: |
|
||||
set -e
|
||||
set -x
|
||||
export PYTHONUNBUFFERED=true
|
||||
|
||||
export PROJECTS="openstack/barbican $PROJECTS"
|
||||
export PROJECTS="openstack-dev/grenade $PROJECTS"
|
||||
export PROJECTS="openstack/python-barbicanclient $PROJECTS"
|
||||
export PROJECTS="openstack/barbican-tempest-plugin $PROJECTS"
|
||||
|
||||
export GRENADE_PLUGINRC="enable_grenade_plugin barbican https://git.openstack.org/openstack/barbican"
|
||||
export DEVSTACK_LOCAL_CONFIG+=$'\n'"export TEMPEST_PLUGINS='/opt/stack/new/barbican-tempest-plugin'"
|
||||
|
||||
export DEVSTACK_GATE_TEMPEST=1
|
||||
export DEVSTACK_GATE_GRENADE=pullup
|
||||
export DEVSTACK_GATE_TEMPEST_REGEX=barbican
|
||||
|
||||
export BRANCH_OVERRIDE=default
|
||||
if [ "$BRANCH_OVERRIDE" != "default" ] ; then
|
||||
export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
|
||||
fi
|
||||
# Add configuration values for enabling security features in local.conf
|
||||
function pre_test_hook {
|
||||
if [ -f /opt/stack/old/barbican-tempest-plugin/tools/pre_test_hook.sh ] ; then
|
||||
. /opt/stack/old/barbican-tempest-plugin/tools/pre_test_hook.sh
|
||||
fi
|
||||
}
|
||||
export -f pre_test_hook
|
||||
|
||||
cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
|
||||
./safe-devstack-vm-gate-wrap.sh
|
||||
executable: /bin/bash
|
||||
chdir: '{{ ansible_user_dir }}/workspace'
|
||||
environment: '{{ zuul | zuul_legacy_vars }}'
|
Loading…
Reference in New Issue
Block a user