use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Server {
#[serde(rename = "backup_window", deserialize_with = "Option::deserialize")]
pub backup_window: Option<String>,
#[serde(rename = "created")]
pub created: String,
#[serde(rename = "datacenter")]
pub datacenter: Box<models::DataCenter>,
#[serde(rename = "id")]
pub id: i64,
#[serde(rename = "image", deserialize_with = "Option::deserialize")]
pub image: Option<Box<models::Image>>,
#[serde(rename = "included_traffic", deserialize_with = "Option::deserialize")]
pub included_traffic: Option<i64>,
#[serde(rename = "ingoing_traffic", deserialize_with = "Option::deserialize")]
pub ingoing_traffic: Option<i64>,
#[serde(rename = "iso", deserialize_with = "Option::deserialize")]
pub iso: Option<Box<models::Iso>>,
#[serde(rename = "labels")]
pub labels: std::collections::HashMap<String, String>,
#[serde(rename = "load_balancers", skip_serializing_if = "Option::is_none")]
pub load_balancers: Option<Vec<i64>>,
#[serde(rename = "locked")]
pub locked: bool,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "outgoing_traffic", deserialize_with = "Option::deserialize")]
pub outgoing_traffic: Option<i64>,
#[serde(
rename = "placement_group",
default,
with = "::serde_with::rust::double_option",
skip_serializing_if = "Option::is_none"
)]
pub placement_group: Option<Option<Box<models::PlacementGroup>>>,
#[serde(rename = "primary_disk_size")]
pub primary_disk_size: i32,
#[serde(rename = "private_net")]
pub private_net: Vec<models::ServerPrivateNet>,
#[serde(rename = "protection")]
pub protection: Box<models::ServerProtection>,
#[serde(rename = "public_net")]
pub public_net: Box<models::ServerPublicNet>,
#[serde(rename = "rescue_enabled")]
pub rescue_enabled: bool,
#[serde(rename = "server_type")]
pub server_type: Box<models::ServerType>,
#[serde(rename = "status")]
pub status: Status,
#[serde(rename = "volumes", skip_serializing_if = "Option::is_none")]
pub volumes: Option<Vec<i64>>,
}
impl Server {
pub fn new(
backup_window: Option<String>,
created: String,
datacenter: models::DataCenter,
id: i64,
image: Option<models::Image>,
included_traffic: Option<i64>,
ingoing_traffic: Option<i64>,
iso: Option<models::Iso>,
labels: std::collections::HashMap<String, String>,
locked: bool,
name: String,
outgoing_traffic: Option<i64>,
primary_disk_size: i32,
private_net: Vec<models::ServerPrivateNet>,
protection: models::ServerProtection,
public_net: models::ServerPublicNet,
rescue_enabled: bool,
server_type: models::ServerType,
status: Status,
) -> Server {
Server {
backup_window,
created,
datacenter: Box::new(datacenter),
id,
image: image.map(Box::new),
included_traffic,
ingoing_traffic,
iso: iso.map(Box::new),
labels,
load_balancers: None,
locked,
name,
outgoing_traffic,
placement_group: None,
primary_disk_size,
private_net,
protection: Box::new(protection),
public_net: Box::new(public_net),
rescue_enabled,
server_type: Box::new(server_type),
status,
volumes: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
#[serde(rename = "deleting")]
Deleting,
#[serde(rename = "initializing")]
Initializing,
#[serde(rename = "migrating")]
Migrating,
#[serde(rename = "off")]
Off,
#[serde(rename = "rebuilding")]
Rebuilding,
#[serde(rename = "running")]
Running,
#[serde(rename = "starting")]
Starting,
#[serde(rename = "stopping")]
Stopping,
#[serde(rename = "unknown")]
Unknown,
}
impl Default for Status {
fn default() -> Status {
Self::Deleting
}
}