|
|
@ -10,8 +10,55 @@ DBNAME=$(relation-get dbname) || { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
## From: https://stackoverflow.com/questions/16989598 |
|
|
|
function version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; } |
|
|
|
|
|
|
|
|
|
|
|
ensure_db_docker_running |
|
|
|
|
|
|
|
|
|
|
|
## ReplicaSet initialization |
|
|
|
|
|
|
|
cmd="rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: '$TARGET_SERVICE_NAME:27017' } ]})" |
|
|
|
debug "${WHITE}running:$NORMAL $cmd" |
|
|
|
|
|
|
|
out=$(ddb < <(echo "use $DBNAME"; |
|
|
|
echo "$cmd")) |
|
|
|
|
|
|
|
if [[ "$out" == *"\"codeName\" : \"AlreadyInitialized\""* ]]; then |
|
|
|
info "ReplicaSet already initialized." |
|
|
|
elif [[ "$out" == *"\"ok\" : 1"* ]]; then |
|
|
|
info "ReplicaSet initialized. " |
|
|
|
else |
|
|
|
err "ReplicaSet initialisation failed:" |
|
|
|
echo "$out" >&2 |
|
|
|
exit 13 |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
## Enable read if db version >= 4.2 |
|
|
|
|
|
|
|
if ! version=$(mongo:db:version); then |
|
|
|
err "Couldn't get database version" |
|
|
|
exit 1 |
|
|
|
fi |
|
|
|
|
|
|
|
echo "Current mongo database version: '$version'." >&2 |
|
|
|
|
|
|
|
if version_gt "$version" 4.1; then |
|
|
|
cmd="db.getMongo().setSecondaryOk()" |
|
|
|
debug "${WHITE}running:$NORMAL $cmd" |
|
|
|
|
|
|
|
out=$(ddb < <(echo "use $DBNAME"; |
|
|
|
echo "$cmd")) || { |
|
|
|
err "Failed database command. Output:" |
|
|
|
echo "$out" | prefix " | " >&2 |
|
|
|
exit 1 |
|
|
|
} |
|
|
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
if dbs=$(mongo:db:ls); then |
|
|
|
if matching_db=$(e "$dbs" | egrep "[a-zA-Z0-9.-_]*_${DBNAME}"); then |
|
|
|
if e "$dbs" | grep "^${DBNAME}$"; then |
|
|
@ -41,23 +88,3 @@ else |
|
|
|
exit 14 |
|
|
|
fi |
|
|
|
|
|
|
|
## ReplicaSet initialization |
|
|
|
|
|
|
|
cmd="rs.initiate({ _id: 'rs01', members: [ { _id: 0, host: '$TARGET_SERVICE_NAME:27017' } ]})" |
|
|
|
debug "${WHITE}running:$NORMAL $cmd" |
|
|
|
|
|
|
|
out=$(ddb < <(echo "use $DBNAME"; |
|
|
|
echo "$cmd")) |
|
|
|
|
|
|
|
if [[ "$out" == *"\"codeName\" : \"AlreadyInitialized\""* ]]; then |
|
|
|
info "ReplicaSet already initialized." |
|
|
|
elif [[ "$out" == *"\"ok\" : 1"* ]]; then |
|
|
|
info "ReplicaSet initialized. " |
|
|
|
else |
|
|
|
err "ReplicaSet initialisation failed:" |
|
|
|
echo "$out" >&2 |
|
|
|
exit 13 |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
|