Skip to main content

azure_mgmt_vmwarecloudsimple/package_2019_04_01/
models.rs

1#![allow(non_camel_case_types)]
2#![allow(unused_imports)]
3use serde::de::{value, Deserializer, IntoDeserializer};
4use serde::{Deserialize, Serialize, Serializer};
5use std::str::FromStr;
6#[doc = "Resource provider available operation model"]
7#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
8pub struct AvailableOperation {
9    #[doc = "Resource provider available operation display model"]
10    #[serde(default, skip_serializing_if = "Option::is_none")]
11    pub display: Option<AvailableOperationDisplay>,
12    #[doc = "Indicating whether the operation is a data action or not"]
13    #[serde(rename = "isDataAction", default, skip_serializing_if = "Option::is_none")]
14    pub is_data_action: Option<bool>,
15    #[doc = "{resourceProviderNamespace}/{resourceType}/{read|write|delete|action}"]
16    #[serde(default, skip_serializing_if = "Option::is_none")]
17    pub name: Option<String>,
18    #[doc = "The origin of operation"]
19    #[serde(default, skip_serializing_if = "Option::is_none")]
20    pub origin: Option<available_operation::Origin>,
21    #[doc = "Available operation display property service specification model"]
22    #[serde(default, skip_serializing_if = "Option::is_none")]
23    pub properties: Option<AvailableOperationDisplayPropertyServiceSpecification>,
24}
25impl AvailableOperation {
26    pub fn new() -> Self {
27        Self::default()
28    }
29}
30pub mod available_operation {
31    use super::*;
32    #[doc = "The origin of operation"]
33    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
34    pub enum Origin {
35        #[serde(rename = "user")]
36        User,
37        #[serde(rename = "system")]
38        System,
39        #[serde(rename = "user,system")]
40        UserSystem,
41    }
42}
43#[doc = "Resource provider available operation display model"]
44#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
45pub struct AvailableOperationDisplay {
46    #[doc = "Description of the operation for display purposes"]
47    #[serde(default, skip_serializing_if = "Option::is_none")]
48    pub description: Option<String>,
49    #[doc = "Name of the operation for display purposes"]
50    #[serde(default, skip_serializing_if = "Option::is_none")]
51    pub operation: Option<String>,
52    #[doc = "Name of the provider for display purposes"]
53    #[serde(default, skip_serializing_if = "Option::is_none")]
54    pub provider: Option<String>,
55    #[doc = "Name of the resource type for display purposes"]
56    #[serde(default, skip_serializing_if = "Option::is_none")]
57    pub resource: Option<String>,
58}
59impl AvailableOperationDisplay {
60    pub fn new() -> Self {
61        Self::default()
62    }
63}
64#[doc = "Available operation display property service specification model"]
65#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
66pub struct AvailableOperationDisplayPropertyServiceSpecification {
67    #[doc = "List of available operation display property service specification metrics"]
68    #[serde(rename = "serviceSpecification", default, skip_serializing_if = "Option::is_none")]
69    pub service_specification: Option<AvailableOperationDisplayPropertyServiceSpecificationMetricsList>,
70}
71impl AvailableOperationDisplayPropertyServiceSpecification {
72    pub fn new() -> Self {
73        Self::default()
74    }
75}
76#[doc = "Available operation display property service specification metrics item"]
77#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
78pub struct AvailableOperationDisplayPropertyServiceSpecificationMetricsItem {
79    #[doc = "Metric's aggregation type for e.g. (Average, Total)"]
80    #[serde(rename = "aggregationType")]
81    pub aggregation_type: available_operation_display_property_service_specification_metrics_item::AggregationType,
82    #[doc = "Metric's description"]
83    #[serde(rename = "displayDescription")]
84    pub display_description: String,
85    #[doc = "Human readable metric's name"]
86    #[serde(rename = "displayName")]
87    pub display_name: String,
88    #[doc = "Metric's name/id"]
89    pub name: String,
90    #[doc = "Metric's unit"]
91    pub unit: String,
92}
93impl AvailableOperationDisplayPropertyServiceSpecificationMetricsItem {
94    pub fn new(
95        aggregation_type: available_operation_display_property_service_specification_metrics_item::AggregationType,
96        display_description: String,
97        display_name: String,
98        name: String,
99        unit: String,
100    ) -> Self {
101        Self {
102            aggregation_type,
103            display_description,
104            display_name,
105            name,
106            unit,
107        }
108    }
109}
110pub mod available_operation_display_property_service_specification_metrics_item {
111    use super::*;
112    #[doc = "Metric's aggregation type for e.g. (Average, Total)"]
113    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
114    pub enum AggregationType {
115        Average,
116        Total,
117    }
118}
119#[doc = "List of available operation display property service specification metrics"]
120#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
121pub struct AvailableOperationDisplayPropertyServiceSpecificationMetricsList {
122    #[doc = "Metric specifications of operation"]
123    #[serde(
124        rename = "metricSpecifications",
125        default,
126        deserialize_with = "azure_core::util::deserialize_null_as_default",
127        skip_serializing_if = "Vec::is_empty"
128    )]
129    pub metric_specifications: Vec<AvailableOperationDisplayPropertyServiceSpecificationMetricsItem>,
130}
131impl AvailableOperationDisplayPropertyServiceSpecificationMetricsList {
132    pub fn new() -> Self {
133        Self::default()
134    }
135}
136#[doc = "List of available operations"]
137#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
138pub struct AvailableOperationsListResponse {
139    #[doc = "Link for next list of available operations"]
140    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
141    pub next_link: Option<String>,
142    #[doc = "Returns a list of available operations"]
143    #[serde(
144        default,
145        deserialize_with = "azure_core::util::deserialize_null_as_default",
146        skip_serializing_if = "Vec::is_empty"
147    )]
148    pub value: Vec<AvailableOperation>,
149}
150impl azure_core::Continuable for AvailableOperationsListResponse {
151    type Continuation = String;
152    fn continuation(&self) -> Option<Self::Continuation> {
153        self.next_link.clone().filter(|value| !value.is_empty())
154    }
155}
156impl AvailableOperationsListResponse {
157    pub fn new() -> Self {
158        Self::default()
159    }
160}
161#[doc = "General error model"]
162#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
163pub struct CsrpError {
164    #[doc = "Error properties"]
165    #[serde(default, skip_serializing_if = "Option::is_none")]
166    pub error: Option<CsrpErrorBody>,
167}
168impl azure_core::Continuable for CsrpError {
169    type Continuation = String;
170    fn continuation(&self) -> Option<Self::Continuation> {
171        None
172    }
173}
174impl CsrpError {
175    pub fn new() -> Self {
176        Self::default()
177    }
178}
179#[doc = "Error properties"]
180#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
181pub struct CsrpErrorBody {
182    #[doc = "Error's code"]
183    #[serde(default, skip_serializing_if = "Option::is_none")]
184    pub code: Option<String>,
185    #[doc = "Error's details"]
186    #[serde(
187        default,
188        deserialize_with = "azure_core::util::deserialize_null_as_default",
189        skip_serializing_if = "Vec::is_empty"
190    )]
191    pub details: Vec<CsrpErrorBody>,
192    #[doc = "Error's message"]
193    #[serde(default, skip_serializing_if = "Option::is_none")]
194    pub message: Option<String>,
195    #[doc = "Error's target"]
196    #[serde(default, skip_serializing_if = "Option::is_none")]
197    pub target: Option<String>,
198}
199impl CsrpErrorBody {
200    pub fn new() -> Self {
201        Self::default()
202    }
203}
204#[doc = "Host name model"]
205#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
206pub struct CustomizationHostName {
207    #[doc = "Hostname"]
208    #[serde(default, skip_serializing_if = "Option::is_none")]
209    pub name: Option<String>,
210    #[doc = "Type of host name"]
211    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
212    pub type_: Option<customization_host_name::Type>,
213}
214impl CustomizationHostName {
215    pub fn new() -> Self {
216        Self::default()
217    }
218}
219pub mod customization_host_name {
220    use super::*;
221    #[doc = "Type of host name"]
222    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
223    pub enum Type {
224        #[serde(rename = "USER_DEFINED")]
225        UserDefined,
226        #[serde(rename = "PREFIX_BASED")]
227        PrefixBased,
228        #[serde(rename = "FIXED")]
229        Fixed,
230        #[serde(rename = "VIRTUAL_MACHINE_NAME")]
231        VirtualMachineName,
232        #[serde(rename = "CUSTOM_NAME")]
233        CustomName,
234    }
235}
236#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
237pub struct CustomizationIpAddress {
238    #[doc = "Argument when Custom ip type is selected"]
239    #[serde(default, skip_serializing_if = "Option::is_none")]
240    pub argument: Option<String>,
241    #[doc = "Defined Ip Address when Fixed ip type is selected"]
242    #[serde(rename = "ipAddress", default, skip_serializing_if = "Option::is_none")]
243    pub ip_address: Option<String>,
244    #[doc = "Customization Specification ip type"]
245    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
246    pub type_: Option<customization_ip_address::Type>,
247}
248impl CustomizationIpAddress {
249    pub fn new() -> Self {
250        Self::default()
251    }
252}
253pub mod customization_ip_address {
254    use super::*;
255    #[doc = "Customization Specification ip type"]
256    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
257    pub enum Type {
258        #[serde(rename = "CUSTOM")]
259        Custom,
260        #[serde(rename = "DHCP_IP")]
261        DhcpIp,
262        #[serde(rename = "FIXED_IP")]
263        FixedIp,
264        #[serde(rename = "USER_DEFINED")]
265        UserDefined,
266    }
267}
268#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
269pub struct CustomizationIpSettings {
270    #[doc = "The list of gateways"]
271    #[serde(
272        default,
273        deserialize_with = "azure_core::util::deserialize_null_as_default",
274        skip_serializing_if = "Vec::is_empty"
275    )]
276    pub gateway: Vec<String>,
277    #[serde(default, skip_serializing_if = "Option::is_none")]
278    pub ip: Option<CustomizationIpAddress>,
279    #[doc = "Adapter subnet mask"]
280    #[serde(rename = "subnetMask", default, skip_serializing_if = "Option::is_none")]
281    pub subnet_mask: Option<String>,
282}
283impl CustomizationIpSettings {
284    pub fn new() -> Self {
285        Self::default()
286    }
287}
288#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
289pub struct CustomizationIdentity {
290    #[doc = "Windows Text Identity. Prepared data"]
291    #[serde(default, skip_serializing_if = "Option::is_none")]
292    pub data: Option<String>,
293    #[doc = "Host name model"]
294    #[serde(rename = "hostName", default, skip_serializing_if = "Option::is_none")]
295    pub host_name: Option<CustomizationHostName>,
296    #[doc = "Identity type"]
297    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
298    pub type_: Option<customization_identity::Type>,
299    #[doc = "Windows Identity. User data customization"]
300    #[serde(rename = "userData", default, skip_serializing_if = "Option::is_none")]
301    pub user_data: Option<customization_identity::UserData>,
302}
303impl CustomizationIdentity {
304    pub fn new() -> Self {
305        Self::default()
306    }
307}
308pub mod customization_identity {
309    use super::*;
310    #[doc = "Identity type"]
311    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
312    pub enum Type {
313        #[serde(rename = "WINDOWS_TEXT")]
314        WindowsText,
315        #[serde(rename = "WINDOWS")]
316        Windows,
317        #[serde(rename = "LINUX")]
318        Linux,
319    }
320    #[doc = "Windows Identity. User data customization"]
321    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
322    pub struct UserData {
323        #[doc = "Is password predefined in customization policy"]
324        #[serde(rename = "isPasswordPredefined", default, skip_serializing_if = "Option::is_none")]
325        pub is_password_predefined: Option<bool>,
326    }
327    impl UserData {
328        pub fn new() -> Self {
329            Self::default()
330        }
331    }
332}
333#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
334pub struct CustomizationNicSetting {
335    #[serde(default, skip_serializing_if = "Option::is_none")]
336    pub adapter: Option<CustomizationIpSettings>,
337    #[doc = "NIC mac address"]
338    #[serde(rename = "macAddress", default, skip_serializing_if = "Option::is_none")]
339    pub mac_address: Option<String>,
340}
341impl CustomizationNicSetting {
342    pub fn new() -> Self {
343        Self::default()
344    }
345}
346#[doc = "List of customization polices response model"]
347#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
348pub struct CustomizationPoliciesListResponse {
349    #[doc = "Link for next list of the Customization policy"]
350    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
351    pub next_link: Option<String>,
352    #[doc = "List of the customization policies"]
353    #[serde(
354        default,
355        deserialize_with = "azure_core::util::deserialize_null_as_default",
356        skip_serializing_if = "Vec::is_empty"
357    )]
358    pub value: Vec<CustomizationPolicy>,
359}
360impl azure_core::Continuable for CustomizationPoliciesListResponse {
361    type Continuation = String;
362    fn continuation(&self) -> Option<Self::Continuation> {
363        self.next_link.clone().filter(|value| !value.is_empty())
364    }
365}
366impl CustomizationPoliciesListResponse {
367    pub fn new() -> Self {
368        Self::default()
369    }
370}
371#[doc = "The virtual machine customization policy"]
372#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
373pub struct CustomizationPolicy {
374    #[doc = "Customization policy azure id"]
375    #[serde(default, skip_serializing_if = "Option::is_none")]
376    pub id: Option<String>,
377    #[doc = "Azure region"]
378    #[serde(default, skip_serializing_if = "Option::is_none")]
379    pub location: Option<String>,
380    #[doc = "Customization policy name"]
381    #[serde(default, skip_serializing_if = "Option::is_none")]
382    pub name: Option<String>,
383    #[doc = "The properties of Customization policy"]
384    #[serde(default, skip_serializing_if = "Option::is_none")]
385    pub properties: Option<CustomizationPolicyProperties>,
386    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
387    pub type_: Option<String>,
388}
389impl CustomizationPolicy {
390    pub fn new() -> Self {
391        Self::default()
392    }
393}
394#[doc = "The properties of Customization policy"]
395#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
396pub struct CustomizationPolicyProperties {
397    #[doc = "Policy description"]
398    #[serde(default, skip_serializing_if = "Option::is_none")]
399    pub description: Option<String>,
400    #[doc = "The Private cloud id"]
401    #[serde(rename = "privateCloudId", default, skip_serializing_if = "Option::is_none")]
402    pub private_cloud_id: Option<String>,
403    #[doc = "The specification for Customization Policy"]
404    #[serde(default, skip_serializing_if = "Option::is_none")]
405    pub specification: Option<CustomizationSpecification>,
406    #[doc = "The type of customization (Linux or Windows)"]
407    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
408    pub type_: Option<customization_policy_properties::Type>,
409    #[doc = "Policy version"]
410    #[serde(default, skip_serializing_if = "Option::is_none")]
411    pub version: Option<String>,
412}
413impl CustomizationPolicyProperties {
414    pub fn new() -> Self {
415        Self::default()
416    }
417}
418pub mod customization_policy_properties {
419    use super::*;
420    #[doc = "The type of customization (Linux or Windows)"]
421    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
422    pub enum Type {
423        #[serde(rename = "LINUX")]
424        Linux,
425        #[serde(rename = "WINDOWS")]
426        Windows,
427    }
428}
429#[doc = "The specification for Customization Policy"]
430#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
431pub struct CustomizationSpecification {
432    #[serde(default, skip_serializing_if = "Option::is_none")]
433    pub identity: Option<CustomizationIdentity>,
434    #[doc = "Network interface settings"]
435    #[serde(
436        rename = "nicSettings",
437        default,
438        deserialize_with = "azure_core::util::deserialize_null_as_default",
439        skip_serializing_if = "Vec::is_empty"
440    )]
441    pub nic_settings: Vec<CustomizationNicSetting>,
442}
443impl CustomizationSpecification {
444    pub fn new() -> Self {
445        Self::default()
446    }
447}
448#[doc = "Dedicated cloud node model"]
449#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
450pub struct DedicatedCloudNode {
451    #[doc = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/dedicatedCloudNodes/{dedicatedCloudNodeName}"]
452    #[serde(default, skip_serializing_if = "Option::is_none")]
453    pub id: Option<String>,
454    #[doc = "Azure region"]
455    pub location: String,
456    #[doc = "{dedicatedCloudNodeName}"]
457    #[serde(default, skip_serializing_if = "Option::is_none")]
458    pub name: Option<String>,
459    #[doc = "Properties of dedicated cloud node"]
460    #[serde(default, skip_serializing_if = "Option::is_none")]
461    pub properties: Option<DedicatedCloudNodeProperties>,
462    #[doc = "The purchase SKU for CloudSimple paid resources"]
463    #[serde(default, skip_serializing_if = "Option::is_none")]
464    pub sku: Option<Sku>,
465    #[doc = "Tags model"]
466    #[serde(default, skip_serializing_if = "Option::is_none")]
467    pub tags: Option<Tags>,
468    #[doc = "{resourceProviderNamespace}/{resourceType}"]
469    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
470    pub type_: Option<String>,
471}
472impl DedicatedCloudNode {
473    pub fn new(location: String) -> Self {
474        Self {
475            id: None,
476            location,
477            name: None,
478            properties: None,
479            sku: None,
480            tags: None,
481            type_: None,
482        }
483    }
484}
485#[doc = "List of dedicated nodes response model"]
486#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
487pub struct DedicatedCloudNodeListResponse {
488    #[doc = "Link for next list of DedicatedCloudNode"]
489    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
490    pub next_link: Option<String>,
491    #[doc = "Results of the DedicatedCloudNode list"]
492    #[serde(
493        default,
494        deserialize_with = "azure_core::util::deserialize_null_as_default",
495        skip_serializing_if = "Vec::is_empty"
496    )]
497    pub value: Vec<DedicatedCloudNode>,
498}
499impl azure_core::Continuable for DedicatedCloudNodeListResponse {
500    type Continuation = String;
501    fn continuation(&self) -> Option<Self::Continuation> {
502        self.next_link.clone().filter(|value| !value.is_empty())
503    }
504}
505impl DedicatedCloudNodeListResponse {
506    pub fn new() -> Self {
507        Self::default()
508    }
509}
510#[doc = "Properties of dedicated cloud node"]
511#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
512pub struct DedicatedCloudNodeProperties {
513    #[doc = "Availability Zone id, e.g. \"az1\""]
514    #[serde(rename = "availabilityZoneId")]
515    pub availability_zone_id: String,
516    #[doc = "Availability Zone name, e.g. \"Availability Zone 1\""]
517    #[serde(rename = "availabilityZoneName", default, skip_serializing_if = "Option::is_none")]
518    pub availability_zone_name: Option<String>,
519    #[doc = "VMWare Cloud Rack Name"]
520    #[serde(rename = "cloudRackName", default, skip_serializing_if = "Option::is_none")]
521    pub cloud_rack_name: Option<String>,
522    #[doc = "date time the resource was created"]
523    #[serde(default, with = "azure_core::date::rfc3339::option")]
524    pub created: Option<::time::OffsetDateTime>,
525    #[doc = "count of nodes to create"]
526    #[serde(rename = "nodesCount")]
527    pub nodes_count: i64,
528    #[doc = "Placement Group id, e.g. \"n1\""]
529    #[serde(rename = "placementGroupId")]
530    pub placement_group_id: String,
531    #[doc = "Placement Name, e.g. \"Placement Group 1\""]
532    #[serde(rename = "placementGroupName", default, skip_serializing_if = "Option::is_none")]
533    pub placement_group_name: Option<String>,
534    #[doc = "Private Cloud Id"]
535    #[serde(rename = "privateCloudId", default, skip_serializing_if = "Option::is_none")]
536    pub private_cloud_id: Option<String>,
537    #[doc = "Resource Pool Name"]
538    #[serde(rename = "privateCloudName", default, skip_serializing_if = "Option::is_none")]
539    pub private_cloud_name: Option<String>,
540    #[doc = "The provisioning status of the resource"]
541    #[serde(rename = "provisioningState", default, skip_serializing_if = "Option::is_none")]
542    pub provisioning_state: Option<String>,
543    #[doc = "purchase id"]
544    #[serde(rename = "purchaseId")]
545    pub purchase_id: String,
546    #[doc = "The purchase SKU for CloudSimple paid resources"]
547    #[serde(rename = "skuDescription", default, skip_serializing_if = "Option::is_none")]
548    pub sku_description: Option<SkuDescription>,
549    #[doc = "Node status, indicates is private cloud set up on this node or not"]
550    #[serde(default, skip_serializing_if = "Option::is_none")]
551    pub status: Option<dedicated_cloud_node_properties::Status>,
552    #[doc = "VMWare Cluster Name"]
553    #[serde(rename = "vmwareClusterName", default, skip_serializing_if = "Option::is_none")]
554    pub vmware_cluster_name: Option<String>,
555}
556impl DedicatedCloudNodeProperties {
557    pub fn new(availability_zone_id: String, nodes_count: i64, placement_group_id: String, purchase_id: String) -> Self {
558        Self {
559            availability_zone_id,
560            availability_zone_name: None,
561            cloud_rack_name: None,
562            created: None,
563            nodes_count,
564            placement_group_id,
565            placement_group_name: None,
566            private_cloud_id: None,
567            private_cloud_name: None,
568            provisioning_state: None,
569            purchase_id,
570            sku_description: None,
571            status: None,
572            vmware_cluster_name: None,
573        }
574    }
575}
576pub mod dedicated_cloud_node_properties {
577    use super::*;
578    #[doc = "Node status, indicates is private cloud set up on this node or not"]
579    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
580    pub enum Status {
581        #[serde(rename = "unused")]
582        Unused,
583        #[serde(rename = "used")]
584        Used,
585    }
586}
587#[doc = "Dedicated cloud service model"]
588#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
589pub struct DedicatedCloudService {
590    #[doc = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/dedicatedCloudServices/{dedicatedCloudServiceName}"]
591    #[serde(default, skip_serializing_if = "Option::is_none")]
592    pub id: Option<String>,
593    #[doc = "Azure region"]
594    pub location: String,
595    #[doc = "{dedicatedCloudServiceName}"]
596    #[serde(default, skip_serializing_if = "Option::is_none")]
597    pub name: Option<String>,
598    #[doc = "Properties of dedicated cloud service"]
599    #[serde(default, skip_serializing_if = "Option::is_none")]
600    pub properties: Option<DedicatedCloudServiceProperties>,
601    #[doc = "Tags model"]
602    #[serde(default, skip_serializing_if = "Option::is_none")]
603    pub tags: Option<Tags>,
604    #[doc = "{resourceProviderNamespace}/{resourceType}"]
605    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
606    pub type_: Option<String>,
607}
608impl DedicatedCloudService {
609    pub fn new(location: String) -> Self {
610        Self {
611            id: None,
612            location,
613            name: None,
614            properties: None,
615            tags: None,
616            type_: None,
617        }
618    }
619}
620#[doc = "List of dedicated cloud services"]
621#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
622pub struct DedicatedCloudServiceListResponse {
623    #[doc = "Link for next list of DedicatedCloudNode"]
624    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
625    pub next_link: Option<String>,
626    #[doc = "Results of the DedicatedCloudService list"]
627    #[serde(
628        default,
629        deserialize_with = "azure_core::util::deserialize_null_as_default",
630        skip_serializing_if = "Vec::is_empty"
631    )]
632    pub value: Vec<DedicatedCloudService>,
633}
634impl azure_core::Continuable for DedicatedCloudServiceListResponse {
635    type Continuation = String;
636    fn continuation(&self) -> Option<Self::Continuation> {
637        self.next_link.clone().filter(|value| !value.is_empty())
638    }
639}
640impl DedicatedCloudServiceListResponse {
641    pub fn new() -> Self {
642        Self::default()
643    }
644}
645#[doc = "Properties of dedicated cloud service"]
646#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
647pub struct DedicatedCloudServiceProperties {
648    #[doc = "gateway Subnet for the account. It will collect the subnet address and always treat it as /28"]
649    #[serde(rename = "gatewaySubnet")]
650    pub gateway_subnet: String,
651    #[doc = "indicates whether account onboarded or not in a given region"]
652    #[serde(rename = "isAccountOnboarded", default, skip_serializing_if = "Option::is_none")]
653    pub is_account_onboarded: Option<dedicated_cloud_service_properties::IsAccountOnboarded>,
654    #[doc = "total nodes purchased"]
655    #[serde(default, skip_serializing_if = "Option::is_none")]
656    pub nodes: Option<i64>,
657    #[doc = "link to a service management web portal"]
658    #[serde(rename = "serviceURL", default, skip_serializing_if = "Option::is_none")]
659    pub service_url: Option<String>,
660}
661impl DedicatedCloudServiceProperties {
662    pub fn new(gateway_subnet: String) -> Self {
663        Self {
664            gateway_subnet,
665            is_account_onboarded: None,
666            nodes: None,
667            service_url: None,
668        }
669    }
670}
671pub mod dedicated_cloud_service_properties {
672    use super::*;
673    #[doc = "indicates whether account onboarded or not in a given region"]
674    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
675    pub enum IsAccountOnboarded {
676        #[serde(rename = "notOnBoarded")]
677        NotOnBoarded,
678        #[serde(rename = "onBoarded")]
679        OnBoarded,
680        #[serde(rename = "onBoardingFailed")]
681        OnBoardingFailed,
682        #[serde(rename = "onBoarding")]
683        OnBoarding,
684    }
685}
686#[doc = "Guest OS Customization properties"]
687#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
688pub struct GuestOsCustomization {
689    #[doc = "List of dns servers to use"]
690    #[serde(
691        rename = "dnsServers",
692        default,
693        deserialize_with = "azure_core::util::deserialize_null_as_default",
694        skip_serializing_if = "Vec::is_empty"
695    )]
696    pub dns_servers: Vec<Ipv4Address>,
697    #[doc = "Virtual Machine hostname"]
698    #[serde(rename = "hostName", default, skip_serializing_if = "Option::is_none")]
699    pub host_name: Option<String>,
700    #[doc = "Password for login"]
701    #[serde(default, skip_serializing_if = "Option::is_none")]
702    pub password: Option<String>,
703    #[doc = "id of customization policy"]
704    #[serde(rename = "policyId", default, skip_serializing_if = "Option::is_none")]
705    pub policy_id: Option<String>,
706    #[doc = "Username for login"]
707    #[serde(default, skip_serializing_if = "Option::is_none")]
708    pub username: Option<String>,
709}
710impl GuestOsCustomization {
711    pub fn new() -> Self {
712        Self::default()
713    }
714}
715#[doc = "Guest OS nic customization"]
716#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
717pub struct GuestOsnicCustomization {
718    #[doc = "IP address allocation method"]
719    #[serde(default, skip_serializing_if = "Option::is_none")]
720    pub allocation: Option<guest_osnic_customization::Allocation>,
721    #[doc = "List of dns servers to use"]
722    #[serde(
723        rename = "dnsServers",
724        default,
725        deserialize_with = "azure_core::util::deserialize_null_as_default",
726        skip_serializing_if = "Vec::is_empty"
727    )]
728    pub dns_servers: Vec<Ipv4Address>,
729    #[doc = "Gateway addresses assigned to nic"]
730    #[serde(
731        default,
732        deserialize_with = "azure_core::util::deserialize_null_as_default",
733        skip_serializing_if = "Vec::is_empty"
734    )]
735    pub gateway: Vec<Ipv4Address>,
736    #[serde(rename = "ipAddress", default, skip_serializing_if = "Option::is_none")]
737    pub ip_address: Option<Ipv4Address>,
738    #[serde(default, skip_serializing_if = "Option::is_none")]
739    pub mask: Option<Ipv4Address>,
740    #[serde(rename = "primaryWinsServer", default, skip_serializing_if = "Option::is_none")]
741    pub primary_wins_server: Option<Ipv4Address>,
742    #[serde(rename = "secondaryWinsServer", default, skip_serializing_if = "Option::is_none")]
743    pub secondary_wins_server: Option<Ipv4Address>,
744}
745impl GuestOsnicCustomization {
746    pub fn new() -> Self {
747        Self::default()
748    }
749}
750pub mod guest_osnic_customization {
751    use super::*;
752    #[doc = "IP address allocation method"]
753    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
754    pub enum Allocation {
755        #[serde(rename = "static")]
756        Static,
757        #[serde(rename = "dynamic")]
758        Dynamic,
759    }
760}
761pub type Ipv4Address = String;
762#[doc = "Operation error model"]
763#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
764pub struct OperationError {
765    #[doc = "Error's code"]
766    #[serde(default, skip_serializing_if = "Option::is_none")]
767    pub code: Option<String>,
768    #[doc = "Error's message"]
769    #[serde(default, skip_serializing_if = "Option::is_none")]
770    pub message: Option<String>,
771}
772impl OperationError {
773    pub fn new() -> Self {
774        Self::default()
775    }
776}
777#[doc = "Operation status response"]
778#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
779pub struct OperationResource {
780    #[doc = "End time of the operation"]
781    #[serde(rename = "endTime", default, with = "azure_core::date::rfc3339::option")]
782    pub end_time: Option<::time::OffsetDateTime>,
783    #[doc = "Operation error model"]
784    #[serde(default, skip_serializing_if = "Option::is_none")]
785    pub error: Option<OperationError>,
786    #[doc = "Operation Id"]
787    #[serde(default, skip_serializing_if = "Option::is_none")]
788    pub id: Option<String>,
789    #[doc = "Operation ID"]
790    #[serde(default, skip_serializing_if = "Option::is_none")]
791    pub name: Option<String>,
792    #[doc = "Start time of the operation"]
793    #[serde(rename = "startTime", default, with = "azure_core::date::rfc3339::option")]
794    pub start_time: Option<::time::OffsetDateTime>,
795    #[doc = "Operation status"]
796    #[serde(default, skip_serializing_if = "Option::is_none")]
797    pub status: Option<String>,
798}
799impl OperationResource {
800    pub fn new() -> Self {
801        Self::default()
802    }
803}
804#[doc = "General patch payload modal"]
805#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
806pub struct PatchPayload {
807    #[doc = "Tags model"]
808    #[serde(default, skip_serializing_if = "Option::is_none")]
809    pub tags: Option<Tags>,
810}
811impl PatchPayload {
812    pub fn new() -> Self {
813        Self::default()
814    }
815}
816#[doc = "Private cloud model"]
817#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
818pub struct PrivateCloud {
819    #[doc = "Azure Id, e.g. \"/subscriptions/4da99247-a172-4ed6-8ae9-ebed2d12f839/providers/Microsoft.VMwareCloudSimple/privateClouds/cloud123\""]
820    #[serde(default, skip_serializing_if = "Option::is_none")]
821    pub id: Option<String>,
822    #[doc = "Location where private cloud created, e.g \"westus\""]
823    #[serde(default, skip_serializing_if = "Option::is_none")]
824    pub location: Option<String>,
825    #[doc = "Private cloud name"]
826    #[serde(default, skip_serializing_if = "Option::is_none")]
827    pub name: Option<String>,
828    #[doc = "Properties of private"]
829    #[serde(default, skip_serializing_if = "Option::is_none")]
830    pub properties: Option<PrivateCloudProperties>,
831    #[doc = "Azure Resource type"]
832    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
833    pub type_: Option<private_cloud::Type>,
834}
835impl PrivateCloud {
836    pub fn new() -> Self {
837        Self::default()
838    }
839}
840pub mod private_cloud {
841    use super::*;
842    #[doc = "Azure Resource type"]
843    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
844    pub enum Type {
845        #[serde(rename = "Microsoft.VMwareCloudSimple/privateClouds")]
846        MicrosoftVMwareCloudSimplePrivateClouds,
847    }
848}
849#[doc = "List of private clouds"]
850#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
851pub struct PrivateCloudList {
852    #[doc = "Link for next list of Private Clouds"]
853    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
854    pub next_link: Option<String>,
855    #[doc = "the list of private clouds"]
856    #[serde(
857        default,
858        deserialize_with = "azure_core::util::deserialize_null_as_default",
859        skip_serializing_if = "Vec::is_empty"
860    )]
861    pub value: Vec<PrivateCloud>,
862}
863impl azure_core::Continuable for PrivateCloudList {
864    type Continuation = String;
865    fn continuation(&self) -> Option<Self::Continuation> {
866        self.next_link.clone().filter(|value| !value.is_empty())
867    }
868}
869impl PrivateCloudList {
870    pub fn new() -> Self {
871        Self::default()
872    }
873}
874#[doc = "Properties of private"]
875#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
876pub struct PrivateCloudProperties {
877    #[doc = "Availability Zone id, e.g. \"az1\""]
878    #[serde(rename = "availabilityZoneId", default, skip_serializing_if = "Option::is_none")]
879    pub availability_zone_id: Option<String>,
880    #[doc = "Availability Zone name, e.g. \"Availability Zone 1\""]
881    #[serde(rename = "availabilityZoneName", default, skip_serializing_if = "Option::is_none")]
882    pub availability_zone_name: Option<String>,
883    #[doc = "Number of clusters"]
884    #[serde(rename = "clustersNumber", default, skip_serializing_if = "Option::is_none")]
885    pub clusters_number: Option<i64>,
886    #[doc = "User's emails who created cloud"]
887    #[serde(rename = "createdBy", default, skip_serializing_if = "Option::is_none")]
888    pub created_by: Option<String>,
889    #[doc = "When private cloud was created"]
890    #[serde(rename = "createdOn", default, with = "azure_core::date::rfc3339::option")]
891    pub created_on: Option<::time::OffsetDateTime>,
892    #[doc = "Array of DNS servers"]
893    #[serde(
894        rename = "dnsServers",
895        default,
896        deserialize_with = "azure_core::util::deserialize_null_as_default",
897        skip_serializing_if = "Vec::is_empty"
898    )]
899    pub dns_servers: Vec<String>,
900    #[doc = "Expiration date of PC"]
901    #[serde(default, skip_serializing_if = "Option::is_none")]
902    pub expires: Option<String>,
903    #[doc = "Nsx Type, e.g. \"Advanced\""]
904    #[serde(rename = "nsxType", default, skip_serializing_if = "Option::is_none")]
905    pub nsx_type: Option<String>,
906    #[doc = "Placement Group id, e.g. \"n1\""]
907    #[serde(rename = "placementGroupId", default, skip_serializing_if = "Option::is_none")]
908    pub placement_group_id: Option<String>,
909    #[doc = "Placement Group name"]
910    #[serde(rename = "placementGroupName", default, skip_serializing_if = "Option::is_none")]
911    pub placement_group_name: Option<String>,
912    #[doc = "Id of a private cloud"]
913    #[serde(rename = "privateCloudId", default, skip_serializing_if = "Option::is_none")]
914    pub private_cloud_id: Option<String>,
915    #[doc = "The list of Resource Pools"]
916    #[serde(
917        rename = "resourcePools",
918        default,
919        deserialize_with = "azure_core::util::deserialize_null_as_default",
920        skip_serializing_if = "Vec::is_empty"
921    )]
922    pub resource_pools: Vec<ResourcePool>,
923    #[doc = "Private Cloud state, e.g. \"operational\""]
924    #[serde(default, skip_serializing_if = "Option::is_none")]
925    pub state: Option<String>,
926    #[doc = "Number of cores"]
927    #[serde(rename = "totalCpuCores", default, skip_serializing_if = "Option::is_none")]
928    pub total_cpu_cores: Option<i64>,
929    #[doc = "Number of nodes"]
930    #[serde(rename = "totalNodes", default, skip_serializing_if = "Option::is_none")]
931    pub total_nodes: Option<i64>,
932    #[doc = "Memory size"]
933    #[serde(rename = "totalRam", default, skip_serializing_if = "Option::is_none")]
934    pub total_ram: Option<i64>,
935    #[doc = "Disk space in TB"]
936    #[serde(rename = "totalStorage", default, skip_serializing_if = "Option::is_none")]
937    pub total_storage: Option<f64>,
938    #[doc = "Virtualization type e.g. \"vSphere\""]
939    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
940    pub type_: Option<String>,
941    #[doc = "e.g. \"6.5u2\""]
942    #[serde(rename = "vSphereVersion", default, skip_serializing_if = "Option::is_none")]
943    pub v_sphere_version: Option<String>,
944    #[doc = "FQDN for vcenter access"]
945    #[serde(rename = "vcenterFqdn", default, skip_serializing_if = "Option::is_none")]
946    pub vcenter_fqdn: Option<String>,
947    #[doc = "Vcenter ip address"]
948    #[serde(rename = "vcenterRefid", default, skip_serializing_if = "Option::is_none")]
949    pub vcenter_refid: Option<String>,
950    #[doc = "The list of Virtual Machine Templates"]
951    #[serde(
952        rename = "virtualMachineTemplates",
953        default,
954        deserialize_with = "azure_core::util::deserialize_null_as_default",
955        skip_serializing_if = "Vec::is_empty"
956    )]
957    pub virtual_machine_templates: Vec<VirtualMachineTemplate>,
958    #[doc = "The list of Virtual Networks"]
959    #[serde(
960        rename = "virtualNetworks",
961        default,
962        deserialize_with = "azure_core::util::deserialize_null_as_default",
963        skip_serializing_if = "Vec::is_empty"
964    )]
965    pub virtual_networks: Vec<VirtualNetwork>,
966    #[doc = "Is vRealize Operations Manager enabled/disabled"]
967    #[serde(rename = "vrOpsEnabled", default, skip_serializing_if = "Option::is_none")]
968    pub vr_ops_enabled: Option<bool>,
969}
970impl PrivateCloudProperties {
971    pub fn new() -> Self {
972        Self::default()
973    }
974}
975#[doc = "Resource pool model"]
976#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
977pub struct ResourcePool {
978    #[doc = "resource pool id (privateCloudId:vsphereId)"]
979    pub id: String,
980    #[doc = "Azure region"]
981    #[serde(default, skip_serializing_if = "Option::is_none")]
982    pub location: Option<String>,
983    #[doc = "{ResourcePoolName}"]
984    #[serde(default, skip_serializing_if = "Option::is_none")]
985    pub name: Option<String>,
986    #[doc = "The Private Cloud Id"]
987    #[serde(rename = "privateCloudId", default, skip_serializing_if = "Option::is_none")]
988    pub private_cloud_id: Option<String>,
989    #[doc = "Properties of resource pool"]
990    #[serde(default, skip_serializing_if = "Option::is_none")]
991    pub properties: Option<ResourcePoolProperties>,
992    #[doc = "{resourceProviderNamespace}/{resourceType}"]
993    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
994    pub type_: Option<String>,
995}
996impl ResourcePool {
997    pub fn new(id: String) -> Self {
998        Self {
999            id,
1000            location: None,
1001            name: None,
1002            private_cloud_id: None,
1003            properties: None,
1004            type_: None,
1005        }
1006    }
1007}
1008#[doc = "Properties of resource pool"]
1009#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1010pub struct ResourcePoolProperties {
1011    #[doc = "Hierarchical resource pool name"]
1012    #[serde(rename = "fullName", default, skip_serializing_if = "Option::is_none")]
1013    pub full_name: Option<String>,
1014}
1015impl ResourcePoolProperties {
1016    pub fn new() -> Self {
1017        Self::default()
1018    }
1019}
1020#[doc = "List of resource pools response model"]
1021#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1022pub struct ResourcePoolsListResponse {
1023    #[doc = "Link for next list of ResourcePoolsList"]
1024    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
1025    pub next_link: Option<String>,
1026    #[doc = "Results of the Resource pools list"]
1027    #[serde(
1028        default,
1029        deserialize_with = "azure_core::util::deserialize_null_as_default",
1030        skip_serializing_if = "Vec::is_empty"
1031    )]
1032    pub value: Vec<ResourcePool>,
1033}
1034impl azure_core::Continuable for ResourcePoolsListResponse {
1035    type Continuation = String;
1036    fn continuation(&self) -> Option<Self::Continuation> {
1037        self.next_link.clone().filter(|value| !value.is_empty())
1038    }
1039}
1040impl ResourcePoolsListResponse {
1041    pub fn new() -> Self {
1042        Self::default()
1043    }
1044}
1045#[doc = "The purchase SKU for CloudSimple paid resources"]
1046#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1047pub struct Sku {
1048    #[doc = "The capacity of the SKU"]
1049    #[serde(default, skip_serializing_if = "Option::is_none")]
1050    pub capacity: Option<String>,
1051    #[doc = "dedicatedCloudNode example: 8 x Ten-Core Intel® Xeon® Processor E5-2640 v4 2.40GHz 25MB Cache (90W); 12 x 64GB PC4-19200 2400MHz DDR4 ECC Registered DIMM, ..."]
1052    #[serde(default, skip_serializing_if = "Option::is_none")]
1053    pub description: Option<String>,
1054    #[doc = "If the service has different generations of hardware, for the same SKU, then that can be captured here"]
1055    #[serde(default, skip_serializing_if = "Option::is_none")]
1056    pub family: Option<String>,
1057    #[doc = "The name of the SKU for VMWare CloudSimple Node"]
1058    pub name: String,
1059    #[doc = "The tier of the SKU"]
1060    #[serde(default, skip_serializing_if = "Option::is_none")]
1061    pub tier: Option<String>,
1062}
1063impl Sku {
1064    pub fn new(name: String) -> Self {
1065        Self {
1066            capacity: None,
1067            description: None,
1068            family: None,
1069            name,
1070            tier: None,
1071        }
1072    }
1073}
1074#[doc = "SKU availability model"]
1075#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1076pub struct SkuAvailability {
1077    #[doc = "CloudSimple Availability Zone id"]
1078    #[serde(rename = "dedicatedAvailabilityZoneId", default, skip_serializing_if = "Option::is_none")]
1079    pub dedicated_availability_zone_id: Option<String>,
1080    #[doc = "CloudSimple Availability Zone Name"]
1081    #[serde(rename = "dedicatedAvailabilityZoneName", default, skip_serializing_if = "Option::is_none")]
1082    pub dedicated_availability_zone_name: Option<String>,
1083    #[doc = "CloudSimple Placement Group Id"]
1084    #[serde(rename = "dedicatedPlacementGroupId", default, skip_serializing_if = "Option::is_none")]
1085    pub dedicated_placement_group_id: Option<String>,
1086    #[doc = "CloudSimple Placement Group name"]
1087    #[serde(rename = "dedicatedPlacementGroupName", default, skip_serializing_if = "Option::is_none")]
1088    pub dedicated_placement_group_name: Option<String>,
1089    #[doc = "indicates how many resources of a given SKU is available in a AZ->PG"]
1090    pub limit: i64,
1091    #[doc = "resource type e.g. DedicatedCloudNodes"]
1092    #[serde(rename = "resourceType", default, skip_serializing_if = "Option::is_none")]
1093    pub resource_type: Option<String>,
1094    #[doc = "sku id"]
1095    #[serde(rename = "skuId", default, skip_serializing_if = "Option::is_none")]
1096    pub sku_id: Option<String>,
1097    #[doc = "sku name"]
1098    #[serde(rename = "skuName", default, skip_serializing_if = "Option::is_none")]
1099    pub sku_name: Option<String>,
1100}
1101impl SkuAvailability {
1102    pub fn new(limit: i64) -> Self {
1103        Self {
1104            dedicated_availability_zone_id: None,
1105            dedicated_availability_zone_name: None,
1106            dedicated_placement_group_id: None,
1107            dedicated_placement_group_name: None,
1108            limit,
1109            resource_type: None,
1110            sku_id: None,
1111            sku_name: None,
1112        }
1113    }
1114}
1115#[doc = "List of SKU availabilities"]
1116#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1117pub struct SkuAvailabilityListResponse {
1118    #[doc = "Link for next list of DedicatedCloudNode"]
1119    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
1120    pub next_link: Option<String>,
1121    #[doc = "Results of the DedicatedPlacementGroupSkuAvailability list"]
1122    #[serde(
1123        default,
1124        deserialize_with = "azure_core::util::deserialize_null_as_default",
1125        skip_serializing_if = "Vec::is_empty"
1126    )]
1127    pub value: Vec<SkuAvailability>,
1128}
1129impl azure_core::Continuable for SkuAvailabilityListResponse {
1130    type Continuation = String;
1131    fn continuation(&self) -> Option<Self::Continuation> {
1132        self.next_link.clone().filter(|value| !value.is_empty())
1133    }
1134}
1135impl SkuAvailabilityListResponse {
1136    pub fn new() -> Self {
1137        Self::default()
1138    }
1139}
1140#[doc = "The purchase SKU for CloudSimple paid resources"]
1141#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1142pub struct SkuDescription {
1143    #[doc = "SKU's id"]
1144    pub id: String,
1145    #[doc = "SKU's name"]
1146    pub name: String,
1147}
1148impl SkuDescription {
1149    pub fn new(id: String, name: String) -> Self {
1150        Self { id, name }
1151    }
1152}
1153#[doc = "Tags model"]
1154#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1155pub struct Tags {}
1156impl Tags {
1157    pub fn new() -> Self {
1158        Self::default()
1159    }
1160}
1161#[doc = "Usage model"]
1162#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1163pub struct Usage {
1164    #[doc = "The current usage value"]
1165    #[serde(rename = "currentValue")]
1166    pub current_value: i64,
1167    #[doc = "limit of a given sku in a region for a subscription. The maximum permitted value for the usage quota. If there is no limit, this value will be -1"]
1168    pub limit: i64,
1169    #[doc = "User name model"]
1170    #[serde(default, skip_serializing_if = "Option::is_none")]
1171    pub name: Option<UsageName>,
1172    #[doc = "The usages' unit"]
1173    #[serde(default, skip_serializing_if = "Option::is_none")]
1174    pub unit: Option<usage::Unit>,
1175}
1176impl Usage {
1177    pub fn new(current_value: i64, limit: i64) -> Self {
1178        Self {
1179            current_value,
1180            limit,
1181            name: None,
1182            unit: None,
1183        }
1184    }
1185}
1186pub mod usage {
1187    use super::*;
1188    #[doc = "The usages' unit"]
1189    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1190    pub enum Unit {
1191        Count,
1192        Bytes,
1193        Seconds,
1194        Percent,
1195        CountPerSecond,
1196        BytesPerSecond,
1197    }
1198}
1199#[doc = "List of usages"]
1200#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1201pub struct UsageListResponse {
1202    #[doc = "Link for next list of DedicatedCloudNode"]
1203    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
1204    pub next_link: Option<String>,
1205    #[doc = "The list of usages"]
1206    #[serde(
1207        default,
1208        deserialize_with = "azure_core::util::deserialize_null_as_default",
1209        skip_serializing_if = "Vec::is_empty"
1210    )]
1211    pub value: Vec<Usage>,
1212}
1213impl azure_core::Continuable for UsageListResponse {
1214    type Continuation = String;
1215    fn continuation(&self) -> Option<Self::Continuation> {
1216        self.next_link.clone().filter(|value| !value.is_empty())
1217    }
1218}
1219impl UsageListResponse {
1220    pub fn new() -> Self {
1221        Self::default()
1222    }
1223}
1224#[doc = "User name model"]
1225#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1226pub struct UsageName {
1227    #[doc = "e.g. \"Virtual Machines\""]
1228    #[serde(rename = "localizedValue", default, skip_serializing_if = "Option::is_none")]
1229    pub localized_value: Option<String>,
1230    #[doc = "resource type or resource type sku name, e.g. virtualMachines"]
1231    #[serde(default, skip_serializing_if = "Option::is_none")]
1232    pub value: Option<String>,
1233}
1234impl UsageName {
1235    pub fn new() -> Self {
1236        Self::default()
1237    }
1238}
1239#[doc = "Virtual disk model"]
1240#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1241pub struct VirtualDisk {
1242    #[doc = "Disk's Controller id"]
1243    #[serde(rename = "controllerId")]
1244    pub controller_id: String,
1245    #[doc = "Disk's independence mode type"]
1246    #[serde(rename = "independenceMode")]
1247    pub independence_mode: virtual_disk::IndependenceMode,
1248    #[doc = "Disk's total size"]
1249    #[serde(rename = "totalSize")]
1250    pub total_size: i64,
1251    #[doc = "Disk's id"]
1252    #[serde(rename = "virtualDiskId", default, skip_serializing_if = "Option::is_none")]
1253    pub virtual_disk_id: Option<String>,
1254    #[doc = "Disk's display name"]
1255    #[serde(rename = "virtualDiskName", default, skip_serializing_if = "Option::is_none")]
1256    pub virtual_disk_name: Option<String>,
1257}
1258impl VirtualDisk {
1259    pub fn new(controller_id: String, independence_mode: virtual_disk::IndependenceMode, total_size: i64) -> Self {
1260        Self {
1261            controller_id,
1262            independence_mode,
1263            total_size,
1264            virtual_disk_id: None,
1265            virtual_disk_name: None,
1266        }
1267    }
1268}
1269pub mod virtual_disk {
1270    use super::*;
1271    #[doc = "Disk's independence mode type"]
1272    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1273    pub enum IndependenceMode {
1274        #[serde(rename = "persistent")]
1275        Persistent,
1276        #[serde(rename = "independent_persistent")]
1277        IndependentPersistent,
1278        #[serde(rename = "independent_nonpersistent")]
1279        IndependentNonpersistent,
1280    }
1281}
1282#[doc = "Virtual disk controller model"]
1283#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1284pub struct VirtualDiskController {
1285    #[doc = "Controller's id"]
1286    #[serde(default, skip_serializing_if = "Option::is_none")]
1287    pub id: Option<String>,
1288    #[doc = "The display name of Controller"]
1289    #[serde(default, skip_serializing_if = "Option::is_none")]
1290    pub name: Option<String>,
1291    #[doc = "dik controller subtype (VMWARE_PARAVIRTUAL, BUS_PARALLEL, LSI_PARALLEL, LSI_SAS)"]
1292    #[serde(rename = "subType", default, skip_serializing_if = "Option::is_none")]
1293    pub sub_type: Option<String>,
1294    #[doc = "disk controller type (SCSI)"]
1295    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1296    pub type_: Option<String>,
1297}
1298impl VirtualDiskController {
1299    pub fn new() -> Self {
1300        Self::default()
1301    }
1302}
1303#[doc = "Virtual machine model"]
1304#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1305pub struct VirtualMachine {
1306    #[doc = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/virtualMachines/{virtualMachineName}"]
1307    #[serde(default, skip_serializing_if = "Option::is_none")]
1308    pub id: Option<String>,
1309    #[doc = "Azure region"]
1310    pub location: String,
1311    #[doc = "{virtualMachineName}"]
1312    #[serde(default, skip_serializing_if = "Option::is_none")]
1313    pub name: Option<String>,
1314    #[doc = "Properties of virtual machine"]
1315    #[serde(default, skip_serializing_if = "Option::is_none")]
1316    pub properties: Option<VirtualMachineProperties>,
1317    #[doc = "Tags model"]
1318    #[serde(default, skip_serializing_if = "Option::is_none")]
1319    pub tags: Option<Tags>,
1320    #[doc = "{resourceProviderNamespace}/{resourceType}"]
1321    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1322    pub type_: Option<String>,
1323}
1324impl VirtualMachine {
1325    pub fn new(location: String) -> Self {
1326        Self {
1327            id: None,
1328            location,
1329            name: None,
1330            properties: None,
1331            tags: None,
1332            type_: None,
1333        }
1334    }
1335}
1336#[doc = "List of virtual machines"]
1337#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1338pub struct VirtualMachineListResponse {
1339    #[doc = "Link for next list of VirtualMachines"]
1340    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
1341    pub next_link: Option<String>,
1342    #[doc = "Results of the VirtualMachine list"]
1343    #[serde(
1344        default,
1345        deserialize_with = "azure_core::util::deserialize_null_as_default",
1346        skip_serializing_if = "Vec::is_empty"
1347    )]
1348    pub value: Vec<VirtualMachine>,
1349}
1350impl azure_core::Continuable for VirtualMachineListResponse {
1351    type Continuation = String;
1352    fn continuation(&self) -> Option<Self::Continuation> {
1353        self.next_link.clone().filter(|value| !value.is_empty())
1354    }
1355}
1356impl VirtualMachineListResponse {
1357    pub fn new() -> Self {
1358        Self::default()
1359    }
1360}
1361#[doc = "Properties of virtual machine"]
1362#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1363pub struct VirtualMachineProperties {
1364    #[doc = "The amount of memory"]
1365    #[serde(rename = "amountOfRam")]
1366    pub amount_of_ram: i64,
1367    #[doc = "The list of Virtual Disks' Controllers"]
1368    #[serde(
1369        default,
1370        deserialize_with = "azure_core::util::deserialize_null_as_default",
1371        skip_serializing_if = "Vec::is_empty"
1372    )]
1373    pub controllers: Vec<VirtualDiskController>,
1374    #[doc = "Guest OS Customization properties"]
1375    #[serde(default, skip_serializing_if = "Option::is_none")]
1376    pub customization: Option<GuestOsCustomization>,
1377    #[doc = "The list of Virtual Disks"]
1378    #[serde(
1379        default,
1380        deserialize_with = "azure_core::util::deserialize_null_as_default",
1381        skip_serializing_if = "Vec::is_empty"
1382    )]
1383    pub disks: Vec<VirtualDisk>,
1384    #[doc = "The DNS name of Virtual Machine in VCenter"]
1385    #[serde(default, skip_serializing_if = "Option::is_none")]
1386    pub dnsname: Option<String>,
1387    #[doc = "Expose Guest OS or not"]
1388    #[serde(rename = "exposeToGuestVM", default, skip_serializing_if = "Option::is_none")]
1389    pub expose_to_guest_vm: Option<bool>,
1390    #[doc = "The path to virtual machine folder in VCenter"]
1391    #[serde(default, skip_serializing_if = "Option::is_none")]
1392    pub folder: Option<String>,
1393    #[doc = "The name of Guest OS"]
1394    #[serde(rename = "guestOS", default, skip_serializing_if = "Option::is_none")]
1395    pub guest_os: Option<String>,
1396    #[doc = "The Guest OS type"]
1397    #[serde(rename = "guestOSType", default, skip_serializing_if = "Option::is_none")]
1398    pub guest_os_type: Option<virtual_machine_properties::GuestOsType>,
1399    #[doc = "The list of Virtual NICs"]
1400    #[serde(
1401        default,
1402        deserialize_with = "azure_core::util::deserialize_null_as_default",
1403        skip_serializing_if = "Vec::is_empty"
1404    )]
1405    pub nics: Vec<VirtualNic>,
1406    #[doc = "The number of CPU cores"]
1407    #[serde(rename = "numberOfCores")]
1408    pub number_of_cores: i64,
1409    #[doc = "Password for login. Deprecated - use customization property"]
1410    #[serde(default, skip_serializing_if = "Option::is_none")]
1411    pub password: Option<String>,
1412    #[doc = "Private Cloud Id"]
1413    #[serde(rename = "privateCloudId")]
1414    pub private_cloud_id: String,
1415    #[doc = "The provisioning status of the resource"]
1416    #[serde(rename = "provisioningState", default, skip_serializing_if = "Option::is_none")]
1417    pub provisioning_state: Option<String>,
1418    #[doc = "The public ip of Virtual Machine"]
1419    #[serde(rename = "publicIP", default, skip_serializing_if = "Option::is_none")]
1420    pub public_ip: Option<String>,
1421    #[doc = "Resource pool model"]
1422    #[serde(rename = "resourcePool", default, skip_serializing_if = "Option::is_none")]
1423    pub resource_pool: Option<ResourcePool>,
1424    #[doc = "The status of Virtual machine"]
1425    #[serde(default, skip_serializing_if = "Option::is_none")]
1426    pub status: Option<virtual_machine_properties::Status>,
1427    #[doc = "Virtual Machine Template Id"]
1428    #[serde(rename = "templateId", default, skip_serializing_if = "Option::is_none")]
1429    pub template_id: Option<String>,
1430    #[doc = "Username for login. Deprecated - use customization property"]
1431    #[serde(default, skip_serializing_if = "Option::is_none")]
1432    pub username: Option<String>,
1433    #[doc = "The list of Virtual VSphere Networks"]
1434    #[serde(
1435        rename = "vSphereNetworks",
1436        default,
1437        deserialize_with = "azure_core::util::deserialize_null_as_default",
1438        skip_serializing_if = "Vec::is_empty"
1439    )]
1440    pub v_sphere_networks: Vec<String>,
1441    #[doc = "The internal id of Virtual Machine in VCenter"]
1442    #[serde(rename = "vmId", default, skip_serializing_if = "Option::is_none")]
1443    pub vm_id: Option<String>,
1444    #[doc = "VMware tools version"]
1445    #[serde(default, skip_serializing_if = "Option::is_none")]
1446    pub vmwaretools: Option<String>,
1447}
1448impl VirtualMachineProperties {
1449    pub fn new(amount_of_ram: i64, number_of_cores: i64, private_cloud_id: String) -> Self {
1450        Self {
1451            amount_of_ram,
1452            controllers: Vec::new(),
1453            customization: None,
1454            disks: Vec::new(),
1455            dnsname: None,
1456            expose_to_guest_vm: None,
1457            folder: None,
1458            guest_os: None,
1459            guest_os_type: None,
1460            nics: Vec::new(),
1461            number_of_cores,
1462            password: None,
1463            private_cloud_id,
1464            provisioning_state: None,
1465            public_ip: None,
1466            resource_pool: None,
1467            status: None,
1468            template_id: None,
1469            username: None,
1470            v_sphere_networks: Vec::new(),
1471            vm_id: None,
1472            vmwaretools: None,
1473        }
1474    }
1475}
1476pub mod virtual_machine_properties {
1477    use super::*;
1478    #[doc = "The Guest OS type"]
1479    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1480    pub enum GuestOsType {
1481        #[serde(rename = "linux")]
1482        Linux,
1483        #[serde(rename = "windows")]
1484        Windows,
1485        #[serde(rename = "other")]
1486        Other,
1487    }
1488    #[doc = "The status of Virtual machine"]
1489    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1490    pub enum Status {
1491        #[serde(rename = "running")]
1492        Running,
1493        #[serde(rename = "suspended")]
1494        Suspended,
1495        #[serde(rename = "poweredoff")]
1496        Poweredoff,
1497        #[serde(rename = "updating")]
1498        Updating,
1499        #[serde(rename = "deallocating")]
1500        Deallocating,
1501        #[serde(rename = "deleting")]
1502        Deleting,
1503    }
1504}
1505#[doc = "List of virtual machine stop modes"]
1506#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1507pub struct VirtualMachineStopMode {
1508    #[doc = "mode indicates a type of stop operation - reboot, suspend, shutdown or power-off"]
1509    #[serde(default, skip_serializing_if = "Option::is_none")]
1510    pub mode: Option<virtual_machine_stop_mode::Mode>,
1511}
1512impl VirtualMachineStopMode {
1513    pub fn new() -> Self {
1514        Self::default()
1515    }
1516}
1517pub mod virtual_machine_stop_mode {
1518    use super::*;
1519    #[doc = "mode indicates a type of stop operation - reboot, suspend, shutdown or power-off"]
1520    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1521    pub enum Mode {
1522        #[serde(rename = "reboot")]
1523        Reboot,
1524        #[serde(rename = "suspend")]
1525        Suspend,
1526        #[serde(rename = "shutdown")]
1527        Shutdown,
1528        #[serde(rename = "poweroff")]
1529        Poweroff,
1530    }
1531}
1532#[doc = "Virtual machine template model"]
1533#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1534pub struct VirtualMachineTemplate {
1535    #[doc = "virtual machine template id (privateCloudId:vsphereId)"]
1536    #[serde(default, skip_serializing_if = "Option::is_none")]
1537    pub id: Option<String>,
1538    #[doc = "Azure region"]
1539    #[serde(default, skip_serializing_if = "Option::is_none")]
1540    pub location: Option<String>,
1541    #[doc = "{virtualMachineTemplateName}"]
1542    #[serde(default, skip_serializing_if = "Option::is_none")]
1543    pub name: Option<String>,
1544    #[doc = "Properties of virtual machine template"]
1545    #[serde(default, skip_serializing_if = "Option::is_none")]
1546    pub properties: Option<VirtualMachineTemplateProperties>,
1547    #[doc = "{resourceProviderNamespace}/{resourceType}"]
1548    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1549    pub type_: Option<String>,
1550}
1551impl VirtualMachineTemplate {
1552    pub fn new() -> Self {
1553        Self::default()
1554    }
1555}
1556#[doc = "List of virtual machine templates"]
1557#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1558pub struct VirtualMachineTemplateListResponse {
1559    #[doc = "Link for next list of VirtualMachineTemplate"]
1560    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
1561    pub next_link: Option<String>,
1562    #[doc = "Results of the VM template list"]
1563    #[serde(
1564        default,
1565        deserialize_with = "azure_core::util::deserialize_null_as_default",
1566        skip_serializing_if = "Vec::is_empty"
1567    )]
1568    pub value: Vec<VirtualMachineTemplate>,
1569}
1570impl azure_core::Continuable for VirtualMachineTemplateListResponse {
1571    type Continuation = String;
1572    fn continuation(&self) -> Option<Self::Continuation> {
1573        self.next_link.clone().filter(|value| !value.is_empty())
1574    }
1575}
1576impl VirtualMachineTemplateListResponse {
1577    pub fn new() -> Self {
1578        Self::default()
1579    }
1580}
1581#[doc = "Properties of virtual machine template"]
1582#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1583pub struct VirtualMachineTemplateProperties {
1584    #[doc = "The amount of memory"]
1585    #[serde(rename = "amountOfRam", default, skip_serializing_if = "Option::is_none")]
1586    pub amount_of_ram: Option<i64>,
1587    #[doc = "The list of Virtual Disk Controllers"]
1588    #[serde(
1589        default,
1590        deserialize_with = "azure_core::util::deserialize_null_as_default",
1591        skip_serializing_if = "Vec::is_empty"
1592    )]
1593    pub controllers: Vec<VirtualDiskController>,
1594    #[doc = "The description of Virtual Machine Template"]
1595    #[serde(default, skip_serializing_if = "Option::is_none")]
1596    pub description: Option<String>,
1597    #[doc = "The list of Virtual Disks"]
1598    #[serde(
1599        default,
1600        deserialize_with = "azure_core::util::deserialize_null_as_default",
1601        skip_serializing_if = "Vec::is_empty"
1602    )]
1603    pub disks: Vec<VirtualDisk>,
1604    #[doc = "Expose Guest OS or not"]
1605    #[serde(rename = "exposeToGuestVM", default, skip_serializing_if = "Option::is_none")]
1606    pub expose_to_guest_vm: Option<bool>,
1607    #[doc = "The Guest OS"]
1608    #[serde(rename = "guestOS", default, skip_serializing_if = "Option::is_none")]
1609    pub guest_os: Option<String>,
1610    #[doc = "The Guest OS types"]
1611    #[serde(rename = "guestOSType", default, skip_serializing_if = "Option::is_none")]
1612    pub guest_os_type: Option<String>,
1613    #[doc = "The list of Virtual NICs"]
1614    #[serde(
1615        default,
1616        deserialize_with = "azure_core::util::deserialize_null_as_default",
1617        skip_serializing_if = "Vec::is_empty"
1618    )]
1619    pub nics: Vec<VirtualNic>,
1620    #[doc = "The number of CPU cores"]
1621    #[serde(rename = "numberOfCores", default, skip_serializing_if = "Option::is_none")]
1622    pub number_of_cores: Option<i64>,
1623    #[doc = "path to folder"]
1624    #[serde(default, skip_serializing_if = "Option::is_none")]
1625    pub path: Option<String>,
1626    #[doc = "The Private Cloud Id"]
1627    #[serde(rename = "privateCloudId")]
1628    pub private_cloud_id: String,
1629    #[doc = "The list of VSphere networks"]
1630    #[serde(
1631        rename = "vSphereNetworks",
1632        default,
1633        deserialize_with = "azure_core::util::deserialize_null_as_default",
1634        skip_serializing_if = "Vec::is_empty"
1635    )]
1636    pub v_sphere_networks: Vec<String>,
1637    #[doc = "The tags from VSphere"]
1638    #[serde(
1639        rename = "vSphereTags",
1640        default,
1641        deserialize_with = "azure_core::util::deserialize_null_as_default",
1642        skip_serializing_if = "Vec::is_empty"
1643    )]
1644    pub v_sphere_tags: Vec<String>,
1645    #[doc = "The VMware tools version"]
1646    #[serde(default, skip_serializing_if = "Option::is_none")]
1647    pub vmwaretools: Option<String>,
1648}
1649impl VirtualMachineTemplateProperties {
1650    pub fn new(private_cloud_id: String) -> Self {
1651        Self {
1652            amount_of_ram: None,
1653            controllers: Vec::new(),
1654            description: None,
1655            disks: Vec::new(),
1656            expose_to_guest_vm: None,
1657            guest_os: None,
1658            guest_os_type: None,
1659            nics: Vec::new(),
1660            number_of_cores: None,
1661            path: None,
1662            private_cloud_id,
1663            v_sphere_networks: Vec::new(),
1664            v_sphere_tags: Vec::new(),
1665            vmwaretools: None,
1666        }
1667    }
1668}
1669#[doc = "Virtual network model"]
1670#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1671pub struct VirtualNetwork {
1672    #[doc = "can be used in vm creation/deletion"]
1673    #[serde(default, skip_serializing_if = "Option::is_none")]
1674    pub assignable: Option<bool>,
1675    #[doc = "virtual network id (privateCloudId:vsphereId)"]
1676    pub id: String,
1677    #[doc = "Azure region"]
1678    #[serde(default, skip_serializing_if = "Option::is_none")]
1679    pub location: Option<String>,
1680    #[doc = "{VirtualNetworkName}"]
1681    #[serde(default, skip_serializing_if = "Option::is_none")]
1682    pub name: Option<String>,
1683    #[doc = "Properties of virtual network"]
1684    #[serde(default, skip_serializing_if = "Option::is_none")]
1685    pub properties: Option<VirtualNetworkProperties>,
1686    #[doc = "{resourceProviderNamespace}/{resourceType}"]
1687    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1688    pub type_: Option<String>,
1689}
1690impl VirtualNetwork {
1691    pub fn new(id: String) -> Self {
1692        Self {
1693            assignable: None,
1694            id,
1695            location: None,
1696            name: None,
1697            properties: None,
1698            type_: None,
1699        }
1700    }
1701}
1702#[doc = "List of virtual networks"]
1703#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1704pub struct VirtualNetworkListResponse {
1705    #[doc = "Link for next list of VirtualNetwork"]
1706    #[serde(rename = "nextLink", default, skip_serializing_if = "Option::is_none")]
1707    pub next_link: Option<String>,
1708    #[doc = "Results of the VirtualNetwork list"]
1709    #[serde(
1710        default,
1711        deserialize_with = "azure_core::util::deserialize_null_as_default",
1712        skip_serializing_if = "Vec::is_empty"
1713    )]
1714    pub value: Vec<VirtualNetwork>,
1715}
1716impl azure_core::Continuable for VirtualNetworkListResponse {
1717    type Continuation = String;
1718    fn continuation(&self) -> Option<Self::Continuation> {
1719        self.next_link.clone().filter(|value| !value.is_empty())
1720    }
1721}
1722impl VirtualNetworkListResponse {
1723    pub fn new() -> Self {
1724        Self::default()
1725    }
1726}
1727#[doc = "Properties of virtual network"]
1728#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Default)]
1729pub struct VirtualNetworkProperties {
1730    #[doc = "The Private Cloud id"]
1731    #[serde(rename = "privateCloudId", default, skip_serializing_if = "Option::is_none")]
1732    pub private_cloud_id: Option<String>,
1733}
1734impl VirtualNetworkProperties {
1735    pub fn new() -> Self {
1736        Self::default()
1737    }
1738}
1739#[doc = "Virtual NIC model"]
1740#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1741pub struct VirtualNic {
1742    #[doc = "Guest OS nic customization"]
1743    #[serde(default, skip_serializing_if = "Option::is_none")]
1744    pub customization: Option<GuestOsnicCustomization>,
1745    #[doc = "NIC ip address"]
1746    #[serde(
1747        rename = "ipAddresses",
1748        default,
1749        deserialize_with = "azure_core::util::deserialize_null_as_default",
1750        skip_serializing_if = "Vec::is_empty"
1751    )]
1752    pub ip_addresses: Vec<String>,
1753    #[doc = "NIC MAC address"]
1754    #[serde(rename = "macAddress", default, skip_serializing_if = "Option::is_none")]
1755    pub mac_address: Option<String>,
1756    #[doc = "Virtual network model"]
1757    pub network: VirtualNetwork,
1758    #[doc = "NIC type"]
1759    #[serde(rename = "nicType")]
1760    pub nic_type: virtual_nic::NicType,
1761    #[doc = "Is NIC powered on/off on boot"]
1762    #[serde(rename = "powerOnBoot", default, skip_serializing_if = "Option::is_none")]
1763    pub power_on_boot: Option<bool>,
1764    #[doc = "NIC id"]
1765    #[serde(rename = "virtualNicId", default, skip_serializing_if = "Option::is_none")]
1766    pub virtual_nic_id: Option<String>,
1767    #[doc = "NIC name"]
1768    #[serde(rename = "virtualNicName", default, skip_serializing_if = "Option::is_none")]
1769    pub virtual_nic_name: Option<String>,
1770}
1771impl VirtualNic {
1772    pub fn new(network: VirtualNetwork, nic_type: virtual_nic::NicType) -> Self {
1773        Self {
1774            customization: None,
1775            ip_addresses: Vec::new(),
1776            mac_address: None,
1777            network,
1778            nic_type,
1779            power_on_boot: None,
1780            virtual_nic_id: None,
1781            virtual_nic_name: None,
1782        }
1783    }
1784}
1785pub mod virtual_nic {
1786    use super::*;
1787    #[doc = "NIC type"]
1788    #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1789    pub enum NicType {
1790        E1000,
1791        #[serde(rename = "E1000E")]
1792        E1000e,
1793        #[serde(rename = "PCNET32")]
1794        Pcnet32,
1795        #[serde(rename = "VMXNET")]
1796        Vmxnet,
1797        #[serde(rename = "VMXNET2")]
1798        Vmxnet2,
1799        #[serde(rename = "VMXNET3")]
1800        Vmxnet3,
1801    }
1802}