/*
 * Hetzner Cloud API
 *
 * Copied from the official API documentation for the Public Hetzner Cloud.
 *
 * The version of the OpenAPI document: 4b3f595
 *
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// DataCenterServerTypes : Server Types supported and available in this Data Center.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataCenterServerTypes {
    /// Server Types currently available in this Data Center.  These Server Types can currently be purchased. Types that are temporarily unavailable but are supported in this Data Center are listed as `supported`.
    #[serde(rename = "available")]
    pub available: Vec<i64>,
    /// Server Types available to migrate to in this Data Center.  Existing Servers can be migrated to these Server Types.
    #[serde(rename = "available_for_migration")]
    pub available_for_migration: Vec<i64>,
    /// List of Server Types supported in this Data Center.  These Server Types are generally available in this Data Center, but might be temporarily out of stock.
    #[serde(rename = "supported")]
    pub supported: Vec<i64>,
}

impl DataCenterServerTypes {
    /// Server Types supported and available in this Data Center.
    pub fn new(
        available: Vec<i64>,
        available_for_migration: Vec<i64>,
        supported: Vec<i64>,
    ) -> DataCenterServerTypes {
        DataCenterServerTypes {
            available,
            available_for_migration,
            supported,
        }
    }
}
