# Tiny Cloud - Init Functions
# vim:set filetype=sh:
# shellcheck shell=sh

. "$LIBDIR/tiny-cloud/network-config"

INIT_ACTIONS_BOOT="$(replace_word set_default_interfaces set_network_interfaces $INIT_ACTIONS_BOOT)"

set_resolv_conf() {
	# resolv.conf
	local nameservers="$(imds meta-data/resolv_conf/nameservers)"
	for i in $nameservers; do
		local server="$(imds meta-data/resolv_conf/nameservers/$i)"
		add_once "$ETC"/resolv.conf "nameserver $server"
	done
}

init__set_network_interfaces() {
	local interfaces
	local network_config="$TINY_CLOUD_VAR/network-config"

	mkdir -p "$ETC"/network

	if should_preserve_network_interfaces; then
		:
	elif [ -s "$network_config" ]; then
		if network_config_apply "$network_config" "NoCloud network-config"; then
			network_config_setup_interface_names "NoCloud network-config"
		elif ! [ -f "$ETC"/network/interfaces ]; then
			init__set_default_interfaces
		fi
	else
		interfaces="$(imds meta-data/network-interfaces)"
		if [ -n "$interfaces" ]; then
			printf "%s\n" "$interfaces" > "$ETC"/network/interfaces
		elif ! [ -f "$ETC"/network/interfaces ]; then
			init__set_default_interfaces
		fi
	fi

	if ! grep -q dhcp "$ETC"/network/interfaces; then
		set_resolv_conf
	fi
}
