From 038e3c1cf6b413f03bb5caca8cec1007fbec5662 Mon Sep 17 00:00:00 2001 From: Jesse Pretorius Date: Mon, 7 Nov 2016 13:02:29 +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: Ibe9d3a98e663cb1c1d7ae07aa10c9cee8e6aba3f --- meta/main.yml | 2 +- tasks/zaqar_install.yml | 56 ++++++----------------------------------- 2 files changed, 8 insertions(+), 50 deletions(-) diff --git a/meta/main.yml b/meta/main.yml index 82540b8..386fe52 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -18,7 +18,7 @@ galaxy_info: description: Installation and setup of Zaqar company: OpenStack license: Apache2 - min_ansible_version: 1.9 + min_ansible_version: 2.0 platforms: - name: Ubuntu versions: diff --git a/tasks/zaqar_install.yml b/tasks/zaqar_install.yml index 3f0d665..c6b0cc0 100644 --- a/tasks/zaqar_install.yml +++ b/tasks/zaqar_install.yml @@ -48,47 +48,15 @@ - zaqar-install - zaqar-pip-packages -- name: Get local venv checksum - stat: - path: "/var/cache/{{ zaqar_venv_download_url | basename }}" - get_md5: False - when: - - not zaqar_developer_mode | bool - - not zaqar_local_mode | bool - register: local_venv_stat - tags: - - zaqar-install - - zaqar-pip-packages - -- name: Get remote venv checksum - uri: - url: "{{ zaqar_venv_download_url | replace('tgz', 'checksum') }}" - return_content: True - when: - - not zaqar_developer_mode | bool - - not zaqar_local_mode | bool - register: remote_venv_checksum - tags: - - zaqar-install - - zaqar-pip-packages - -# 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: "{{ zaqar_venv_download_url }}" dest: "/var/cache/{{ zaqar_venv_download_url | basename }}" - force: yes - failed_when: false - register: get_venv + checksum: "sha1:{{ lookup('url', zaqar_venv_download_url | replace('tgz', 'checksum')) }}" + register: zaqar_get_venv when: - not zaqar_developer_mode | bool - not zaqar_local_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 }}) tags: - zaqar-install - zaqar-pip-packages @@ -97,16 +65,8 @@ copy: src: "{{ zaqar_venv_localpath }}" dest: "/var/cache/" - register: get_venv - when: - - zaqar_local_mode | bool - tags: - - zaqar-install - - zaqar-pip-packages - -- name: Set zaqar get_venv fact - set_fact: - zaqar_get_venv: "{{ get_venv }}" + register: zaqar_get_venv + when: zaqar_local_mode | bool tags: - zaqar-install - zaqar-pip-packages @@ -115,8 +75,7 @@ file: path: "{{ zaqar_bin | dirname }}" state: absent - when: - - zaqar_get_venv | changed + when: zaqar_get_venv | changed tags: - zaqar-install - zaqar-pip-packages @@ -158,8 +117,7 @@ until: install_packages|success retries: 5 delay: 2 - when: - - zaqar_get_venv | failed or zaqar_developer_mode | bool or zaqar_local_mode | bool + when: zaqar_developer_mode | bool or zaqar_local_mode | bool # notify: # - Restart zaqar api tags: @@ -171,7 +129,7 @@ virtualenv-tools --update-path=auto {{ zaqar_bin | dirname }} when: - not zaqar_developer_mode | bool or zaqar_local_mode | bool - - zaqar_get_venv | success + - zaqar_get_venv | changed or zaqar_venv_dir | changed tags: - zaqar-install - zaqar-pip-packages