use super::JsonLdContext;
use crate::utils::serde::deserialize_optional_map_or_empty_array;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarServer {
#[serde(rename = "@context", skip_serializing_if = "Option::is_none")]
pub at_context: Option<JsonLdContext>,
#[serde(rename = "@id", skip_serializing_if = "Option::is_none")]
pub at_id: Option<String>,
#[serde(rename = "@type", skip_serializing_if = "Option::is_none")]
pub at_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub primary: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub aggregate: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub locked: Option<bool>,
#[serde(rename = "radarNetworkUp", skip_serializing_if = "Option::is_none")]
pub radar_network_up: Option<bool>,
#[serde(rename = "collectionTime", skip_serializing_if = "Option::is_none")]
pub collection_time: Option<String>,
#[serde(rename = "reportingHost", skip_serializing_if = "Option::is_none")]
pub reporting_host: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ping: Option<RadarServerPingStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<RadarServerCommandStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hardware: Option<RadarServerHardwareStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ldm: Option<RadarServerLdmStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network: Option<RadarServerNetworkStatus>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarServerPingTargets {
#[serde(
deserialize_with = "deserialize_optional_map_or_empty_array",
skip_serializing_if = "Option::is_none",
default
)]
pub client: Option<HashMap<String, bool>>,
#[serde(
deserialize_with = "deserialize_optional_map_or_empty_array",
skip_serializing_if = "Option::is_none",
default
)]
pub ldm: Option<HashMap<String, bool>>,
#[serde(
deserialize_with = "deserialize_optional_map_or_empty_array",
skip_serializing_if = "Option::is_none",
default
)]
pub radar: Option<HashMap<String, bool>>,
#[serde(
deserialize_with = "deserialize_optional_map_or_empty_array",
skip_serializing_if = "Option::is_none",
default
)]
pub server: Option<HashMap<String, bool>>,
#[serde(
deserialize_with = "deserialize_optional_map_or_empty_array",
skip_serializing_if = "Option::is_none",
default
)]
pub misc: Option<HashMap<String, bool>>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarServerPingStatus {
#[serde(skip_serializing_if = "Option::is_none")]
pub targets: Option<RadarServerPingTargets>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarServerCommandStatus {
#[serde(rename = "lastExecuted", skip_serializing_if = "Option::is_none")]
pub last_executed: Option<String>,
#[serde(rename = "lastExecutedTime", skip_serializing_if = "Option::is_none")]
pub last_executed_time: Option<String>,
#[serde(rename = "lastNexradDataTime", skip_serializing_if = "Option::is_none")]
pub last_nexrad_data_time: Option<String>,
#[serde(rename = "lastReceived", skip_serializing_if = "Option::is_none")]
pub last_received: Option<String>,
#[serde(rename = "lastReceivedTime", skip_serializing_if = "Option::is_none")]
pub last_received_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarServerHardwareStatus {
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(rename = "cpuIdle", skip_serializing_if = "Option::is_none")]
pub cpu_idle: Option<f64>,
#[serde(rename = "ioUtilization", skip_serializing_if = "Option::is_none")]
pub io_utilization: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub disk: Option<i32>,
#[serde(rename = "load1", skip_serializing_if = "Option::is_none")]
pub load1: Option<f64>,
#[serde(rename = "load5", skip_serializing_if = "Option::is_none")]
pub load5: Option<f64>,
#[serde(rename = "load15", skip_serializing_if = "Option::is_none")]
pub load15: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub memory: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub uptime: Option<String>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarServerLdmStatus {
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(rename = "latestProduct", skip_serializing_if = "Option::is_none")]
pub latest_product: Option<String>,
#[serde(rename = "oldestProduct", skip_serializing_if = "Option::is_none")]
pub oldest_product: Option<String>,
#[serde(rename = "storageSize", skip_serializing_if = "Option::is_none")]
pub storage_size: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active: Option<bool>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarServerNetworkInterfaceStats {
#[serde(skip_serializing_if = "Option::is_none")]
pub interface: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active: Option<bool>,
#[serde(rename = "transNoError", skip_serializing_if = "Option::is_none")]
pub trans_no_error: Option<i64>,
#[serde(rename = "transError", skip_serializing_if = "Option::is_none")]
pub trans_error: Option<i64>,
#[serde(rename = "transDropped", skip_serializing_if = "Option::is_none")]
pub trans_dropped: Option<i64>,
#[serde(rename = "transOverrun", skip_serializing_if = "Option::is_none")]
pub trans_overrun: Option<i64>,
#[serde(rename = "recvNoError", skip_serializing_if = "Option::is_none")]
pub recv_no_error: Option<i64>,
#[serde(rename = "recvError", skip_serializing_if = "Option::is_none")]
pub recv_error: Option<i64>,
#[serde(rename = "recvDropped", skip_serializing_if = "Option::is_none")]
pub recv_dropped: Option<i64>,
#[serde(rename = "recvOverrun", skip_serializing_if = "Option::is_none")]
pub recv_overrun: Option<i64>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarServerNetworkStatus {
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eth1: Option<RadarServerNetworkInterfaceStats>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eth0: Option<RadarServerNetworkInterfaceStats>,
}