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;
use crate::errors::DursConfEnvError;
use crate::global_conf::v2::DuRsGlobalUserConfV2;
use crate::global_conf::DuRsGlobalUserConf;
use crate::resources::ResourcesUsage;
/// Load global user configuration from environment variables
pub fn load_env_global_user_conf() -> Result<DuRsGlobalUserConf, DursConfEnvError> {
......@@ -27,11 +28,17 @@ pub fn load_env_global_user_conf() -> Result<DuRsGlobalUserConf, DursConfEnvErro
.parse::<usize>()
.map_err(DursConfEnvError::ConfVersionParseErr)?
{
2 => Ok(DuRsGlobalUserConf::V2(
envy::prefixed(constants::DURS_ENV_PREFIX)
2 => {
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>()
.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 {
expected: vec![2],
found: v,
......@@ -46,6 +53,7 @@ pub fn load_env_global_user_conf() -> Result<DuRsGlobalUserConf, DursConfEnvErro
mod tests {
use super::*;
use crate::resources::ResourceUsage;
use dubp_currency_params::CurrencyName;
use durs_module::ModuleName;
use maplit::hashset;
......@@ -92,13 +100,22 @@ mod tests {
&format!("{}DISABLED", constants::DURS_ENV_PREFIX),
"tui,gva",
);
std::env::set_var(
&format!("{}RESOURCES_USAGE_MEMORY_USAGE", constants::DURS_ENV_PREFIX),
"medium",
);
assert_eq!(
DuRsGlobalUserConf::V2(DuRsGlobalUserConfV2 {
currency: Some(CurrencyName(String::from("g1"))),
my_node_id: 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![
ModuleName("tui".to_owned()),
ModuleName("gva".to_owned())
......
......@@ -17,6 +17,7 @@
#[derive(Debug, Copy, Clone, Deserialize, PartialEq, Serialize)]
/// Ressource usage
#[serde(rename_all = "lowercase")]
pub enum ResourceUsage {
/// Minimal use of the resource, to the detriment of performance
Minimal,
......@@ -28,26 +29,25 @@ pub enum ResourceUsage {
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
pub struct ResourcesUsage {
/// Cpu usage
#[serde(default)]
pub cpu_usage: ResourceUsage,
/// Network usage
#[serde(default)]
pub network_usage: ResourceUsage,
/// Memory usage
#[serde(default)]
pub memory_usage: ResourceUsage,
/// Disk space usage
#[serde(default)]
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 @@
"my_node_id": 1191678020,
"default_sync_module": "ws2p1",
"resources_usage": {
"cpu_usage": "Large",
"network_usage": "Large",
"memory_usage": "Large",
"disk_space_usage": "Large"
"cpu_usage": "large",
"network_usage": "large",
"memory_usage": "large",
"disk_space_usage": "large"
},
"disabled": [],
"enabled": []
......
......@@ -5,10 +5,10 @@
"my_node_id": 1191678020,
"default_sync_module": "ws2p1",
"resources_usage": {
"cpu_usage": "Large",
"network_usage": "Large",
"memory_usage": "Large",
"disk_space_usage": "Large"
"cpu_usage": "large",
"network_usage": "large",
"memory_usage": "large",
"disk_space_usage": "large"
},
"disabled": [],
"enabled": []
......
......@@ -5,10 +5,10 @@
"my_node_id": 1191678020,
"default_sync_module": "ws2pv1",
"resources_usage": {
"cpu_usage": "Large",
"network_usage": "Large",
"memory_usage": "Large",
"disk_space_usage": "Large"
"cpu_usage": "large",
"network_usage": "large",
"memory_usage": "large",
"disk_space_usage": "large"
},
"disabled": [],
"enabled": []
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment