1#[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 #[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 #[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 #[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 #[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 #[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 #[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 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}