@@ -4,9 +4,69 @@ set -eo pipefail
4
4
# Docker volume for backups
5
5
export BACKUP_PATH=/backups
6
6
7
+ NOTIFICATION_NOTIFIERS=(-n)
7
8
NOTIFICATION_SETTINGS=()
9
+
10
+ # sentry
8
11
if [[ -n ${SENTRY_DSN:- } ]]; then
9
- NOTIFICATION_SETTINGS=(-n sentry " --sentry-dsn=${SENTRY_DSN:? } " )
12
+ # add notifier
13
+ NOTIFICATION_NOTIFIERS+=(sentry)
14
+ # Sentry DSN
15
+ NOTIFICATION_SETTINGS+=(" --sentry-dsn=${SENTRY_DSN:? } " )
16
+ fi
17
+
18
+ # http notifier
19
+ if [[ -n ${HTTP_NOTIFIER_URL:- } ]]; then
20
+ # add notifier
21
+ NOTIFICATION_NOTIFIERS+=(http)
22
+
23
+ # endpoint url
24
+ NOTIFICATION_SETTINGS+=(" --http-notifier-url=${HTTP_NOTIFIER_URL:? } " )
25
+
26
+ # auth stuff
27
+ if [[ -n ${HTTP_NOTIFIER_BEARER_TOKEN:- } ]]; then
28
+ NOTIFICATION_SETTINGS+=(" --http-notifier-bearer=${HTTP_NOTIFIER_BEARER_TOKEN:? } " )
29
+ fi
30
+
31
+ if [[ -n ${HTTP_NOTIFIER_BASIC_AUTH_USER:- } ]]; then
32
+ NOTIFICATION_SETTINGS+=(" --http-notifier-basic-user=${HTTP_NOTIFIER_BASIC_AUTH_USER:? } " )
33
+ fi
34
+
35
+ if [[ -n ${HTTP_NOTIFIER_BASIC_AUTH_PASS:- } ]]; then
36
+ NOTIFICATION_SETTINGS+=(" --http-notifier-basic-pass=${HTTP_NOTIFIER_BASIC_AUTH_PASS:? } " )
37
+ fi
38
+
39
+ # additional headers
40
+ if [[ -n ${HTTP_NOTIFIER_ADD_HEADERS:- } ]]; then
41
+ NOTIFICATION_SETTINGS+=(" --http-notifier-add-headers=${HTTP_NOTIFIER_ADD_HEADERS:? } " )
42
+ fi
43
+
44
+ # method
45
+ if [[ -n ${HTTP_NOTIFIER_METHOD:- } ]]; then
46
+ NOTIFICATION_SETTINGS+=(" --http-notifier-method=${HTTP_NOTIFIER_METHOD:? } " )
47
+ fi
48
+
49
+ # params
50
+ if [[ -n ${HTTP_NOTIFIER_PARAMS:- } ]]; then
51
+ NOTIFICATION_SETTINGS+=(" --http-notifier-params=${HTTP_NOTIFIER_PARAMS:? } " )
52
+ fi
53
+
54
+ # data body
55
+ if [[ -n ${HTTP_NOTIFIER_DATA:- } ]]; then
56
+ NOTIFICATION_SETTINGS+=(" --http-notifier-data='${HTTP_NOTIFIER_DATA:? } '" )
57
+ fi
58
+
59
+ # key for error message
60
+ if [[ -n ${HTTP_NOTIFIER_KEY:- } ]]; then
61
+ NOTIFICATION_SETTINGS+=(" --http-notifier-key=${HTTP_NOTIFIER_KEY:? } " )
62
+ fi
63
+ fi
64
+
65
+ # all notifiers require at least 1 argument
66
+ if [[ ${# NOTIFICATION_SETTINGS[@]} -eq 0 || ${# NOTIFICATION_NOTIFIERS[@]} -eq 1 ]]; then
67
+ # no notifiers
68
+ NOTIFICATION_NOTIFIERS=()
69
+ NOTIFICATION_SETTINGS=()
10
70
fi
11
71
12
72
log () {
@@ -40,7 +100,7 @@ upload_backup() {
40
100
remote_path=" ${SOFTLAYER_PATH:? } /$( date +%Y/%m) "
41
101
42
102
log " Uploading backup"
43
- backwork " ${NOTIFICATION_SETTINGS[@]} " upload softlayer \
103
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} " " ${ NOTIFICATION_SETTINGS[@]}" upload softlayer \
44
104
--username " ${SOFTLAYER_USER:? } " \
45
105
--api-key " ${SOFTLAYER_API_KEY:? } " \
46
106
--datacenter " ${SOFTLAYER_DATACENTER:? } " \
@@ -87,7 +147,7 @@ upload_backup_cos() {
87
147
fi
88
148
89
149
log " Uploading backup to IBM COS"
90
- backwork " ${NOTIFICATION_SETTINGS[@]} " upload cos \
150
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} " " ${ NOTIFICATION_SETTINGS[@]}" upload cos \
91
151
--endpoint-url " ${IBM_COS_ENDPOINT_URL} " \
92
152
--instance-id " ${IBM_COS_INSTANCE_ID} " \
93
153
--access-key " ${IBM_COS_ACCESS_KEY} " \
@@ -123,7 +183,7 @@ back_up_mongo() {
123
183
then
124
184
echo " MONGO_URI is not specified, trying MONGO_HOST"
125
185
else
126
- backwork " ${NOTIFICATION_SETTINGS[@]} " backup mongo \
186
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} " " ${ NOTIFICATION_SETTINGS[@]}" backup mongo \
127
187
--uri " ${MONGO_URI} " \
128
188
--archive=" ${BACKUP_PATH:? } /${filename} " \
129
189
--gzip
@@ -136,7 +196,7 @@ back_up_mongo() {
136
196
then
137
197
echo " MONGO_HOST is not specified, skipping."
138
198
else
139
- backwork " ${NOTIFICATION_SETTINGS[@]} " backup mongo \
199
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} " " ${ NOTIFICATION_SETTINGS[@]}" backup mongo \
140
200
-u " ${MONGO_BACKUP_USER} " \
141
201
-p " ${MONGO_BACKUP_PASSWORD} " \
142
202
--host=" ${MONGO_HOST} " \
@@ -159,7 +219,7 @@ back_up_mysql() {
159
219
filename=mysql_backup_$( date +" %Y%m%d_%H%M%S" ) .archive.gz
160
220
161
221
log " Taking mysql backup"
162
- backwork " ${NOTIFICATION_SETTINGS[@]} " backup mysql \
222
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} " " ${ NOTIFICATION_SETTINGS[@]}" backup mysql \
163
223
--output=" ${BACKUP_PATH:? } /${filename} " \
164
224
--gzip \
165
225
--all-databases \
@@ -195,7 +255,7 @@ back_up_postgresql() {
195
255
196
256
filename=postgresql_backup_${database:? } _$( date +" %Y%m%d_%H%M%S" ) .archive.gz
197
257
198
- backwork " ${NOTIFICATION_SETTINGS[@]} " backup postgresql \
258
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} " " ${ NOTIFICATION_SETTINGS[@]}" backup postgresql \
199
259
--output=" ${BACKUP_PATH:? } /${filename} " \
200
260
--gzip \
201
261
" --host=${PGHOST:? } " \
@@ -221,7 +281,7 @@ back_up_files() {
221
281
222
282
log " Taking file backup"
223
283
# shellcheck disable=SC2086
224
- cmd=" backwork ${NOTIFICATION_SETTINGS[@]} backup files \
284
+ cmd=" backwork ${NOTIFICATION_NOTIFIERS[@]} ${ NOTIFICATION_SETTINGS[@]} backup files \
225
285
--output=\" ${BACKUP_PATH:? } /${filename} \" "
226
286
for f in ${BACKUP_LOCAL_PATHS_EXCLUDE:- } ; do
227
287
cmd=" ${cmd} --exclude=\" ${f} \" "
0 commit comments