use crate::cluster;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AllocationExplainResponse {
#[serde(rename = "current_state")]
pub current_state: String,
#[serde(rename = "can_rebalance_cluster_decisions", default, skip_serializing_if = "Option::is_none")]
pub can_rebalance_cluster_decisions: Option<Vec<cluster::allocation_explain::AllocationDecision>>,
#[serde(rename = "can_allocate", default, skip_serializing_if = "Option::is_none")]
pub can_allocate: Option<String>,
#[serde(rename = "can_remain_decisions", default, skip_serializing_if = "Option::is_none")]
pub can_remain_decisions: Option<Vec<cluster::allocation_explain::AllocationDecision>>,
#[serde(rename = "move_explanation", default, skip_serializing_if = "Option::is_none")]
pub move_explanation: Option<String>,
#[serde(rename = "unassigned_info", default, skip_serializing_if = "Option::is_none")]
pub unassigned_info: Option<cluster::allocation_explain::UnassignedInformation>,
#[serde(rename = "can_move_to_other_node", default, skip_serializing_if = "Option::is_none")]
pub can_move_to_other_node: Option<String>, #[serde(rename = "configured_delay", default, skip_serializing_if = "Option::is_none")]
pub configured_delay: Option<String>,
#[serde(rename = "allocate_explanation", default, skip_serializing_if = "Option::is_none")]
pub allocate_explanation: Option<String>,
#[serde(rename = "can_remain_on_current_node", default, skip_serializing_if = "Option::is_none")]
pub can_remain_on_current_node: Option<String>,
#[serde(rename = "can_rebalance_to_other_node", default, skip_serializing_if = "Option::is_none")]
pub can_rebalance_to_other_node: Option<String>,
#[serde(rename = "cluster_info", default, skip_serializing_if = "Option::is_none")]
pub cluster_info: Option<cluster::allocation_explain::ClusterInfo>,
#[serde(rename = "node_allocation_decisions", default, skip_serializing_if = "Option::is_none")]
pub node_allocation_decisions: Option<Vec<cluster::allocation_explain::NodeAllocationExplanation>>, #[serde(rename = "allocation_delay", default, skip_serializing_if = "Option::is_none")]
pub allocation_delay: Option<String>,
#[serde(rename = "allocation_delay_in_millis", default, skip_serializing_if = "Option::is_none")]
pub allocation_delay_in_millis: Option<String>,
#[serde(rename = "can_rebalance_cluster", default, skip_serializing_if = "Option::is_none")]
pub can_rebalance_cluster: Option<String>,
#[serde(rename = "note", default, skip_serializing_if = "Option::is_none")]
pub note: Option<String>,
#[serde(rename = "index")]
pub index: String, #[serde(rename = "remaining_delay", default, skip_serializing_if = "Option::is_none")]
pub remaining_delay: Option<String>,
#[serde(rename = "configured_delay_in_millis", default, skip_serializing_if = "Option::is_none")]
pub configured_delay_in_millis: Option<String>,
#[serde(rename = "remaining_delay_in_millis", default, skip_serializing_if = "Option::is_none")]
pub remaining_delay_in_millis: Option<String>,
#[serde(rename = "primary")]
pub primary: bool,
#[serde(rename = "rebalance_explanation", default, skip_serializing_if = "Option::is_none")]
pub rebalance_explanation: Option<String>,
#[serde(rename = "current_node", default, skip_serializing_if = "Option::is_none")]
pub current_node: Option<cluster::allocation_explain::CurrentNode>,
#[serde(rename = "shard")]
pub shard: u32,
}
impl AllocationExplainResponse {
pub fn new(current_state: String, index: String, primary: bool, shard: u32) -> AllocationExplainResponse {
AllocationExplainResponse {
current_state,
can_rebalance_cluster_decisions: None,
can_allocate: None,
can_remain_decisions: None,
move_explanation: None,
unassigned_info: None,
can_move_to_other_node: None,
configured_delay: None,
allocate_explanation: None,
can_remain_on_current_node: None,
can_rebalance_to_other_node: None,
cluster_info: None,
node_allocation_decisions: None,
allocation_delay: None,
allocation_delay_in_millis: None,
can_rebalance_cluster: None,
note: None,
index,
remaining_delay: None,
configured_delay_in_millis: None,
remaining_delay_in_millis: None,
primary,
rebalance_explanation: None,
current_node: None,
shard,
}
}
}