exoscale/models/
create_instance_pool_request.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://bump.sh/doc/exoscale-api.json) * [YAML format](https://bump.sh/doc/exoscale-api.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
11#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
12pub struct CreateInstancePoolRequest {
13    /// Instance Pool Anti-affinity Groups
14    #[serde(
15        rename = "anti-affinity-groups",
16        skip_serializing_if = "Option::is_none"
17    )]
18    pub anti_affinity_groups: Option<Vec<crate::models::AntiAffinityGroup>>,
19    /// Instance Pool description
20    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
21    pub description: Option<String>,
22    #[serde(
23        rename = "public-ip-assignment",
24        skip_serializing_if = "Option::is_none"
25    )]
26    pub public_ip_assignment: Option<crate::models::PublicIpAssignment>,
27    #[serde(rename = "labels", skip_serializing_if = "Option::is_none")]
28    pub labels: Option<::std::collections::HashMap<String, String>>,
29    /// Instance Pool Security Groups
30    #[serde(rename = "security-groups", skip_serializing_if = "Option::is_none")]
31    pub security_groups: Option<Vec<crate::models::SecurityGroup>>,
32    /// Instances Elastic IPs
33    #[serde(rename = "elastic-ips", skip_serializing_if = "Option::is_none")]
34    pub elastic_ips: Option<Vec<crate::models::ElasticIp>>,
35    /// Instance Pool name
36    #[serde(rename = "name")]
37    pub name: String,
38    #[serde(rename = "instance-type")]
39    pub instance_type: Box<crate::models::InstanceType>,
40    /// Minimum number of running Instances
41    #[serde(rename = "min-available", skip_serializing_if = "Option::is_none")]
42    pub min_available: Option<i64>,
43    /// Instance Pool Private Networks
44    #[serde(rename = "private-networks", skip_serializing_if = "Option::is_none")]
45    pub private_networks: Option<Vec<crate::models::PrivateNetwork>>,
46    #[serde(rename = "template")]
47    pub template: Box<crate::models::Template>,
48    /// Number of Instances
49    #[serde(rename = "size")]
50    pub size: i64,
51    #[serde(rename = "ssh-key", skip_serializing_if = "Option::is_none")]
52    pub ssh_key: Option<Box<crate::models::SshKey>>,
53    /// Prefix to apply to Instances names (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 = "deploy-target", skip_serializing_if = "Option::is_none")]
60    pub deploy_target: Option<Box<crate::models::DeployTarget>>,
61    /// Enable IPv6. DEPRECATED: use `public-ip-assignments`.
62    #[serde(rename = "ipv6-enabled", skip_serializing_if = "Option::is_none")]
63    pub ipv6_enabled: Option<bool>,
64    /// Instances disk size in GB
65    #[serde(rename = "disk-size")]
66    pub disk_size: i64,
67}
68
69impl CreateInstancePoolRequest {
70    pub fn new(
71        name: String,
72        instance_type: crate::models::InstanceType,
73        template: crate::models::Template,
74        size: i64,
75        disk_size: i64,
76    ) -> CreateInstancePoolRequest {
77        CreateInstancePoolRequest {
78            anti_affinity_groups: None,
79            description: None,
80            public_ip_assignment: None,
81            labels: None,
82            security_groups: None,
83            elastic_ips: None,
84            name,
85            instance_type: Box::new(instance_type),
86            min_available: None,
87            private_networks: None,
88            template: Box::new(template),
89            size,
90            ssh_key: None,
91            instance_prefix: None,
92            user_data: None,
93            deploy_target: None,
94            ipv6_enabled: None,
95            disk_size,
96        }
97    }
98}