opensearch-client 0.3.2

Strongly typed OpenSearch Client
Documentation
/*
 * opensearch-client
 *
 * Rust Client for OpenSearch
 *
 * The version of the OpenAPI document: 3.1.0
 * Contact: alberto.paro@gmail.com
 * Generated by Paro OpenAPI Generator
 */

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>,
    /// A duration. Units can be `nanos`, `micros`, `ms` (milliseconds), `s` (seconds), `m` (minutes), `h` (hours) and
    /// `d` (days). Also accepts "0" without a unit and "-1" to indicate an unspecified value.
    #[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>>,
    /// A duration. Units can be `nanos`, `micros`, `ms` (milliseconds), `s` (seconds), `m` (minutes), `h` (hours) and
    /// `d` (days). Also accepts "0" without a unit and "-1" to indicate an unspecified value.
    #[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,
    /// A duration. Units can be `nanos`, `micros`, `ms` (milliseconds), `s` (seconds), `m` (minutes), `h` (hours) and
    /// `d` (days). Also accepts "0" without a unit and "-1" to indicate an unspecified value.
    #[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,
        }
    }
}