/*
 * API Documentation
 *
 * Source of truth and network automation platform
 *
 * The version of the OpenAPI document: 3.1.0 (3.1)
 *
 * Generated by: https://openapi-generator.tech
 */

#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct RackType {
    #[serde(rename = "value", skip_serializing_if = "Option::is_none")]
    pub value: Option<Value>,
    #[serde(rename = "label", skip_serializing_if = "Option::is_none")]
    pub label: Option<Label>,
}

impl RackType {
    pub fn new() -> RackType {
        RackType {
            value: None,
            label: None,
        }
    }
}

///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Value {
    #[serde(rename = "2-post-frame")]
    Variant2PostFrame,
    #[serde(rename = "4-post-frame")]
    Variant4PostFrame,
    #[serde(rename = "4-post-cabinet")]
    Variant4PostCabinet,
    #[serde(rename = "wall-frame")]
    WallFrame,
    #[serde(rename = "wall-frame-vertical")]
    WallFrameVertical,
    #[serde(rename = "wall-cabinet")]
    WallCabinet,
    #[serde(rename = "wall-cabinet-vertical")]
    WallCabinetVertical,
    #[serde(rename = "other")]
    Other,
}

impl Default for Value {
    fn default() -> Value {
        Self::Variant2PostFrame
    }
}
///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Label {
    #[serde(rename = "2-post frame")]
    Variant2PostFrame,
    #[serde(rename = "4-post frame")]
    Variant4PostFrame,
    #[serde(rename = "4-post cabinet")]
    Variant4PostCabinet,
    #[serde(rename = "Wall-mounted frame")]
    WallMountedFrame,
    #[serde(rename = "Wall-mounted frame (vertical)")]
    WallMountedFrameLeftParenthesisVerticalRightParenthesis,
    #[serde(rename = "Wall-mounted cabinet")]
    WallMountedCabinet,
    #[serde(rename = "Wall-mounted cabinet (vertical)")]
    WallMountedCabinetLeftParenthesisVerticalRightParenthesis,
    #[serde(rename = "Other")]
    Other,
}

impl Default for Label {
    fn default() -> Label {
        Self::Variant2PostFrame
    }
}
