Skip to content

Commit a1b65a2

Browse files
author
ben honda
committed
add config for http notifier
1 parent db854a3 commit a1b65a2

File tree

3 files changed

+71
-8
lines changed

3 files changed

+71
-8
lines changed

.env.example

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,10 @@ export MONGO_ADMIN_USER=$MONGO_BACKUP_USER
3939
export MONGO_ADMIN_PASSWORD="$MONGO_BACKUP_PASSWORD"
4040
export FORUM_MONGO_PASSWORD="$MONGO_BACKUP_PASSWORD"
4141
export EDXAPP_MONGO_PASSWORD="$MONGO_BACKUP_PASSWORD"
42+
43+
export HTTP_NOTIFIER_URL=
44+
export HTTP_NOTIFIER_METHOD=
45+
export HTTP_NOTIFIER_HEADERS=
46+
export HTTP_NOTIFIER_PARAMS=
47+
export HTTP_NOTIFIER_DATA=
48+
export HTTP_NOTIFIER_KEY_FOR_ERROR_MESSAGE=

backwork/docker-entrypoint.sh

Lines changed: 55 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,56 @@ set -eo pipefail
44
# Docker volume for backups
55
export BACKUP_PATH=/backups
66

7+
NOTIFICATION_NOTIFIERS=("-n")
78
NOTIFICATION_SETTINGS=()
9+
10+
# sentry
811
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=()
1057
fi
1158

1259
log() {
@@ -40,7 +87,7 @@ upload_backup() {
4087
remote_path="${SOFTLAYER_PATH:?}/$(date +%Y/%m)"
4188

4289
log "Uploading backup"
43-
backwork "${NOTIFICATION_SETTINGS[@]}" upload softlayer \
90+
backwork "${NOTIFICATION_NOTIFIERS[@]} ${NOTIFICATION_SETTINGS[@]}" upload softlayer \
4491
--username "${SOFTLAYER_USER:?}" \
4592
--api-key "${SOFTLAYER_API_KEY:?}" \
4693
--datacenter "${SOFTLAYER_DATACENTER:?}" \
@@ -87,7 +134,7 @@ upload_backup_cos() {
87134
fi
88135

89136
log "Uploading backup to IBM COS"
90-
backwork "${NOTIFICATION_SETTINGS[@]}" upload cos \
137+
backwork "${NOTIFICATION_NOTIFIERS[@]} ${NOTIFICATION_SETTINGS[@]}" upload cos \
91138
--endpoint-url "${IBM_COS_ENDPOINT_URL}" \
92139
--instance-id "${IBM_COS_INSTANCE_ID}" \
93140
--access-key "${IBM_COS_ACCESS_KEY}" \
@@ -123,7 +170,7 @@ back_up_mongo() {
123170
then
124171
echo "MONGO_URI is not specified, trying MONGO_HOST"
125172
else
126-
backwork "${NOTIFICATION_SETTINGS[@]}" backup mongo \
173+
backwork "${NOTIFICATION_NOTIFIERS[@]} ${NOTIFICATION_SETTINGS[@]}" backup mongo \
127174
--uri "${MONGO_URI}" \
128175
--archive="${BACKUP_PATH:?}/${filename}" \
129176
--gzip
@@ -136,7 +183,7 @@ back_up_mongo() {
136183
then
137184
echo "MONGO_HOST is not specified, skipping."
138185
else
139-
backwork "${NOTIFICATION_SETTINGS[@]}" backup mongo \
186+
backwork "${NOTIFICATION_NOTIFIERS[@]} ${NOTIFICATION_SETTINGS[@]}" backup mongo \
140187
-u "${MONGO_BACKUP_USER}" \
141188
-p "${MONGO_BACKUP_PASSWORD}" \
142189
--host="${MONGO_HOST}" \
@@ -159,7 +206,7 @@ back_up_mysql() {
159206
filename=mysql_backup_$(date +"%Y%m%d_%H%M%S").archive.gz
160207

161208
log "Taking mysql backup"
162-
backwork "${NOTIFICATION_SETTINGS[@]}" backup mysql \
209+
backwork "${NOTIFICATION_NOTIFIERS[@]} ${NOTIFICATION_SETTINGS[@]}" backup mysql \
163210
--output="${BACKUP_PATH:?}/${filename}" \
164211
--gzip \
165212
--all-databases \
@@ -195,7 +242,7 @@ back_up_postgresql() {
195242

196243
filename=postgresql_backup_${database:?}_$(date +"%Y%m%d_%H%M%S").archive.gz
197244

198-
backwork "${NOTIFICATION_SETTINGS[@]}" backup postgresql \
245+
backwork "${NOTIFICATION_NOTIFIERS[@]} ${NOTIFICATION_SETTINGS[@]}" backup postgresql \
199246
--output="${BACKUP_PATH:?}/${filename}" \
200247
--gzip \
201248
"--host=${PGHOST:?}" \
@@ -221,7 +268,7 @@ back_up_files() {
221268

222269
log "Taking file backup"
223270
# shellcheck disable=SC2086
224-
cmd="backwork ${NOTIFICATION_SETTINGS[@]} backup files \
271+
cmd="backwork ${NOTIFICATION_NOTIFIERS[@]} ${NOTIFICATION_SETTINGS[@]} backup files \
225272
--output=\"${BACKUP_PATH:?}/${filename}\""
226273
for f in ${BACKUP_LOCAL_PATHS_EXCLUDE:-}; do
227274
cmd="${cmd} --exclude=\"${f}\""

docker-compose.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@ services:
4242
- LOCAL_BACKUP_NUMBER
4343
- BACKUP_LOCAL_PATHS
4444
- MINIMUM_FREE_SPACE
45+
46+
# config for HTTP request notifier
47+
- HTTP_NOTIFIER_URL
48+
- HTTP_NOTIFIER_METHOD
49+
- HTTP_NOTIFIER_HEADERS
50+
- HTTP_NOTIFIER_PARAMS
51+
- HTTP_NOTIFIER_DATA
52+
- HTTP_NOTIFIER_KEY_FOR_ERROR_MESSAGE
53+
4554
links:
4655
- mysql
4756
- mongo

0 commit comments

Comments
 (0)