#!/bin/bash

#
# Definizione delle Utilities
#

#
# dateTime{}
#    Restituisce una stringa con la data e l'ora correnti
#    nel formato dd/mm/yyyy hh:mm:ss
#
# Parametri
#
# nessuno
#
function dateTime {
   date +%d\/%m\/%Y\ %H:%M:%S
}

#
# checkParams{}
#    Verifica il numero dei parametri a linea comando. Quando scorretto
#    visualizza un opportuno messaggio di errore e esce
#
# Parametri
#
# noOfProvidedParameters:  numero dei parametri forniti nella chiamata
#
# noOfRequiredParameters:   numero dei parametri richiesti dalla chiamata
#
# errorMsg:                messaggio specificato in caso di errore
#
function checkParams {
   # inizializza le variabili mnemoniche per i parametri
   noOfProvidedParameters=$1
   noOfRequiredParameters=$2
   errorMsg="$3"
   
   if test $noOfProvidedParameters -ne $noOfRequiredParameters
   then
      echo -e $errorMsg
      exit 1
   fi
}

#
# checkFileExistence{}
#    Verifica l'esistenza di un file
#
# Parametri
#
# fileAbsolutePath:  numero dei parametri forniti nella chiamata
#
# errorMsg:          messaggio specificato in caso di errore
#
function checkFileExistence {
   # inizializza le variabili mnemoniche per i parametri
   fileAbsolutePath="$1"
   errorMsg="$2"
   
   # controlla se esiste un file con path assoluto fileAbsolutePath,
   # in caso di risposta negativa visualizza un opportuno messaggio
   # di e termina
   if test ! -f "$fileAbsolutePath"
   then
      echo -e $errorMsg
      exit 1
   fi
}

#
# checkContainerExistence{}
#    Verifica l'esistenza di un file
#
# Parametri
#
# container:    identificativo del container che eroga il servizio.
#               Impostato dallo script di set up dei parametri specifico
#               del servizio.
#
# errorMsg:     messaggio specificato in caso di errore
#
function checkContainerExistence {
   # inizializza le variabili mnemoniche per i parametri
   container="$1"
   errorMsg="$2"
   
   # Verifica se il container esiste
   testOnContainerExistence=$(lxc-ls $container)

   # Se esiste esce segnalando la condizione di errore
   if test -n "$testOnContainerExistence"
   then
     echo "$errorMsg"
     exit
   fi
   }

# checkContainerExistence{}
#    Verifica se il container specificato nel file dei parametri
#    specifici del servizio e quello nel nome del backup passato
#    allo script coincidono, in caso contrario esce segnalando
#    la condizione di errore
#
# Parametri
#
# containerBackupName:
#               nome del file che contiene il backup del container da
#               ripristinare
#
# container:    identificativo del container che eroga il servizio.
#               Impostato dallo script di set up dei parametri specifico
#               del servizio.
#
# errorMsg:     messaggio specificato in caso di errore
#
function checkForContainerMatch {
   # inizializza le variabili mnemoniche per i parametri
   containerBackUpName=$1
   container=$2
   errorMsg=$3
   
   #echo "container: $container"
   echo "containerBackUpName: $containerBackUpName"
   
   # estrae il nome del container da quello specificato 
   # per il backup
   backupedContainer=${containerBackUpName:2:3}
   #echo "backupedContainer: $backupedContainer"
   
   
   if test $container -ne $backupedContainer
   then
     # echo "Diversi"
     echo "$errorMsg"
   # else
   #  echo "Uguali"
   fi
   
   
   }

#
# appendToLog{}
#    aggiorna il contenuto del file di log
#
# Parametri
#
# msg:           msg da aggiungere in coda al contenuto corrente del file
#                di log
# logFilePath:   path del file di log
#
function appendToLog {
	msg=$1
	logFilePath=$2
	
	echo -e $msg | tee -a $logFilePath
}

# containerStatus{}
# Restituisce lo stato di un container: "RUNNING" se in esecuzione,
#                                       "STOPPED" altrimenti
# Parametri
#
# container: identificatore del container
#                                       
function containerStatus {
   # acquisisce le informazioni relative allo stato del container
   containerInfo=$(lxc-info key=state -n $1)
   
   # forma l'informazione in uscita ("RUNNING"/"STOPPED")
   echo $containerInfo | awk -F "State: " '{print $2}'| cut -d " " -f1
}
