def get_imds_metadata()

in selftest/selftest.py [0:0]


def get_imds_metadata() -> Dict:
    """Fetch IMDS metadata using urllib."""
    url = "http://169.254.169.254/metadata/instance?api-version=2021-02-01"
    headers = {"Metadata": "true"}

    req = urllib.request.Request(url, headers=headers)

    last_error = None
    deadline = time.time() + 300
    while time.time() < deadline:
        try:
            with urllib.request.urlopen(req, timeout=60) as response:
                if response.status != 200:
                    raise urllib.error.HTTPError(
                        url,
                        response.status,
                        "Failed to fetch metadata",
                        response.headers,
                        None,
                    )
                metadata = json.load(response)
                logger.debug("fetched IMDS metadata: %r", metadata)
                return metadata
        except urllib.error.URLError as error:
            last_error = error
            logger.error("error fetching IMDS metadata: %r", error)
            time.sleep(1)

    raise RuntimeError(f"failed to fetch IMDS metadata: {last_error}")