コード例 #1
0
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()
コード例 #2
0
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()
コード例 #3
0
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()
コード例 #4
0
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()
コード例 #5
0
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()