Skip to content

Commit

Permalink
Use updated get_url module checksum functionality
Browse files Browse the repository at this point in the history
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: I5fc9c6899293dad7675ed4927e5c98047db6b485
  • Loading branch information
Jesse Pretorius committed Nov 7, 2016
1 parent a73a2b1 commit 4ef956f
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 36 deletions.
2 changes: 1 addition & 1 deletion meta/main.yml
Expand Up @@ -18,7 +18,7 @@ galaxy_info:
description: Installation and setup of Designate
company: OpenStack
license: Apache2
min_ansible_version: 1.9.0
min_ansible_version: 2.0
platforms:
- name: Ubuntu
versions:
Expand Down
40 changes: 5 additions & 35 deletions tasks/designate_install.yml
Expand Up @@ -38,42 +38,13 @@
retries: 5
delay: 2

- name: Get local venv checksum
stat:
path: "/var/cache/{{ designate_venv_download_url | basename }}"
get_md5: False
when:
- not designate_developer_mode | bool
register: local_venv_stat

- name: Get remote venv checksum
uri:
url: "{{ designate_venv_download_url | replace('tgz', 'checksum') }}"
return_content: True
when:
- not designate_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: "{{ designate_venv_download_url }}"
dest: "/var/cache/{{ designate_venv_download_url | basename }}"
force: yes
failed_when: false
register: get_venv
when:
- not designate_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 designate get_venv fact
set_fact:
designate_get_venv: "{{ get_venv }}"
checksum: "sha1:{{ lookup('url', designate_venv_download_url | replace('tgz', 'checksum')) }}"
register: designate_get_venv
when: not designate_developer_mode | bool

- name: Remove existing venv
file:
Expand Down Expand Up @@ -116,8 +87,7 @@
until: install_packages|success
retries: 5
delay: 2
when:
- designate_get_venv | failed or designate_developer_mode | bool
when: designate_developer_mode | bool
notify:
- Restart designate services

Expand All @@ -126,4 +96,4 @@
virtualenv-tools --update-path=auto {{ designate_bin | dirname }}
when:
- not designate_developer_mode | bool
- designate_get_venv | success
- designate_get_venv | changed or designate_venv_dir | changed

0 comments on commit 4ef956f

Please sign in to comment.