Skip to content
This repository was archived by the owner on Feb 12, 2021. It is now read-only.

Commit a933202

Browse files
committed
Merge pull request #72 from PhysiciansDataCollaborative/dev
0.1.2
2 parents 0638c35 + 7738ede commit a933202

File tree

3 files changed

+139
-96
lines changed

3 files changed

+139
-96
lines changed

Makefile

Lines changed: 47 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -48,43 +48,43 @@ prod:
4848
#########################
4949

5050
hubdb:
51-
@ sudo mkdir -p $(PATH_MONGO)
52-
@ $(call dockerize,hubdb,$(DOCKER_HUBDB_PRODUCTION))
51+
@ sudo mkdir -p $(PATH_MONGO_DB) $(PATH_MONGO_DUMP)
52+
@ $(call dockerize,hubdb,$(DOCKER_HUBDB_PROD))
5353
@ sudo docker exec hubdb /app/mongodb_init.sh > /dev/null
5454

5555

5656
hub:
57-
@ sudo mkdir -p $(PATH_HUB_SSH_HOST) $(PATH_HUB_SSH_AUTOSSH)
58-
@ $(call dockerize,hub,$(DOCKER_HUB_PRODUCTION))
57+
@ sudo mkdir -p $(PATH_HUB_AUTHKEYS) $(PATH_HUB_AUTOSSH)
58+
@ $(call dockerize,hub,$(DOCKER_HUB_PROD))
5959

6060

6161
auth:
6262
@ sudo mkdir -p $(PATH_DACS)
63-
@ $(call dockerize,auth,$(DOCKER_AUTH_PRODUCTION))
63+
@ $(call dockerize,auth,$(DOCKER_AUTH_PROD))
6464

6565

6666
dclapi:
6767
@ sudo mkdir -p $(PATH_DRUGREF)
68-
@ $(call dockerize,dclapi,$(DOCKER_DCLAPI_PRODUCTION))
68+
@ $(call dockerize,dclapi,$(DOCKER_DCLAPI_PROD))
6969

7070

7171
hapi:
72-
@ $(call dockerize,hapi,$(DOCKER_HAPI_PRODUCTION))
72+
@ $(call dockerize,hapi,$(DOCKER_HAPI_PROD))
7373

7474

7575
viz:
7676
@ sudo mkdir -p $(PATH_CERT)
77-
@ $(call dockerize,viz,$(DOCKER_VIZ_PRODUCTION))
77+
@ $(call dockerize,viz,$(DOCKER_VIZ_PROD))
7878

7979

8080
ep-sample:
8181
@ sudo mkdir -p $(PATH_EPX_AUTOSSH)
82-
@ $(call dockerize,endpoint,$(DOCKER_ENDPOINT_PRODUCTION),0)
82+
@ $(call dockerize,endpoint,$(DOCKER_ENDPOINT_PROD),0)
8383
@ $(call config_ep,0,cpsid,cpsid,admin,TEST,sample)
8484

8585

8686
queries:
87-
@ $(call dockerize,queries,$(DOCKER_QI_PRODUCTION))
87+
@ $(call dockerize,queries,$(DOCKER_QI_PROD))
8888
@ sudo docker logs -f queries
8989
@ $(call docker_remove,queries)
9090

@@ -107,7 +107,7 @@ ep:
107107
echo "Usage: make ep [gID=#] [DOCTOR=#####] [op:JURISDUCTION] [op:ROLE] [op:PASSWORD]"; \
108108
echo; \
109109
else \
110-
$(call dockerize_ep,endpoint,$(DOCKER_ENDPOINT_PRODUCTION),$(gID)); \
110+
$(call dockerize_ep,endpoint,$(DOCKER_ENDPOINT_PROD),$(gID)); \
111111
$(call config_ep,$(gID),$(DOCTOR),$(ROLE),$(JURISDICTION),$(PASSWORD)); \
112112
fi
113113

@@ -269,6 +269,7 @@ config-bash:
269269
echo "alias r='sudo docker rm -fv'"; \
270270
echo "alias s='sudo docker ps -a | less -S'"; \
271271
echo "alias m='make'"; \
272+
echo "alias gitsubdiffs='find . -maxdepth 1 -mindepth 1 -type d -exec git -C {} status \;'"; \
272273
) | tee -a $${HOME}/.bashrc; \
273274
echo ""; \
274275
echo ""; \
@@ -277,8 +278,8 @@ config-bash:
277278
fi
278279

279280

280-
config-oc:
281-
# Add repository and install owncloud cmd client
281+
config-backups:
282+
# Add repository, install owncloud cmd client and run cronjobs for infrastructure and MongoDB data
282283
#
283284
@ echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/xUbuntu_14.04/ /' \
284285
| sudo tee /etc/apt/sources.list.d/owncloud-client.list
@@ -306,6 +307,11 @@ config-oc:
306307
echo 'cd $${SCRIPT_DIR}'; \
307308
echo ''; \
308309
echo ''; \
310+
echo '# Create a MongoDB dump'; \
311+
echo '#'; \
312+
echo 'sudo docker exec hubdb /app/mongodb_dump.sh';\
313+
echo ''; \
314+
echo ''; \
309315
echo '# Copy non-sensitive MongoDB dumps to ./mongo_partial/'; \
310316
echo '#'; \
311317
echo 'sudo mkdir -p mongo_partial/'; \
@@ -345,10 +351,17 @@ config-oc:
345351
@ if((! sudo test -e /var/spool/cron/crontabs/root )||(! sudo grep --quiet 'oc_backup.sh' /var/spool/cron/crontabs/root )); \
346352
then \
347353
( \
354+
echo ''; \
348355
echo ''; \
349356
echo '# Backup to ownCloud every 30 minutes'; \
350357
echo '#'; \
351358
echo '0,30 * * * * $\${PATH_HOST}/oc_backup.sh'; \
359+
echo ''; \
360+
echo ''; \
361+
echo '# Dump MongoDB nightly for UVic backup'; \
362+
echo '#'; \
363+
echo '15 1 * * * sudo docker exec hubdb /app/mongodb_dump.sh'; \
364+
echo ''; \
352365
) | sudo tee -a /var/spool/cron/crontabs/root; \
353366
fi
354367

@@ -437,7 +450,7 @@ define config_ep
437450
# Add Hub to known_hosts and receive Endpoint's public key
438451
#
439452
sudo docker exec ep$1 ssh -p $(PORT_AUTOSSH) -o StrictHostKeyChecking=no autossh@$(URL_HUB) 2> /dev/null || true
440-
sudo docker exec ep$1 /app/key_exchange.sh | sudo tee -a $(PATH_HUB_SSH_AUTOSSH)/authorized_keys > /dev/null
453+
sudo docker exec ep$1 /app/key_exchange.sh | sudo tee -a $(PATH_HUB_AUTOSSH)/authorized_keys > /dev/null
441454

442455
# Add Endpoint to the HubDB
443456
#
@@ -480,40 +493,31 @@ endef
480493
include config.env
481494

482495

483-
# Set branch defaults
496+
# Override branch defaults for non-production modes
484497
#
485-
ifeq ($(BUILD_MODE), dev)
486-
BRANCH_DEFAULT = dev
487-
else ifeq ($(BUILD_MODE), master)
488-
BRANCH_DEFAULT = master
489-
else
490-
BRANCH_DEFAULT = $(RELEASE_VERSION)
498+
ifneq ($(BUILD_MODE), prod)
499+
BRANCH_AUTH ?= $(BUILD_MODE)
500+
BRANCH_DCLAPI ?= $(BUILD_MODE)
501+
BRANCH_ENDPOINT ?= $(BUILD_MODE)
502+
BRANCH_EPXCLOUD ?= $(BUILD_MODE)
503+
BRANCH_HAPI ?= $(BUILD_MODE)
504+
BRANCH_HUB ?= $(BUILD_MODE)
505+
BRANCH_HUBDB ?= $(BUILD_MODE)
506+
BRANCH_QI ?= $(BUILD_MODE)
507+
BRANCH_VIZ ?= $(BUILD_MODE)
491508
endif
492509

493510

494511
# Append Docker run commands for non-production modes
495512
#
496513
ifneq ($(BUILD_MODE), prod)
497-
DOCKER_AUTH_PRODUCTION += $(DOCKER_AUTH_DEV_APPEND)
498-
DOCKER_DCLAPI_PRODUCTION += $(DOCKER_DCLAPI_DEV_APPEND)
499-
DOCKER_ENDPOINT_PRODUCTION += $(DOCKER_ENDPOINT_DEV_APPEND)
500-
DOCKER_EPXCLOUD_PRODUCTION += $(DOCKER_ENDPOINT_DEV_APPEND)
501-
DOCKER_HAPI_PRODUCTION += $(DOCKER_HAPI_DEV_APPEND)
502-
DOCKER_HUB_PRODUCTION += $(DOCKER_HUB_DEV_APPEND)
503-
DOCKER_HUBDB_PRODUCTION += $(DOCKER_HUBDB_DEV_APPEND)
504-
DOCKER_QI_PRODUCTION += $(DOCKER_QI_DEV_APPEND)
505-
DOCKER_VIZ_PRODUCTION += $(DOCKER_VIZ_DEV_APPEND)
514+
DOCKER_AUTH_PROD += $(DOCKER_AUTH_JOIN)
515+
DOCKER_DCLAPI_PROD += $(DOCKER_DCLAPI_JOIN)
516+
DOCKER_ENDPOINT_PROD += $(DOCKER_ENDPOINT_JOIN)
517+
DOCKER_EPXCLOUD_PROD += $(DOCKER_ENDPOINT_JOIN)
518+
DOCKER_HAPI_PROD += $(DOCKER_HAPI_JOIN)
519+
DOCKER_HUB_PROD += $(DOCKER_HUB_JOIN)
520+
DOCKER_HUBDB_PROD += $(DOCKER_HUBDB_JOIN)
521+
DOCKER_QI_PROD += $(DOCKER_QI_JOIN)
522+
DOCKER_VIZ_PROD += $(DOCKER_VIZ_JOIN)
506523
endif
507-
508-
509-
# Use branch defaults where overrides are not provided
510-
#
511-
BRANCH_AUTH ?= $(BRANCH_DEFAULT)
512-
BRANCH_DCLAPI ?= $(BRANCH_DEFAULT)
513-
BRANCH_ENDPOINT ?= $(BRANCH_DEFAULT)
514-
BRANCH_EPXCLOUD ?= $(BRANCH_DEFAULT)
515-
BRANCH_HAPI ?= $(BRANCH_DEFAULT)
516-
BRANCH_HUB ?= $(BRANCH_DEFAULT)
517-
BRANCH_HUBDB ?= $(BRANCH_DEFAULT)
518-
BRANCH_QI ?= $(BRANCH_DEFAULT)
519-
BRANCH_VIZ ?= $(BRANCH_DEFAULT)

config.env

Lines changed: 49 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,9 @@
99
BUILD_MODE=prod
1010

1111

12-
# Release
13-
#
14-
RELEASE_VERSION=0.1.1
15-
16-
1712
# Hub external IP/Address (10.0.2.2 for Vagrant/VirtualBox)
1813
#
19-
URL_HUB=hub.pdc.io
20-
21-
22-
# Notification addresses
23-
#
24-
EMAIL_ERRORS=errors@pdc.io
25-
26-
27-
# ownCloud backup details
28-
#
29-
OWNCLOUD_ID=hub.pdc.io
30-
OWNCLOUD_PW=
31-
OWNCLOUD_URL=
14+
URL_HUB=10.0.2.2
3215

3316

3417
# GitHub branch overrides
@@ -37,15 +20,22 @@ OWNCLOUD_URL=
3720
#
3821
# (Note: do not leave blank values!)
3922
#
40-
#BRANCH_AUTH=master
41-
#BRANCH_DCLAPI=master
42-
#BRANCH_ENDPOINT=master
43-
#BRANCH_EP=master
44-
#BRANCH_HAPI=master
45-
#BRANCH_HUB=master
46-
#BRANCH_HUBDB=master
47-
#BRANCH_QI=master
48-
#BRANCH_VIZ=master
23+
BRANCH_AUTH=0.1.2
24+
BRANCH_DCLAPI=0.1.1
25+
BRANCH_ENDPOINT=0.1.2
26+
BRANCH_EPXCLOUD=0.1.1
27+
BRANCH_HAPI=0.1.2
28+
BRANCH_HUB=0.1.1
29+
BRANCH_HUBDB=0.1.2
30+
BRANCH_QI=0.1.1
31+
BRANCH_VIZ=0.1.2
32+
33+
34+
# ownCloud backup details
35+
#
36+
OWNCLOUD_ID=hub.pdc.io
37+
OWNCLOUD_PW=<password>
38+
OWNCLOUD_URL=<https://...>
4939

5040

5141
# DACS
@@ -60,6 +50,11 @@ DACS_JURISDICTION=TEST
6050
PATH_HOST=/pdc/data
6151

6252

53+
# Notification addresses
54+
#
55+
EMAIL_ERRORS=errors@pdc.io
56+
57+
6358
# Node.js
6459
#
6560
NODE_TLS_REJECT_UNAUTHORIZED=0
@@ -118,46 +113,47 @@ URL_DCLAPI=http://dclapi:3007
118113

119114
# Host data folders
120115
#
121-
PATH_HUB_AUTHKEYS=${PATH_HOST}/hub/etc/ssh
122-
PATH_HUB_AUTOSSH=${PATH_HOST}/hub/home/autossh/DOTssh
116+
PATH_HUB_AUTHKEYS=${PATH_HOST}/hub/etc/ssh/
117+
PATH_HUB_AUTOSSH=${PATH_HOST}/hub/home/autossh/DOTssh/
123118
PATH_EPX_AUTOSSH=${PATH_HOST}/epx/root/DOTssh/
124-
PATH_CERT=${PATH_HOST}/cert
125-
PATH_DACS=${PATH_HOST}/dacs
126-
PATH_MONGO=${PATH_HOST}/mongo
127-
PATH_DRUGREF=${PATH_HOST}/drugref
119+
PATH_CERT=${PATH_HOST}/cert/
120+
PATH_DACS=${PATH_HOST}/dacs/
121+
PATH_MONGO_DB=${PATH_HOST}/mongo/db/
122+
PATH_MONGO_DUMP=${PATH_HOST}/mongo/dump/
123+
PATH_DRUGREF=${PATH_HOST}/drugref/
128124

129125

130126
# DACS
131127
#
132-
DACS_KEYFILE=${DACS_STOREDIR}/federations/pdc.dev/federation_keyfile
133-
DACS_ROLEFILE=${DACS_STOREDIR}/federations/pdc.dev/roles
128+
DACS_KEYFILE=/etc/dacs/federations/pdc.dev/federation_keyfile
129+
DACS_ROLEFILE=/etc/dacs/federations/pdc.dev/roles
134130

135131

136132
# Containers
137133
#
138-
DOCKER_AUTH_PRODUCTION=-v ${PATH_DACS}:${DACS_STOREDIR}/:rw
139-
DOCKER_AUTH_DEV_APPEND=-p ${PORT_AUTH_M}:${PORT_AUTH_M} -p ${PORT_AUTH_C}:${PORT_AUTH_C}
134+
DOCKER_AUTH_PROD=-v ${PATH_DACS}:${DACS_STOREDIR}/:rw
135+
DOCKER_AUTH_SUPPLEMENT=-p ${PORT_AUTH_M}:${PORT_AUTH_M} -p ${PORT_AUTH_C}:${PORT_AUTH_C}
140136
#
141-
DOCKER_DCLAPI_PRODUCTION=-v ${PATH_DRUGREF}:/app/drugref/
142-
DOCKER_DCLAPI_DEV_APPEND=-p ${PORT_DACS}:${PORT_DACS}
137+
DOCKER_DCLAPI_PROD=-v ${PATH_DRUGREF}:/app/drugref/
138+
DOCKER_DCLAPI_JOIN=-p ${PORT_DACS}:${PORT_DACS}
143139
#
144-
DOCKER_ENDPOINT_PRODUCTION=-v $(PATH_EPX_AUTOSSH):/root/.ssh/:rw
145-
DOCKER_ENDPOINT_DEV_APPEND=
140+
DOCKER_ENDPOINT_PROD=-v $(PATH_EPX_AUTOSSH):/root/.ssh/:rw
141+
DOCKER_ENDPOINT_JOIN=
146142
#
147-
DOCKER_EPXCLOUD_PRODUCTION=-v $(PATH_EPX_AUTOSSH):/root/.ssh/:ro
148-
DOCKER_EPXCLOUD_DEV_APPEND=
143+
DOCKER_EPXCLOUD_PROD=-v $(PATH_EPX_AUTOSSH):/root/.ssh/:ro
144+
DOCKER_EPXCLOUD_JOIN=
149145
#
150-
DOCKER_HAPI_PRODUCTION=--link auth:auth --link hubdb:hubdb --link dclapi:dclapi
151-
DOCKER_HAPI_DEV_APPEND=-p ${PORT_HAPI}:${PORT_HAPI}
146+
DOCKER_HAPI_PROD=--link auth:auth --link hubdb:hubdb --link dclapi:dclapi
147+
DOCKER_HAPI_JOIN=-p ${PORT_HAPI}:${PORT_HAPI}
152148
#
153-
DOCKER_HUB_PRODUCTION=--link hubdb:hubdb -v ${PATH_HUB_AUTOSSH}:/home/autossh/.ssh/:rw -v ${PATH_HUB_AUTHKEYS}:/etc/ssh/:rw -p ${PORT_AUTOSSH}:22 -p ${PORT_HUB_WEB}:3002
154-
DOCKER_HUB_DEV_APPEND=
149+
DOCKER_HUB_PROD=--link hubdb:hubdb -v ${PATH_HUB_AUTOSSH}:/home/autossh/.ssh/:rw -v ${PATH_HUB_AUTHKEYS}:/etc/ssh/:rw -p ${PORT_AUTOSSH}:22 -p ${PORT_HUB_WEB}:3002
150+
DOCKER_HUB_JOIN=
155151
#
156-
DOCKER_HUBDB_PRODUCTION=-v ${PATH_MONGO}:/data/:rw
157-
DOCKER_HUBDB_DEV_APPEND=-p ${PORT_MONGO}:27017
152+
DOCKER_HUBDB_PROD=-v ${PATH_MONGO_DB}:/data/db/:rw -v ${PATH_MONGO_DUMP}:/data/dump/:rw
153+
DOCKER_HUBDB_JOIN=-p ${PORT_MONGO}:27017
158154
#
159-
DOCKER_QI_PRODUCTION=--link hubdb:hubdb
160-
DOCKER_QI_DEV_APPEND=
155+
DOCKER_QI_PROD=--link hubdb:hubdb
156+
DOCKER_QI_JOIN=
161157
#
162-
DOCKER_VIZ_PRODUCTION=--link auth:auth --link hapi:hapi -p 80:${PORT_VIZ} -p 443:${PORT_VIZ} -v ${PATH_CERT}:/app/cert/:ro
163-
DOCKER_VIZ_DEV_APPEND=-p ${PORT_VIZ}:${PORT_VIZ}
158+
DOCKER_VIZ_PROD=--link auth:auth --link hapi:hapi -p 443:${PORT_VIZ} -v ${PATH_CERT}:/app/cert/:ro
159+
DOCKER_VIZ_JOIN=-p ${PORT_VIZ}:${PORT_VIZ}

viz_add.sh

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/bin/bash
2+
#
3+
#
4+
set -e -o nounset
5+
6+
7+
# Expected input
8+
#
9+
# $0 this script
10+
# $1 Endpoint #
11+
# $2 Doctor ID
12+
13+
14+
# Check parameters
15+
#
16+
if([ $# -lt 2 ] || [ $# -gt 3 ])
17+
then
18+
echo ""
19+
echo "Unexpected number of parameters."
20+
echo ""
21+
echo "Usage: viz_add.sh [endpointNumber] [doctorID] [more soon!]"
22+
echo ""
23+
exit
24+
fi
25+
26+
27+
# Set variables from parameters
28+
#
29+
export EP_NUM=$(printf "%04d" ${1})
30+
export EP_NAME=pdc-${EP_NUM}
31+
export DOCTOR=${2}
32+
33+
34+
# Add Endpoint to the HubDB
35+
#
36+
#sudo docker exec hubdb /app/endpoint_add.sh $1 | grep WriteResult
37+
38+
39+
# Get ClinicID (Endpoint's MongoDB ObjectID) and provide it to Auth
40+
#
41+
sudo docker exec -ti auth /sbin/setuser app /app/dacs_add.sh \
42+
${DOCTOR} $(sudo docker exec hubdb /app/endpoint_getClinicID.sh ${EP_NUM}) \
43+
${EP_NAME} admin TEST sample

0 commit comments

Comments
 (0)