summaryrefslogblamecommitdiffstats
path: root/builder/modules.d/dnbd3-rootfs/hooks/fetch-config.sh
blob: a11332a7f0957f655fff5393b1d5d763785cb80f (plain) (tree)
1
2
3
4
5
6
7
8
9
                   
                       
                
                                                                 
           
 

                                    
 


                                                             



                                      
                                                       


          
                              
 
                                   
                                                          

                                 
                                                                                              



                                                
                                                                
                                                
  
 
                              
 

                                               

                                                                                       
                            
                

                                    
                                  
 

                                                                                                                                
    
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
# region imports
type emergency_shell >/dev/null 2>&1 || source /lib/dracut-lib.sh
# endregion

slx_server="$(getarg slxsrv=)"
slx_server_base="$(getarg slxbase=)"

# build config_url
config_url="http://${slx_server#@}/${slx_server_base}/config"

# check if system's uuid was set
if [ -s "/run/system-uuid" ]; then
	uuid=$(cat "/run/system-uuid")
	if [ -n "$uuid" ]; then
		config_url="${config_url}?uuid=${uuid}"
	fi
fi

config_path="/etc/openslx.tmp"

echo "Downloading '$config_url'..."
slx-tools download_retry -s "$config_url" > "$config_path"

if [ ! -s "$config_path" ] ; then
    warn "Downloading OpenSLX configuration file from '$config_url' failed with: $return_code"
    emergency_shell "CRITICAL: System unusable."
fi

if ! ash -n "$config_path"; then
    warn "Downloaded OpenSLX configuration failed syntax check!"
    emergency_shell "CRITICAL: System unusable."
fi

# remember kcl server and base
{
	echo "SLX_KCL_SERVERS='$slx_server'"
	echo "SLX_BASE_PATH='$slx_server_base'"
    echo "# Config fetched from $config_url"
    echo "CONFIG_DOWNLOAD_TIME=$(sed -r 's/^([0-9]+)\.([0-9]+).*$/\1\2/' /proc/uptime)"
	echo '#_RCONFIG_TAG'
} > /etc/openslx

# finally copy remote config into it
cat "$config_path" >> /etc/openslx

# slxsrv overrides SLX_DNBD3_SERVERS if prefixed with @
[ "${slx_server#@}" != "${slx_server}" ] && sed -i "s/^SLX_DNBD3_SERVERS=.*/SLX_DNBD3_SERVERS='${slx_server#@}'/" "/etc/openslx"
true