exoscale_rs/models/
instance_pool.rs

1/*
2 * Exoscale Public API
3 *
4 *  Infrastructure automation API, allowing programmatic access to all Exoscale products and services.  The [OpenAPI Specification](http://spec.openapis.org/oas/v3.0.3.html) source of this documentation can be obtained here:  * [JSON format](https://openapi-v2.exoscale.com/source.json) * [YAML format](https://openapi-v2.exoscale.com/source.yaml)
5 *
6 * The version of the OpenAPI document: 2.0.0
7 * Contact: api@exoscale.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct InstancePool {
16    /// Instance Pool Anti-affinity Groups
17    #[serde(rename = "anti-affinity-groups", skip_serializing_if = "Option::is_none")]
18    pub anti_affinity_groups: Option<Vec<models::AntiAffinityGroup>>,
19    /// Instance Pool description
20    #[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    /// Instance Pool Security Groups
27    #[serde(rename = "security-groups", skip_serializing_if = "Option::is_none")]
28    pub security_groups: Option<Vec<models::SecurityGroup>>,
29    /// Instances Elastic IPs
30    #[serde(rename = "elastic-ips", skip_serializing_if = "Option::is_none")]
31    pub elastic_ips: Option<Vec<models::ElasticIp>>,
32    /// Instance Pool name
33    #[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    /// Minimum number of running instances
38    #[serde(rename = "min-available", skip_serializing_if = "Option::is_none")]
39    pub min_available: Option<u64>,
40    /// Instance Pool Private Networks
41    #[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    /// Instance Pool state
46    #[serde(rename = "state", skip_serializing_if = "Option::is_none")]
47    pub state: Option<State>,
48    /// Number of instances
49    #[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    /// The instances created by the Instance Pool will be prefixed with this value (default: pool)
54    #[serde(rename = "instance-prefix", skip_serializing_if = "Option::is_none")]
55    pub instance_prefix: Option<String>,
56    /// Instances Cloud-init user-data
57    #[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    /// Instances
62    #[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    /// Enable IPv6 for instances
67    #[serde(rename = "ipv6-enabled", skip_serializing_if = "Option::is_none")]
68    pub ipv6_enabled: Option<bool>,
69    /// Instance Pool ID
70    #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
71    pub id: Option<uuid::Uuid>,
72    /// Instances disk size in GiB
73    #[serde(rename = "disk-size", skip_serializing_if = "Option::is_none")]
74    pub disk_size: Option<u64>,
75    /// Instances SSH keys
76    #[serde(rename = "ssh-keys", skip_serializing_if = "Option::is_none")]
77    pub ssh_keys: Option<Vec<models::SshKey>>,
78}
79
80impl InstancePool {
81    /// Instance Pool
82    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