use crate::cluster;
use crate::common;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct NodeAllocationExplanation {
#[serde(
rename = "weight_ranking",
default,
skip_serializing_if = "Option::is_none"
)]
pub weight_ranking: Option<u32>,
#[serde(rename = "deciders")]
pub deciders: Vec<cluster::allocation_explain::AllocationDecision>,
#[serde(rename = "node_attributes")]
pub node_attributes: serde_json::Value,
#[serde(rename = "node_decision")]
pub node_decision: String,
#[serde(rename = "store", default, skip_serializing_if = "Option::is_none")]
pub store: Option<cluster::allocation_explain::AllocationStore>,
#[serde(rename = "node_id")]
pub node_id: String,
#[serde(rename = "transport_address")]
pub transport_address: String,
#[serde(rename = "node_name")]
pub node_name: String,
}
impl NodeAllocationExplanation {
pub fn new(
deciders: Vec<cluster::allocation_explain::AllocationDecision>,
node_attributes: serde_json::Value,
node_decision: String,
node_id: String,
transport_address: String,
node_name: String,
) -> NodeAllocationExplanation {
NodeAllocationExplanation {
weight_ranking: None,
deciders,
node_attributes,
node_decision,
store: None,
node_id,
transport_address,
node_name,
}
}
}