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 outputs = config['clusters'][cluster_name].get('outputs') if outputs: if not generate_outputs(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 if modules.get('cloudwatch'): if not generate_cloudwatch(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_generate_cloudwatch(self): """CLI - Terraform Generate CloudWatch""" cloudwatch.generate_cloudwatch('advanced', self.cluster_dict, self.config) # Count the modules for each region - there should be 14 since 1 is excluded count = sum(1 for name in self.cluster_dict['module'] if name.startswith('cloudwatch_advanced')) assert_equal(count, 14) expected_config = { 'cluster': 'advanced', 'source': 'modules/tf_stream_alert_cloudwatch', 'region': 'eu-west-1', 'kinesis_stream_arn': '${module.kinesis_advanced.arn}', 'cross_account_ids': ['123456789012', '12345678910'] } eu_west_config = self.cluster_dict['module'][ 'cloudwatch_advanced_eu-west-1'] assert_equal(expected_config, eu_west_config)