Added first version of Postgres WAL recovery
diff --git a/postgresql/files/restore_wal.sh b/postgresql/files/restore_wal.sh
new file mode 100644
index 0000000..52f234f
--- /dev/null
+++ b/postgresql/files/restore_wal.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+{%- from "postgresql/map.jinja" import server with context %}
+POSTGRESQL_DIR="/var/lib/pgsql/9.3";
+POSTGRESQL_DATA_DIR="$POSTGRESQL_DIR/data"
+BASE_DATA_PATH="barman_backups/WB_DEV/base/20160719T212002/pgdata"
+WALS_DATA_PATH="barman_backups/WB_DEV/wals/0000000500000389"
+POSTGRESQL_BIN="/usr/pgsql-9.3/bin"
+
+echo "Running Postgresql server recovery"
+echo "Creating necessary directories"
+
+mkdir $POSTGRESQL_DIR/pgbackup
+mkdir $POSTGRESQL_DIR/pgbackup/backup
+mkdir $POSTGRESQL_DIR/pgbackup/wals
+mkdir $POSTGRESQL_DIR/pgbackup/wals_orig
+
+echo "Downloading base backup"
+scp {{ server.initial_data.base_url }} $POSTGRESQL_DIR/pgbackup/backup/
+
+echo "Dowloading wals"
+scp {{ server.initial_data.wals_url }} $POSTGRESQL_DIR/pgbackup/wals_orig/
+
+if [ "$(ls -A $POSTGRESQL_DATA_DIR)" ]; then
+     echo "Cannot restore wal data, $POSTGRESQL_DATA_DIR is not empty"
+     exit 1
+else
+    echo "Extracting base data"
+    tar -xf $POSTGRESQL_DIR/pgbackup/backup/WB_DEV_base.tar -C $POSTGRESQL_DIR/pgbackup/backup/
+    
+    echo "Extracting wals"
+    tar -xf $POSTGRESQL_DIR/pgbackup/wals_orig/WB_DEV_wals.tar -C $POSTGRESQL_DIR/pgbackup/wals_orig/
+
+    echo "Moving extracted base data to Postgresql data folder"
+    mv $POSTGRESQL_DIR/pgbackup/backup/$BASE_DATA_PATH/* $POSTGRESQL_DATA_DIR
+
+    echo "Moving extracted wals data"
+    mv $POSTGRESQL_DIR/pgbackup/backup/wals_orig/$WALS_DATA_PATH/* $POSTGRESQL_DIR/pgbackup/wals/
+
+    echo "Changing permission to data folder"
+    chown postgres:postgres -R $POSTGRESQL_DATA_DIR
+    chmod 0700 -R $POSTGRESQL_DATA_DIR 
+
+    echo "Creating recovery.conf"
+    echo "restore_command = 'cp $POSTGRESQL_DIR/pgbackup/wals/%f %p'" > $POSTGRESQL_DATA_DIR/recovery.conf
+
+    echo "Running Postgresql server for recovery"
+    sudo -u postgres $POSTGRESQL_BIN/pg_ctl start -D $POSTGRESQL_DATA_DIR > $POSTGRESQL_DIR/migrate.log 2>&1 &
+    echo "Done, check Postgresql log"
+    touch /root/postgresql/flags/restore_wal-done
+    exit 0
+fi
+
+
diff --git a/postgresql/server.sls b/postgresql/server.sls
index 1245178..6973983 100644
--- a/postgresql/server.sls
+++ b/postgresql/server.sls
@@ -176,6 +176,7 @@
   - template: template0
   - require:
     - postgres_database: postgresql_database_{{ database_name }}
+
 {%- endfor %}
 
 {% if database.initial_data is defined %}
@@ -205,4 +206,27 @@
 
 {%- endfor %}
 
+{% if server.initial_data is defined %}
+
+{%- set engine = server.initial_data.get("engine", "barman") %}
+
+/root/postgresql/scripts/restore_wal.sh:
+  file.managed:
+  - source: salt://postgresql/files/restore_wal.sh
+  - mode: 770
+  - template: jinja
+  - require: 
+    - file: postgresql_dirs
+
+restore_postgresql_server:
+  cmd.run:
+  - name: /root/postgresql/scripts/restore_wal.sh
+  - unless: "[ -f /root/postgresql/flags/restore_wal-done ]"
+  - cwd: /root
+  - require:
+    - file: /root/postgresql/scripts/restore_wal.sh
+
+{% endif %}
+
+
 {%- endif %}