blob: 934064816359ab3147a35fbe5194649e8eb2a27e [file] [log] [blame]
#!/bin/bash
# Copyright 2015 The Vanadium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
# Starts an instance of measured and required services.
#
# mounttabled is started locally at IPADDR:PORT, mounting itself to the global
# mount table at $GLOBAL_MT/users/$USER/$PREFIX/$DEVID. syncbased is started in
# the local mount table at $PREFIX/$DEVID/syncbased.
# measured is started, creating a syncgroup published at the local syncbased as
# reached through the global mount table:
# $GLOBAL_MT/users/$USER/$PREFIX/$DEVID/$PREFIX/$DEVID/syncbased
# Once the syncgroup is joined, sync is configured to use either the global or
# the local mount table (unless the local mount table IPADDR:PORT changes).
# measured drops most permissions on prefixes in the syncgroup. Full admin
# permissions are granted to $ADMIN (as a blessing extension of the same
# default blessing as the one running this script).
set -eu
source "${JIRI_ROOT}/release/projects/sensorlog/go/src/v.io/x/sensorlog/scripts/runner_lib.sh"
# Must be run with V23_CREDENTIALS set or through the agent.
# Optional environment variables: SL_PREFIX, SL_DEVID, SL_ADMIN, SL_IPADDR_PORT, SL_USER, SL_GLOBAL_MT, SL_TMPDIR
function main() {
local -r PREFIX="${SL_PREFIX:-sl/measured}"
local -r DEVID="${SL_DEVID:-$(gen_uuid)}"
local -r ADMIN="${SL_ADMIN:-sl/client}"
local -r NAME="${PREFIX}/${DEVID}"
local -r IPADDR_PORT="${SL_IPADDR_PORT:-$(dig $(hostname) +short):8707}"
local -r USER="${SL_USER:-$(get_user_email)}"
local -r GLOBAL_MT="${SL_GLOBAL_MT:-/ns.dev.v.io:8101}"
local -r TMPDIR="${SL_TMPDIR:-sltmp}/${NAME}"
mkdir -p "${TMPDIR}"
trap "kill_child_processes; exit 1" ERR EXIT
run_mounttabled "${NAME}" "${IPADDR_PORT}" "${GLOBAL_MT}/users/${USER}"
run_syncbased "/${IPADDR_PORT}" "${NAME}" "${TMPDIR}"
run_measured "/${IPADDR_PORT}" "${NAME}" "${DEVID}" "${ADMIN}" \
"${GLOBAL_MT}/users/${USER}/${NAME}/${NAME}/syncbased" \
"${GLOBAL_MT}/users/${USER}"
# Wait for signal.
while true; do
sleep 10
done
}
main "$@"