icinga2_api/types/monitoring_objects/
dependency.rs1use serde::{Deserialize, Serialize};
8
9use crate::serde::{
10 deserialize_empty_string_or_parse, serialize_none_as_empty_string_or_to_string,
11};
12use crate::types::common::custom_var_object::CustomVarHolder;
13use crate::types::names::IcingaTimePeriodName;
14use crate::types::{
15 common::custom_var_object::IcingaCustomVarObject,
16 enums::{host_or_service_state::IcingaHostOrServiceState, object_type::IcingaObjectType},
17 names::{IcingaHostName, IcingaServiceName},
18};
19
20#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
22pub struct IcingaDependency {
23 #[serde(rename = "type")]
25 pub object_type: IcingaObjectType,
26 #[serde(flatten)]
28 pub custom_var: IcingaCustomVarObject,
29 pub child_host_name: IcingaHostName,
31 #[serde(
33 serialize_with = "serialize_none_as_empty_string_or_to_string",
34 deserialize_with = "deserialize_empty_string_or_parse"
35 )]
36 pub child_service_name: Option<IcingaServiceName>,
37 pub parent_host_name: IcingaHostName,
39 #[serde(
41 serialize_with = "serialize_none_as_empty_string_or_to_string",
42 deserialize_with = "deserialize_empty_string_or_parse"
43 )]
44 pub parent_service_name: Option<IcingaServiceName>,
45 pub disable_checks: bool,
47 pub disable_notifications: bool,
49 pub ignore_soft_states: bool,
51 pub period: Option<IcingaTimePeriodName>,
53 pub states: Vec<IcingaHostOrServiceState>,
55}
56
57impl CustomVarHolder for IcingaDependency {
58 fn custom_var_value(&self, name: &str) -> Option<&serde_json::Value> {
59 self.custom_var.custom_var_value(name)
60 }
61}