dev/provisioning/modules/puppi/files/scripts/database.sh
changeset 28 b0b56e0f8c7f
equal deleted inserted replaced
27:a2342f26c9de 28:b0b56e0f8c7f
       
     1 #!/bin/bash
       
     2 # database.sh - Made for Puppi
       
     3 
       
     4 # Sources common header for Puppi scripts
       
     5 . $(dirname $0)/header || exit 10
       
     6 
       
     7 # Show help
       
     8 showhelp () {
       
     9     echo "This script executes database queries and dumps"
       
    10     echo "It integrates and uses variables provided by other core Puppi scripts"
       
    11     echo "It has the following options:"
       
    12     echo "-t <database_type> The database type. Currently only mysql is suppoerted"
       
    13     echo "-a <action> The action to perform:"
       
    14     echo "            run - Run a mysql command based on a given .sql file"
       
    15     echo "            dump - Dump the specified database in the archive dir"
       
    16     echo "            restore - Restore the specified database from the archive dir"
       
    17     echo "-d <database_name> The database name to manage"
       
    18     echo "-u <database_user> The database user used to run the queries"
       
    19     echo "-p <database_password> The user password"
       
    20     echo "-h <host> The database server hostname"
       
    21 }
       
    22 
       
    23 # Arguments defaults
       
    24 db_type=mysql
       
    25 db_action=run
       
    26 db_user=root
       
    27 db_host=localhost
       
    28 db_password=""
       
    29 
       
    30 # Check Arguments
       
    31 while [ $# -gt 0 ]; do
       
    32   case "$1" in
       
    33     -t)
       
    34       db_type=$2
       
    35       shift 2 ;;
       
    36     -a)
       
    37       db_action=$2
       
    38       shift 2 ;;
       
    39     -d)
       
    40       db_name=$2
       
    41       shift 2 ;;
       
    42     -u)
       
    43       db_user=$2
       
    44       shift 2 ;;
       
    45     -p)
       
    46       db_password=$2
       
    47       shift 2 ;;
       
    48     -h)
       
    49       db_host=$2
       
    50       shift 2 ;;
       
    51   esac
       
    52 done
       
    53 
       
    54 
       
    55 
       
    56 mysql_run () {
       
    57     case "$db_action" in
       
    58       run)
       
    59         file $downloadedfile | grep gzip &>/dev/null 2>&1 && sqlfile_type="gzip"
       
    60         file $downloadedfile | grep Zip &>/dev/null 2>&1 && sqlfile_type="zip"
       
    61         case "$sqlfile_type" in
       
    62           gzip)
       
    63             zcat $downloadedfile | mysql -u $db_user -p$db_password -h $db_host $db_name
       
    64             check_retcode ;;
       
    65           zip)
       
    66             unzip -p $downloadedfile | mysql -u $db_user -p$db_password -h $db_host $db_name
       
    67             check_retcode ;;
       
    68           *)
       
    69             mysql -u $db_user -p$db_password -h $db_host $db_name < $downloadedfile
       
    70             check_retcode ;;
       
    71         esac
       
    72         ;;
       
    73       dump)
       
    74         mkdir -p $archivedir/$project/$tag
       
    75         if [ $archivedir/$project/latest ] ; then
       
    76             rm -f $archivedir/$project/latest
       
    77         fi
       
    78         ln -sf $archivedir/$project/$tag $archivedir/$project/latest
       
    79 
       
    80         mysqldump -u $db_user -p$db_password -h $db_host --add-drop-table --databases $db_name | gzip > $archivedir/$project/$tag/$db_name.sql.gz
       
    81         check_retcode ;;
       
    82       restore)
       
    83         zcat $archivedir/$project/$rollbackversion/$db_name.sql.gz | mysql -u $db_user -p$db_password -h $db_host $db_name
       
    84         check_retcode ;;
       
    85     esac
       
    86 }
       
    87 
       
    88 case "$db_type" in
       
    89       mysql)
       
    90         mysql_run
       
    91         ;;
       
    92       *)
       
    93         showhelp
       
    94         ;;
       
    95 esac
       
    96