def check_api_version(check_version):
    """Validate version supplied by user

    Returns:
    * True if version is OK
    * False if the version has not been checked and the previous plugin
      check should be performed
    * throws an exception if the version is no good

    TODO(dtroyer): make the exception thrown a version-related one
    """

    # Defer client imports until we actually need them
    try:
        from novaclient import api_versions
    except ImportError:
        # Retain previous behaviour
        return False

    import novaclient

    global _compute_api_version

    # Copy some logic from novaclient 2.27.0 for basic version detection
    # NOTE(dtroyer): This is only enough to resume operations using API
    #                version 2.0 or any valid version supplied by the user.
    _compute_api_version = api_versions.get_api_version(check_version)

    if _compute_api_version > api_versions.APIVersion("2.0"):
        if not _compute_api_version.matches(
            novaclient.API_MIN_VERSION,
            novaclient.API_MAX_VERSION,
        ):
            raise exceptions.CommandError(
                "versions supported by client: %s - %s" % (
                    novaclient.API_MIN_VERSION.get_string(),
                    novaclient.API_MAX_VERSION.get_string(),
                ),
            )
    return True
dataset/ETHPy150Open dtroyer/python-openstackclient/openstackclient/compute/client.py/check_api_version/original