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,
}
}
}