Skip to content

Commit 503df82

Browse files
committed
feat: [#246] add Grafana service configuration to UserInputs
- Add grafana field as Option<GrafanaConfig> to UserInputs struct - Enable Grafana by default (opt-out, matching Prometheus behavior) - Update all UserInputs initializers with grafana: Some(GrafanaConfig::default()) - Add GrafanaConfig import to testing modules (mod.rs and testing.rs) - Replace long namespaces with short type names (TrackerConfig, PrometheusConfig) - Update documentation to reflect Grafana-Prometheus dependency requirement The grafana field follows the same pattern as prometheus - enabled by default and can be disabled by setting to None. Grafana requires Prometheus to be enabled, which will be validated at configuration time in subsequent commits.
1 parent 78215b6 commit 503df82

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

src/domain/environment/mod.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -896,7 +896,10 @@ impl<S> Environment<S> {
896896
mod tests {
897897
use super::*;
898898
use crate::adapters::ssh::SshCredentials;
899+
use crate::domain::grafana::GrafanaConfig;
900+
use crate::domain::prometheus::PrometheusConfig;
899901
use crate::domain::provider::{LxdConfig, ProviderConfig};
902+
use crate::domain::tracker::TrackerConfig;
900903
use crate::domain::EnvironmentName;
901904
use std::path::Path;
902905
use tempfile::TempDir;
@@ -1042,8 +1045,9 @@ mod tests {
10421045
provider_config,
10431046
ssh_credentials,
10441047
ssh_port: 22,
1045-
tracker: crate::domain::tracker::TrackerConfig::default(),
1046-
prometheus: Some(crate::domain::prometheus::PrometheusConfig::default()),
1048+
tracker: TrackerConfig::default(),
1049+
prometheus: Some(PrometheusConfig::default()),
1050+
grafana: Some(GrafanaConfig::default()),
10471051
},
10481052
internal_config: InternalConfig {
10491053
data_dir: data_dir.clone(),

src/domain/environment/testing.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
66
use super::*;
77
use crate::adapters::ssh::SshCredentials;
8+
use crate::domain::grafana::GrafanaConfig;
89
use crate::domain::provider::{LxdConfig, ProviderConfig};
10+
use crate::domain::tracker::TrackerConfig;
911
use crate::domain::EnvironmentName;
1012
use crate::shared::Username;
1113
use std::path::{Path, PathBuf};
@@ -144,16 +146,17 @@ impl EnvironmentTestBuilder {
144146
let provider_config = ProviderConfig::Lxd(LxdConfig { profile_name });
145147

146148
let context = EnvironmentContext {
147-
user_inputs: crate::domain::environment::UserInputs {
149+
user_inputs: UserInputs {
148150
name: env_name,
149151
instance_name,
150152
provider_config,
151153
ssh_credentials,
152154
ssh_port: 22,
153-
tracker: crate::domain::tracker::TrackerConfig::default(),
155+
tracker: TrackerConfig::default(),
154156
prometheus: self.prometheus_config,
157+
grafana: Some(GrafanaConfig::default()),
155158
},
156-
internal_config: crate::domain::environment::InternalConfig {
159+
internal_config: InternalConfig {
157160
data_dir: data_dir.clone(),
158161
build_dir: build_dir.clone(),
159162
},

src/domain/environment/user_inputs.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
2121
use crate::adapters::ssh::SshCredentials;
2222
use crate::domain::environment::EnvironmentName;
23+
use crate::domain::grafana::GrafanaConfig;
2324
use crate::domain::prometheus::PrometheusConfig;
2425
use crate::domain::provider::{Provider, ProviderConfig};
2526
use crate::domain::tracker::TrackerConfig;
@@ -40,6 +41,7 @@ use serde::{Deserialize, Serialize};
4041
/// use torrust_tracker_deployer_lib::domain::environment::user_inputs::UserInputs;
4142
/// use torrust_tracker_deployer_lib::domain::tracker::TrackerConfig;
4243
/// use torrust_tracker_deployer_lib::domain::prometheus::PrometheusConfig;
44+
/// use torrust_tracker_deployer_lib::domain::grafana::GrafanaConfig;
4345
/// use torrust_tracker_deployer_lib::shared::Username;
4446
/// use torrust_tracker_deployer_lib::adapters::ssh::SshCredentials;
4547
/// use std::path::PathBuf;
@@ -60,6 +62,7 @@ use serde::{Deserialize, Serialize};
6062
/// ssh_port: 22,
6163
/// tracker: TrackerConfig::default(),
6264
/// prometheus: Some(PrometheusConfig::default()),
65+
/// grafana: Some(GrafanaConfig::default()),
6366
/// };
6467
/// # Ok::<(), Box<dyn std::error::Error>>(())
6568
/// ```
@@ -89,6 +92,14 @@ pub struct UserInputs {
8992
/// When absent (`None`), Prometheus service is disabled.
9093
/// Default: `Some(PrometheusConfig::default())` in generated templates.
9194
pub prometheus: Option<PrometheusConfig>,
95+
96+
/// Grafana visualization and dashboard configuration (optional)
97+
///
98+
/// When present, Grafana service is enabled in the deployment.
99+
/// When absent (`None`), Grafana service is disabled.
100+
/// Requires Prometheus to be enabled - dependency validated at configuration time.
101+
/// Default: `Some(GrafanaConfig::default())` in generated templates.
102+
pub grafana: Option<GrafanaConfig>,
92103
}
93104

94105
impl UserInputs {
@@ -156,6 +167,7 @@ impl UserInputs {
156167
ssh_port,
157168
tracker: TrackerConfig::default(),
158169
prometheus: Some(PrometheusConfig::default()),
170+
grafana: Some(GrafanaConfig::default()),
159171
}
160172
}
161173

@@ -181,6 +193,7 @@ impl UserInputs {
181193
ssh_port,
182194
tracker,
183195
prometheus: Some(PrometheusConfig::default()),
196+
grafana: Some(GrafanaConfig::default()),
184197
}
185198
}
186199

0 commit comments

Comments
 (0)