netbox_openapi/models/
interface.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/// Interface : Adds support for custom fields and tags.
12
13#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
14pub struct Interface {
15    #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
16    pub id: Option<i32>,
17    #[serde(rename = "url", skip_serializing_if = "Option::is_none")]
18    pub url: Option<String>,
19    #[serde(rename = "display_url", skip_serializing_if = "Option::is_none")]
20    pub display_url: Option<String>,
21    #[serde(rename = "display", skip_serializing_if = "Option::is_none")]
22    pub display: Option<String>,
23    #[serde(rename = "device")]
24    pub device: Box<crate::models::BriefDevice>,
25    #[serde(rename = "vdcs", skip_serializing_if = "Option::is_none")]
26    pub vdcs: Option<Vec<crate::models::VirtualDeviceContext>>,
27    #[serde(
28        rename = "module",
29        default,
30        with = "::serde_with::rust::double_option",
31        skip_serializing_if = "Option::is_none"
32    )]
33    pub module: Option<Option<Box<crate::models::BriefModule>>>,
34    #[serde(rename = "name")]
35    pub name: String,
36    /// Physical label
37    #[serde(rename = "label", skip_serializing_if = "Option::is_none")]
38    pub label: Option<String>,
39    #[serde(rename = "type")]
40    pub r#type: Box<crate::models::InterfaceType>,
41    #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")]
42    pub enabled: Option<bool>,
43    #[serde(
44        rename = "parent",
45        default,
46        with = "::serde_with::rust::double_option",
47        skip_serializing_if = "Option::is_none"
48    )]
49    pub parent: Option<Option<Box<crate::models::NestedInterface>>>,
50    #[serde(
51        rename = "bridge",
52        default,
53        with = "::serde_with::rust::double_option",
54        skip_serializing_if = "Option::is_none"
55    )]
56    pub bridge: Option<Option<Box<crate::models::NestedInterface>>>,
57    #[serde(
58        rename = "lag",
59        default,
60        with = "::serde_with::rust::double_option",
61        skip_serializing_if = "Option::is_none"
62    )]
63    pub lag: Option<Option<Box<crate::models::NestedInterface>>>,
64    #[serde(
65        rename = "mtu",
66        default,
67        with = "::serde_with::rust::double_option",
68        skip_serializing_if = "Option::is_none"
69    )]
70    pub mtu: Option<Option<i32>>,
71    #[serde(
72        rename = "mac_address",
73        default,
74        with = "::serde_with::rust::double_option",
75        skip_serializing_if = "Option::is_none"
76    )]
77    pub mac_address: Option<Option<String>>,
78    #[serde(
79        rename = "primary_mac_address",
80        default,
81        with = "::serde_with::rust::double_option",
82        skip_serializing_if = "Option::is_none"
83    )]
84    pub primary_mac_address: Option<Option<Box<crate::models::BriefMacAddress>>>,
85    #[serde(
86        rename = "mac_addresses",
87        default,
88        with = "::serde_with::rust::double_option",
89        skip_serializing_if = "Option::is_none"
90    )]
91    pub mac_addresses: Option<Option<Vec<crate::models::BriefMacAddress>>>,
92    #[serde(
93        rename = "speed",
94        default,
95        with = "::serde_with::rust::double_option",
96        skip_serializing_if = "Option::is_none"
97    )]
98    pub speed: Option<Option<i32>>,
99    #[serde(
100        rename = "duplex",
101        default,
102        with = "::serde_with::rust::double_option",
103        skip_serializing_if = "Option::is_none"
104    )]
105    pub duplex: Option<Option<Box<crate::models::InterfaceDuplex>>>,
106    #[serde(
107        rename = "wwn",
108        default,
109        with = "::serde_with::rust::double_option",
110        skip_serializing_if = "Option::is_none"
111    )]
112    pub wwn: Option<Option<String>>,
113    /// This interface is used only for out-of-band management
114    #[serde(rename = "mgmt_only", skip_serializing_if = "Option::is_none")]
115    pub mgmt_only: Option<bool>,
116    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
117    pub description: Option<String>,
118    #[serde(rename = "mode", skip_serializing_if = "Option::is_none")]
119    pub mode: Option<Box<crate::models::InterfaceMode>>,
120    #[serde(rename = "rf_role", skip_serializing_if = "Option::is_none")]
121    pub rf_role: Option<Box<crate::models::InterfaceRfRole>>,
122    #[serde(rename = "rf_channel", skip_serializing_if = "Option::is_none")]
123    pub rf_channel: Option<Box<crate::models::InterfaceRfChannel>>,
124    #[serde(rename = "poe_mode", skip_serializing_if = "Option::is_none")]
125    pub poe_mode: Option<Box<crate::models::InterfacePoeMode>>,
126    #[serde(rename = "poe_type", skip_serializing_if = "Option::is_none")]
127    pub poe_type: Option<Box<crate::models::InterfacePoeType>>,
128    /// Populated by selected channel (if set)
129    #[serde(
130        rename = "rf_channel_frequency",
131        default,
132        with = "::serde_with::rust::double_option",
133        skip_serializing_if = "Option::is_none"
134    )]
135    pub rf_channel_frequency: Option<Option<f64>>,
136    /// Populated by selected channel (if set)
137    #[serde(
138        rename = "rf_channel_width",
139        default,
140        with = "::serde_with::rust::double_option",
141        skip_serializing_if = "Option::is_none"
142    )]
143    pub rf_channel_width: Option<Option<f64>>,
144    #[serde(
145        rename = "tx_power",
146        default,
147        with = "::serde_with::rust::double_option",
148        skip_serializing_if = "Option::is_none"
149    )]
150    pub tx_power: Option<Option<i32>>,
151    #[serde(
152        rename = "untagged_vlan",
153        default,
154        with = "::serde_with::rust::double_option",
155        skip_serializing_if = "Option::is_none"
156    )]
157    pub untagged_vlan: Option<Option<Box<crate::models::BriefVlan>>>,
158    #[serde(rename = "tagged_vlans", skip_serializing_if = "Option::is_none")]
159    pub tagged_vlans: Option<Vec<crate::models::Vlan>>,
160    #[serde(
161        rename = "qinq_svlan",
162        default,
163        with = "::serde_with::rust::double_option",
164        skip_serializing_if = "Option::is_none"
165    )]
166    pub qinq_svlan: Option<Option<Box<crate::models::BriefVlan>>>,
167    #[serde(
168        rename = "vlan_translation_policy",
169        default,
170        with = "::serde_with::rust::double_option",
171        skip_serializing_if = "Option::is_none"
172    )]
173    pub vlan_translation_policy: Option<Option<Box<crate::models::BriefVlanTranslationPolicy>>>,
174    /// Treat as if a cable is connected
175    #[serde(rename = "mark_connected", skip_serializing_if = "Option::is_none")]
176    pub mark_connected: Option<bool>,
177    #[serde(
178        rename = "cable",
179        default,
180        with = "::serde_with::rust::double_option",
181        skip_serializing_if = "Option::is_none"
182    )]
183    pub cable: Option<Option<Box<crate::models::BriefCable>>>,
184    #[serde(rename = "cable_end", skip_serializing_if = "Option::is_none")]
185    pub cable_end: Option<String>,
186    #[serde(
187        rename = "wireless_link",
188        default,
189        with = "::serde_with::rust::double_option",
190        skip_serializing_if = "Option::is_none"
191    )]
192    pub wireless_link: Option<Option<Box<crate::models::NestedWirelessLink>>>,
193    #[serde(rename = "link_peers", skip_serializing_if = "Option::is_none")]
194    pub link_peers: Option<Vec<serde_json::Value>>,
195    /// Return the type of the peer link terminations, or None.
196    #[serde(
197        rename = "link_peers_type",
198        default,
199        with = "::serde_with::rust::double_option",
200        skip_serializing_if = "Option::is_none"
201    )]
202    pub link_peers_type: Option<Option<String>>,
203    #[serde(rename = "wireless_lans", skip_serializing_if = "Option::is_none")]
204    pub wireless_lans: Option<Vec<crate::models::WirelessLan>>,
205    #[serde(
206        rename = "vrf",
207        default,
208        with = "::serde_with::rust::double_option",
209        skip_serializing_if = "Option::is_none"
210    )]
211    pub vrf: Option<Option<Box<crate::models::BriefVrf>>>,
212    #[serde(
213        rename = "l2vpn_termination",
214        default,
215        with = "::serde_with::rust::double_option",
216        skip_serializing_if = "Option::is_none"
217    )]
218    pub l2vpn_termination: Option<Option<Box<crate::models::BriefL2VpnTermination>>>,
219    #[serde(
220        rename = "connected_endpoints",
221        default,
222        with = "::serde_with::rust::double_option",
223        skip_serializing_if = "Option::is_none"
224    )]
225    pub connected_endpoints: Option<Option<Vec<serde_json::Value>>>,
226    #[serde(
227        rename = "connected_endpoints_type",
228        default,
229        with = "::serde_with::rust::double_option",
230        skip_serializing_if = "Option::is_none"
231    )]
232    pub connected_endpoints_type: Option<Option<String>>,
233    #[serde(
234        rename = "connected_endpoints_reachable",
235        skip_serializing_if = "Option::is_none"
236    )]
237    pub connected_endpoints_reachable: Option<bool>,
238    #[serde(rename = "tags", skip_serializing_if = "Option::is_none")]
239    pub tags: Option<Vec<crate::models::NestedTag>>,
240    #[serde(rename = "custom_fields", skip_serializing_if = "Option::is_none")]
241    pub custom_fields: Option<::std::collections::HashMap<String, serde_json::Value>>,
242    #[serde(
243        rename = "created",
244        default,
245        with = "::serde_with::rust::double_option",
246        skip_serializing_if = "Option::is_none"
247    )]
248    pub created: Option<Option<String>>,
249    #[serde(
250        rename = "last_updated",
251        default,
252        with = "::serde_with::rust::double_option",
253        skip_serializing_if = "Option::is_none"
254    )]
255    pub last_updated: Option<Option<String>>,
256    #[serde(rename = "count_ipaddresses", skip_serializing_if = "Option::is_none")]
257    pub count_ipaddresses: Option<i32>,
258    #[serde(rename = "count_fhrp_groups", skip_serializing_if = "Option::is_none")]
259    pub count_fhrp_groups: Option<i32>,
260    #[serde(rename = "_occupied", skip_serializing_if = "Option::is_none")]
261    pub _occupied: Option<bool>,
262}
263
264impl Interface {
265    /// Adds support for custom fields and tags.
266    pub fn new(
267        device: crate::models::BriefDevice,
268        name: String,
269        r#type: crate::models::InterfaceType,
270    ) -> Interface {
271        Interface {
272            id: None,
273            url: None,
274            display_url: None,
275            display: None,
276            device: Box::new(device),
277            vdcs: None,
278            module: None,
279            name,
280            label: None,
281            r#type: Box::new(r#type),
282            enabled: None,
283            parent: None,
284            bridge: None,
285            lag: None,
286            mtu: None,
287            mac_address: None,
288            primary_mac_address: None,
289            mac_addresses: None,
290            speed: None,
291            duplex: None,
292            wwn: None,
293            mgmt_only: None,
294            description: None,
295            mode: None,
296            rf_role: None,
297            rf_channel: None,
298            poe_mode: None,
299            poe_type: None,
300            rf_channel_frequency: None,
301            rf_channel_width: None,
302            tx_power: None,
303            untagged_vlan: None,
304            tagged_vlans: None,
305            qinq_svlan: None,
306            vlan_translation_policy: None,
307            mark_connected: None,
308            cable: None,
309            cable_end: None,
310            wireless_link: None,
311            link_peers: None,
312            link_peers_type: None,
313            wireless_lans: None,
314            vrf: None,
315            l2vpn_termination: None,
316            connected_endpoints: None,
317            connected_endpoints_type: None,
318            connected_endpoints_reachable: None,
319            tags: None,
320            custom_fields: None,
321            created: None,
322            last_updated: None,
323            count_ipaddresses: None,
324            count_fhrp_groups: None,
325            _occupied: None,
326        }
327    }
328}