1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct InstancePool {
16 #[serde(rename = "anti-affinity-groups", skip_serializing_if = "Option::is_none")]
18 pub anti_affinity_groups: Option<Vec<models::AntiAffinityGroup>>,
19 #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
21 pub description: Option<String>,
22 #[serde(rename = "public-ip-assignment", skip_serializing_if = "Option::is_none")]
23 pub public_ip_assignment: Option<models::PublicIpAssignment>,
24 #[serde(rename = "labels", skip_serializing_if = "Option::is_none")]
25 pub labels: Option<std::collections::HashMap<String, String>>,
26 #[serde(rename = "security-groups", skip_serializing_if = "Option::is_none")]
28 pub security_groups: Option<Vec<models::SecurityGroup>>,
29 #[serde(rename = "elastic-ips", skip_serializing_if = "Option::is_none")]
31 pub elastic_ips: Option<Vec<models::ElasticIp>>,
32 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
34 pub name: Option<String>,
35 #[serde(rename = "instance-type", skip_serializing_if = "Option::is_none")]
36 pub instance_type: Option<Box<models::InstanceType>>,
37 #[serde(rename = "min-available", skip_serializing_if = "Option::is_none")]
39 pub min_available: Option<u64>,
40 #[serde(rename = "private-networks", skip_serializing_if = "Option::is_none")]
42 pub private_networks: Option<Vec<models::PrivateNetwork>>,
43 #[serde(rename = "template", skip_serializing_if = "Option::is_none")]
44 pub template: Option<Box<models::Template>>,
45 #[serde(rename = "state", skip_serializing_if = "Option::is_none")]
47 pub state: Option<State>,
48 #[serde(rename = "size", skip_serializing_if = "Option::is_none")]
50 pub size: Option<u64>,
51 #[serde(rename = "ssh-key", skip_serializing_if = "Option::is_none")]
52 pub ssh_key: Option<Box<models::SshKey>>,
53 #[serde(rename = "instance-prefix", skip_serializing_if = "Option::is_none")]
55 pub instance_prefix: Option<String>,
56 #[serde(rename = "user-data", skip_serializing_if = "Option::is_none")]
58 pub user_data: Option<String>,
59 #[serde(rename = "manager", skip_serializing_if = "Option::is_none")]
60 pub manager: Option<Box<models::Manager>>,
61 #[serde(rename = "instances", skip_serializing_if = "Option::is_none")]
63 pub instances: Option<Vec<models::Instance>>,
64 #[serde(rename = "deploy-target", skip_serializing_if = "Option::is_none")]
65 pub deploy_target: Option<Box<models::DeployTarget>>,
66 #[serde(rename = "ipv6-enabled", skip_serializing_if = "Option::is_none")]
68 pub ipv6_enabled: Option<bool>,
69 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
71 pub id: Option<uuid::Uuid>,
72 #[serde(rename = "disk-size", skip_serializing_if = "Option::is_none")]
74 pub disk_size: Option<u64>,
75 #[serde(rename = "ssh-keys", skip_serializing_if = "Option::is_none")]
77 pub ssh_keys: Option<Vec<models::SshKey>>,
78}
79
80impl InstancePool {
81 pub fn new() -> InstancePool {
83 InstancePool {
84 anti_affinity_groups: None,
85 description: None,
86 public_ip_assignment: None,
87 labels: None,
88 security_groups: None,
89 elastic_ips: None,
90 name: None,
91 instance_type: None,
92 min_available: None,
93 private_networks: None,
94 template: None,
95 state: None,
96 size: None,
97 ssh_key: None,
98 instance_prefix: None,
99 user_data: None,
100 manager: None,
101 instances: None,
102 deploy_target: None,
103 ipv6_enabled: None,
104 id: None,
105 disk_size: None,
106 ssh_keys: None,
107 }
108 }
109}
110#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
111pub enum State {
112 #[serde(rename = "scaling-up")]
113 ScalingUp,
114 #[serde(rename = "scaling-down")]
115 ScalingDown,
116 #[serde(rename = "destroying")]
117 Destroying,
118 #[serde(rename = "creating")]
119 Creating,
120 #[serde(rename = "suspended")]
121 Suspended,
122 #[serde(rename = "running")]
123 Running,
124 #[serde(rename = "updating")]
125 Updating,
126}
127
128impl Default for State {
129 fn default() -> State {
130 Self::ScalingUp
131 }
132}
133