1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*
 * Exoscale Public API
 *
 *  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)
 *
 * The version of the OpenAPI document: 2.0.0
 * Contact: api@exoscale.com
 * Generated by: https://openapi-generator.tech
 */

/// Template : Instance template

#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct Template {
    /// Template maintainer
    #[serde(rename = "maintainer", skip_serializing_if = "Option::is_none")]
    pub maintainer: Option<String>,
    /// Template description
    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    /// Enable SSH key-based login
    #[serde(rename = "ssh-key-enabled", skip_serializing_if = "Option::is_none")]
    pub ssh_key_enabled: Option<bool>,
    /// Template family
    #[serde(rename = "family", skip_serializing_if = "Option::is_none")]
    pub family: Option<String>,
    /// Template name
    #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    /// Template default user
    #[serde(rename = "default-user", skip_serializing_if = "Option::is_none")]
    pub default_user: Option<String>,
    /// Template size
    #[serde(rename = "size", skip_serializing_if = "Option::is_none")]
    pub size: Option<i64>,
    /// Enable password-based login
    #[serde(rename = "password-enabled", skip_serializing_if = "Option::is_none")]
    pub password_enabled: Option<bool>,
    /// Template build
    #[serde(rename = "build", skip_serializing_if = "Option::is_none")]
    pub build: Option<String>,
    /// Template MD5 checksum
    #[serde(rename = "checksum", skip_serializing_if = "Option::is_none")]
    pub checksum: Option<String>,
    /// Boot mode (default: legacy)
    #[serde(rename = "boot-mode", skip_serializing_if = "Option::is_none")]
    pub boot_mode: Option<BootMode>,
    /// Template ID
    #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    /// Zones availability
    #[serde(rename = "zones", skip_serializing_if = "Option::is_none")]
    pub zones: Option<Vec<crate::models::ZoneName>>,
    /// Template source URL
    #[serde(rename = "url", skip_serializing_if = "Option::is_none")]
    pub url: Option<String>,
    /// Template version
    #[serde(rename = "version", skip_serializing_if = "Option::is_none")]
    pub version: Option<String>,
    /// Template creation date
    #[serde(rename = "created-at", skip_serializing_if = "Option::is_none")]
    pub created_at: Option<String>,
    /// Template visibility
    #[serde(rename = "visibility", skip_serializing_if = "Option::is_none")]
    pub visibility: Option<Visibility>,
}

impl Template {
    /// Instance template
    pub fn new() -> Template {
        Template {
            maintainer: None,
            description: None,
            ssh_key_enabled: None,
            family: None,
            name: None,
            default_user: None,
            size: None,
            password_enabled: None,
            build: None,
            checksum: None,
            boot_mode: None,
            id: None,
            zones: None,
            url: None,
            version: None,
            created_at: None,
            visibility: None,
        }
    }
}

/// Boot mode (default: legacy)
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum BootMode {
    #[serde(rename = "legacy")]
    Legacy,
    #[serde(rename = "uefi")]
    Uefi,
}

impl Default for BootMode {
    fn default() -> BootMode {
        Self::Legacy
    }
}
/// Template visibility
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Visibility {
    #[serde(rename = "private")]
    Private,
    #[serde(rename = "public")]
    Public,
}

impl Default for Visibility {
    fn default() -> Visibility {
        Self::Private
    }
}