# OCI Instance MetaData Service variables and functions
# vim:set filetype=sh:
# shellcheck shell=sh

IMDS_HEADER="Authorization"
IMDS_URI="opc/v2"

IMDS_HOSTNAME="instance/hostname"
IMDS_LOCAL_HOSTNAME="$IMDS_HOSTNAME"
IMDS_SSH_KEYS="instance/metadata/ssh_authorized_keys"
IMDS_USERDATA="instance/metadata/user_data"
IMDS_NICS="nics"

# TODO: flesh out networking
unset \
	IMDS_MAC \
	IMDS_IPV4 \
	IMDS_IPV6 \
	IMDS_IPV4_NET \
	IMDS_IPV6_NET \
	IMDS_IPV4_PREFIX \
	IMDS_IPV6_PREFIX

_imds_header() {
	echo "$IMDS_HEADER: Bearer Oracle"
}

_imds_ssh_keys() { _imds "$IMDS_SSH_KEYS"; }

_imds_nic_index() {
	local m n=0
	local mac=$(cat "$SYS/class/net/$1/mac")
	while m=$(imds "$IMDS_NICS/$n/mac" | tr A-F a-f); do
		[ "$m" = "$mac" ] && echo $n; return 0
	done
	return 1
}

# decode userdata value
_imds_userdata() {
	imds "$IMDS_USERDATA" | base64 -d
}
