@@ -4,9 +4,56 @@ 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_requests
19
+ if [[ -n ${HTTP_NOTIFIER_URL:- } ]]; then
20
+ # add notifier
21
+ NOTIFICATION_NOTIFIERS+=(" http_requests" )
22
+
23
+ # endpoint url
24
+ NOTIFICATION_SETTINGS+=(" --http-notifier-url=${HTTP_NOTIFIER_URL:? } " )
25
+
26
+ # headers
27
+ if [[ -n ${HTTP_NOTIFIER_HEADERS:- } ]]; then
28
+ NOTIFICATION_SETTINGS+=(" --http-notifier-headers=${HTTP_NOTIFIER_HEADERS:? } " )
29
+ fi
30
+
31
+ # method
32
+ if [[ -n ${HTTP_NOTIFIER_METHOD:- } ]]; then
33
+ NOTIFICATION_SETTINGS+=(" --http-notifier-method=${HTTP_NOTIFIER_METHOD:? } " )
34
+ fi
35
+
36
+ # params
37
+ if [[ -n ${HTTP_NOTIFIER_PARAMS:- } ]]; then
38
+ NOTIFICATION_SETTINGS+=(" --http-notifier-params=${HTTP_NOTIFIER_PARAMS:? } " )
39
+ fi
40
+
41
+ # data body
42
+ if [[ -n ${HTTP_NOTIFIER_DATA:- } ]]; then
43
+ NOTIFICATION_SETTINGS+=(" --http-notifier-data=${HTTP_NOTIFIER_DATA:? } " )
44
+ fi
45
+
46
+ # key for error message
47
+ if [[ -n ${HTTP_NOTIFIER_KEY_FOR_ERROR_MESSAGE:- } ]]; then
48
+ NOTIFICATION_SETTINGS+=(" --http-key-for-error-message=${HTTP_NOTIFIER_KEY_FOR_ERROR_MESSAGE:? } " )
49
+ fi
50
+ fi
51
+
52
+ # all notifiers require at least 1 argument
53
+ if [[ ${# NOTIFICATION_SETTINGS[@]} -eq 0 || ${# NOTIFICATION_NOTIFIERS[@]} -eq 1 ]]; then
54
+ # no notifiers
55
+ NOTIFICATION_NOTIFIERS=()
56
+ NOTIFICATION_SETTINGS=()
10
57
fi
11
58
12
59
log () {
@@ -40,7 +87,7 @@ upload_backup() {
40
87
remote_path=" ${SOFTLAYER_PATH:? } /$( date +%Y/%m) "
41
88
42
89
log " Uploading backup"
43
- backwork " ${NOTIFICATION_SETTINGS[@]} " upload softlayer \
90
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} ${ NOTIFICATION_SETTINGS[@]}" upload softlayer \
44
91
--username " ${SOFTLAYER_USER:? } " \
45
92
--api-key " ${SOFTLAYER_API_KEY:? } " \
46
93
--datacenter " ${SOFTLAYER_DATACENTER:? } " \
@@ -87,7 +134,7 @@ upload_backup_cos() {
87
134
fi
88
135
89
136
log " Uploading backup to IBM COS"
90
- backwork " ${NOTIFICATION_SETTINGS[@]} " upload cos \
137
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} ${ NOTIFICATION_SETTINGS[@]}" upload cos \
91
138
--endpoint-url " ${IBM_COS_ENDPOINT_URL} " \
92
139
--instance-id " ${IBM_COS_INSTANCE_ID} " \
93
140
--access-key " ${IBM_COS_ACCESS_KEY} " \
@@ -123,7 +170,7 @@ back_up_mongo() {
123
170
then
124
171
echo " MONGO_URI is not specified, trying MONGO_HOST"
125
172
else
126
- backwork " ${NOTIFICATION_SETTINGS[@]} " backup mongo \
173
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} ${ NOTIFICATION_SETTINGS[@]}" backup mongo \
127
174
--uri " ${MONGO_URI} " \
128
175
--archive=" ${BACKUP_PATH:? } /${filename} " \
129
176
--gzip
@@ -136,7 +183,7 @@ back_up_mongo() {
136
183
then
137
184
echo " MONGO_HOST is not specified, skipping."
138
185
else
139
- backwork " ${NOTIFICATION_SETTINGS[@]} " backup mongo \
186
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} ${ NOTIFICATION_SETTINGS[@]}" backup mongo \
140
187
-u " ${MONGO_BACKUP_USER} " \
141
188
-p " ${MONGO_BACKUP_PASSWORD} " \
142
189
--host=" ${MONGO_HOST} " \
@@ -159,7 +206,7 @@ back_up_mysql() {
159
206
filename=mysql_backup_$( date +" %Y%m%d_%H%M%S" ) .archive.gz
160
207
161
208
log " Taking mysql backup"
162
- backwork " ${NOTIFICATION_SETTINGS[@]} " backup mysql \
209
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} ${ NOTIFICATION_SETTINGS[@]}" backup mysql \
163
210
--output=" ${BACKUP_PATH:? } /${filename} " \
164
211
--gzip \
165
212
--all-databases \
@@ -195,7 +242,7 @@ back_up_postgresql() {
195
242
196
243
filename=postgresql_backup_${database:? } _$( date +" %Y%m%d_%H%M%S" ) .archive.gz
197
244
198
- backwork " ${NOTIFICATION_SETTINGS[@]} " backup postgresql \
245
+ backwork " ${NOTIFICATION_NOTIFIERS[@]} ${ NOTIFICATION_SETTINGS[@]}" backup postgresql \
199
246
--output=" ${BACKUP_PATH:? } /${filename} " \
200
247
--gzip \
201
248
" --host=${PGHOST:? } " \
@@ -221,7 +268,7 @@ back_up_files() {
221
268
222
269
log " Taking file backup"
223
270
# shellcheck disable=SC2086
224
- cmd=" backwork ${NOTIFICATION_SETTINGS[@]} backup files \
271
+ cmd=" backwork ${NOTIFICATION_NOTIFIERS[@]} ${ NOTIFICATION_SETTINGS[@]} backup files \
225
272
--output=\" ${BACKUP_PATH:? } /${filename} \" "
226
273
for f in ${BACKUP_LOCAL_PATHS_EXCLUDE:- } ; do
227
274
cmd=" ${cmd} --exclude=\" ${f} \" "
0 commit comments