def _check_microversion(url, microversion): """Checks to see if the requested microversion is supported by the current version of python-cinderclient and the volume API endpoint. :param url: Cinder API endpoint URL. :param microversion: Requested microversion. If not available at the given API endpoint URL, a CinderAPIVersionNotAvailable exception is raised. :returns: The microversion if it is available. This can be used to construct the cinder v3 client object. :raises: CinderAPIVersionNotAvailable if the microversion is not available. """ max_api_version = cinder_client.get_highest_client_server_version(url) # get_highest_client_server_version returns a float which we need to cast # to a str and create an APIVersion object to do our version comparison. max_api_version = cinder_api_versions.APIVersion(str(max_api_version)) # Check if the max_api_version matches the requested minimum microversion. if max_api_version.matches(microversion): # The requested microversion is supported by the client and the server. return microversion raise exception.CinderAPIVersionNotAvailable(version=microversion)