diff options
author | Dana Powers <dana.powers@gmail.com> | 2019-09-28 17:06:57 -0700 |
---|---|---|
committer | Dana Powers <dana.powers@gmail.com> | 2019-09-28 17:06:57 -0700 |
commit | 98ebff87a78bafbb15dd95c5174c5a1041a848ed (patch) | |
tree | 570ded42e9dca01d00c6230bc19c76b47f83fa44 /kafka/admin/client.py | |
parent | 5381591bac7f1322e7a54e4be65d1a54e2898732 (diff) | |
download | kafka-python-98ebff87a78bafbb15dd95c5174c5a1041a848ed.tar.gz |
Fix Admin Client api version checking; only test ACL integration on 0.11+
Diffstat (limited to 'kafka/admin/client.py')
-rw-r--r-- | kafka/admin/client.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/kafka/admin/client.py b/kafka/admin/client.py index 0ade3e9..df85f44 100644 --- a/kafka/admin/client.py +++ b/kafka/admin/client.py @@ -232,14 +232,20 @@ class KafkaAdminClient(object): :param operation: A list of protocol operation versions from kafka.protocol. :return: The max matching version number between client and broker. """ - version = min(len(operation) - 1, - self._client.get_api_versions()[operation[0].API_KEY][1]) - if version < self._client.get_api_versions()[operation[0].API_KEY][0]: + broker_api_versions = self._client.get_api_versions() + api_key = operation[0].API_KEY + if broker_api_versions is None or api_key not in broker_api_versions: + raise IncompatibleBrokerVersion( + "Kafka broker does not support the '{}' Kafka protocol." + .format(operation[0].__name__)) + min_version, max_version = broker_api_versions[api_key] + version = min(len(operation) - 1, max_version) + if version < min_version: # max library version is less than min broker version. Currently, # no Kafka versions specify a min msg version. Maybe in the future? raise IncompatibleBrokerVersion( "No version of the '{}' Kafka protocol is supported by both the client and broker." - .format(operation.__name__)) + .format(operation[0].__name__)) return version def _validate_timeout(self, timeout_ms): |