use of com.hortonworks.streamline.streams.metrics.container.mapping.MappedTopologyMetricsImpl in project streamline by hortonworks.
the class TopologyMetricsContainer method initializeInstance.
@Override
protected TopologyMetrics initializeInstance(Namespace namespace) {
String streamingEngine = namespace.getStreamingEngine();
MappedTopologyMetricsImpl metricsImpl;
// Only Storm is supported as streaming engine
try {
metricsImpl = MappedTopologyMetricsImpl.valueOf(streamingEngine);
} catch (IllegalArgumentException e) {
throw new RuntimeException("Unsupported streaming engine: " + streamingEngine, e);
}
// FIXME: "how to initialize" is up to implementation detail - now we just only consider about Storm implementation
Map<String, Object> conf = buildStormTopologyMetricsConfigMap(namespace, streamingEngine, subject);
String className = metricsImpl.getClassName();
TopologyMetrics topologyMetrics = initTopologyMetrics(conf, className);
String timeSeriesDB = namespace.getTimeSeriesDB();
if (timeSeriesDB != null && !timeSeriesDB.isEmpty()) {
String querierKey = MappedTimeSeriesQuerierImpl.getName(streamingEngine, timeSeriesDB);
MappedTimeSeriesQuerierImpl timeSeriesQuerierImpl;
try {
timeSeriesQuerierImpl = MappedTimeSeriesQuerierImpl.valueOf(querierKey);
} catch (IllegalArgumentException e) {
throw new RuntimeException("Unsupported streaming engine and time-series DB combination: " + streamingEngine + " & " + timeSeriesDB, e);
}
// FIXME: "how to initialize" is up to implementation detail - now we just only consider about Storm & AMS implementation
Map<String, String> confTimeSeriesQuerier = buildAMSTimeSeriesQuerierConfigMap(namespace, timeSeriesDB);
className = timeSeriesQuerierImpl.getClassName();
TimeSeriesQuerier timeSeriesQuerier = initTimeSeriesQuerier(confTimeSeriesQuerier, className);
topologyMetrics.setTimeSeriesQuerier(timeSeriesQuerier);
}
return topologyMetrics;
}
Aggregations