netbox_openapi/models/
vm_interface_request.rs

1/*
2 * NetBox REST API
3 *
4 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
5 *
6 * The version of the OpenAPI document: 4.4.2-Docker-3.4.1 (4.4)
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11/// VmInterfaceRequest : Adds support for custom fields and tags.
12
13#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
14pub struct VmInterfaceRequest {
15    #[serde(rename = "virtual_machine")]
16    pub virtual_machine: Box<crate::models::PatchedVirtualDiskRequestVirtualMachine>,
17    #[serde(rename = "name")]
18    pub name: String,
19    #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")]
20    pub enabled: Option<bool>,
21    #[serde(
22        rename = "parent",
23        default,
24        with = "::serde_with::rust::double_option",
25        skip_serializing_if = "Option::is_none"
26    )]
27    pub parent: Option<Option<Box<crate::models::NestedVmInterfaceRequest>>>,
28    #[serde(
29        rename = "bridge",
30        default,
31        with = "::serde_with::rust::double_option",
32        skip_serializing_if = "Option::is_none"
33    )]
34    pub bridge: Option<Option<Box<crate::models::NestedVmInterfaceRequest>>>,
35    #[serde(
36        rename = "mtu",
37        default,
38        with = "::serde_with::rust::double_option",
39        skip_serializing_if = "Option::is_none"
40    )]
41    pub mtu: Option<Option<i32>>,
42    #[serde(
43        rename = "primary_mac_address",
44        default,
45        with = "::serde_with::rust::double_option",
46        skip_serializing_if = "Option::is_none"
47    )]
48    pub primary_mac_address: Option<Option<Box<crate::models::InterfaceRequestPrimaryMacAddress>>>,
49    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
50    pub description: Option<String>,
51    /// * `access` - Access * `tagged` - Tagged * `tagged-all` - Tagged (All) * `q-in-q` - Q-in-Q (802.1ad)
52    #[serde(rename = "mode", skip_serializing_if = "Option::is_none")]
53    pub mode: Option<Mode>,
54    #[serde(
55        rename = "untagged_vlan",
56        default,
57        with = "::serde_with::rust::double_option",
58        skip_serializing_if = "Option::is_none"
59    )]
60    pub untagged_vlan: Option<Option<Box<crate::models::InterfaceRequestUntaggedVlan>>>,
61    #[serde(rename = "tagged_vlans", skip_serializing_if = "Option::is_none")]
62    pub tagged_vlans: Option<Vec<i32>>,
63    #[serde(
64        rename = "qinq_svlan",
65        default,
66        with = "::serde_with::rust::double_option",
67        skip_serializing_if = "Option::is_none"
68    )]
69    pub qinq_svlan: Option<Option<Box<crate::models::InterfaceRequestUntaggedVlan>>>,
70    #[serde(
71        rename = "vlan_translation_policy",
72        default,
73        with = "::serde_with::rust::double_option",
74        skip_serializing_if = "Option::is_none"
75    )]
76    pub vlan_translation_policy:
77        Option<Option<Box<crate::models::InterfaceRequestVlanTranslationPolicy>>>,
78    #[serde(
79        rename = "vrf",
80        default,
81        with = "::serde_with::rust::double_option",
82        skip_serializing_if = "Option::is_none"
83    )]
84    pub vrf: Option<Option<Box<crate::models::IpAddressRequestVrf>>>,
85    #[serde(rename = "tags", skip_serializing_if = "Option::is_none")]
86    pub tags: Option<Vec<crate::models::NestedTagRequest>>,
87    #[serde(rename = "custom_fields", skip_serializing_if = "Option::is_none")]
88    pub custom_fields: Option<::std::collections::HashMap<String, serde_json::Value>>,
89}
90
91impl VmInterfaceRequest {
92    /// Adds support for custom fields and tags.
93    pub fn new(
94        virtual_machine: crate::models::PatchedVirtualDiskRequestVirtualMachine,
95        name: String,
96    ) -> VmInterfaceRequest {
97        VmInterfaceRequest {
98            virtual_machine: Box::new(virtual_machine),
99            name,
100            enabled: None,
101            parent: None,
102            bridge: None,
103            mtu: None,
104            primary_mac_address: None,
105            description: None,
106            mode: None,
107            untagged_vlan: None,
108            tagged_vlans: None,
109            qinq_svlan: None,
110            vlan_translation_policy: None,
111            vrf: None,
112            tags: None,
113            custom_fields: None,
114        }
115    }
116}
117
118/// * `access` - Access * `tagged` - Tagged * `tagged-all` - Tagged (All) * `q-in-q` - Q-in-Q (802.1ad)
119#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
120pub enum Mode {
121    #[serde(rename = "access")]
122    Access,
123    #[serde(rename = "tagged")]
124    Tagged,
125    #[serde(rename = "tagged-all")]
126    TaggedAll,
127    #[serde(rename = "q-in-q")]
128    QInQ,
129    #[serde(rename = "")]
130    Empty,
131}
132
133impl Default for Mode {
134    fn default() -> Mode {
135        Self::Access
136    }
137}