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
def test_kinesis_streams_with_custom_name(): """CLI - Terraform Generate Kinesis Streams with Custom Name""" cluster_dict = common.infinitedict() stream_name = 'test-stream-name' cluster = 'advanced' CONFIG['clusters'][cluster]['modules']['kinesis']['streams'][ 'stream_name'] = stream_name result = kinesis_streams.generate_kinesis_streams(cluster, cluster_dict, CONFIG) expected_result = { 'module': { 'kinesis_advanced': { 'source': './modules/tf_kinesis_streams', 'account_id': '12345678910', 'shard_level_metrics': ["IncomingBytes"], 'region': 'us-west-1', 'prefix': 'unit-test', 'cluster': cluster, 'stream_name': stream_name, 'shards': 1, 'retention': 24, 'create_user': True, 'trusted_accounts': [] } }, 'output': { 'kinesis_advanced_access_key_id': { 'value': '${module.kinesis_advanced.access_key_id}' }, 'kinesis_advanced_secret_key': { 'value': '${module.kinesis_advanced.secret_key}' }, 'kinesis_advanced_user_arn': { 'value': '${module.kinesis_advanced.user_arn}' } } } assert_true(result) assert_equal(cluster_dict, expected_result)
def test_kinesis_streams_with_trusted_account(): """CLI - Terraform Generate Kinesis Streams with trusted account""" cluster_dict = common.infinitedict() result = kinesis_streams.generate_kinesis_streams('trusted', cluster_dict, CONFIG) expected_result = { 'module': { 'kinesis_trusted': { 'source': './modules/tf_kinesis_streams', 'account_id': '12345678910', 'shard_level_metrics': [], 'region': 'us-west-1', 'prefix': 'unit-test', 'cluster': 'trusted', 'stream_name': 'unit-test_trusted_streamalert', 'shards': 1, 'retention': 24, 'create_user': True, 'trusted_accounts': ['98765432100'] } }, 'output': { 'kinesis_trusted_access_key_id': { 'value': '${module.kinesis_trusted.access_key_id}' }, 'kinesis_trusted_secret_key': { 'value': '${module.kinesis_trusted.secret_key}' }, 'kinesis_trusted_username': { 'value': '${module.kinesis_trusted.username}' } } } assert_true(result) assert_equal(cluster_dict, expected_result)