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
This commit is contained in:
Jesse Pretorius
committed by
Jesse Pretorius (odyssey4me)
parent
9578fa9ee9
commit
42904c451d
2 changed files with 7 additions and 47 deletions
@@ -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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.