Re-factored resources upload into role

Whole functionality of resource files upload is
implemented in resource-data role instead of
playbook level tasks.
This will make roles easier to test
and make it easier to implement other OS support later.

Issue-ID: OOM-1654

Change-Id: I3d3da9381b0e804f511ee854c41554b924d18883
Signed-off-by: Samuli Silvius <s.silvius@partner.samsung.com>
diff --git a/ansible/roles/resource-data/tasks/unarchive-resource.yml b/ansible/roles/resource-data/tasks/unarchive-resource.yml
new file mode 100644
index 0000000..9eafc22
--- /dev/null
+++ b/ansible/roles/resource-data/tasks/unarchive-resource.yml
@@ -0,0 +1,36 @@
+---
+#
+# Wrapper to pass through following variables
+#   resources_source_host
+#   resources_dir
+#   resource_source_filename
+#   resource_destination_directory
+# And handling target directory creation and possible removal on failure.
+# Idempotence is also handled here as nothing is done if resource_destination_directory
+# was already created.
+#
+# Logically also tranport method selection belongs to here but left it to caller
+# as this is called in a loop causing "package_facts" called many times
+# (not sure if it would matter).
+#
+- name: "Create {{ resource_destination_directory }} directory"
+  file:
+    path: "{{ resource_destination_directory }}"
+    state: directory
+  register: create_destination_dir
+
+- name: "Handle transport of one archive file"
+  block:
+    - name: Re-set upload_failed
+      set_fact:
+        upload_failed: false
+
+    - name: "Unarchive resource {{ resource_source_filename }} from host {{ resources_source_host }}, transport is {{ transport }}"
+      include_tasks: "unarchive-{{ transport }}-resource.yml"
+
+    - name: "Remove the destination directory {{ resource_destination_directory }} on error"
+      file:
+        path: "{{ resource_destination_directory }}"
+        state: absent
+      when: upload_failed
+  when: create_destination_dir.changed