#!/bin/bash

backup_resources::label() {
  echo "Backup Resource objects"
}


backup_resources::doc() {
  cat <<EOT
The next step is to backup all resources:

* ConfigMap
* Secret
* DeploymentConfig
* Service
* Route
* RoleBinding
* ServiceAccount
* Template
* PersistenceVolumeClaim
* BuildConfig

Only the resources labeled with `app=syndesis` and `type=infrastructure` are considered.

.Rollback
As for rollback only a cleanup of the configmap backup files is required (or kept for a later manual reversal).
EOT
}

# All resources which should be backed up
BACKUP_RESOURCES="ConfigMap Secret DeploymentConfig Service Route RoleBinding ServiceAccount Template PersistentVolumeClaim BuildConfig"

backup_resources::run() {
    local backupdir=$1

    [ -d "$backupdir/resources" ] && mkdir -p "$backupdir/resources"

    for resource in $BACKUP_RESOURCES; do
        echo "      - $resource"
        backup_resource "$backupdir/resources" "$resource"
    done
}

backup_resources::rollback() {
    local backupdir=${1}
    local workdir=${2}
    local cleanup=${3:-}

    if [ "$cleanup" = "true" ]; then
      for resource in $BACKUP_RESOURCES; do
          remove_resource_backup $backupdir "$resource"
        done
    fi
}

remove_resource_backup() {
    local backupdir=${1}
    local kind=${2:-}

    [ -d "${backupdir}/${kind}" ] && rm -rf "${backupdir}/${kind}"
}
