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

IMDS_HEADER="Metadata"
IMDS_QUERY="?format=text&api-version=2021-05-01"
IMDS_URI="metadata/instance"

IMDS_HOSTNAME="compute/name"
IMDS_LOCAL_HOSTNAME="$IMDS_HOSTNAME"
IMDS_SSH_KEYS="compute/publicKeys"
IMDS_USERDATA="compute/userData"
IMDS_NICS="network/interface"

# 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: true"
}

# dig deeper than default
_imds_ssh_keys() {
	local key

	for key in $(imds "$IMDS_SSH_KEYS"); do
		imds "$IMDS_SSH_KEYS/${key}/keyData"
	done | sort -u
}

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