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: I0852b5319651b36b233bf0f2d425526743444052
(cherry picked from commit 42904c451d)
This commit is contained in:
@@ -18,7 +18,7 @@ galaxy_info:
|
||||
description: Installation and setup of nova
|
||||
company: Rackspace
|
||||
license: Apache2
|
||||
min_ansible_version: 1.9
|
||||
min_ansible_version: 2.0
|
||||
platforms:
|
||||
- name: Ubuntu
|
||||
versions:
|
||||
|
||||
@@ -43,51 +43,13 @@
|
||||
- nova-install
|
||||
- nova-pip-packages
|
||||
|
||||
- name: Get local venv checksum
|
||||
stat:
|
||||
path: "/var/cache/{{ nova_venv_download_url | basename }}"
|
||||
get_md5: False
|
||||
when:
|
||||
- not nova_developer_mode | bool
|
||||
register: local_venv_stat
|
||||
tags:
|
||||
- nova-install
|
||||
- nova-pip-packages
|
||||
|
||||
- name: Get remote venv checksum
|
||||
uri:
|
||||
url: "{{ nova_venv_download_url | replace('tgz', 'checksum') }}"
|
||||
return_content: True
|
||||
when:
|
||||
- not nova_developer_mode | bool
|
||||
register: remote_venv_checksum
|
||||
tags:
|
||||
- nova-install
|
||||
- nova-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: "{{ nova_venv_download_url }}"
|
||||
dest: "/var/cache/{{ nova_venv_download_url | basename }}"
|
||||
force: yes
|
||||
failed_when: false
|
||||
register: get_venv
|
||||
when:
|
||||
- not nova_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 }})
|
||||
tags:
|
||||
- nova-install
|
||||
- nova-pip-packages
|
||||
|
||||
- name: Set nova get_venv fact
|
||||
set_fact:
|
||||
nova_get_venv: "{{ get_venv }}"
|
||||
checksum: "sha1:{{ lookup('url', nova_venv_download_url | replace('tgz', 'checksum')) }}"
|
||||
register: nova_get_venv
|
||||
when: not nova_developer_mode | bool
|
||||
tags:
|
||||
- nova-install
|
||||
- nova-pip-packages
|
||||
@@ -96,8 +58,7 @@
|
||||
file:
|
||||
path: "{{ nova_bin | dirname }}"
|
||||
state: absent
|
||||
when:
|
||||
- nova_get_venv | changed
|
||||
when: nova_get_venv | changed
|
||||
tags:
|
||||
- nova-install
|
||||
- nova-pip-packages
|
||||
@@ -138,8 +99,7 @@
|
||||
until: install_packages|success
|
||||
retries: 5
|
||||
delay: 2
|
||||
when:
|
||||
- nova_get_venv | failed or nova_developer_mode | bool
|
||||
when: nova_developer_mode | bool
|
||||
notify: Restart nova services
|
||||
tags:
|
||||
- nova-install
|
||||
@@ -150,7 +110,7 @@
|
||||
virtualenv-tools --update-path=auto {{ nova_bin | dirname }}
|
||||
when:
|
||||
- not nova_developer_mode | bool
|
||||
- nova_get_venv | success
|
||||
- nova_get_venv | changed or nova_venv_dir | changed
|
||||
tags:
|
||||
- nova-install
|
||||
- nova-pip-packages
|
||||
|
||||
Reference in New Issue
Block a user