From 6ec6dc71c0526c1b0f1997494527d1a902f40e7e Mon Sep 17 00:00:00 2001 From: Jesse Pretorius Date: Mon, 7 Nov 2016 11:55:13 +0000 Subject: [PATCH] Use updated get_url module checksum functionality Starting in Ansible 2.0, the get_url [1] module provides the ability for a checksum to be provided to the get_url module which will be verified against the local destination file and the task skipped if it matches. [1] http://docs.ansible.com/ansible/get_url_module.html This patch implements the use of this functionality. The ability to ignore a venv download failure is also removed as this is not necessary or desirable. It is better for the download to fail and the playbook execution to stop immediately so that the failure point is exposed. Change-Id: Iea1e6428d5c2e22eb6bce71d3ad5350864b536e1 --- meta/main.yml | 2 +- tasks/trove_install.yml | 43 ++++++----------------------------------- 2 files changed, 7 insertions(+), 38 deletions(-) diff --git a/meta/main.yml b/meta/main.yml index 9e288df..60c802a 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -4,7 +4,7 @@ galaxy_info: description: Deploy Trove with OpenStack Ansible company: OpenStack license: Apache-2.0 - min_ansible_version: 1.9 + min_ansible_version: 2.0 version: 0.1.0 platforms: - name: Ubuntu diff --git a/tasks/trove_install.yml b/tasks/trove_install.yml index 1a243fb..ed615d8 100644 --- a/tasks/trove_install.yml +++ b/tasks/trove_install.yml @@ -42,49 +42,19 @@ retries: 5 delay: 2 -- name: Get local venv checksum - stat: - path: "/var/cache/{{ trove_venv_download_url | basename }}" - get_md5: False - when: - - not trove_developer_mode | bool - register: local_venv_stat - -- name: Get remote venv checksum - uri: - url: "{{ trove_venv_download_url | replace('tgz', 'checksum') }}" - return_content: True - when: - - not trove_developer_mode | bool - register: remote_venv_checksum - -# TODO: When project moves to ansible 2 we can pass this a sha256sum which will: -# a) allow us to remove force: yes -# b) allow the module to calculate the checksum of dest file which would -# result in file being downloaded only if provided and dest sha256sum -# checksums differ - name: Attempt venv download get_url: url: "{{ trove_venv_download_url }}" dest: "/var/cache/{{ trove_venv_download_url | basename }}" - force: yes - failed_when: false - register: get_venv - when: - - not trove_developer_mode | bool - - (local_venv_stat.stat.exists == False or - {{ local_venv_stat.stat.checksum is defined and local_venv_stat.stat.checksum != remote_venv_checksum.content | trim }}) - -- name: Set trove get_venv fact - set_fact: - trove_get_venv: "{{ get_venv }}" + checksum: "sha1:{{ lookup('url', trove_venv_download_url | replace('tgz', 'checksum')) }}" + register: trove_get_venv + when: not trove_developer_mode | bool - name: Remove existing venv file: path: "{{ trove_bin | dirname }}" state: absent - when: - - trove_get_venv | changed + when: trove_get_venv | changed - name: Create trove venv dir file: @@ -120,8 +90,7 @@ until: install_packages|success retries: 5 delay: 2 - when: - - trove_get_venv | failed or trove_developer_mode | bool + when: trove_developer_mode | bool notify: - Restart trove API services - Restart trove conductor service @@ -133,4 +102,4 @@ virtualenv-tools --update-path=auto {{ trove_bin | dirname }} when: - not trove_developer_mode | bool - - trove_get_venv | success + - trove_get_venv | changed or trove_venv_dir | changed