use crate::common;
use crate::nodes;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct NodeInfo {
#[serde(rename = "transport", default, skip_serializing_if = "Option::is_none")]
pub transport: Option<nodes::info::NodeInfoTransport>,
#[serde(rename = "transport_address", default, skip_serializing_if = "Option::is_none")]
pub transport_address: Option<String>,
#[serde(rename = "host", default, skip_serializing_if = "Option::is_none")]
pub host: Option<String>,
#[serde(rename = "ingest", default, skip_serializing_if = "Option::is_none")]
pub ingest: Option<nodes::info::NodeInfoIngest>,
#[serde(rename = "ip", default, skip_serializing_if = "Option::is_none")]
pub ip: Option<String>,
#[serde(rename = "aggregations", default, skip_serializing_if = "Option::is_none")]
pub aggregations: Option<serde_json::Value>,
#[serde(rename = "jvm", default, skip_serializing_if = "Option::is_none")]
pub jvm: Option<nodes::info::NodeJvmInfo>,
#[serde(rename = "modules", default, skip_serializing_if = "Option::is_none")]
pub modules: Option<Vec<common::PluginStats>>,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "os", default, skip_serializing_if = "Option::is_none")]
pub os: Option<nodes::info::NodeOperatingSystemInfo>,
#[serde(rename = "build_type")]
pub build_type: String, #[serde(rename = "build_hash")]
pub build_hash: String,
#[serde(rename = "build_flavor", default, skip_serializing_if = "Option::is_none")]
pub build_flavor: Option<String>,
#[serde(rename = "network", default, skip_serializing_if = "Option::is_none")]
pub network: Option<nodes::info::NodeInfoNetwork>, #[serde(rename = "roles")]
pub roles: Vec<common::NodeRole>,
#[serde(rename = "http", default, skip_serializing_if = "Option::is_none")]
pub http: Option<nodes::info::NodeInfoHttp>,
#[serde(rename = "plugins", default, skip_serializing_if = "Option::is_none")]
pub plugins: Option<Vec<common::PluginStats>>,
#[serde(rename = "settings", default, skip_serializing_if = "Option::is_none")]
pub settings: Option<nodes::info::NodeInfoSettings>,
#[serde(rename = "search_pipelines", default, skip_serializing_if = "Option::is_none")]
pub search_pipelines: Option<nodes::info::NodeInfoSearchPipelines>,
#[serde(rename = "total_indexing_buffer_in_bytes", default, skip_serializing_if = "Option::is_none")]
pub total_indexing_buffer_in_bytes: Option<String>,
#[serde(rename = "version")]
pub version: String,
#[serde(rename = "attributes", default, skip_serializing_if = "Option::is_none")]
pub attributes: Option<serde_json::Value>,
#[serde(rename = "thread_pool", default, skip_serializing_if = "Option::is_none")]
pub thread_pool: Option<serde_json::Value>,
#[serde(rename = "process", default, skip_serializing_if = "Option::is_none")]
pub process: Option<nodes::info::NodeProcessInfo>,
#[serde(rename = "total_indexing_buffer", default, skip_serializing_if = "Option::is_none")]
pub total_indexing_buffer: Option<u32>,
}
impl NodeInfo {
pub fn new(name: String, build_type: String, build_hash: String, roles: Vec<common::NodeRole>, version: String) -> NodeInfo {
NodeInfo {
transport: None,
transport_address: None,
host: None,
ingest: None,
ip: None,
aggregations: None,
jvm: None,
modules: None,
name,
os: None,
build_type,
build_hash,
build_flavor: None,
network: None,
roles,
http: None,
plugins: None,
settings: None,
search_pipelines: None,
total_indexing_buffer_in_bytes: None,
version,
attributes: None,
thread_pool: None,
process: None,
total_indexing_buffer: None,
}
}
}