blob: 6977bfa0a4b8585a81ceda9f27f9a2fd9363d99a [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.metron.helpers.topology;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.XMLConfiguration;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class SettingsLoader {
@SuppressWarnings("unchecked")
public static JSONObject loadEnvironmentIdnetifier(String config_path)
throws ConfigurationException {
Configuration config = new PropertiesConfiguration(config_path);
String customer = config.getString("customer.id", "unknown");
String datacenter = config.getString("datacenter.id", "unknown");
String instance = config.getString("instance.id", "unknown");
JSONObject identifier = new JSONObject();
identifier.put("customer", customer);
identifier.put("datacenter", datacenter);
identifier.put("instance", instance);
return identifier;
}
@SuppressWarnings("unchecked")
public static JSONObject loadTopologyIdnetifier(String config_path)
throws ConfigurationException {
Configuration config = new PropertiesConfiguration(config_path);
String topology = config.getString("topology.id", "unknown");
String instance = config.getString("instance.id", "unknown");
JSONObject identifier = new JSONObject();
identifier.put("topology", topology);
identifier.put("topology_instance", instance);
return identifier;
}
public static String generateTopologyName(JSONObject env, JSONObject topo) {
return (env.get("customer") + "_" + env.get("datacenter") + "_"
+ env.get("instance") + "_" + topo.get("topology") + "_" + topo.get("topology_instance"));
}
@SuppressWarnings("unchecked")
public static JSONObject generateAlertsIdentifier(JSONObject env, JSONObject topo)
{
JSONObject identifier = new JSONObject();
identifier.put("environment", env);
identifier.put("topology", topo);
return identifier;
}
public static Map<String, JSONObject> loadRegexAlerts(String config_path)
throws ConfigurationException, ParseException {
XMLConfiguration alert_rules = new XMLConfiguration();
alert_rules.setDelimiterParsingDisabled(true);
alert_rules.load(config_path);
//int number_of_rules = alert_rules.getList("rule.pattern").size();
String[] patterns = alert_rules.getStringArray("rule.pattern");
String[] alerts = alert_rules.getStringArray("rule.alert");
JSONParser pr = new JSONParser();
Map<String, JSONObject> rules = new HashMap<String, JSONObject>();
for (int i = 0; i < patterns.length; i++)
rules.put(patterns[i], (JSONObject) pr.parse(alerts[i]));
return rules;
}
public static Map<String, JSONObject> loadKnownHosts(String config_path)
throws ConfigurationException, ParseException {
Configuration hosts = new PropertiesConfiguration(config_path);
Iterator<String> keys = hosts.getKeys();
Map<String, JSONObject> known_hosts = new HashMap<String, JSONObject>();
JSONParser parser = new JSONParser();
while (keys.hasNext()) {
String key = keys.next().trim();
JSONArray value = (JSONArray) parser.parse(hosts.getProperty(key)
.toString());
known_hosts.put(key, (JSONObject) value.get(0));
}
return known_hosts;
}
public static void printConfigOptions(PropertiesConfiguration config, String path_fragment)
{
Iterator<String> itr = config.getKeys();
while(itr.hasNext())
{
String key = itr.next();
if(key.contains(path_fragment))
{
System.out.println("[Metron] Key: " + key + " -> " + config.getString(key));
}
}
}
public static void printOptionalSettings(Map<String, String> settings)
{
for(String setting: settings.keySet())
{
System.out.println("[Metron] Optional Setting: " + setting + " -> " +settings.get(setting));
}
}
public static Map<String, String> getConfigOptions(PropertiesConfiguration config, String path_fragment)
{
Iterator<String> itr = config.getKeys();
Map<String, String> settings = new HashMap<String, String>();
while(itr.hasNext())
{
String key = itr.next();
if(key.contains(path_fragment))
{
String tmp_key = key.replace(path_fragment, "");
settings.put(tmp_key, config.getString(key));
}
}
return settings;
}
}