# Azure Instance MetaData Service variables and functions
# vim:set ts=4 et ft=sh:

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

IMDS_HOSTNAME="compute/name"
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
}
