-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathfeats.rs
More file actions
79 lines (71 loc) · 3.43 KB
/
Copy pathfeats.rs
File metadata and controls
79 lines (71 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// App-level registration of external connectors and features.
// This module provides unified registration functions that can be reused
// across multiple binary targets (wparse, wpgen, wproj, wprescue).
//
// By keeping these registrations out of the core library, we avoid
// feature-coupling the core with optional extension crates.
// All registration functions are safe to call multiple times as the
// registry ignores duplicate builders.
pub fn register_builtin() {
wp_engine::sinks::register_builtin_sinks();
}
/// Register built-in sources and connectors for full functionality.
/// Used by wparse for complete runtime registration.
pub fn register_for_runtime() {
// Register built-in sinks & source factories
wp_engine::sinks::register_builtin_sinks();
wp_engine::sources::file::register_factory_only();
wp_engine::sources::syslog::register_syslog_factory();
// Register optional external connectors
register_optional_connectors();
}
/// Register external connector factories based on feature flags.
/// This function is community edition ready and includes Kafka, MySQL,
/// ClickHouse, Elasticsearch, Prometheus, VictoriaMetrics, VictoriaLogs,
/// Doris, Count, and HTTP connectors when enabled.
pub fn register_optional_connectors() {
#[cfg(feature = "wp-connectors")]
{
use wp_engine::connectors::registry::{register_sink_factory, register_source_factory};
// Kafka
register_source_factory(wp_connectors::kafka::KafkaSourceFactory);
register_sink_factory(wp_connectors::kafka::KafkaSinkFactory);
// MySQL
register_source_factory(wp_connectors::mysql::MySQLSourceFactory);
register_sink_factory(wp_connectors::mysql::MySQLSinkFactory);
// postgres
register_source_factory(wp_connectors::postgres::PostgresSourceFactory);
register_sink_factory(wp_connectors::postgres::PostgresSinkFactory);
// ClickHouse
register_sink_factory(wp_connectors::clickhouse::ClickHouseSinkFactory);
// Elasticsearch
register_sink_factory(wp_connectors::elasticsearch::ElasticsearchSinkFactory);
// Prometheus
register_sink_factory(wp_connectors::prometheus::PrometheusFactory);
// Doris
register_sink_factory(wp_connectors::doris::DorisSinkFactory);
// Count (debug/bench)
register_source_factory(wp_connectors::count::CountSourceFactory);
register_sink_factory(wp_connectors::count::CountSinkFactory);
// VictoriaLogs
register_sink_factory(wp_connectors::victorialogs::VictoriaLogSinkFactory);
// VictoriaMetrics
register_sink_factory(wp_connectors::victoriametrics::VictoriaMetricFactory);
// HTTP
register_source_factory(wp_connectors::http::HttpSourceFactory);
register_sink_factory(wp_connectors::http::HttpSinkFactory);
// UDP
register_sink_factory(wp_connectors::udp::UdpSinkFactory);
wp_log::info_ctrl!(
"optional connector factories registered: Kafka, MySQL, PostgreSQL, ClickHouse, Elasticsearch, Prometheus, VictoriaLogs, VictoriaMetrics, Doris, HTTP, Count, UDP"
);
}
}
/// Return a comma-separated list of compiled-in optional connector features.
pub fn features_list() -> &'static str {
if cfg!(feature = "wp-connectors") {
"community (kafka,mysql,postgres,clickhouse,elasticsearch,prometheus,victorialogs,victoriametrics,doris,http,count,udp)"
} else {
"core"
}
}