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: I564c0055cfae461fc8417ee7e57c5acb7080abe6
This commit is contained in:
Jesse Pretorius 2016-11-07 11:26:33 +00:00 committed by Jesse Pretorius (odyssey4me)
parent bfdc02af74
commit 7cbcc7bc74
2 changed files with 8 additions and 40 deletions

View File

@ -18,7 +18,7 @@ galaxy_info:
description: Installation and setup of neutron description: Installation and setup of neutron
company: Rackspace company: Rackspace
license: Apache2 license: Apache2
min_ansible_version: 1.9 min_ansible_version: 2.0
platforms: platforms:
- name: Ubuntu - name: Ubuntu
versions: versions:

View File

@ -40,57 +40,26 @@
retries: 5 retries: 5
delay: 2 delay: 2
- name: Get local venv checksum
stat:
path: "/var/cache/{{ neutron_venv_download_url | basename }}"
get_md5: False
when:
- not neutron_developer_mode | bool
register: local_venv_stat
- name: Get remote venv checksum
uri:
url: "{{ neutron_venv_download_url | replace('tgz', 'checksum') }}"
return_content: True
when:
- not neutron_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 - name: Attempt venv download
get_url: get_url:
url: "{{ neutron_venv_download_url }}" url: "{{ neutron_venv_download_url }}"
dest: "/var/cache/{{ neutron_venv_download_url | basename }}" dest: "/var/cache/{{ neutron_venv_download_url | basename }}"
force: yes checksum: "sha1:{{ lookup('url', neutron_venv_download_url | replace('tgz', 'checksum')) }}"
failed_when: false register: neutron_get_venv
register: get_venv when: not neutron_developer_mode | bool
when:
- not neutron_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 neutron get_venv fact
set_fact:
neutron_get_venv: "{{ get_venv }}"
- name: Remove existing venv - name: Remove existing venv
file: file:
path: "{{ neutron_bin | dirname }}" path: "{{ neutron_bin | dirname }}"
state: absent state: absent
when: when: neutron_get_venv | changed
- neutron_get_venv | changed
- name: Create neutron venv dir - name: Create neutron venv dir
file: file:
path: "{{ neutron_bin | dirname }}" path: "{{ neutron_bin | dirname }}"
state: directory state: directory
register: neutron_venv_dir register: neutron_venv_dir
when: when: not neutron_developer_mode | bool
- not neutron_developer_mode | bool
- name: Unarchive pre-built venv - name: Unarchive pre-built venv
unarchive: unarchive:
@ -116,8 +85,7 @@
until: install_packages|success until: install_packages|success
retries: 5 retries: 5
delay: 2 delay: 2
when: when: neutron_developer_mode | bool
- neutron_get_venv | failed or neutron_developer_mode | bool
notify: Restart neutron services notify: Restart neutron services
- name: Update virtualenv path - name: Update virtualenv path
@ -125,7 +93,7 @@
virtualenv-tools --update-path=auto {{ neutron_bin | dirname }} virtualenv-tools --update-path=auto {{ neutron_bin | dirname }}
when: when:
- not neutron_developer_mode | bool - not neutron_developer_mode | bool
- neutron_get_venv | success - neutron_get_venv | changed or neutron_venv_dir | changed
- name: Install optional pip packages - name: Install optional pip packages
pip: pip: