file:
path: "{{ resource_destination_directory }}"
state: directory
- register: create_destination_dir
+
+- name: Check if resources are uploaded
+ stat:
+ path: "{{ resource_destination_directory }}/{{ resource_source_filename }}-uploaded"
+ register: uploaded
- name: "Handle transport of one archive file"
+ when: not uploaded.stat.exists
block:
- - name: Re-set upload_failed
- set_fact:
- upload_failed: false
+ - name: "Get list of destination directory files"
+ find:
+ path: "{{ resource_destination_directory }}"
+ file_type: any
+ register: original_files
- name: "Unarchive resource {{ resource_source_filename }} from host {{ resources_source_host }}, transport is {{ transport }}"
include_tasks: "unarchive-{{ transport }}-resource.yml"
+ - file:
+ path: "{{ resource_destination_directory }}/{{ resource_source_filename }}-uploaded"
+ state: touch
+ rescue:
+ - name: "Get list of destination directory files"
+ find:
+ path: "{{ resource_destination_directory }}"
+ file_type: any
+ register: files_after_fail
- - name: "Remove the destination directory {{ resource_destination_directory }} on error"
+ - name: "Cleanup the destination directory {{ resource_destination_directory }} on error"
file:
- path: "{{ resource_destination_directory }}"
+ path: "{{ item.path }}"
state: absent
- when: upload_failed
- when: create_destination_dir.changed
+ with_items: "{{ files_after_fail.files | difference(original_files.files) }}"
+ when: files_after_fail is defined
+
+ - fail:
+ msg: "Upload of {{ resource_source_filename }} failed"
+
mode: 0600
owner: root
group: root
- remote_src: no
- name: Detect if archive is compressed
shell: >
- ssh -o StrictHostKeyChecking=no
- -i /root/.ssh/infra_to_resource.privkey
- {{ resources_source_host }}
- 'file "{{ resources_dir }}/{{ resource_source_filename }}"'
+ file "{{ resources_dir }}/{{ resource_source_filename }}"
| grep "compressed"
register: compressed
+ failed_when: compressed.rc > 1
+ delegate_to: "{{ resources_source_host }}"
- name: Set tar extract options
set_fact:
| tar -C "{{ resource_destination_directory }}" "{{ tar_extract_options }}" -
args:
warn: false
- rescue:
- - name: Upload failed
- set_fact:
- upload_failed: true
always:
- name: Remove the ssh private key
file: