Ironic: Fix docs & linting tests
Unfortunately the first commit of os_ironic had broken tests. This patch corrects the test configurations to ensure that the docs and lint tests work. As a temporary measure, functional testing is left as a place holder to allow other patches to be worked on for this role while the functional testing is being put together. Change-Id: I38278155232a4e4d6ef259b79bd515fae2bc837b Signed-off-by: Michael Davies <michael@the-davies.net> Signed-off-by: Jesse Pretorius <jesse.pretorius@rackspace.co.uk>
This commit is contained in:
parent
aabd2d9809
commit
f8eb0aebfe
@ -27,7 +27,8 @@ galaxy_info:
|
||||
- baremetal
|
||||
- system
|
||||
dependencies:
|
||||
- pip_lock_down
|
||||
- apt_package_pinning
|
||||
- galera_client
|
||||
- openstack_openrc
|
||||
- pip_install
|
||||
# TODO(mrda): Add in openstack_openrc once this role is split out
|
||||
# from openstack-ansible, as it's useful for standalone use.
|
||||
# - openstack_openrc
|
||||
|
@ -43,8 +43,8 @@
|
||||
|
||||
- name: Update database schema
|
||||
command: "{{ ironic_bin }}/ironic-dbsync --config-file /etc/ironic/ironic.conf upgrade"
|
||||
sudo: yes
|
||||
sudo_user: "{{ ironic_system_user_name }}"
|
||||
become: yes
|
||||
become_user: "{{ ironic_system_user_name }}"
|
||||
notify:
|
||||
- Restart ironic services
|
||||
tags:
|
||||
|
@ -35,7 +35,7 @@
|
||||
- include: ironic_conductor_post_install.yml
|
||||
when: >
|
||||
inventory_hostname in groups['ironic_conductor']
|
||||
|
||||
|
||||
- include: ironic_db_setup.yml
|
||||
when: >
|
||||
inventory_hostname == groups['ironic_conductor'][0]
|
||||
|
@ -1,5 +1,7 @@
|
||||
ansible-lint
|
||||
ansible>=1.9.1,<2.0.0
|
||||
bashate
|
||||
flake8
|
||||
|
||||
# this is required for the docs build jobs
|
||||
sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2
|
||||
|
@ -1,2 +1,8 @@
|
||||
# This is a file to contain the extra roles required for the testing
|
||||
# to complete. It is currently intentionally empty.
|
||||
- name: galera_client
|
||||
src: https://git.openstack.org/openstack/openstack-ansible-galera_client
|
||||
scm: git
|
||||
version: master
|
||||
- name: pip_install
|
||||
src: https://git.openstack.org/openstack/openstack-ansible-pip_install
|
||||
scm: git
|
||||
version: master
|
||||
|
@ -1,5 +0,0 @@
|
||||
[defaults]
|
||||
roles_path = ../..
|
||||
remote_tmp = ../.ansible/tmp/
|
||||
|
||||
host_key_checking = False
|
@ -17,4 +17,4 @@
|
||||
hosts: localhost
|
||||
remote_user: root
|
||||
roles:
|
||||
- role: openstack-ansible-ironic
|
||||
- role: "{{ rolename | basename }}"
|
||||
|
161
tox.ini
161
tox.ini
@ -1,95 +1,134 @@
|
||||
[tox]
|
||||
minversion = 1.6
|
||||
skipsdist = True
|
||||
envlist = docs,pep8,bashate,ansible-syntax,ansible-lint,ansible-functional
|
||||
envlist = docs,linters,functional
|
||||
|
||||
|
||||
[testenv]
|
||||
usedevelop = True
|
||||
install_command = pip install -U {opts} {packages}
|
||||
setenv = VIRTUAL_ENV={envdir}
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
commands =
|
||||
/usr/bin/find . -type f -name "*.pyc" -delete
|
||||
ansible-galaxy install \
|
||||
--role-file=ansible-role-requirements.yml \
|
||||
--ignore-errors \
|
||||
--force
|
||||
commands = /usr/bin/find . -type f -name "*.pyc" -delete
|
||||
passenv =
|
||||
HOME
|
||||
whitelist_externals =
|
||||
bash
|
||||
git
|
||||
rm
|
||||
echo
|
||||
setenv =
|
||||
VIRTUAL_ENV={envdir}
|
||||
ANSIBLE_HOST_KEY_CHECKING = False
|
||||
ANSIBLE_SSH_CONTROL_PATH = /tmp/%%h-%%r
|
||||
# TODO (odyssey4me) These are only here as they are non-standard folder
|
||||
# names for Ansible 1.9.x. We are using the standard folder names for
|
||||
# Ansible v2.x. We can remove this when we move to Ansible 2.x.
|
||||
ANSIBLE_ACTION_PLUGINS = {homedir}/.ansible/plugins/action
|
||||
ANSIBLE_CALLBACK_PLUGINS = {homedir}/.ansible/plugins/callback
|
||||
ANSIBLE_FILTER_PLUGINS = {homedir}/.ansible/plugins/filter
|
||||
ANSIBLE_LOOKUP_PLUGINS = {homedir}/.ansible/plugins/lookup
|
||||
# This is required as the default is the current path or a path specified
|
||||
# in ansible.cfg
|
||||
ANSIBLE_LIBRARY = {homedir}/.ansible/plugins/library
|
||||
# This is required as the default is '/etc/ansible/roles' or a path
|
||||
# specified in ansible.cfg
|
||||
ANSIBLE_ROLES_PATH = {homedir}/.ansible/roles:{toxinidir}/..
|
||||
|
||||
|
||||
[testenv:docs]
|
||||
commands = python setup.py build_sphinx
|
||||
commands=
|
||||
python setup.py build_sphinx
|
||||
|
||||
|
||||
# environment used by the -infra templated docs job
|
||||
[testenv:venv]
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
commands = {posargs}
|
||||
|
||||
# Run hacking/flake8 check for all python files
|
||||
[testenv:pep8]
|
||||
deps =
|
||||
bashate
|
||||
flake8
|
||||
whitelist_externals = bash
|
||||
commands =
|
||||
bash -c "grep -Irl \
|
||||
-e '!/usr/bin/env python' \
|
||||
-e '!/bin/python' \
|
||||
-e '!/usr/bin/python' \
|
||||
--exclude-dir '.*' \
|
||||
--exclude-dir 'doc' \
|
||||
--exclude-dir '*.egg' \
|
||||
--exclude-dir '*.egg-info' \
|
||||
--exclude 'tox.ini' \
|
||||
--exclude '*.sh' \
|
||||
{toxinidir} | xargs flake8 --verbose"
|
||||
|
||||
# Run bashate check for all bash scripts
|
||||
# Ignores the following rules:
|
||||
# E003: Indent not multiple of 4 (we prefer to use multiples of 2)
|
||||
bash -c "grep -Irl \
|
||||
-e '!/usr/bin/env bash' \
|
||||
-e '!/bin/bash' \
|
||||
-e '!/bin/sh' \
|
||||
--exclude-dir '.*' \
|
||||
--exclude-dir '*.egg' \
|
||||
--exclude-dir '*.egg-info' \
|
||||
--exclude 'tox.ini' \
|
||||
{toxinidir} | xargs bashate --verbose --ignore=E003"
|
||||
[testenv:pep8]
|
||||
commands =
|
||||
# Run hacking/flake8 check for all python files
|
||||
bash -c "grep --recursive --binary-files=without-match \
|
||||
--files-with-match '^.!.*python$' \
|
||||
--exclude-dir .eggs \
|
||||
--exclude-dir .git \
|
||||
--exclude-dir .tox \
|
||||
--exclude-dir *.egg-info \
|
||||
--exclude-dir doc \
|
||||
{toxinidir} | xargs flake8 --verbose"
|
||||
|
||||
[flake8]
|
||||
# Ignores the following rules due to how ansible modules work in general
|
||||
# F403 'from ansible.module_utils.basic import *' used; unable to detect undefined names
|
||||
# H303 No wildcard (*) import.
|
||||
# F403 'from ansible.module_utils.basic import *' used;
|
||||
# unable to detect undefined names
|
||||
# H303 No wildcard (*) import.
|
||||
ignore=F403,H303
|
||||
|
||||
[testenv:ansible-syntax]
|
||||
changedir = tests
|
||||
|
||||
[testenv:bashate]
|
||||
commands =
|
||||
# Run bashate check for all bash scripts
|
||||
# Ignores the following rules:
|
||||
# E003: Indent not multiple of 4 (we prefer to use multiples of 2)
|
||||
# E006: Line longer than 79 columns (as many scripts use jinja
|
||||
# templating, this is very difficult)
|
||||
# E040: Syntax error determined using `bash -n` (as many scripts
|
||||
# use jinja templating, this will often fail and the syntax
|
||||
# error will be discovered in execution anyway)
|
||||
bash -c "grep --recursive --binary-files=without-match \
|
||||
--files-with-match '^.!.*\(ba\)\?sh$' \
|
||||
--exclude-dir .tox \
|
||||
--exclude-dir .git \
|
||||
{toxinidir} | xargs bashate --error . --verbose --ignore=E003,E006,E040"
|
||||
|
||||
|
||||
[testenv:ansible-syntax]
|
||||
commands =
|
||||
rm -rf {homedir}/.ansible
|
||||
git clone https://git.openstack.org/openstack/openstack-ansible-plugins \
|
||||
{homedir}/.ansible/plugins
|
||||
ansible-galaxy install \
|
||||
--role-file=ansible-role-requirements.yml \
|
||||
--role-file={toxinidir}/tests/ansible-role-requirements.yml \
|
||||
--ignore-errors \
|
||||
--force
|
||||
ansible-playbook -i inventory \
|
||||
ansible-playbook -i {toxinidir}/tests/inventory \
|
||||
--syntax-check \
|
||||
--list-tasks \
|
||||
-e "rolename={toxinidir}" \
|
||||
test.yml
|
||||
{toxinidir}/tests/test.yml
|
||||
|
||||
|
||||
[testenv:ansible-lint]
|
||||
changedir = tests
|
||||
commands =
|
||||
ansible-galaxy install \
|
||||
--role-file=ansible-role-requirements.yml \
|
||||
--ignore-errors \
|
||||
--force
|
||||
ansible-lint test.yml
|
||||
ansible-lint {toxinidir}/tests/test.yml
|
||||
|
||||
[testenv:ansible-functional]
|
||||
changedir = tests
|
||||
|
||||
[testenv:functional]
|
||||
commands =
|
||||
ansible-galaxy install \
|
||||
--role-file=ansible-role-requirements.yml \
|
||||
--ignore-errors \
|
||||
--force
|
||||
ansible-playbook -i inventory \
|
||||
-e "rolename={toxinidir}" \
|
||||
test.yml
|
||||
echo -e "\n *******************************************************\n" \
|
||||
"**** Functional Testing is still to be implemented ****\n" \
|
||||
"**** TODO: Write tests here ****\n" \
|
||||
"*******************************************************\n"
|
||||
# As a temporary measure, while functional testing is being worked on, we
|
||||
# will not execute the functional test. This allows other patches to be
|
||||
# worked on while the functional testing is being worked out.
|
||||
#rm -rf {homedir}/.ansible
|
||||
#git clone https://git.openstack.org/openstack/openstack-ansible-plugins \
|
||||
# {homedir}/.ansible/plugins
|
||||
#ansible-galaxy install \
|
||||
# --role-file={toxinidir}/tests/ansible-role-requirements.yml \
|
||||
# --ignore-errors \
|
||||
# --force
|
||||
#ansible-playbook -i {toxinidir}/tests/inventory \
|
||||
# -e "rolename={toxinidir}" \
|
||||
# -vv \
|
||||
# {toxinidir}/tests/test.yml
|
||||
|
||||
|
||||
[testenv:linters]
|
||||
commands =
|
||||
{[testenv:pep8]commands}
|
||||
{[testenv:bashate]commands}
|
||||
{[testenv:ansible-lint]commands}
|
||||
{[testenv:ansible-syntax]commands}
|
||||
|
Loading…
Reference in New Issue
Block a user