@@ -5,8 +5,8 @@ pub mod exporters;
55pub mod sensors;
66use clap:: ArgMatches ;
77use exporters:: {
8- json :: JSONExporter , prometheus :: PrometheusExporter , qemu :: QemuExporter ,
9- riemann:: RiemannExporter , stdout:: StdoutExporter , Exporter , ExporterOption ,
8+ datadog :: DatadogExporter , json :: JSONExporter , prometheus :: PrometheusExporter ,
9+ qemu :: QemuExporter , riemann:: RiemannExporter , stdout:: StdoutExporter , Exporter , ExporterOption ,
1010} ;
1111use sensors:: { powercap_rapl:: PowercapRAPLSensor , Sensor } ;
1212use std:: collections:: HashMap ;
@@ -52,32 +52,44 @@ fn get_sensor(matches: &ArgMatches) -> Box<dyn Sensor> {
5252pub fn run ( matches : ArgMatches ) {
5353 loggerv:: init_with_verbosity ( matches. occurrences_of ( "v" ) ) . unwrap ( ) ;
5454
55- let sensor_boxed = get_sensor ( & matches) ;
56- let exporter_parameters;
57-
5855 if let Some ( stdout_exporter_parameters) = matches. subcommand_matches ( "stdout" ) {
59- exporter_parameters = stdout_exporter_parameters. clone ( ) ;
60- let mut exporter = StdoutExporter :: new ( sensor_boxed ) ;
56+ let exporter_parameters = stdout_exporter_parameters. clone ( ) ;
57+ let mut exporter = StdoutExporter :: new ( get_sensor ( & matches ) ) ;
6158 exporter. run ( exporter_parameters) ;
62- } else if let Some ( json_exporter_parameters) = matches. subcommand_matches ( "json" ) {
63- exporter_parameters = json_exporter_parameters. clone ( ) ;
64- let mut exporter = JSONExporter :: new ( sensor_boxed) ;
59+ return ;
60+ }
61+ if let Some ( json_exporter_parameters) = matches. subcommand_matches ( "json" ) {
62+ let exporter_parameters = json_exporter_parameters. clone ( ) ;
63+ let mut exporter = JSONExporter :: new ( get_sensor ( & matches) ) ;
6564 exporter. run ( exporter_parameters) ;
66- } else if let Some ( riemann_exporter_parameters) = matches. subcommand_matches ( "riemann" ) {
67- exporter_parameters = riemann_exporter_parameters. clone ( ) ;
68- let mut exporter = RiemannExporter :: new ( sensor_boxed) ;
65+ return ;
66+ }
67+ if let Some ( riemann_exporter_parameters) = matches. subcommand_matches ( "riemann" ) {
68+ let exporter_parameters = riemann_exporter_parameters. clone ( ) ;
69+ let mut exporter = RiemannExporter :: new ( get_sensor ( & matches) ) ;
6970 exporter. run ( exporter_parameters) ;
70- } else if let Some ( prometheus_exporter_parameters) = matches. subcommand_matches ( "prometheus" ) {
71- exporter_parameters = prometheus_exporter_parameters. clone ( ) ;
72- let mut exporter = PrometheusExporter :: new ( sensor_boxed) ;
71+ return ;
72+ }
73+ if let Some ( prometheus_exporter_parameters) = matches. subcommand_matches ( "prometheus" ) {
74+ let exporter_parameters = prometheus_exporter_parameters. clone ( ) ;
75+ let mut exporter = PrometheusExporter :: new ( get_sensor ( & matches) ) ;
7376 exporter. run ( exporter_parameters) ;
74- } else if let Some ( qemu_exporter_parameters) = matches. subcommand_matches ( "qemu" ) {
75- exporter_parameters = qemu_exporter_parameters. clone ( ) ;
76- let mut exporter = QemuExporter :: new ( sensor_boxed) ;
77+ return ;
78+ }
79+ if let Some ( qemu_exporter_parameters) = matches. subcommand_matches ( "qemu" ) {
80+ let exporter_parameters = qemu_exporter_parameters. clone ( ) ;
81+ let mut exporter = QemuExporter :: new ( get_sensor ( & matches) ) ;
7782 exporter. run ( exporter_parameters) ;
78- } else {
79- error ! ( "Couldn't determine which exporter has been chosen." ) ;
83+ return ;
8084 }
85+ #[ cfg( feature = "datadog" ) ]
86+ if let Some ( datadog_exporter_parameters) = matches. subcommand_matches ( "datadog" ) {
87+ let exporter_parameters = datadog_exporter_parameters. clone ( ) ;
88+ let mut exporter = DatadogExporter :: new ( get_sensor ( & matches) ) ;
89+ exporter. run ( exporter_parameters) ;
90+ return ;
91+ }
92+ error ! ( "Couldn't determine which exporter has been chosen." ) ;
8193}
8294
8395/// Returns options needed for each exporter as a HashMap.
@@ -104,6 +116,11 @@ pub fn get_exporters_options() -> HashMap<String, HashMap<String, ExporterOption
104116 String :: from ( "qemu" ) ,
105117 exporters:: qemu:: QemuExporter :: get_options ( ) ,
106118 ) ;
119+ #[ cfg( feature = "datadog" ) ]
120+ options. insert (
121+ String :: from ( "datadog" ) ,
122+ exporters:: datadog:: DatadogExporter :: get_options ( ) ,
123+ ) ;
107124 options
108125}
109126
0 commit comments