From dabe2c541877a630356bb94faf54b9ccf06e394f 2020-11-10 21:27:55 From: Branko Majic Date: 2020-11-10 21:27:55 Subject: [PATCH] MAR-166: Deploy pipreqcheck files to correct directory based on Python version selected via the wsgi_requirements role. --- diff --git a/docs/releasenotes.rst b/docs/releasenotes.rst index 8232572e477ad33f63bfc8f1da8d7de2c2211dd6..18e869b7a35cb90008d9e330525ef55f2a7065a9 100644 --- a/docs/releasenotes.rst +++ b/docs/releasenotes.rst @@ -112,6 +112,13 @@ Bug fixes: * Run apticron at least once during initial installation to avoid accidental locking later on during the same playbook run. +* ``wsgi_website`` role + + * Deploy the requirement files used for upgrade checks to correct + location when using Python 3. Previously the files would get + deployed to directory dedicated to Python 2 version, which means + the checks would be performed using Python 2 instead of Python 3. + New features/improvements: * Tests have been updated to work with latest Molecule/Testinfra as diff --git a/roles/wsgi_website/defaults/main.yml b/roles/wsgi_website/defaults/main.yml index de95ba0e22238da6ea187fb297611570a8ae1e7d..19d7e8b9451889dbc95043ded02470486a51591b 100644 --- a/roles/wsgi_website/defaults/main.yml +++ b/roles/wsgi_website/defaults/main.yml @@ -24,3 +24,4 @@ admin: "admin-{{ fqdn | replace('.', '_') }}" user: "web-{{ fqdn | replace('.', '_') }}" home: "/var/www/{{ fqdn }}" python_interpreter: "/usr/bin/python{{ python_version }}" +pip_check_requirements_upgrades_directory: "/etc/pip_check_requirements_upgrades{% if python_version | int == 3 %}-py3{% endif %}" diff --git a/roles/wsgi_website/molecule/default/tests/test_default.py b/roles/wsgi_website/molecule/default/tests/test_default.py index 82f5db009b7bad3f4585bb3107a2ee51135b98c4..2a8b840860f0b4298dc798273fb83f2d20e140ff 100644 --- a/roles/wsgi_website/molecule/default/tests/test_default.py +++ b/roles/wsgi_website/molecule/default/tests/test_default.py @@ -541,25 +541,25 @@ def test_python_version_in_virtualenv(host, python_path, expected_version): assert expected_version in python_version.stdout or expected_version in python_version.stderr -@pytest.mark.parametrize("fqdn, expected_requirements_in, expected_requirements", [ - ("parameters-mandatory", ["futures", "gunicorn"], ["futures==3.3.0", "gunicorn==19.10.0"]), - ("parameters-optional.local", ["gunicorn"], ["futures==3.1.1", "gunicorn==20.0.4"]), - ("parameters-paste-req", ["futures", "gunicorn"], ["futures==3.1.1", "gunicorn==19.8.1"]), +@pytest.mark.parametrize("fqdn, pip_check_requirements_upgrades_directory, expected_requirements_in, expected_requirements", [ + ("parameters-mandatory", "/etc/pip_check_requirements_upgrades", ["futures", "gunicorn"], ["futures==3.3.0", "gunicorn==19.10.0"]), + ("parameters-optional.local", "/etc/pip_check_requirements_upgrades-py3", ["gunicorn"], ["futures==3.1.1", "gunicorn==20.0.4"]), + ("parameters-paste-req", "/etc/pip_check_requirements_upgrades", ["futures", "gunicorn"], ["futures==3.1.1", "gunicorn==19.8.1"]), ]) -def test_wsgi_requirements(host, fqdn, expected_requirements_in, expected_requirements): +def test_wsgi_requirements(host, fqdn, pip_check_requirements_upgrades_directory, expected_requirements_in, expected_requirements): """ Tests if Python requirements files are set-up correctly (for both installation and upgrade checks). """ with host.sudo(): - directory = host.file('/etc/pip_check_requirements_upgrades/%s' % fqdn) + directory = host.file('%s/%s' % (pip_check_requirements_upgrades_directory, fqdn)) assert directory.is_directory assert directory.user == 'root' assert directory.group == 'pipreqcheck' assert directory.mode == 0o750 - config = host.file('/etc/pip_check_requirements_upgrades/%s/wsgi_requirements.in' % fqdn) + config = host.file('%s/%s/wsgi_requirements.in' % (pip_check_requirements_upgrades_directory, fqdn)) assert config.is_file assert config.user == 'root' assert config.group == 'pipreqcheck' @@ -568,7 +568,7 @@ def test_wsgi_requirements(host, fqdn, expected_requirements_in, expected_requir check_requirements_in = config.content_string.strip().split("\n") assert check_requirements_in == expected_requirements_in - config = host.file('/etc/pip_check_requirements_upgrades/%s/wsgi_requirements.txt' % fqdn) + config = host.file('%s/%s/wsgi_requirements.txt' % (pip_check_requirements_upgrades_directory, fqdn)) assert config.is_file assert config.user == 'root' assert config.group == 'pipreqcheck' diff --git a/roles/wsgi_website/tasks/main.yml b/roles/wsgi_website/tasks/main.yml index b1c141b541839a6ffca35fc9ca8a5df9fd52eca9..c74b3ce06c3ab61098b24ddb84e0988432745dcb 100644 --- a/roles/wsgi_website/tasks/main.yml +++ b/roles/wsgi_website/tasks/main.yml @@ -167,7 +167,7 @@ - name: Set-up directory for storing requirements file for upgrade checks file: - path: "/etc/pip_check_requirements_upgrades/{{ fqdn }}" + path: "{{ pip_check_requirements_upgrades_directory }}/{{ fqdn }}" state: directory owner: root group: pipreqcheck @@ -176,7 +176,7 @@ - name: Deploy WSGI requirements files for upgrade checks template: src: "{{ item }}.j2" - dest: "/etc/pip_check_requirements_upgrades/{{ fqdn }}/{{ item }}" + dest: "{{ pip_check_requirements_upgrades_directory }}/{{ fqdn }}/{{ item }}" owner: root group: pipreqcheck mode: 0640