Skip to content
Snippets Groups Projects
Commit b2963c78 authored by Éloïs's avatar Éloïs
Browse files

[feat] conf: load nested struct resources_usage from env vars

parent a8a63a6e
No related branches found
No related tags found
1 merge request!256load conf from env vars as a priority
...@@ -19,6 +19,7 @@ use crate::constants; ...@@ -19,6 +19,7 @@ use crate::constants;
use crate::errors::DursConfEnvError; use crate::errors::DursConfEnvError;
use crate::global_conf::v2::DuRsGlobalUserConfV2; use crate::global_conf::v2::DuRsGlobalUserConfV2;
use crate::global_conf::DuRsGlobalUserConf; use crate::global_conf::DuRsGlobalUserConf;
use crate::resources::ResourcesUsage;
/// Load global user configuration from environment variables /// Load global user configuration from environment variables
pub fn load_env_global_user_conf() -> Result<DuRsGlobalUserConf, DursConfEnvError> { pub fn load_env_global_user_conf() -> Result<DuRsGlobalUserConf, DursConfEnvError> {
...@@ -27,11 +28,17 @@ pub fn load_env_global_user_conf() -> Result<DuRsGlobalUserConf, DursConfEnvErro ...@@ -27,11 +28,17 @@ pub fn load_env_global_user_conf() -> Result<DuRsGlobalUserConf, DursConfEnvErro
.parse::<usize>() .parse::<usize>()
.map_err(DursConfEnvError::ConfVersionParseErr)? .map_err(DursConfEnvError::ConfVersionParseErr)?
{ {
2 => Ok(DuRsGlobalUserConf::V2( 2 => {
envy::prefixed(constants::DURS_ENV_PREFIX) let resources_usage =
envy::prefixed(&format!("{}RESOURCES_USAGE_", constants::DURS_ENV_PREFIX))
.from_env::<ResourcesUsage>()
.map_err(DursConfEnvError::EnvyErr)?;
let mut global_user_conf_v2 = envy::prefixed(constants::DURS_ENV_PREFIX)
.from_env::<DuRsGlobalUserConfV2>() .from_env::<DuRsGlobalUserConfV2>()
.map_err(DursConfEnvError::EnvyErr)?, .map_err(DursConfEnvError::EnvyErr)?;
)), global_user_conf_v2.resources_usage = Some(resources_usage);
Ok(DuRsGlobalUserConf::V2(global_user_conf_v2))
}
v => Err(DursConfEnvError::UnsupportedVersion { v => Err(DursConfEnvError::UnsupportedVersion {
expected: vec![2], expected: vec![2],
found: v, found: v,
...@@ -46,6 +53,7 @@ pub fn load_env_global_user_conf() -> Result<DuRsGlobalUserConf, DursConfEnvErro ...@@ -46,6 +53,7 @@ pub fn load_env_global_user_conf() -> Result<DuRsGlobalUserConf, DursConfEnvErro
mod tests { mod tests {
use super::*; use super::*;
use crate::resources::ResourceUsage;
use dubp_currency_params::CurrencyName; use dubp_currency_params::CurrencyName;
use durs_module::ModuleName; use durs_module::ModuleName;
use maplit::hashset; use maplit::hashset;
...@@ -92,13 +100,22 @@ mod tests { ...@@ -92,13 +100,22 @@ mod tests {
&format!("{}DISABLED", constants::DURS_ENV_PREFIX), &format!("{}DISABLED", constants::DURS_ENV_PREFIX),
"tui,gva", "tui,gva",
); );
std::env::set_var(
&format!("{}RESOURCES_USAGE_MEMORY_USAGE", constants::DURS_ENV_PREFIX),
"medium",
);
assert_eq!( assert_eq!(
DuRsGlobalUserConf::V2(DuRsGlobalUserConfV2 { DuRsGlobalUserConf::V2(DuRsGlobalUserConfV2 {
currency: Some(CurrencyName(String::from("g1"))), currency: Some(CurrencyName(String::from("g1"))),
my_node_id: None, my_node_id: None,
default_sync_module: None, default_sync_module: None,
ressources_usage: None, resources_usage: Some(ResourcesUsage {
cpu_usage: ResourceUsage::Large,
network_usage: ResourceUsage::Large,
memory_usage: ResourceUsage::Medium,
disk_space_usage: ResourceUsage::Large,
}),
disabled: Some(hashset![ disabled: Some(hashset![
ModuleName("tui".to_owned()), ModuleName("tui".to_owned()),
ModuleName("gva".to_owned()) ModuleName("gva".to_owned())
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#[derive(Debug, Copy, Clone, Deserialize, PartialEq, Serialize)] #[derive(Debug, Copy, Clone, Deserialize, PartialEq, Serialize)]
/// Ressource usage /// Ressource usage
#[serde(rename_all = "lowercase")]
pub enum ResourceUsage { pub enum ResourceUsage {
/// Minimal use of the resource, to the detriment of performance /// Minimal use of the resource, to the detriment of performance
Minimal, Minimal,
...@@ -28,26 +29,25 @@ pub enum ResourceUsage { ...@@ -28,26 +29,25 @@ pub enum ResourceUsage {
Infinite, Infinite,
} }
#[derive(Debug, Copy, Clone, Deserialize, PartialEq, Serialize)] impl Default for ResourceUsage {
fn default() -> Self {
ResourceUsage::Large
}
}
#[derive(Debug, Default, Copy, Clone, Deserialize, PartialEq, Serialize)]
/// Ressources usage /// Ressources usage
pub struct ResourcesUsage { pub struct ResourcesUsage {
/// Cpu usage /// Cpu usage
#[serde(default)]
pub cpu_usage: ResourceUsage, pub cpu_usage: ResourceUsage,
/// Network usage /// Network usage
#[serde(default)]
pub network_usage: ResourceUsage, pub network_usage: ResourceUsage,
/// Memory usage /// Memory usage
#[serde(default)]
pub memory_usage: ResourceUsage, pub memory_usage: ResourceUsage,
/// Disk space usage /// Disk space usage
#[serde(default)]
pub disk_space_usage: ResourceUsage, pub disk_space_usage: ResourceUsage,
} }
impl Default for ResourcesUsage {
fn default() -> Self {
ResourcesUsage {
cpu_usage: ResourceUsage::Large,
network_usage: ResourceUsage::Large,
memory_usage: ResourceUsage::Large,
disk_space_usage: ResourceUsage::Large,
}
}
}
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
"my_node_id": 1191678020, "my_node_id": 1191678020,
"default_sync_module": "ws2p1", "default_sync_module": "ws2p1",
"resources_usage": { "resources_usage": {
"cpu_usage": "Large", "cpu_usage": "large",
"network_usage": "Large", "network_usage": "large",
"memory_usage": "Large", "memory_usage": "large",
"disk_space_usage": "Large" "disk_space_usage": "large"
}, },
"disabled": [], "disabled": [],
"enabled": [] "enabled": []
......
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
"my_node_id": 1191678020, "my_node_id": 1191678020,
"default_sync_module": "ws2p1", "default_sync_module": "ws2p1",
"resources_usage": { "resources_usage": {
"cpu_usage": "Large", "cpu_usage": "large",
"network_usage": "Large", "network_usage": "large",
"memory_usage": "Large", "memory_usage": "large",
"disk_space_usage": "Large" "disk_space_usage": "large"
}, },
"disabled": [], "disabled": [],
"enabled": [] "enabled": []
......
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
"my_node_id": 1191678020, "my_node_id": 1191678020,
"default_sync_module": "ws2pv1", "default_sync_module": "ws2pv1",
"resources_usage": { "resources_usage": {
"cpu_usage": "Large", "cpu_usage": "large",
"network_usage": "Large", "network_usage": "large",
"memory_usage": "Large", "memory_usage": "large",
"disk_space_usage": "Large" "disk_space_usage": "large"
}, },
"disabled": [], "disabled": [],
"enabled": [] "enabled": []
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment