Skip to content

Commit 2269469

Browse files
author
Ben Honda
authored
Merge pull request #5 from IBM/feat/http-notifier-config
Feat: add backwork support for http notifications
2 parents db854a3 + f6f4825 commit 2269469

File tree

5 files changed

+98
-9
lines changed

5 files changed

+98
-9
lines changed

.env.example

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,13 @@ 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_ADD_HEADERS=
46+
export HTTP_NOTIFIER_BEARER_TOKEN=
47+
export HTTP_NOTIFIER_BASIC_AUTH_USER=
48+
export HTTP_NOTIFIER_BASIC_AUTH_PASS=
49+
export HTTP_NOTIFIER_PARAMS=
50+
export HTTP_NOTIFIER_DATA=
51+
export HTTP_NOTIFIER_KEY=

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
77

88
## [Unreleased][]
99

10+
## [1.6.0][] - 2021-02-11
11+
12+
### Added
13+
14+
- support for [backwork-notifier-http](https://pypi.org/project/backwork-notifier-http)
15+
1016
## [1.4.0][] - 2019-08-18
1117

1218
### Changed

backwork/docker-entrypoint.sh

Lines changed: 68 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,69 @@ 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 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=()
1070
fi
1171

1272
log() {
@@ -40,7 +100,7 @@ upload_backup() {
40100
remote_path="${SOFTLAYER_PATH:?}/$(date +%Y/%m)"
41101

42102
log "Uploading backup"
43-
backwork "${NOTIFICATION_SETTINGS[@]}" upload softlayer \
103+
backwork "${NOTIFICATION_NOTIFIERS[@]}" "${NOTIFICATION_SETTINGS[@]}" upload softlayer \
44104
--username "${SOFTLAYER_USER:?}" \
45105
--api-key "${SOFTLAYER_API_KEY:?}" \
46106
--datacenter "${SOFTLAYER_DATACENTER:?}" \
@@ -87,7 +147,7 @@ upload_backup_cos() {
87147
fi
88148

89149
log "Uploading backup to IBM COS"
90-
backwork "${NOTIFICATION_SETTINGS[@]}" upload cos \
150+
backwork "${NOTIFICATION_NOTIFIERS[@]}" "${NOTIFICATION_SETTINGS[@]}" upload cos \
91151
--endpoint-url "${IBM_COS_ENDPOINT_URL}" \
92152
--instance-id "${IBM_COS_INSTANCE_ID}" \
93153
--access-key "${IBM_COS_ACCESS_KEY}" \
@@ -123,7 +183,7 @@ back_up_mongo() {
123183
then
124184
echo "MONGO_URI is not specified, trying MONGO_HOST"
125185
else
126-
backwork "${NOTIFICATION_SETTINGS[@]}" backup mongo \
186+
backwork "${NOTIFICATION_NOTIFIERS[@]}" "${NOTIFICATION_SETTINGS[@]}" backup mongo \
127187
--uri "${MONGO_URI}" \
128188
--archive="${BACKUP_PATH:?}/${filename}" \
129189
--gzip
@@ -136,7 +196,7 @@ back_up_mongo() {
136196
then
137197
echo "MONGO_HOST is not specified, skipping."
138198
else
139-
backwork "${NOTIFICATION_SETTINGS[@]}" backup mongo \
199+
backwork "${NOTIFICATION_NOTIFIERS[@]}" "${NOTIFICATION_SETTINGS[@]}" backup mongo \
140200
-u "${MONGO_BACKUP_USER}" \
141201
-p "${MONGO_BACKUP_PASSWORD}" \
142202
--host="${MONGO_HOST}" \
@@ -159,7 +219,7 @@ back_up_mysql() {
159219
filename=mysql_backup_$(date +"%Y%m%d_%H%M%S").archive.gz
160220

161221
log "Taking mysql backup"
162-
backwork "${NOTIFICATION_SETTINGS[@]}" backup mysql \
222+
backwork "${NOTIFICATION_NOTIFIERS[@]}" "${NOTIFICATION_SETTINGS[@]}" backup mysql \
163223
--output="${BACKUP_PATH:?}/${filename}" \
164224
--gzip \
165225
--all-databases \
@@ -195,7 +255,7 @@ back_up_postgresql() {
195255

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

198-
backwork "${NOTIFICATION_SETTINGS[@]}" backup postgresql \
258+
backwork "${NOTIFICATION_NOTIFIERS[@]}" "${NOTIFICATION_SETTINGS[@]}" backup postgresql \
199259
--output="${BACKUP_PATH:?}/${filename}" \
200260
--gzip \
201261
"--host=${PGHOST:?}" \
@@ -221,7 +281,7 @@ back_up_files() {
221281

222282
log "Taking file backup"
223283
# shellcheck disable=SC2086
224-
cmd="backwork ${NOTIFICATION_SETTINGS[@]} backup files \
284+
cmd="backwork ${NOTIFICATION_NOTIFIERS[@]} ${NOTIFICATION_SETTINGS[@]} backup files \
225285
--output=\"${BACKUP_PATH:?}/${filename}\""
226286
for f in ${BACKUP_LOCAL_PATHS_EXCLUDE:-}; do
227287
cmd="${cmd} --exclude=\"${f}\""

backwork/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ backwork-backup-postgresql==0.2.1
88
backwork-notifier-sentry==0.2.0
99
backwork-upload-softlayer==0.2.1
1010
backwork-upload-cos==0.3.0
11+
backwork-notifier-http==0.1.3

docker-compose.yaml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ services:
77
backwork:
88
build:
99
context: ./backwork
10-
image: bigdatauniversity/backwork:1.5.0
10+
image: bigdatauniversity/backwork:1.6.0
1111
environment:
1212
- MYSQL_HOST=mysql
1313
- MYSQL_PORT=3306
@@ -42,6 +42,18 @@ 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_ADD_HEADERS
50+
- HTTP_NOTIFIER_BEARER_TOKEN
51+
- HTTP_NOTIFIER_BASIC_AUTH_USER
52+
- HTTP_NOTIFIER_BASIC_AUTH_PASS
53+
- HTTP_NOTIFIER_PARAMS
54+
- HTTP_NOTIFIER_DATA
55+
- HTTP_NOTIFIER_KEY
56+
4557
links:
4658
- mysql
4759
- mongo

0 commit comments

Comments
 (0)