def get_controller_id_for_topic(self, topic_name): """ Returns current controller for topic """ request = MetadataRequest_v1(topics=[topic_name]) response = self.send_request_and_get_response(request) return response.controller_id
def test_client(request, sasl_kafka): topic_name = special_to_underscore(request.node.name + random_string(4)) sasl_kafka.create_topics([topic_name], num_partitions=1) client, = sasl_kafka.get_clients(1) request = MetadataRequest_v1(None) client.send(0, request) for _ in range(10): result = client.poll(timeout_ms=10000) if len(result) > 0: break else: raise RuntimeError("Couldn't fetch topic response from Broker.") result = result[0] assert topic_name in [t[1] for t in result.topics]
async def _get_controller_node(self, owner: Service, client: aiokafka.AIOKafkaClient, timeout: int = 30000) -> Optional[int]: nodes = [broker.nodeId for broker in client.cluster.brokers()] for node_id in nodes: if node_id is None: raise NotReady('Not connected to Kafka Broker') request = MetadataRequest_v1([]) wait_result = await owner.wait( client.send(node_id, request), timeout=timeout, ) if wait_result.stopped: owner.log.info(f'Shutting down - skipping creation.') return None response = wait_result.result return response.controller_id raise Exception(f'Controller node not found')