summaryrefslogtreecommitdiff
path: root/scripts/rvi.sh
blob: 6e15d1776aa5e7f8be33f4fa0cb4d65f10fac88f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/bin/sh
#
# Copyright (C) 2014, Jaguar Land Rover
#
# Mozilla Public License, version 2.0.  The full text of the 
# Mozilla Public License is at https://www.mozilla.org/MPL/2.0/
#
#
# Setup a correct configuration and launch an RVI release node.
# If a UUID file has not been created, it will be done at this time.
# Init.d script to start and stop an RVI system installed
# through an RPM.
#

SELF_DIR=$(dirname $(readlink -f "$0"))
CONFIG_DIR=/etc/opt/rvi
RVI_DIR=/opt/rvi

usage() {
    echo "Usage: $0 [-c config_file] start|stop|console"
    echo "  -c config_file  Configuration file. "
    echo "                  Not used with start and console."
    echo
    echo "  start           Start an rvi node with the given"
    echo "                  configuration file."
    echo
    echo "  stop            Stop an rvi node previously started"
    echo "                  with start."
    echo
    echo "  console         Start an rvi in foreground mode."
    exit 1
}

while getopts "c:" o; do
    case "${o}" in
        c)
            CONFIG_FILE=${OPTARG}
            ;;
        *)
            usage
            ;;
    esac
done

shift $((${OPTIND}-1))
CMD=$1

if [ "$CMD" != "start" -a  "$CMD" != "stop" -a  "$CMD" != "console" ]
then
    usage
fi

if [ "$CMD" = "stop" ]
then
    ${RVI_DIR}/bin/rvi stop
    exit $?
fi

# Check if we need to prepend current dir
# to relative config file path
#

if [ $(echo ${CONFIG_FILE} | cut -c 1,1) != "/" ]
then
    CONFIG_FILE=${PWD}/${CONFIG_FILE}
fi

if [ -z "${CONFIG_FILE}" ] ; then
    echo "Missing -c flag"
    usage
fi

if [ ! -f "${CONFIG_FILE}" ] ; then
    echo "Config file cannot be read"
    usage
fi

# Check if we have a uuid file.
if [ ! -f ${CONFIG_DIR}/device_id ]
then
    echo "Creating device ID in ${CONFIG_DIR}/device_id"
    cat /proc/sys/kernel/random/uuid > ${CONFIG_DIR}/device_id
fi

# 
# Generate a config file that will end up as
# /tmp/rvi/sys.config
#
(
    cd /tmp/
    rm -rf rvi
    export ERL_LIBS=${RVI_DIR}/setup:${RVI_DIR}/lib/
    ${RVI_DIR}/setup_gen rvi ${CONFIG_FILE} rvi
)

# Did we succeed with config generation?
if [ "$?" != "0" ]
then
    # Nope
    exit "$?"
fi   

# Copy created config file to /etc/opt/rvi/sys.config,
# which is symlinked to by /opt/rvi/sys.config
cp /tmp/rvi/sys.config /etc/opt/rvi/sys.config

exec /opt/rvi/bin/rvi ${CMD}