From 7ce3a92ff50340640b622589152e235eaa1d45cf Mon Sep 17 00:00:00 2001 From: Kevin Carter Date: Wed, 19 Jun 2019 08:38:15 -0500 Subject: [PATCH] Update the _skeleton_ role for proper file generation This change updates the _skeleton_ role so that the files it generates are properly formatted. When a new role is generated the resulting code will now pass all linting checks by default. Before this change several files, which were assumed to be needing modification by the developer, would fail lint checks right after generation due to newline issues at the end of the file. A test has been added to ensure the role generation process produces minimally functional role that is 100% compliant. Change-Id: I28526b022b8c2b5281d2a536231ebcac3b0a7662 Signed-off-by: Kevin Carter --- _skeleton_role_/defaults/main.yml.j2 | 1 + _skeleton_role_/meta/main.yml.j2 | 1 + _skeleton_role_/molecule/default/Dockerfile.j2 | 1 + _skeleton_role_/molecule/default/playbook.yml.j2 | 1 + _skeleton_role_/tasks/{main.yml => main.yml.j2} | 2 ++ tox.ini | 10 ++++++++++ zuul.d/molecule.yaml | 10 ++++++++++ 7 files changed, 26 insertions(+) rename _skeleton_role_/tasks/{main.yml => main.yml.j2} (98%) diff --git a/_skeleton_role_/defaults/main.yml.j2 b/_skeleton_role_/defaults/main.yml.j2 index 686551500..7e0e13ce7 100644 --- a/_skeleton_role_/defaults/main.yml.j2 +++ b/_skeleton_role_/defaults/main.yml.j2 @@ -19,3 +19,4 @@ # All variables within this role should have a prefix of "{{ role_name }}" {{ role_name }}_debug: false + diff --git a/_skeleton_role_/meta/main.yml.j2 b/_skeleton_role_/meta/main.yml.j2 index 5d53d3bba..b8233a2f4 100644 --- a/_skeleton_role_/meta/main.yml.j2 +++ b/_skeleton_role_/meta/main.yml.j2 @@ -42,3 +42,4 @@ galaxy_info: # List your role dependencies here, one per line. Be sure to remove the '[]' above, # if you add dependencies to this list. dependencies: [] + diff --git a/_skeleton_role_/molecule/default/Dockerfile.j2 b/_skeleton_role_/molecule/default/Dockerfile.j2 index 4475353b9..d18ed1764 100644 --- a/_skeleton_role_/molecule/default/Dockerfile.j2 +++ b/_skeleton_role_/molecule/default/Dockerfile.j2 @@ -35,3 +35,4 @@ RUN easy_install {{ pkg }} {% endraw %} CMD ["sh", "-c", "while true; do sleep 10000; done"] + diff --git a/_skeleton_role_/molecule/default/playbook.yml.j2 b/_skeleton_role_/molecule/default/playbook.yml.j2 index 8d823ecb6..0a22b2a1b 100644 --- a/_skeleton_role_/molecule/default/playbook.yml.j2 +++ b/_skeleton_role_/molecule/default/playbook.yml.j2 @@ -19,3 +19,4 @@ hosts: all roles: - role: "{{ role_name }}" + diff --git a/_skeleton_role_/tasks/main.yml b/_skeleton_role_/tasks/main.yml.j2 similarity index 98% rename from _skeleton_role_/tasks/main.yml rename to _skeleton_role_/tasks/main.yml.j2 index 749bfdfe4..dff12fc30 100644 --- a/_skeleton_role_/tasks/main.yml +++ b/_skeleton_role_/tasks/main.yml.j2 @@ -16,6 +16,7 @@ # "{{ role_name }}" will search for and load any operating system variable file +{% raw %} # found within the "vars/" path. If no OS files are found the task will skip. - name: Gather variables for each operating system include_vars: "{{ item }}" @@ -30,3 +31,4 @@ - "{{ ansible_os_family | lower }}.yml" tags: - always +{% endraw %} diff --git a/tox.ini b/tox.ini index b413d98bc..354a23c2f 100644 --- a/tox.ini +++ b/tox.ini @@ -104,6 +104,16 @@ ignore = D001 [testenv:venv] commands = {posargs} +[testenv:role-addition] +basepython={[testenv:mol]basepython} +deps= + {[testenv:mol]deps} + {[testenv:linters]deps} +commands = + bash -c "ansible-playbook -i localhost, role-addition.yml -e role_name=skeleton_test" + bash -c "pushd {toxinidir}/tripleo_ansible/roles/skeleton_test; molecule test --all; popd" + {[testenv:linters]commands} + [testenv:mol] # environment naming scheme "mol-$ROLE_NAME" # basepython forces tox to use system python and avoid other # python versions like pyenv ones diff --git a/zuul.d/molecule.yaml b/zuul.d/molecule.yaml index 4c2de6068..83d346550 100644 --- a/zuul.d/molecule.yaml +++ b/zuul.d/molecule.yaml @@ -6,12 +6,14 @@ - tripleo-ansible-centos-7-molecule-test_deps - tripleo-ansible-centos-7-molecule-test_package_action - tripleo-ansible-centos-7-molecule-tuned + - tripleo-ansible-centos-7-role-addition gate: jobs: - tripleo-ansible-centos-7-molecule-aide - tripleo-ansible-centos-7-molecule-test_deps - tripleo-ansible-centos-7-molecule-test_package_action - tripleo-ansible-centos-7-molecule-tuned + - tripleo-ansible-centos-7-role-addition name: tripleo-ansible-molecule-jobs - job: files: @@ -42,3 +44,11 @@ parent: tripleo-ansible-centos vars: tox_envlist: mol-tuned +- job: + files: + - ^_skeleton_role_/.* + - ^role-addition.yml + name: tripleo-ansible-centos-7-role-addition + parent: tripleo-ansible-centos + vars: + tox_envlist: role-addition