1#![allow(clippy::must_use_candidate)]
2pub mod error;
3pub mod heartbeat;
4pub mod logging;
5pub mod metrics;
6pub mod servers;
7pub mod service;
8pub mod service_builder;
9pub mod unified_service;
10
11#[allow(
13 clippy::missing_errors_doc,
14 clippy::wildcard_imports,
15 clippy::doc_markdown,
16 clippy::used_underscore_items,
17 clippy::default_trait_access
18)]
19pub mod proto {
20 include!(concat!(env!("OUT_DIR"), "/qos.rs"));
21}
22
23pub use logging::{GrafanaClient, GrafanaConfig, LokiConfig};
24pub use servers::{
25 grafana::GrafanaServerConfig, loki::LokiServerConfig, prometheus::PrometheusServerConfig,
26};
27pub use service_builder::QoSServiceBuilder;
28pub use unified_service::QoSService;
29
30#[derive(Clone, Debug, Default)]
32pub struct QoSConfig {
33 pub heartbeat: Option<heartbeat::HeartbeatConfig>,
35
36 pub metrics: Option<metrics::MetricsConfig>,
38
39 pub loki: Option<logging::LokiConfig>,
41
42 pub grafana: Option<logging::GrafanaConfig>,
44
45 pub grafana_server: Option<servers::grafana::GrafanaServerConfig>,
47
48 pub docker_network: Option<String>,
50
51 pub loki_server: Option<servers::loki::LokiServerConfig>,
53
54 pub prometheus_server: Option<servers::prometheus::PrometheusServerConfig>,
56
57 pub manage_servers: bool,
59
60 pub service_id: Option<u64>,
62
63 pub blueprint_id: Option<u64>,
65
66 pub docker_bind_ip: Option<String>,
68}
69
70#[must_use]
77pub fn default_qos_config() -> QoSConfig {
78 QoSConfig {
79 heartbeat: Some(heartbeat::HeartbeatConfig::default()),
80 metrics: Some(metrics::MetricsConfig::default()),
81 loki: Some(logging::LokiConfig::default()),
82 grafana: Some(logging::GrafanaConfig::default()),
83 grafana_server: Some(servers::grafana::GrafanaServerConfig::default()),
84 loki_server: Some(servers::loki::LokiServerConfig::default()),
85 prometheus_server: None,
86 docker_network: None,
87 manage_servers: false,
88 service_id: None,
89 blueprint_id: None,
90 docker_bind_ip: None,
91 }
92}