Added the "Emacs comment line" on top of every shell file.
[matthijs/upstream/backupninja.git] / handlers / pgsql.helper
1 # -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*-
2 HELPERS="$HELPERS pgsql:postgresql_database_backup"
3
4 do_pgsql_vserver() {
5    choose_one_vserver "$pgsql_title"
6    [ $? = 0 ] || return 1
7    pgsql_vsname="vsname = $REPLY"
8 }
9
10 do_pgsql_databases() {
11    REPLY=
12    while [ -z "$REPLY" ]; do
13       formBegin "$pgsql_title: databases"
14          formItem "Database:"
15          formItem "Database:"
16          formItem "Database:"
17          formItem "Database:"
18          formItem "Database:"
19          formItem "Database:"
20          formItem "Database:"
21          formItem "Database:"
22          formItem "Database:"
23          formItem "Database:"
24       formDisplay
25       [ $? = 0 ] || return 1
26       pgsql_databases="databases = "
27       for i in $REPLY; do
28          [ -n "$i" ] && pgsql_databases="$pgsql_databases $i"
29       done
30    done
31 }
32
33 pgsql_wizard() {
34
35     # constants
36    pgsql_title="PostgreSQL action wizard"
37
38    # backup the host system or a Vserver?
39    choose_host_or_one_vserver "$pgsql_title"
40    [ $? = 0 ] || return 1
41    if [ $host_or_vservers == vservers ]; then
42       do_pgsql_vserver
43       [ $? = 0 ] || return 1
44    fi
45
46    # backupdir
47    inputBox "$pgsql_title" "Directory where to store the backups:`[ -z \"$pgsql_vsname\" ] || echo \"\n(In respect to chosen vserver's root directory)\"`" "/var/backups/postgres"
48    [ $? = 1 ] && return
49    pgsql_backupdir="backupdir = $REPLY"
50
51    # databases
52    booleanBox "$pgsql_title" "Do you want to backup the whole cluster? If not, you'll be offered to choose the databases to backup."
53    if [ $? = 0 ]; then
54       pgsql_databases="databases = all"
55    else
56       do_pgsql_databases
57       [ $? = 0 ] || return 1
58    fi
59
60    # compress
61    booleanBox "$pgsql_title" "Do you want to compress the backups?"
62    if [ $? = 0 ]; then
63       pgsql_compress="compress = yes"
64    else
65       pgsql_compress="compress = no"
66    fi
67
68    # write config file
69    get_next_filename $configdirectory/20.pgsql
70    cat >> $next_filename <<EOF
71 ### backupninja PostgreSQL config file ###
72
73 # vsname = <vserver> (no default)
74 # what vserver to operate on, only used if vserver = yes in /etc/backupninja.conf
75 # if you do not specify a vsname the host will be operated on
76 # Note: if operating on a vserver, $VROOTDIR will be prepended to backupdir.
77 EOF
78    if [ $host_or_vservers == vservers ]; then
79       echo -e "$pgsql_vsname\n" >> $next_filename
80    fi
81
82    cat >> $next_filename <<EOF
83 # backupdir = <dir> (default: /var/backups/postgres)
84 # where to dump the backups
85 $pgsql_backupdir
86
87 # databases = < all | db1 db2 db3 > (default = all)
88 # which databases to backup. should either be the word 'all' or a 
89 # space separated list of database names.
90 # Note: when using 'all', pg_dumpall is used instead of pg_dump, which means
91 # that cluster-wide data (such as users and groups) are saved.
92 $pgsql_databases
93
94 # compress = < yes | no > (default = yes)
95 # if yes, compress the pg_dump/pg_dumpall output. 
96 $pgsql_compress
97
98 EOF
99    chmod 600 $next_filename
100
101 }