Пример #1
0
def generate_cluster(config, cluster_name):
    """Generate a StreamAlert cluster file.

    Args:
        config (dict): The loaded config from the 'conf/' directory
        cluster_name (str): The name of the currently generating cluster

    Returns:
        dict: generated Terraform cluster dictionary
    """
    modules = config['clusters'][cluster_name]['modules']
    cluster_dict = infinitedict()

    generate_classifier(cluster_name, cluster_dict, config)

    generate_cluster_cloudwatch_metric_filters(cluster_name, cluster_dict,
                                               config)

    generate_cluster_cloudwatch_metric_alarms(cluster_name, cluster_dict,
                                              config)

    if modules.get('cloudwatch_monitoring', {}).get('enabled'):
        if not generate_monitoring(cluster_name, cluster_dict, config):
            return

    if modules.get('kinesis'):
        if not generate_kinesis_streams(cluster_name, cluster_dict, config):
            return

    if modules.get('kinesis_events'):
        if not generate_kinesis_events(cluster_name, cluster_dict, config):
            return

    if modules.get('cloudtrail'):
        if not generate_cloudtrail(cluster_name, cluster_dict, config):
            return

    # purposely not using .get, since no extra settings are required for this module
    if 'cloudwatch_events' in modules:
        if not generate_cloudwatch_events(cluster_name, cluster_dict, config):
            return

    if modules.get('cloudwatch_logs_destination'):
        if not generate_cloudwatch_destinations(cluster_name, cluster_dict,
                                                config):
            return

    if modules.get('flow_logs'):
        if not generate_flow_logs(cluster_name, cluster_dict, config):
            return

    if modules.get('s3_events'):
        if not generate_s3_events(cluster_name, cluster_dict, config):
            return

    generate_apps(cluster_name, cluster_dict, config)

    return cluster_dict
Пример #2
0
def test_generate_s3_events():
    """CLI - Terraform - S3 Events, No Module Prefix"""
    cluster_dict = common.infinitedict()
    result = s3_events.generate_s3_events('advanced', cluster_dict, CONFIG)

    expected_config = {
        'module': {
            's3_events_unit-test_advanced_unit-test-bucket_data': {
                'source': './modules/tf_s3_events',
                'lambda_function_alias': '${module.classifier_advanced_lambda.function_alias}',
                'lambda_function_alias_arn': (
                    '${module.classifier_advanced_lambda.function_alias_arn}'
                ),
                'lambda_function_name': '${module.classifier_advanced_lambda.function_name}',
                'bucket_name': 'unit-test-bucket.data',
                'lambda_role_id': '${module.classifier_advanced_lambda.role_id}',
                'filters': [
                    {
                        'filter_prefix': 'AWSLogs/123456789/CloudTrail/us-east-1/',
                        'filter_suffix': '.log'
                    }
                ]
            },
            's3_events_unit-test_advanced_unit-test_cloudtrail_data': {
                'source': './modules/tf_s3_events',
                'lambda_function_alias': '${module.classifier_advanced_lambda.function_alias}',
                'lambda_function_alias_arn': (
                    '${module.classifier_advanced_lambda.function_alias_arn}'
                ),
                'lambda_function_name': '${module.classifier_advanced_lambda.function_name}',
                'bucket_name': 'unit-test.cloudtrail.data',
                'lambda_role_id': '${module.classifier_advanced_lambda.role_id}',
                'filters': []
            }
        }
    }

    assert_equal(result, True)
    assert_equal(cluster_dict, expected_config)