def check_configured_acl(host, acl_configuration, kafka_servers): """ Test if acl configuration is what was defined """ # Forcing api_version to 0.11.0 in order to be sure that a # Metadata_v1 is sent (so that we get the controller info) kafka_client = KafkaManager(bootstrap_servers=kafka_servers, api_version=(0, 11, 0), security_protocol='SASL_PLAINTEXT', sasl_mechanism='PLAIN', sasl_plain_username='******', sasl_plain_password='******') acl_resource = dict( resource_type=2, # topic operation=4, # write permission_type=3, # allow name=acl_configuration['name'], principal='User:common', host='*') try: acls = kafka_client.describe_acls(acl_resource) if acl_configuration['state'] == 'present': assert acls else: assert not acls finally: kafka_client.close()
def test_configured_acl(host): """ Test if acl configuration is what was defined """ ansible_vars = host.ansible.get_variables() acl_configuration = localhost_vars['acl_defaut_configuration'] kafka_servers = ansible_vars['ansible_eth0']['ipv4']['address'] + ':9094' # Forcing api_version to 0.11.0 in order to be sure that a # Metadata_v1 is sent (so that we get the controller info) kafka_client = KafkaManager(bootstrap_servers=kafka_servers, api_version=(0, 11, 0), security_protocol='SASL_PLAINTEXT', sasl_mechanism='PLAIN', sasl_plain_username='******', sasl_plain_password='******') acl_resource = dict( resource_type=2, # topic operation=4, # write permission_type=3, # allow name='*', principal='User:common', host='*') acls = kafka_client.describe_acls(acl_resource) if acl_configuration['state'] == 'present': assert acls else: assert not acls kafka_client.close()
def check_configured_quotas_kafka(host, quotas_configuration, kafka_servers): """ Test if acl configuration is what was defined """ if (parse_version(host_protocol_version[host.backend.host]) < parse_version('2.6.0')): return kafka_client = KafkaManager(bootstrap_servers=kafka_servers, api_version=(2, 6, 0), security_protocol='SASL_PLAINTEXT', sasl_mechanism='PLAIN', sasl_plain_username='******', sasl_plain_password='******') try: entries = kafka_client.describe_quotas() for expected_entry in _map_entries(quotas_configuration['entries']): found = False for entity in entries: if (sorted(entity['entity'], key=lambda e: e['entity_type']) == sorted( expected_entry['entity'], key=lambda e: e['entity_type'])): found = True assert entity['quotas'] == expected_entry['quotas'] break assert found finally: kafka_client.close()
def check_unconsumed_topic(consumer_group, unconsumed_topic, kafka_servers): kafka_client = KafkaManager( bootstrap_servers=kafka_servers, api_version=(2, 4, 0) ) kafka_client.get_consumed_topic_for_consumer_group( consumer_group)
def test_configured_topic(host): """ Test if topic configuration is what was defined """ ansible_vars = host.ansible.get_variables() topic_configuration = localhost_vars['topic_defaut_configuration'] topic_name = localhost_vars['topic_name'] kafka_servers = ansible_vars['ansible_eth0']['ipv4']['address'] + ':9092' # Forcing api_version to 0.11.0 in order to be sure that a # Metadata_v1 is sent (so that we get the controller info) kafka_client = KafkaManager(bootstrap_servers=kafka_servers, api_version=(0, 11, 0)) if topic_configuration['state'] == 'present': assert topic_name in kafka_client.get_topics() partitions = kafka_client.get_total_partitions_for_topic(topic_name) assert partitions == topic_configuration['partitions'] ite = kafka_client.get_partitions_metadata_for_topic(topic_name) for _, metadata in six.iteritems(ite): tot_replica = len(metadata.replicas) assert tot_replica == topic_configuration['replica_factor'] for key, value in six.iteritems(topic_configuration['options']): config = kafka_client.get_config_for_topic(topic_name, key) assert str(config) == str(value) else: assert topic_name not in kafka_client.get_topics() kafka_client.close()
def check_configured_topic(host, topic_configuration, topic_name, kafka_servers, deleted_options=None): """ Test if topic configuration is what was defined """ # Forcing api_version to 0.11.0 in order to be sure that a # Metadata_v1 is sent (so that we get the controller info) kafka_client = KafkaManager(bootstrap_servers=kafka_servers, api_version=(0, 11, 0)) if deleted_options is None: deleted_options = {} try: if topic_configuration['state'] == 'present': assert topic_name in kafka_client.get_topics() partitions = \ kafka_client.get_total_partitions_for_topic(topic_name) assert partitions == topic_configuration['partitions'] ite = kafka_client.get_partitions_metadata_for_topic(topic_name) for _, metadata in six.iteritems(ite): tot_replica = len(metadata.replicas) assert tot_replica == topic_configuration['replica_factor'] for key, value in six.iteritems(topic_configuration['options']): config = kafka_client.get_config_for_topic(topic_name, [key]) assert str(config) == str(value) for key, value in six.iteritems(deleted_options): config = kafka_client.get_config_for_topic(topic_name, key) assert str(config) != str(value) else: assert topic_name not in kafka_client.get_topics() finally: kafka_client.close()