summaryrefslogtreecommitdiffstats
path: root/builder/modules.d/dnbd3-rootfs/hooks/fetch-config.sh
blob: 23c5f0046aac553f6c8a6e27ac6eefca0fec9be5 (plain) (blame)
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
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
# region imports
source '/usr/lib/rebash/core.sh'
core.import exceptions
core.import logging
type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh
# endregion
exceptions.try
{
logging.set_commands_level debug
logging.set_level debug
[[ "$SLX_LOG_FILE_PATH" == "" ]] && SLX_LOG_FILE_PATH=/var/log/openslx
logging.set_log_file "$SLX_LOG_FILE_PATH"

# NOTE: "getarg" raises an exception so deactivate exceptions for now.
exceptions.deactivate
configuration_file_name="$(getarg slx_configuration_filename=)"
if [ -z "$configuration_file_name" ]; then
    configuration_file_name='config'
fi
slx_server="$(getarg slxsrv=)"
slx_server_base="$(getarg slxbase=)"
exceptions.activate

logging.info 'Getting configuration file.'
IFS_backup="$IFS"
IFS=','
for host in ${slx_server}; do
    logging.info "Trying host \"$host\"."
    if wget --timeout 5 \
        "http://${host}/${slx_server_base}/${configuration_file_name}" \
        --output-document '/etc/openslx'
    then
        break
    fi
done
IFS="$IFS_backup"

if [[ ! -e "/etc/openslx" ]]; then
    logging.warn "Downloading OpenSLX configuration file from any of the servers \"${slx_server}\" at location \"${slx_server_base}/${configuration_file_name}\" failed. Return code: $return_code"
    exit 1
fi
}
exceptions.catch
{
    logging.error "$exceptions_last_traceback"
    emergency_shell "error in ${BASH_SOURCE[0]}"
}
# region vim modline
# vim: set tabstop=4 shiftwidth=4 expandtab:
# vim: foldmethod=marker foldmarker=region,endregion:
# endregion