From 6e596bef5517052ce99ec233f4e3e5bddd329d53 Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Mon, 15 Apr 2019 11:35:41 +1000 Subject: [PATCH] DCD-224: Handle version override and reading any existing cached version --- .../molecule/default/molecule.yml | 10 ++++++++-- .../molecule/default/playbook.yml | 5 +++++ .../molecule/default/tests/test_default.py | 18 +++++++++++++----- .../Dockerfile.j2 | 0 .../molecule.yml | 1 + .../playbook.yml | 1 + .../tests/test_default.py | 5 ++--- roles/jira_download/tasks/main.yml | 13 ++++++++++++- roles/jira_download/templates/version.j2 | 1 + 9 files changed, 43 insertions(+), 11 deletions(-) rename roles/jira_download/molecule/{version_undefined => version_override}/Dockerfile.j2 (100%) rename roles/jira_download/molecule/{version_undefined => version_override}/molecule.yml (95%) rename roles/jira_download/molecule/{version_undefined => version_override}/playbook.yml (85%) rename roles/jira_download/molecule/{version_undefined => version_override}/tests/test_default.py (66%) create mode 100644 roles/jira_download/templates/version.j2 diff --git a/roles/jira_download/molecule/default/molecule.yml b/roles/jira_download/molecule/default/molecule.yml index 65faca2..3941903 100644 --- a/roles/jira_download/molecule/default/molecule.yml +++ b/roles/jira_download/molecule/default/molecule.yml @@ -6,13 +6,19 @@ driver: lint: name: yamllint platforms: - - name: instance - image: centos:7 + - name: amazon_linux2 + image: amazonlinux:2 + - name: ubuntu_lts + image: ubuntu:bionic provisioner: name: ansible lint: name: ansible-lint + inventory: + links: + group_vars: ../../../../group_vars/ verifier: name: testinfra lint: name: flake8 + enabled: false diff --git a/roles/jira_download/molecule/default/playbook.yml b/roles/jira_download/molecule/default/playbook.yml index 09d892c..2582181 100644 --- a/roles/jira_download/molecule/default/playbook.yml +++ b/roles/jira_download/molecule/default/playbook.yml @@ -1,5 +1,10 @@ --- - name: Converge hosts: all + vars: + atl_product_family: "jira" + atl_product_edition: "jira-software" + atl_product_user: "jira" roles: + - role: product_common - role: jira_download diff --git a/roles/jira_download/molecule/default/tests/test_default.py b/roles/jira_download/molecule/default/tests/test_default.py index eedd64a..2c0d27e 100644 --- a/roles/jira_download/molecule/default/tests/test_default.py +++ b/roles/jira_download/molecule/default/tests/test_default.py @@ -1,4 +1,5 @@ import os +import urllib.request import testinfra.utils.ansible_runner @@ -6,9 +7,16 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') -def test_hosts_file(host): - f = host.file('/etc/hosts') +def test_version_downloaded(host): + verfile = host.file('/media/atl/jira/shared/jira-software.version') + assert verfile.exists - assert f.exists - assert f.user == 'root' - assert f.group == 'root' + +def test_version_is_latest(host): + verfile = host.file('/media/atl/jira/shared/jira-software.version') + assert verfile.exists + + upstream_fd = urllib.request.urlopen("https://s3.amazonaws.com/atlassian-software/releases/jira-software/latest") + upstream = upstream_fd.read() + + assert verfile.content.decode("UTF-8").strip() == upstream.decode("UTF-8").strip() diff --git a/roles/jira_download/molecule/version_undefined/Dockerfile.j2 b/roles/jira_download/molecule/version_override/Dockerfile.j2 similarity index 100% rename from roles/jira_download/molecule/version_undefined/Dockerfile.j2 rename to roles/jira_download/molecule/version_override/Dockerfile.j2 diff --git a/roles/jira_download/molecule/version_undefined/molecule.yml b/roles/jira_download/molecule/version_override/molecule.yml similarity index 95% rename from roles/jira_download/molecule/version_undefined/molecule.yml rename to roles/jira_download/molecule/version_override/molecule.yml index 6264f27..3941903 100644 --- a/roles/jira_download/molecule/version_undefined/molecule.yml +++ b/roles/jira_download/molecule/version_override/molecule.yml @@ -21,3 +21,4 @@ verifier: name: testinfra lint: name: flake8 + enabled: false diff --git a/roles/jira_download/molecule/version_undefined/playbook.yml b/roles/jira_download/molecule/version_override/playbook.yml similarity index 85% rename from roles/jira_download/molecule/version_undefined/playbook.yml rename to roles/jira_download/molecule/version_override/playbook.yml index 2582181..dbcdf6f 100644 --- a/roles/jira_download/molecule/version_undefined/playbook.yml +++ b/roles/jira_download/molecule/version_override/playbook.yml @@ -5,6 +5,7 @@ atl_product_family: "jira" atl_product_edition: "jira-software" atl_product_user: "jira" + atl_product_version: "7.13.2" roles: - role: product_common - role: jira_download diff --git a/roles/jira_download/molecule/version_undefined/tests/test_default.py b/roles/jira_download/molecule/version_override/tests/test_default.py similarity index 66% rename from roles/jira_download/molecule/version_undefined/tests/test_default.py rename to roles/jira_download/molecule/version_override/tests/test_default.py index e99fa6d..3eb767a 100644 --- a/roles/jira_download/molecule/version_undefined/tests/test_default.py +++ b/roles/jira_download/molecule/version_override/tests/test_default.py @@ -11,11 +11,10 @@ def test_version_downloaded(host): verfile = host.file('/media/atl/jira/shared/jira-software.version') assert verfile.exists + def test_version_is_latest(host): verfile = host.file('/media/atl/jira/shared/jira-software.version') assert verfile.exists - upstream_fd = urllib.request.urlopen("https://s3.amazonaws.com/atlassian-software/releases/jira-software/latest") - upstream = upstream_fd.read() + assert verfile.content.decode("UTF-8").strip() == "7.13.2" - assert verfile.content.decode("UTF-8").strip() == upstream.decode("UTF-8").strip() diff --git a/roles/jira_download/tasks/main.yml b/roles/jira_download/tasks/main.yml index 175c50f..b4a03b2 100644 --- a/roles/jira_download/tasks/main.yml +++ b/roles/jira_download/tasks/main.yml @@ -1,9 +1,20 @@ --- -- name: Fetch the latest version if necessary +- name: Fetch and cache latest version when no override get_url: url: "{{ atl_product_latest_version_url }}" dest: "{{ atl_product_version_cache }}" force: false when: atl_product_version is undefined or atl_product_version == "latest" +- name: Write override cached version when specified + template: + src: version.j2 + dest: "{{ atl_product_version_cache }}" + force: false + when: atl_product_version is defined and atl_product_version != "latest" + +- name: Use version for product version + slurp: + src: "{{ atl_product_version_cache }}" + register: atl_product_version diff --git a/roles/jira_download/templates/version.j2 b/roles/jira_download/templates/version.j2 new file mode 100644 index 0000000..7de6d7e --- /dev/null +++ b/roles/jira_download/templates/version.j2 @@ -0,0 +1 @@ +{{ atl_product_version }}