use crate::values::UpDuration;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[serde(rename_all = "snake_case")]
pub enum ProbeKind {
Http,
Tcp,
Exec,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[cfg_attr(feature = "schema", schemars(deny_unknown_fields))]
pub struct ProbeConfig {
pub kind: ProbeKind,
pub target: String,
#[serde(default = "default_probe_interval")]
pub interval: UpDuration,
#[serde(default = "default_probe_timeout")]
pub timeout: UpDuration,
#[serde(default = "default_failure_threshold")]
pub failure_threshold: u32,
}
pub(super) fn default_probe_interval() -> UpDuration {
UpDuration::from_millis(10_000)
}
pub(super) fn default_probe_timeout() -> UpDuration {
UpDuration::from_millis(5_000)
}
pub(super) fn default_failure_threshold() -> u32 {
3
}