7ccd21e7f32dc1f83d9be7610aae93a6f0d0fa79
[oom/offline-installer.git] / ansible / roles / resource-data / tasks / unarchive-resource.yml
1 ---
2 #
3 # Wrapper to pass through following variables
4 #   resources_source_host
5 #   resources_dir
6 #   resource_source_filename
7 #   resource_destination_directory
8 # And handling target directory creation and possible removal on failure.
9 # Idempotence is also handled here as nothing is done if resource_destination_directory
10 # was already created.
11 #
12 # Logically also tranport method selection belongs to here but left it to caller
13 # as this is called in a loop causing "package_facts" called many times
14 # (not sure if it would matter).
15 #
16 - name: "Create {{ resource_destination_directory }} directory"
17   file:
18     path: "{{ resource_destination_directory }}"
19     state: directory
20
21 - name: Check if resources are uploaded
22   stat:
23     path: "{{ resource_destination_directory }}/{{ resource_source_filename }}-uploaded"
24   register: uploaded
25
26 - name: "Handle transport of one archive file"
27   when: not uploaded.stat.exists
28   block:
29     - name: "Get list of destination directory files"
30       find:
31         path: "{{ resource_destination_directory }}"
32         file_type: any
33       register: original_files
34
35     - name: "Unarchive resource {{ resource_source_filename }} from host {{ resources_source_host }}, transport is {{ transport }}"
36       include_tasks: "unarchive-{{ transport }}-resource.yml"
37     - file:
38         path: "{{ resource_destination_directory }}/{{ resource_source_filename }}-uploaded"
39         state: touch
40   rescue:
41     - name: "Get list of destination directory files"
42       find:
43         path: "{{ resource_destination_directory }}"
44         file_type: any
45       register: files_after_fail
46
47     - name: "Cleanup the destination directory {{ resource_destination_directory }} on error"
48       file:
49         path: "{{ item.path }}"
50         state: absent
51       with_items: "{{ files_after_fail.files | difference(original_files.files) }}"
52       when: files_after_fail is defined
53
54     - fail:
55         msg: "Upload of {{ resource_source_filename }} failed"
56