1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for license information.
5# Code generated by Microsoft (R) AutoRest Code Generator.
6# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7# --------------------------------------------------------------------------
8
9import datetime
10from typing import Dict, List, Optional, Union
11
12from azure.core.exceptions import HttpResponseError
13import msrest.serialization
14
15from ._network_management_client_enums import *
16
17
18class AadAuthenticationParameters(msrest.serialization.Model):
19    """AAD Vpn authentication type related parameters.
20
21    :param aad_tenant: AAD Vpn authentication parameter AAD tenant.
22    :type aad_tenant: str
23    :param aad_audience: AAD Vpn authentication parameter AAD audience.
24    :type aad_audience: str
25    :param aad_issuer: AAD Vpn authentication parameter AAD issuer.
26    :type aad_issuer: str
27    """
28
29    _attribute_map = {
30        'aad_tenant': {'key': 'aadTenant', 'type': 'str'},
31        'aad_audience': {'key': 'aadAudience', 'type': 'str'},
32        'aad_issuer': {'key': 'aadIssuer', 'type': 'str'},
33    }
34
35    def __init__(
36        self,
37        *,
38        aad_tenant: Optional[str] = None,
39        aad_audience: Optional[str] = None,
40        aad_issuer: Optional[str] = None,
41        **kwargs
42    ):
43        super(AadAuthenticationParameters, self).__init__(**kwargs)
44        self.aad_tenant = aad_tenant
45        self.aad_audience = aad_audience
46        self.aad_issuer = aad_issuer
47
48
49class AddressSpace(msrest.serialization.Model):
50    """AddressSpace contains an array of IP address ranges that can be used by subnets of the virtual network.
51
52    :param address_prefixes: A list of address blocks reserved for this virtual network in CIDR
53     notation.
54    :type address_prefixes: list[str]
55    """
56
57    _attribute_map = {
58        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
59    }
60
61    def __init__(
62        self,
63        *,
64        address_prefixes: Optional[List[str]] = None,
65        **kwargs
66    ):
67        super(AddressSpace, self).__init__(**kwargs)
68        self.address_prefixes = address_prefixes
69
70
71class Resource(msrest.serialization.Model):
72    """Common resource representation.
73
74    Variables are only populated by the server, and will be ignored when sending a request.
75
76    :param id: Resource ID.
77    :type id: str
78    :ivar name: Resource name.
79    :vartype name: str
80    :ivar type: Resource type.
81    :vartype type: str
82    :param location: Resource location.
83    :type location: str
84    :param tags: A set of tags. Resource tags.
85    :type tags: dict[str, str]
86    """
87
88    _validation = {
89        'name': {'readonly': True},
90        'type': {'readonly': True},
91    }
92
93    _attribute_map = {
94        'id': {'key': 'id', 'type': 'str'},
95        'name': {'key': 'name', 'type': 'str'},
96        'type': {'key': 'type', 'type': 'str'},
97        'location': {'key': 'location', 'type': 'str'},
98        'tags': {'key': 'tags', 'type': '{str}'},
99    }
100
101    def __init__(
102        self,
103        *,
104        id: Optional[str] = None,
105        location: Optional[str] = None,
106        tags: Optional[Dict[str, str]] = None,
107        **kwargs
108    ):
109        super(Resource, self).__init__(**kwargs)
110        self.id = id
111        self.name = None
112        self.type = None
113        self.location = location
114        self.tags = tags
115
116
117class ApplicationGateway(Resource):
118    """Application gateway resource.
119
120    Variables are only populated by the server, and will be ignored when sending a request.
121
122    :param id: Resource ID.
123    :type id: str
124    :ivar name: Resource name.
125    :vartype name: str
126    :ivar type: Resource type.
127    :vartype type: str
128    :param location: Resource location.
129    :type location: str
130    :param tags: A set of tags. Resource tags.
131    :type tags: dict[str, str]
132    :ivar etag: A unique read-only string that changes whenever the resource is updated.
133    :vartype etag: str
134    :param zones: A list of availability zones denoting where the resource needs to come from.
135    :type zones: list[str]
136    :param identity: The identity of the application gateway, if configured.
137    :type identity: ~azure.mgmt.network.v2020_04_01.models.ManagedServiceIdentity
138    :param sku: SKU of the application gateway resource.
139    :type sku: ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySku
140    :param ssl_policy: SSL policy of the application gateway resource.
141    :type ssl_policy: ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslPolicy
142    :ivar operational_state: Operational state of the application gateway resource. Possible values
143     include: "Stopped", "Starting", "Running", "Stopping".
144    :vartype operational_state: str or
145     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayOperationalState
146    :param gateway_ip_configurations: Subnets of the application gateway resource. For default
147     limits, see `Application Gateway limits
148     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
149    :type gateway_ip_configurations:
150     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayIPConfiguration]
151    :param authentication_certificates: Authentication certificates of the application gateway
152     resource. For default limits, see `Application Gateway limits
153     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
154    :type authentication_certificates:
155     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayAuthenticationCertificate]
156    :param trusted_root_certificates: Trusted Root certificates of the application gateway
157     resource. For default limits, see `Application Gateway limits
158     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
159    :type trusted_root_certificates:
160     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayTrustedRootCertificate]
161    :param ssl_certificates: SSL certificates of the application gateway resource. For default
162     limits, see `Application Gateway limits
163     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
164    :type ssl_certificates:
165     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslCertificate]
166    :param frontend_ip_configurations: Frontend IP addresses of the application gateway resource.
167     For default limits, see `Application Gateway limits
168     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
169    :type frontend_ip_configurations:
170     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayFrontendIPConfiguration]
171    :param frontend_ports: Frontend ports of the application gateway resource. For default limits,
172     see `Application Gateway limits
173     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
174    :type frontend_ports:
175     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayFrontendPort]
176    :param probes: Probes of the application gateway resource.
177    :type probes: list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayProbe]
178    :param backend_address_pools: Backend address pool of the application gateway resource. For
179     default limits, see `Application Gateway limits
180     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
181    :type backend_address_pools:
182     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendAddressPool]
183    :param backend_http_settings_collection: Backend http settings of the application gateway
184     resource. For default limits, see `Application Gateway limits
185     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
186    :type backend_http_settings_collection:
187     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendHttpSettings]
188    :param http_listeners: Http listeners of the application gateway resource. For default limits,
189     see `Application Gateway limits
190     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
191    :type http_listeners:
192     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayHttpListener]
193    :param url_path_maps: URL path map of the application gateway resource. For default limits, see
194     `Application Gateway limits
195     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
196    :type url_path_maps: list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayUrlPathMap]
197    :param request_routing_rules: Request routing rules of the application gateway resource.
198    :type request_routing_rules:
199     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayRequestRoutingRule]
200    :param rewrite_rule_sets: Rewrite rules for the application gateway resource.
201    :type rewrite_rule_sets:
202     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayRewriteRuleSet]
203    :param redirect_configurations: Redirect configurations of the application gateway resource.
204     For default limits, see `Application Gateway limits
205     <https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits>`_.
206    :type redirect_configurations:
207     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayRedirectConfiguration]
208    :param web_application_firewall_configuration: Web application firewall configuration.
209    :type web_application_firewall_configuration:
210     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayWebApplicationFirewallConfiguration
211    :param firewall_policy: Reference to the FirewallPolicy resource.
212    :type firewall_policy: ~azure.mgmt.network.v2020_04_01.models.SubResource
213    :param enable_http2: Whether HTTP2 is enabled on the application gateway resource.
214    :type enable_http2: bool
215    :param enable_fips: Whether FIPS is enabled on the application gateway resource.
216    :type enable_fips: bool
217    :param autoscale_configuration: Autoscale Configuration.
218    :type autoscale_configuration:
219     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayAutoscaleConfiguration
220    :ivar resource_guid: The resource GUID property of the application gateway resource.
221    :vartype resource_guid: str
222    :ivar provisioning_state: The provisioning state of the application gateway resource. Possible
223     values include: "Succeeded", "Updating", "Deleting", "Failed".
224    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
225    :param custom_error_configurations: Custom error configurations of the application gateway
226     resource.
227    :type custom_error_configurations:
228     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayCustomError]
229    :param force_firewall_policy_association: If true, associates a firewall policy with an
230     application gateway regardless whether the policy differs from the WAF Config.
231    :type force_firewall_policy_association: bool
232    """
233
234    _validation = {
235        'name': {'readonly': True},
236        'type': {'readonly': True},
237        'etag': {'readonly': True},
238        'operational_state': {'readonly': True},
239        'resource_guid': {'readonly': True},
240        'provisioning_state': {'readonly': True},
241    }
242
243    _attribute_map = {
244        'id': {'key': 'id', 'type': 'str'},
245        'name': {'key': 'name', 'type': 'str'},
246        'type': {'key': 'type', 'type': 'str'},
247        'location': {'key': 'location', 'type': 'str'},
248        'tags': {'key': 'tags', 'type': '{str}'},
249        'etag': {'key': 'etag', 'type': 'str'},
250        'zones': {'key': 'zones', 'type': '[str]'},
251        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
252        'sku': {'key': 'properties.sku', 'type': 'ApplicationGatewaySku'},
253        'ssl_policy': {'key': 'properties.sslPolicy', 'type': 'ApplicationGatewaySslPolicy'},
254        'operational_state': {'key': 'properties.operationalState', 'type': 'str'},
255        'gateway_ip_configurations': {'key': 'properties.gatewayIPConfigurations', 'type': '[ApplicationGatewayIPConfiguration]'},
256        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[ApplicationGatewayAuthenticationCertificate]'},
257        'trusted_root_certificates': {'key': 'properties.trustedRootCertificates', 'type': '[ApplicationGatewayTrustedRootCertificate]'},
258        'ssl_certificates': {'key': 'properties.sslCertificates', 'type': '[ApplicationGatewaySslCertificate]'},
259        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[ApplicationGatewayFrontendIPConfiguration]'},
260        'frontend_ports': {'key': 'properties.frontendPorts', 'type': '[ApplicationGatewayFrontendPort]'},
261        'probes': {'key': 'properties.probes', 'type': '[ApplicationGatewayProbe]'},
262        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
263        'backend_http_settings_collection': {'key': 'properties.backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHttpSettings]'},
264        'http_listeners': {'key': 'properties.httpListeners', 'type': '[ApplicationGatewayHttpListener]'},
265        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[ApplicationGatewayUrlPathMap]'},
266        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[ApplicationGatewayRequestRoutingRule]'},
267        'rewrite_rule_sets': {'key': 'properties.rewriteRuleSets', 'type': '[ApplicationGatewayRewriteRuleSet]'},
268        'redirect_configurations': {'key': 'properties.redirectConfigurations', 'type': '[ApplicationGatewayRedirectConfiguration]'},
269        'web_application_firewall_configuration': {'key': 'properties.webApplicationFirewallConfiguration', 'type': 'ApplicationGatewayWebApplicationFirewallConfiguration'},
270        'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'},
271        'enable_http2': {'key': 'properties.enableHttp2', 'type': 'bool'},
272        'enable_fips': {'key': 'properties.enableFips', 'type': 'bool'},
273        'autoscale_configuration': {'key': 'properties.autoscaleConfiguration', 'type': 'ApplicationGatewayAutoscaleConfiguration'},
274        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
275        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
276        'custom_error_configurations': {'key': 'properties.customErrorConfigurations', 'type': '[ApplicationGatewayCustomError]'},
277        'force_firewall_policy_association': {'key': 'properties.forceFirewallPolicyAssociation', 'type': 'bool'},
278    }
279
280    def __init__(
281        self,
282        *,
283        id: Optional[str] = None,
284        location: Optional[str] = None,
285        tags: Optional[Dict[str, str]] = None,
286        zones: Optional[List[str]] = None,
287        identity: Optional["ManagedServiceIdentity"] = None,
288        sku: Optional["ApplicationGatewaySku"] = None,
289        ssl_policy: Optional["ApplicationGatewaySslPolicy"] = None,
290        gateway_ip_configurations: Optional[List["ApplicationGatewayIPConfiguration"]] = None,
291        authentication_certificates: Optional[List["ApplicationGatewayAuthenticationCertificate"]] = None,
292        trusted_root_certificates: Optional[List["ApplicationGatewayTrustedRootCertificate"]] = None,
293        ssl_certificates: Optional[List["ApplicationGatewaySslCertificate"]] = None,
294        frontend_ip_configurations: Optional[List["ApplicationGatewayFrontendIPConfiguration"]] = None,
295        frontend_ports: Optional[List["ApplicationGatewayFrontendPort"]] = None,
296        probes: Optional[List["ApplicationGatewayProbe"]] = None,
297        backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None,
298        backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHttpSettings"]] = None,
299        http_listeners: Optional[List["ApplicationGatewayHttpListener"]] = None,
300        url_path_maps: Optional[List["ApplicationGatewayUrlPathMap"]] = None,
301        request_routing_rules: Optional[List["ApplicationGatewayRequestRoutingRule"]] = None,
302        rewrite_rule_sets: Optional[List["ApplicationGatewayRewriteRuleSet"]] = None,
303        redirect_configurations: Optional[List["ApplicationGatewayRedirectConfiguration"]] = None,
304        web_application_firewall_configuration: Optional["ApplicationGatewayWebApplicationFirewallConfiguration"] = None,
305        firewall_policy: Optional["SubResource"] = None,
306        enable_http2: Optional[bool] = None,
307        enable_fips: Optional[bool] = None,
308        autoscale_configuration: Optional["ApplicationGatewayAutoscaleConfiguration"] = None,
309        custom_error_configurations: Optional[List["ApplicationGatewayCustomError"]] = None,
310        force_firewall_policy_association: Optional[bool] = None,
311        **kwargs
312    ):
313        super(ApplicationGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
314        self.etag = None
315        self.zones = zones
316        self.identity = identity
317        self.sku = sku
318        self.ssl_policy = ssl_policy
319        self.operational_state = None
320        self.gateway_ip_configurations = gateway_ip_configurations
321        self.authentication_certificates = authentication_certificates
322        self.trusted_root_certificates = trusted_root_certificates
323        self.ssl_certificates = ssl_certificates
324        self.frontend_ip_configurations = frontend_ip_configurations
325        self.frontend_ports = frontend_ports
326        self.probes = probes
327        self.backend_address_pools = backend_address_pools
328        self.backend_http_settings_collection = backend_http_settings_collection
329        self.http_listeners = http_listeners
330        self.url_path_maps = url_path_maps
331        self.request_routing_rules = request_routing_rules
332        self.rewrite_rule_sets = rewrite_rule_sets
333        self.redirect_configurations = redirect_configurations
334        self.web_application_firewall_configuration = web_application_firewall_configuration
335        self.firewall_policy = firewall_policy
336        self.enable_http2 = enable_http2
337        self.enable_fips = enable_fips
338        self.autoscale_configuration = autoscale_configuration
339        self.resource_guid = None
340        self.provisioning_state = None
341        self.custom_error_configurations = custom_error_configurations
342        self.force_firewall_policy_association = force_firewall_policy_association
343
344
345class SubResource(msrest.serialization.Model):
346    """Reference to another subresource.
347
348    :param id: Resource ID.
349    :type id: str
350    """
351
352    _attribute_map = {
353        'id': {'key': 'id', 'type': 'str'},
354    }
355
356    def __init__(
357        self,
358        *,
359        id: Optional[str] = None,
360        **kwargs
361    ):
362        super(SubResource, self).__init__(**kwargs)
363        self.id = id
364
365
366class ApplicationGatewayAuthenticationCertificate(SubResource):
367    """Authentication certificates of an application gateway.
368
369    Variables are only populated by the server, and will be ignored when sending a request.
370
371    :param id: Resource ID.
372    :type id: str
373    :param name: Name of the authentication certificate that is unique within an Application
374     Gateway.
375    :type name: str
376    :ivar etag: A unique read-only string that changes whenever the resource is updated.
377    :vartype etag: str
378    :ivar type: Type of the resource.
379    :vartype type: str
380    :param data: Certificate public data.
381    :type data: str
382    :ivar provisioning_state: The provisioning state of the authentication certificate resource.
383     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
384    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
385    """
386
387    _validation = {
388        'etag': {'readonly': True},
389        'type': {'readonly': True},
390        'provisioning_state': {'readonly': True},
391    }
392
393    _attribute_map = {
394        'id': {'key': 'id', 'type': 'str'},
395        'name': {'key': 'name', 'type': 'str'},
396        'etag': {'key': 'etag', 'type': 'str'},
397        'type': {'key': 'type', 'type': 'str'},
398        'data': {'key': 'properties.data', 'type': 'str'},
399        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
400    }
401
402    def __init__(
403        self,
404        *,
405        id: Optional[str] = None,
406        name: Optional[str] = None,
407        data: Optional[str] = None,
408        **kwargs
409    ):
410        super(ApplicationGatewayAuthenticationCertificate, self).__init__(id=id, **kwargs)
411        self.name = name
412        self.etag = None
413        self.type = None
414        self.data = data
415        self.provisioning_state = None
416
417
418class ApplicationGatewayAutoscaleConfiguration(msrest.serialization.Model):
419    """Application Gateway autoscale configuration.
420
421    All required parameters must be populated in order to send to Azure.
422
423    :param min_capacity: Required. Lower bound on number of Application Gateway capacity.
424    :type min_capacity: int
425    :param max_capacity: Upper bound on number of Application Gateway capacity.
426    :type max_capacity: int
427    """
428
429    _validation = {
430        'min_capacity': {'required': True, 'minimum': 0},
431        'max_capacity': {'minimum': 2},
432    }
433
434    _attribute_map = {
435        'min_capacity': {'key': 'minCapacity', 'type': 'int'},
436        'max_capacity': {'key': 'maxCapacity', 'type': 'int'},
437    }
438
439    def __init__(
440        self,
441        *,
442        min_capacity: int,
443        max_capacity: Optional[int] = None,
444        **kwargs
445    ):
446        super(ApplicationGatewayAutoscaleConfiguration, self).__init__(**kwargs)
447        self.min_capacity = min_capacity
448        self.max_capacity = max_capacity
449
450
451class ApplicationGatewayAvailableSslOptions(Resource):
452    """Response for ApplicationGatewayAvailableSslOptions API service call.
453
454    Variables are only populated by the server, and will be ignored when sending a request.
455
456    :param id: Resource ID.
457    :type id: str
458    :ivar name: Resource name.
459    :vartype name: str
460    :ivar type: Resource type.
461    :vartype type: str
462    :param location: Resource location.
463    :type location: str
464    :param tags: A set of tags. Resource tags.
465    :type tags: dict[str, str]
466    :param predefined_policies: List of available Ssl predefined policy.
467    :type predefined_policies: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
468    :param default_policy: Name of the Ssl predefined policy applied by default to application
469     gateway. Possible values include: "AppGwSslPolicy20150501", "AppGwSslPolicy20170401",
470     "AppGwSslPolicy20170401S".
471    :type default_policy: str or
472     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslPolicyName
473    :param available_cipher_suites: List of available Ssl cipher suites.
474    :type available_cipher_suites: list[str or
475     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslCipherSuite]
476    :param available_protocols: List of available Ssl protocols.
477    :type available_protocols: list[str or
478     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslProtocol]
479    """
480
481    _validation = {
482        'name': {'readonly': True},
483        'type': {'readonly': True},
484    }
485
486    _attribute_map = {
487        'id': {'key': 'id', 'type': 'str'},
488        'name': {'key': 'name', 'type': 'str'},
489        'type': {'key': 'type', 'type': 'str'},
490        'location': {'key': 'location', 'type': 'str'},
491        'tags': {'key': 'tags', 'type': '{str}'},
492        'predefined_policies': {'key': 'properties.predefinedPolicies', 'type': '[SubResource]'},
493        'default_policy': {'key': 'properties.defaultPolicy', 'type': 'str'},
494        'available_cipher_suites': {'key': 'properties.availableCipherSuites', 'type': '[str]'},
495        'available_protocols': {'key': 'properties.availableProtocols', 'type': '[str]'},
496    }
497
498    def __init__(
499        self,
500        *,
501        id: Optional[str] = None,
502        location: Optional[str] = None,
503        tags: Optional[Dict[str, str]] = None,
504        predefined_policies: Optional[List["SubResource"]] = None,
505        default_policy: Optional[Union[str, "ApplicationGatewaySslPolicyName"]] = None,
506        available_cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
507        available_protocols: Optional[List[Union[str, "ApplicationGatewaySslProtocol"]]] = None,
508        **kwargs
509    ):
510        super(ApplicationGatewayAvailableSslOptions, self).__init__(id=id, location=location, tags=tags, **kwargs)
511        self.predefined_policies = predefined_policies
512        self.default_policy = default_policy
513        self.available_cipher_suites = available_cipher_suites
514        self.available_protocols = available_protocols
515
516
517class ApplicationGatewayAvailableSslPredefinedPolicies(msrest.serialization.Model):
518    """Response for ApplicationGatewayAvailableSslOptions API service call.
519
520    :param value: List of available Ssl predefined policy.
521    :type value: list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslPredefinedPolicy]
522    :param next_link: URL to get the next set of results.
523    :type next_link: str
524    """
525
526    _attribute_map = {
527        'value': {'key': 'value', 'type': '[ApplicationGatewaySslPredefinedPolicy]'},
528        'next_link': {'key': 'nextLink', 'type': 'str'},
529    }
530
531    def __init__(
532        self,
533        *,
534        value: Optional[List["ApplicationGatewaySslPredefinedPolicy"]] = None,
535        next_link: Optional[str] = None,
536        **kwargs
537    ):
538        super(ApplicationGatewayAvailableSslPredefinedPolicies, self).__init__(**kwargs)
539        self.value = value
540        self.next_link = next_link
541
542
543class ApplicationGatewayAvailableWafRuleSetsResult(msrest.serialization.Model):
544    """Response for ApplicationGatewayAvailableWafRuleSets API service call.
545
546    :param value: The list of application gateway rule sets.
547    :type value: list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayFirewallRuleSet]
548    """
549
550    _attribute_map = {
551        'value': {'key': 'value', 'type': '[ApplicationGatewayFirewallRuleSet]'},
552    }
553
554    def __init__(
555        self,
556        *,
557        value: Optional[List["ApplicationGatewayFirewallRuleSet"]] = None,
558        **kwargs
559    ):
560        super(ApplicationGatewayAvailableWafRuleSetsResult, self).__init__(**kwargs)
561        self.value = value
562
563
564class ApplicationGatewayBackendAddress(msrest.serialization.Model):
565    """Backend address of an application gateway.
566
567    :param fqdn: Fully qualified domain name (FQDN).
568    :type fqdn: str
569    :param ip_address: IP address.
570    :type ip_address: str
571    """
572
573    _attribute_map = {
574        'fqdn': {'key': 'fqdn', 'type': 'str'},
575        'ip_address': {'key': 'ipAddress', 'type': 'str'},
576    }
577
578    def __init__(
579        self,
580        *,
581        fqdn: Optional[str] = None,
582        ip_address: Optional[str] = None,
583        **kwargs
584    ):
585        super(ApplicationGatewayBackendAddress, self).__init__(**kwargs)
586        self.fqdn = fqdn
587        self.ip_address = ip_address
588
589
590class ApplicationGatewayBackendAddressPool(SubResource):
591    """Backend Address Pool of an application gateway.
592
593    Variables are only populated by the server, and will be ignored when sending a request.
594
595    :param id: Resource ID.
596    :type id: str
597    :param name: Name of the backend address pool that is unique within an Application Gateway.
598    :type name: str
599    :ivar etag: A unique read-only string that changes whenever the resource is updated.
600    :vartype etag: str
601    :ivar type: Type of the resource.
602    :vartype type: str
603    :ivar backend_ip_configurations: Collection of references to IPs defined in network interfaces.
604    :vartype backend_ip_configurations:
605     list[~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceIPConfiguration]
606    :param backend_addresses: Backend addresses.
607    :type backend_addresses:
608     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendAddress]
609    :ivar provisioning_state: The provisioning state of the backend address pool resource. Possible
610     values include: "Succeeded", "Updating", "Deleting", "Failed".
611    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
612    """
613
614    _validation = {
615        'etag': {'readonly': True},
616        'type': {'readonly': True},
617        'backend_ip_configurations': {'readonly': True},
618        'provisioning_state': {'readonly': True},
619    }
620
621    _attribute_map = {
622        'id': {'key': 'id', 'type': 'str'},
623        'name': {'key': 'name', 'type': 'str'},
624        'etag': {'key': 'etag', 'type': 'str'},
625        'type': {'key': 'type', 'type': 'str'},
626        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
627        'backend_addresses': {'key': 'properties.backendAddresses', 'type': '[ApplicationGatewayBackendAddress]'},
628        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
629    }
630
631    def __init__(
632        self,
633        *,
634        id: Optional[str] = None,
635        name: Optional[str] = None,
636        backend_addresses: Optional[List["ApplicationGatewayBackendAddress"]] = None,
637        **kwargs
638    ):
639        super(ApplicationGatewayBackendAddressPool, self).__init__(id=id, **kwargs)
640        self.name = name
641        self.etag = None
642        self.type = None
643        self.backend_ip_configurations = None
644        self.backend_addresses = backend_addresses
645        self.provisioning_state = None
646
647
648class ApplicationGatewayBackendHealth(msrest.serialization.Model):
649    """Response for ApplicationGatewayBackendHealth API service call.
650
651    :param backend_address_pools: A list of ApplicationGatewayBackendHealthPool resources.
652    :type backend_address_pools:
653     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendHealthPool]
654    """
655
656    _attribute_map = {
657        'backend_address_pools': {'key': 'backendAddressPools', 'type': '[ApplicationGatewayBackendHealthPool]'},
658    }
659
660    def __init__(
661        self,
662        *,
663        backend_address_pools: Optional[List["ApplicationGatewayBackendHealthPool"]] = None,
664        **kwargs
665    ):
666        super(ApplicationGatewayBackendHealth, self).__init__(**kwargs)
667        self.backend_address_pools = backend_address_pools
668
669
670class ApplicationGatewayBackendHealthHttpSettings(msrest.serialization.Model):
671    """Application gateway BackendHealthHttp settings.
672
673    :param backend_http_settings: Reference to an ApplicationGatewayBackendHttpSettings resource.
674    :type backend_http_settings:
675     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendHttpSettings
676    :param servers: List of ApplicationGatewayBackendHealthServer resources.
677    :type servers:
678     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendHealthServer]
679    """
680
681    _attribute_map = {
682        'backend_http_settings': {'key': 'backendHttpSettings', 'type': 'ApplicationGatewayBackendHttpSettings'},
683        'servers': {'key': 'servers', 'type': '[ApplicationGatewayBackendHealthServer]'},
684    }
685
686    def __init__(
687        self,
688        *,
689        backend_http_settings: Optional["ApplicationGatewayBackendHttpSettings"] = None,
690        servers: Optional[List["ApplicationGatewayBackendHealthServer"]] = None,
691        **kwargs
692    ):
693        super(ApplicationGatewayBackendHealthHttpSettings, self).__init__(**kwargs)
694        self.backend_http_settings = backend_http_settings
695        self.servers = servers
696
697
698class ApplicationGatewayBackendHealthOnDemand(msrest.serialization.Model):
699    """Result of on demand test probe.
700
701    :param backend_address_pool: Reference to an ApplicationGatewayBackendAddressPool resource.
702    :type backend_address_pool:
703     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendAddressPool
704    :param backend_health_http_settings: Application gateway BackendHealthHttp settings.
705    :type backend_health_http_settings:
706     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendHealthHttpSettings
707    """
708
709    _attribute_map = {
710        'backend_address_pool': {'key': 'backendAddressPool', 'type': 'ApplicationGatewayBackendAddressPool'},
711        'backend_health_http_settings': {'key': 'backendHealthHttpSettings', 'type': 'ApplicationGatewayBackendHealthHttpSettings'},
712    }
713
714    def __init__(
715        self,
716        *,
717        backend_address_pool: Optional["ApplicationGatewayBackendAddressPool"] = None,
718        backend_health_http_settings: Optional["ApplicationGatewayBackendHealthHttpSettings"] = None,
719        **kwargs
720    ):
721        super(ApplicationGatewayBackendHealthOnDemand, self).__init__(**kwargs)
722        self.backend_address_pool = backend_address_pool
723        self.backend_health_http_settings = backend_health_http_settings
724
725
726class ApplicationGatewayBackendHealthPool(msrest.serialization.Model):
727    """Application gateway BackendHealth pool.
728
729    :param backend_address_pool: Reference to an ApplicationGatewayBackendAddressPool resource.
730    :type backend_address_pool:
731     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendAddressPool
732    :param backend_http_settings_collection: List of ApplicationGatewayBackendHealthHttpSettings
733     resources.
734    :type backend_http_settings_collection:
735     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendHealthHttpSettings]
736    """
737
738    _attribute_map = {
739        'backend_address_pool': {'key': 'backendAddressPool', 'type': 'ApplicationGatewayBackendAddressPool'},
740        'backend_http_settings_collection': {'key': 'backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHealthHttpSettings]'},
741    }
742
743    def __init__(
744        self,
745        *,
746        backend_address_pool: Optional["ApplicationGatewayBackendAddressPool"] = None,
747        backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHealthHttpSettings"]] = None,
748        **kwargs
749    ):
750        super(ApplicationGatewayBackendHealthPool, self).__init__(**kwargs)
751        self.backend_address_pool = backend_address_pool
752        self.backend_http_settings_collection = backend_http_settings_collection
753
754
755class ApplicationGatewayBackendHealthServer(msrest.serialization.Model):
756    """Application gateway backendhealth http settings.
757
758    :param address: IP address or FQDN of backend server.
759    :type address: str
760    :param ip_configuration: Reference to IP configuration of backend server.
761    :type ip_configuration: ~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceIPConfiguration
762    :param health: Health of backend server. Possible values include: "Unknown", "Up", "Down",
763     "Partial", "Draining".
764    :type health: str or
765     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendHealthServerHealth
766    :param health_probe_log: Health Probe Log.
767    :type health_probe_log: str
768    """
769
770    _attribute_map = {
771        'address': {'key': 'address', 'type': 'str'},
772        'ip_configuration': {'key': 'ipConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
773        'health': {'key': 'health', 'type': 'str'},
774        'health_probe_log': {'key': 'healthProbeLog', 'type': 'str'},
775    }
776
777    def __init__(
778        self,
779        *,
780        address: Optional[str] = None,
781        ip_configuration: Optional["NetworkInterfaceIPConfiguration"] = None,
782        health: Optional[Union[str, "ApplicationGatewayBackendHealthServerHealth"]] = None,
783        health_probe_log: Optional[str] = None,
784        **kwargs
785    ):
786        super(ApplicationGatewayBackendHealthServer, self).__init__(**kwargs)
787        self.address = address
788        self.ip_configuration = ip_configuration
789        self.health = health
790        self.health_probe_log = health_probe_log
791
792
793class ApplicationGatewayBackendHttpSettings(SubResource):
794    """Backend address pool settings of an application gateway.
795
796    Variables are only populated by the server, and will be ignored when sending a request.
797
798    :param id: Resource ID.
799    :type id: str
800    :param name: Name of the backend http settings that is unique within an Application Gateway.
801    :type name: str
802    :ivar etag: A unique read-only string that changes whenever the resource is updated.
803    :vartype etag: str
804    :ivar type: Type of the resource.
805    :vartype type: str
806    :param port: The destination port on the backend.
807    :type port: int
808    :param protocol: The protocol used to communicate with the backend. Possible values include:
809     "Http", "Https".
810    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayProtocol
811    :param cookie_based_affinity: Cookie based affinity. Possible values include: "Enabled",
812     "Disabled".
813    :type cookie_based_affinity: str or
814     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayCookieBasedAffinity
815    :param request_timeout: Request timeout in seconds. Application Gateway will fail the request
816     if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400
817     seconds.
818    :type request_timeout: int
819    :param probe: Probe resource of an application gateway.
820    :type probe: ~azure.mgmt.network.v2020_04_01.models.SubResource
821    :param authentication_certificates: Array of references to application gateway authentication
822     certificates.
823    :type authentication_certificates: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
824    :param trusted_root_certificates: Array of references to application gateway trusted root
825     certificates.
826    :type trusted_root_certificates: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
827    :param connection_draining: Connection draining of the backend http settings resource.
828    :type connection_draining:
829     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayConnectionDraining
830    :param host_name: Host header to be sent to the backend servers.
831    :type host_name: str
832    :param pick_host_name_from_backend_address: Whether to pick host header should be picked from
833     the host name of the backend server. Default value is false.
834    :type pick_host_name_from_backend_address: bool
835    :param affinity_cookie_name: Cookie name to use for the affinity cookie.
836    :type affinity_cookie_name: str
837    :param probe_enabled: Whether the probe is enabled. Default value is false.
838    :type probe_enabled: bool
839    :param path: Path which should be used as a prefix for all HTTP requests. Null means no path
840     will be prefixed. Default value is null.
841    :type path: str
842    :ivar provisioning_state: The provisioning state of the backend HTTP settings resource.
843     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
844    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
845    """
846
847    _validation = {
848        'etag': {'readonly': True},
849        'type': {'readonly': True},
850        'provisioning_state': {'readonly': True},
851    }
852
853    _attribute_map = {
854        'id': {'key': 'id', 'type': 'str'},
855        'name': {'key': 'name', 'type': 'str'},
856        'etag': {'key': 'etag', 'type': 'str'},
857        'type': {'key': 'type', 'type': 'str'},
858        'port': {'key': 'properties.port', 'type': 'int'},
859        'protocol': {'key': 'properties.protocol', 'type': 'str'},
860        'cookie_based_affinity': {'key': 'properties.cookieBasedAffinity', 'type': 'str'},
861        'request_timeout': {'key': 'properties.requestTimeout', 'type': 'int'},
862        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
863        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[SubResource]'},
864        'trusted_root_certificates': {'key': 'properties.trustedRootCertificates', 'type': '[SubResource]'},
865        'connection_draining': {'key': 'properties.connectionDraining', 'type': 'ApplicationGatewayConnectionDraining'},
866        'host_name': {'key': 'properties.hostName', 'type': 'str'},
867        'pick_host_name_from_backend_address': {'key': 'properties.pickHostNameFromBackendAddress', 'type': 'bool'},
868        'affinity_cookie_name': {'key': 'properties.affinityCookieName', 'type': 'str'},
869        'probe_enabled': {'key': 'properties.probeEnabled', 'type': 'bool'},
870        'path': {'key': 'properties.path', 'type': 'str'},
871        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
872    }
873
874    def __init__(
875        self,
876        *,
877        id: Optional[str] = None,
878        name: Optional[str] = None,
879        port: Optional[int] = None,
880        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
881        cookie_based_affinity: Optional[Union[str, "ApplicationGatewayCookieBasedAffinity"]] = None,
882        request_timeout: Optional[int] = None,
883        probe: Optional["SubResource"] = None,
884        authentication_certificates: Optional[List["SubResource"]] = None,
885        trusted_root_certificates: Optional[List["SubResource"]] = None,
886        connection_draining: Optional["ApplicationGatewayConnectionDraining"] = None,
887        host_name: Optional[str] = None,
888        pick_host_name_from_backend_address: Optional[bool] = None,
889        affinity_cookie_name: Optional[str] = None,
890        probe_enabled: Optional[bool] = None,
891        path: Optional[str] = None,
892        **kwargs
893    ):
894        super(ApplicationGatewayBackendHttpSettings, self).__init__(id=id, **kwargs)
895        self.name = name
896        self.etag = None
897        self.type = None
898        self.port = port
899        self.protocol = protocol
900        self.cookie_based_affinity = cookie_based_affinity
901        self.request_timeout = request_timeout
902        self.probe = probe
903        self.authentication_certificates = authentication_certificates
904        self.trusted_root_certificates = trusted_root_certificates
905        self.connection_draining = connection_draining
906        self.host_name = host_name
907        self.pick_host_name_from_backend_address = pick_host_name_from_backend_address
908        self.affinity_cookie_name = affinity_cookie_name
909        self.probe_enabled = probe_enabled
910        self.path = path
911        self.provisioning_state = None
912
913
914class ApplicationGatewayConnectionDraining(msrest.serialization.Model):
915    """Connection draining allows open connections to a backend server to be active for a specified time after the backend server got removed from the configuration.
916
917    All required parameters must be populated in order to send to Azure.
918
919    :param enabled: Required. Whether connection draining is enabled or not.
920    :type enabled: bool
921    :param drain_timeout_in_sec: Required. The number of seconds connection draining is active.
922     Acceptable values are from 1 second to 3600 seconds.
923    :type drain_timeout_in_sec: int
924    """
925
926    _validation = {
927        'enabled': {'required': True},
928        'drain_timeout_in_sec': {'required': True, 'maximum': 3600, 'minimum': 1},
929    }
930
931    _attribute_map = {
932        'enabled': {'key': 'enabled', 'type': 'bool'},
933        'drain_timeout_in_sec': {'key': 'drainTimeoutInSec', 'type': 'int'},
934    }
935
936    def __init__(
937        self,
938        *,
939        enabled: bool,
940        drain_timeout_in_sec: int,
941        **kwargs
942    ):
943        super(ApplicationGatewayConnectionDraining, self).__init__(**kwargs)
944        self.enabled = enabled
945        self.drain_timeout_in_sec = drain_timeout_in_sec
946
947
948class ApplicationGatewayCustomError(msrest.serialization.Model):
949    """Customer error of an application gateway.
950
951    :param status_code: Status code of the application gateway customer error. Possible values
952     include: "HttpStatus403", "HttpStatus502".
953    :type status_code: str or
954     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayCustomErrorStatusCode
955    :param custom_error_page_url: Error page URL of the application gateway customer error.
956    :type custom_error_page_url: str
957    """
958
959    _attribute_map = {
960        'status_code': {'key': 'statusCode', 'type': 'str'},
961        'custom_error_page_url': {'key': 'customErrorPageUrl', 'type': 'str'},
962    }
963
964    def __init__(
965        self,
966        *,
967        status_code: Optional[Union[str, "ApplicationGatewayCustomErrorStatusCode"]] = None,
968        custom_error_page_url: Optional[str] = None,
969        **kwargs
970    ):
971        super(ApplicationGatewayCustomError, self).__init__(**kwargs)
972        self.status_code = status_code
973        self.custom_error_page_url = custom_error_page_url
974
975
976class ApplicationGatewayFirewallDisabledRuleGroup(msrest.serialization.Model):
977    """Allows to disable rules within a rule group or an entire rule group.
978
979    All required parameters must be populated in order to send to Azure.
980
981    :param rule_group_name: Required. The name of the rule group that will be disabled.
982    :type rule_group_name: str
983    :param rules: The list of rules that will be disabled. If null, all rules of the rule group
984     will be disabled.
985    :type rules: list[int]
986    """
987
988    _validation = {
989        'rule_group_name': {'required': True},
990    }
991
992    _attribute_map = {
993        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
994        'rules': {'key': 'rules', 'type': '[int]'},
995    }
996
997    def __init__(
998        self,
999        *,
1000        rule_group_name: str,
1001        rules: Optional[List[int]] = None,
1002        **kwargs
1003    ):
1004        super(ApplicationGatewayFirewallDisabledRuleGroup, self).__init__(**kwargs)
1005        self.rule_group_name = rule_group_name
1006        self.rules = rules
1007
1008
1009class ApplicationGatewayFirewallExclusion(msrest.serialization.Model):
1010    """Allow to exclude some variable satisfy the condition for the WAF check.
1011
1012    All required parameters must be populated in order to send to Azure.
1013
1014    :param match_variable: Required. The variable to be excluded.
1015    :type match_variable: str
1016    :param selector_match_operator: Required. When matchVariable is a collection, operate on the
1017     selector to specify which elements in the collection this exclusion applies to.
1018    :type selector_match_operator: str
1019    :param selector: Required. When matchVariable is a collection, operator used to specify which
1020     elements in the collection this exclusion applies to.
1021    :type selector: str
1022    """
1023
1024    _validation = {
1025        'match_variable': {'required': True},
1026        'selector_match_operator': {'required': True},
1027        'selector': {'required': True},
1028    }
1029
1030    _attribute_map = {
1031        'match_variable': {'key': 'matchVariable', 'type': 'str'},
1032        'selector_match_operator': {'key': 'selectorMatchOperator', 'type': 'str'},
1033        'selector': {'key': 'selector', 'type': 'str'},
1034    }
1035
1036    def __init__(
1037        self,
1038        *,
1039        match_variable: str,
1040        selector_match_operator: str,
1041        selector: str,
1042        **kwargs
1043    ):
1044        super(ApplicationGatewayFirewallExclusion, self).__init__(**kwargs)
1045        self.match_variable = match_variable
1046        self.selector_match_operator = selector_match_operator
1047        self.selector = selector
1048
1049
1050class ApplicationGatewayFirewallRule(msrest.serialization.Model):
1051    """A web application firewall rule.
1052
1053    All required parameters must be populated in order to send to Azure.
1054
1055    :param rule_id: Required. The identifier of the web application firewall rule.
1056    :type rule_id: int
1057    :param description: The description of the web application firewall rule.
1058    :type description: str
1059    """
1060
1061    _validation = {
1062        'rule_id': {'required': True},
1063    }
1064
1065    _attribute_map = {
1066        'rule_id': {'key': 'ruleId', 'type': 'int'},
1067        'description': {'key': 'description', 'type': 'str'},
1068    }
1069
1070    def __init__(
1071        self,
1072        *,
1073        rule_id: int,
1074        description: Optional[str] = None,
1075        **kwargs
1076    ):
1077        super(ApplicationGatewayFirewallRule, self).__init__(**kwargs)
1078        self.rule_id = rule_id
1079        self.description = description
1080
1081
1082class ApplicationGatewayFirewallRuleGroup(msrest.serialization.Model):
1083    """A web application firewall rule group.
1084
1085    All required parameters must be populated in order to send to Azure.
1086
1087    :param rule_group_name: Required. The name of the web application firewall rule group.
1088    :type rule_group_name: str
1089    :param description: The description of the web application firewall rule group.
1090    :type description: str
1091    :param rules: Required. The rules of the web application firewall rule group.
1092    :type rules: list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayFirewallRule]
1093    """
1094
1095    _validation = {
1096        'rule_group_name': {'required': True},
1097        'rules': {'required': True},
1098    }
1099
1100    _attribute_map = {
1101        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
1102        'description': {'key': 'description', 'type': 'str'},
1103        'rules': {'key': 'rules', 'type': '[ApplicationGatewayFirewallRule]'},
1104    }
1105
1106    def __init__(
1107        self,
1108        *,
1109        rule_group_name: str,
1110        rules: List["ApplicationGatewayFirewallRule"],
1111        description: Optional[str] = None,
1112        **kwargs
1113    ):
1114        super(ApplicationGatewayFirewallRuleGroup, self).__init__(**kwargs)
1115        self.rule_group_name = rule_group_name
1116        self.description = description
1117        self.rules = rules
1118
1119
1120class ApplicationGatewayFirewallRuleSet(Resource):
1121    """A web application firewall rule set.
1122
1123    Variables are only populated by the server, and will be ignored when sending a request.
1124
1125    :param id: Resource ID.
1126    :type id: str
1127    :ivar name: Resource name.
1128    :vartype name: str
1129    :ivar type: Resource type.
1130    :vartype type: str
1131    :param location: Resource location.
1132    :type location: str
1133    :param tags: A set of tags. Resource tags.
1134    :type tags: dict[str, str]
1135    :ivar provisioning_state: The provisioning state of the web application firewall rule set.
1136     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
1137    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
1138    :param rule_set_type: The type of the web application firewall rule set.
1139    :type rule_set_type: str
1140    :param rule_set_version: The version of the web application firewall rule set type.
1141    :type rule_set_version: str
1142    :param rule_groups: The rule groups of the web application firewall rule set.
1143    :type rule_groups:
1144     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayFirewallRuleGroup]
1145    """
1146
1147    _validation = {
1148        'name': {'readonly': True},
1149        'type': {'readonly': True},
1150        'provisioning_state': {'readonly': True},
1151    }
1152
1153    _attribute_map = {
1154        'id': {'key': 'id', 'type': 'str'},
1155        'name': {'key': 'name', 'type': 'str'},
1156        'type': {'key': 'type', 'type': 'str'},
1157        'location': {'key': 'location', 'type': 'str'},
1158        'tags': {'key': 'tags', 'type': '{str}'},
1159        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1160        'rule_set_type': {'key': 'properties.ruleSetType', 'type': 'str'},
1161        'rule_set_version': {'key': 'properties.ruleSetVersion', 'type': 'str'},
1162        'rule_groups': {'key': 'properties.ruleGroups', 'type': '[ApplicationGatewayFirewallRuleGroup]'},
1163    }
1164
1165    def __init__(
1166        self,
1167        *,
1168        id: Optional[str] = None,
1169        location: Optional[str] = None,
1170        tags: Optional[Dict[str, str]] = None,
1171        rule_set_type: Optional[str] = None,
1172        rule_set_version: Optional[str] = None,
1173        rule_groups: Optional[List["ApplicationGatewayFirewallRuleGroup"]] = None,
1174        **kwargs
1175    ):
1176        super(ApplicationGatewayFirewallRuleSet, self).__init__(id=id, location=location, tags=tags, **kwargs)
1177        self.provisioning_state = None
1178        self.rule_set_type = rule_set_type
1179        self.rule_set_version = rule_set_version
1180        self.rule_groups = rule_groups
1181
1182
1183class ApplicationGatewayFrontendIPConfiguration(SubResource):
1184    """Frontend IP configuration of an application gateway.
1185
1186    Variables are only populated by the server, and will be ignored when sending a request.
1187
1188    :param id: Resource ID.
1189    :type id: str
1190    :param name: Name of the frontend IP configuration that is unique within an Application
1191     Gateway.
1192    :type name: str
1193    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1194    :vartype etag: str
1195    :ivar type: Type of the resource.
1196    :vartype type: str
1197    :param private_ip_address: PrivateIPAddress of the network interface IP Configuration.
1198    :type private_ip_address: str
1199    :param private_ip_allocation_method: The private IP address allocation method. Possible values
1200     include: "Static", "Dynamic".
1201    :type private_ip_allocation_method: str or
1202     ~azure.mgmt.network.v2020_04_01.models.IPAllocationMethod
1203    :param subnet: Reference to the subnet resource.
1204    :type subnet: ~azure.mgmt.network.v2020_04_01.models.SubResource
1205    :param public_ip_address: Reference to the PublicIP resource.
1206    :type public_ip_address: ~azure.mgmt.network.v2020_04_01.models.SubResource
1207    :ivar provisioning_state: The provisioning state of the frontend IP configuration resource.
1208     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
1209    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
1210    """
1211
1212    _validation = {
1213        'etag': {'readonly': True},
1214        'type': {'readonly': True},
1215        'provisioning_state': {'readonly': True},
1216    }
1217
1218    _attribute_map = {
1219        'id': {'key': 'id', 'type': 'str'},
1220        'name': {'key': 'name', 'type': 'str'},
1221        'etag': {'key': 'etag', 'type': 'str'},
1222        'type': {'key': 'type', 'type': 'str'},
1223        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
1224        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
1225        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
1226        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
1227        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1228    }
1229
1230    def __init__(
1231        self,
1232        *,
1233        id: Optional[str] = None,
1234        name: Optional[str] = None,
1235        private_ip_address: Optional[str] = None,
1236        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
1237        subnet: Optional["SubResource"] = None,
1238        public_ip_address: Optional["SubResource"] = None,
1239        **kwargs
1240    ):
1241        super(ApplicationGatewayFrontendIPConfiguration, self).__init__(id=id, **kwargs)
1242        self.name = name
1243        self.etag = None
1244        self.type = None
1245        self.private_ip_address = private_ip_address
1246        self.private_ip_allocation_method = private_ip_allocation_method
1247        self.subnet = subnet
1248        self.public_ip_address = public_ip_address
1249        self.provisioning_state = None
1250
1251
1252class ApplicationGatewayFrontendPort(SubResource):
1253    """Frontend port of an application gateway.
1254
1255    Variables are only populated by the server, and will be ignored when sending a request.
1256
1257    :param id: Resource ID.
1258    :type id: str
1259    :param name: Name of the frontend port that is unique within an Application Gateway.
1260    :type name: str
1261    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1262    :vartype etag: str
1263    :ivar type: Type of the resource.
1264    :vartype type: str
1265    :param port: Frontend port.
1266    :type port: int
1267    :ivar provisioning_state: The provisioning state of the frontend port resource. Possible values
1268     include: "Succeeded", "Updating", "Deleting", "Failed".
1269    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
1270    """
1271
1272    _validation = {
1273        'etag': {'readonly': True},
1274        'type': {'readonly': True},
1275        'provisioning_state': {'readonly': True},
1276    }
1277
1278    _attribute_map = {
1279        'id': {'key': 'id', 'type': 'str'},
1280        'name': {'key': 'name', 'type': 'str'},
1281        'etag': {'key': 'etag', 'type': 'str'},
1282        'type': {'key': 'type', 'type': 'str'},
1283        'port': {'key': 'properties.port', 'type': 'int'},
1284        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1285    }
1286
1287    def __init__(
1288        self,
1289        *,
1290        id: Optional[str] = None,
1291        name: Optional[str] = None,
1292        port: Optional[int] = None,
1293        **kwargs
1294    ):
1295        super(ApplicationGatewayFrontendPort, self).__init__(id=id, **kwargs)
1296        self.name = name
1297        self.etag = None
1298        self.type = None
1299        self.port = port
1300        self.provisioning_state = None
1301
1302
1303class ApplicationGatewayHeaderConfiguration(msrest.serialization.Model):
1304    """Header configuration of the Actions set in Application Gateway.
1305
1306    :param header_name: Header name of the header configuration.
1307    :type header_name: str
1308    :param header_value: Header value of the header configuration.
1309    :type header_value: str
1310    """
1311
1312    _attribute_map = {
1313        'header_name': {'key': 'headerName', 'type': 'str'},
1314        'header_value': {'key': 'headerValue', 'type': 'str'},
1315    }
1316
1317    def __init__(
1318        self,
1319        *,
1320        header_name: Optional[str] = None,
1321        header_value: Optional[str] = None,
1322        **kwargs
1323    ):
1324        super(ApplicationGatewayHeaderConfiguration, self).__init__(**kwargs)
1325        self.header_name = header_name
1326        self.header_value = header_value
1327
1328
1329class ApplicationGatewayHttpListener(SubResource):
1330    """Http listener of an application gateway.
1331
1332    Variables are only populated by the server, and will be ignored when sending a request.
1333
1334    :param id: Resource ID.
1335    :type id: str
1336    :param name: Name of the HTTP listener that is unique within an Application Gateway.
1337    :type name: str
1338    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1339    :vartype etag: str
1340    :ivar type: Type of the resource.
1341    :vartype type: str
1342    :param frontend_ip_configuration: Frontend IP configuration resource of an application gateway.
1343    :type frontend_ip_configuration: ~azure.mgmt.network.v2020_04_01.models.SubResource
1344    :param frontend_port: Frontend port resource of an application gateway.
1345    :type frontend_port: ~azure.mgmt.network.v2020_04_01.models.SubResource
1346    :param protocol: Protocol of the HTTP listener. Possible values include: "Http", "Https".
1347    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayProtocol
1348    :param host_name: Host name of HTTP listener.
1349    :type host_name: str
1350    :param ssl_certificate: SSL certificate resource of an application gateway.
1351    :type ssl_certificate: ~azure.mgmt.network.v2020_04_01.models.SubResource
1352    :param require_server_name_indication: Applicable only if protocol is https. Enables SNI for
1353     multi-hosting.
1354    :type require_server_name_indication: bool
1355    :ivar provisioning_state: The provisioning state of the HTTP listener resource. Possible values
1356     include: "Succeeded", "Updating", "Deleting", "Failed".
1357    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
1358    :param custom_error_configurations: Custom error configurations of the HTTP listener.
1359    :type custom_error_configurations:
1360     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayCustomError]
1361    :param firewall_policy: Reference to the FirewallPolicy resource.
1362    :type firewall_policy: ~azure.mgmt.network.v2020_04_01.models.SubResource
1363    :param host_names: List of Host names for HTTP Listener that allows special wildcard characters
1364     as well.
1365    :type host_names: list[str]
1366    """
1367
1368    _validation = {
1369        'etag': {'readonly': True},
1370        'type': {'readonly': True},
1371        'provisioning_state': {'readonly': True},
1372    }
1373
1374    _attribute_map = {
1375        'id': {'key': 'id', 'type': 'str'},
1376        'name': {'key': 'name', 'type': 'str'},
1377        'etag': {'key': 'etag', 'type': 'str'},
1378        'type': {'key': 'type', 'type': 'str'},
1379        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
1380        'frontend_port': {'key': 'properties.frontendPort', 'type': 'SubResource'},
1381        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1382        'host_name': {'key': 'properties.hostName', 'type': 'str'},
1383        'ssl_certificate': {'key': 'properties.sslCertificate', 'type': 'SubResource'},
1384        'require_server_name_indication': {'key': 'properties.requireServerNameIndication', 'type': 'bool'},
1385        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1386        'custom_error_configurations': {'key': 'properties.customErrorConfigurations', 'type': '[ApplicationGatewayCustomError]'},
1387        'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'},
1388        'host_names': {'key': 'properties.hostNames', 'type': '[str]'},
1389    }
1390
1391    def __init__(
1392        self,
1393        *,
1394        id: Optional[str] = None,
1395        name: Optional[str] = None,
1396        frontend_ip_configuration: Optional["SubResource"] = None,
1397        frontend_port: Optional["SubResource"] = None,
1398        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
1399        host_name: Optional[str] = None,
1400        ssl_certificate: Optional["SubResource"] = None,
1401        require_server_name_indication: Optional[bool] = None,
1402        custom_error_configurations: Optional[List["ApplicationGatewayCustomError"]] = None,
1403        firewall_policy: Optional["SubResource"] = None,
1404        host_names: Optional[List[str]] = None,
1405        **kwargs
1406    ):
1407        super(ApplicationGatewayHttpListener, self).__init__(id=id, **kwargs)
1408        self.name = name
1409        self.etag = None
1410        self.type = None
1411        self.frontend_ip_configuration = frontend_ip_configuration
1412        self.frontend_port = frontend_port
1413        self.protocol = protocol
1414        self.host_name = host_name
1415        self.ssl_certificate = ssl_certificate
1416        self.require_server_name_indication = require_server_name_indication
1417        self.provisioning_state = None
1418        self.custom_error_configurations = custom_error_configurations
1419        self.firewall_policy = firewall_policy
1420        self.host_names = host_names
1421
1422
1423class ApplicationGatewayIPConfiguration(SubResource):
1424    """IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.
1425
1426    Variables are only populated by the server, and will be ignored when sending a request.
1427
1428    :param id: Resource ID.
1429    :type id: str
1430    :param name: Name of the IP configuration that is unique within an Application Gateway.
1431    :type name: str
1432    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1433    :vartype etag: str
1434    :ivar type: Type of the resource.
1435    :vartype type: str
1436    :param subnet: Reference to the subnet resource. A subnet from where application gateway gets
1437     its private address.
1438    :type subnet: ~azure.mgmt.network.v2020_04_01.models.SubResource
1439    :ivar provisioning_state: The provisioning state of the application gateway IP configuration
1440     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
1441    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
1442    """
1443
1444    _validation = {
1445        'etag': {'readonly': True},
1446        'type': {'readonly': True},
1447        'provisioning_state': {'readonly': True},
1448    }
1449
1450    _attribute_map = {
1451        'id': {'key': 'id', 'type': 'str'},
1452        'name': {'key': 'name', 'type': 'str'},
1453        'etag': {'key': 'etag', 'type': 'str'},
1454        'type': {'key': 'type', 'type': 'str'},
1455        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
1456        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1457    }
1458
1459    def __init__(
1460        self,
1461        *,
1462        id: Optional[str] = None,
1463        name: Optional[str] = None,
1464        subnet: Optional["SubResource"] = None,
1465        **kwargs
1466    ):
1467        super(ApplicationGatewayIPConfiguration, self).__init__(id=id, **kwargs)
1468        self.name = name
1469        self.etag = None
1470        self.type = None
1471        self.subnet = subnet
1472        self.provisioning_state = None
1473
1474
1475class ApplicationGatewayListResult(msrest.serialization.Model):
1476    """Response for ListApplicationGateways API service call.
1477
1478    :param value: List of an application gateways in a resource group.
1479    :type value: list[~azure.mgmt.network.v2020_04_01.models.ApplicationGateway]
1480    :param next_link: URL to get the next set of results.
1481    :type next_link: str
1482    """
1483
1484    _attribute_map = {
1485        'value': {'key': 'value', 'type': '[ApplicationGateway]'},
1486        'next_link': {'key': 'nextLink', 'type': 'str'},
1487    }
1488
1489    def __init__(
1490        self,
1491        *,
1492        value: Optional[List["ApplicationGateway"]] = None,
1493        next_link: Optional[str] = None,
1494        **kwargs
1495    ):
1496        super(ApplicationGatewayListResult, self).__init__(**kwargs)
1497        self.value = value
1498        self.next_link = next_link
1499
1500
1501class ApplicationGatewayOnDemandProbe(msrest.serialization.Model):
1502    """Details of on demand test probe request.
1503
1504    :param protocol: The protocol used for the probe. Possible values include: "Http", "Https".
1505    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayProtocol
1506    :param host: Host name to send the probe to.
1507    :type host: str
1508    :param path: Relative path of probe. Valid path starts from '/'. Probe is sent to
1509     :code:`<Protocol>`://:code:`<host>`::code:`<port>`:code:`<path>`.
1510    :type path: str
1511    :param timeout: The probe timeout in seconds. Probe marked as failed if valid response is not
1512     received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
1513    :type timeout: int
1514    :param pick_host_name_from_backend_http_settings: Whether the host header should be picked from
1515     the backend http settings. Default value is false.
1516    :type pick_host_name_from_backend_http_settings: bool
1517    :param match: Criterion for classifying a healthy probe response.
1518    :type match: ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayProbeHealthResponseMatch
1519    :param backend_address_pool: Reference to backend pool of application gateway to which probe
1520     request will be sent.
1521    :type backend_address_pool: ~azure.mgmt.network.v2020_04_01.models.SubResource
1522    :param backend_http_settings: Reference to backend http setting of application gateway to be
1523     used for test probe.
1524    :type backend_http_settings: ~azure.mgmt.network.v2020_04_01.models.SubResource
1525    """
1526
1527    _attribute_map = {
1528        'protocol': {'key': 'protocol', 'type': 'str'},
1529        'host': {'key': 'host', 'type': 'str'},
1530        'path': {'key': 'path', 'type': 'str'},
1531        'timeout': {'key': 'timeout', 'type': 'int'},
1532        'pick_host_name_from_backend_http_settings': {'key': 'pickHostNameFromBackendHttpSettings', 'type': 'bool'},
1533        'match': {'key': 'match', 'type': 'ApplicationGatewayProbeHealthResponseMatch'},
1534        'backend_address_pool': {'key': 'backendAddressPool', 'type': 'SubResource'},
1535        'backend_http_settings': {'key': 'backendHttpSettings', 'type': 'SubResource'},
1536    }
1537
1538    def __init__(
1539        self,
1540        *,
1541        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
1542        host: Optional[str] = None,
1543        path: Optional[str] = None,
1544        timeout: Optional[int] = None,
1545        pick_host_name_from_backend_http_settings: Optional[bool] = None,
1546        match: Optional["ApplicationGatewayProbeHealthResponseMatch"] = None,
1547        backend_address_pool: Optional["SubResource"] = None,
1548        backend_http_settings: Optional["SubResource"] = None,
1549        **kwargs
1550    ):
1551        super(ApplicationGatewayOnDemandProbe, self).__init__(**kwargs)
1552        self.protocol = protocol
1553        self.host = host
1554        self.path = path
1555        self.timeout = timeout
1556        self.pick_host_name_from_backend_http_settings = pick_host_name_from_backend_http_settings
1557        self.match = match
1558        self.backend_address_pool = backend_address_pool
1559        self.backend_http_settings = backend_http_settings
1560
1561
1562class ApplicationGatewayPathRule(SubResource):
1563    """Path rule of URL path map of an application gateway.
1564
1565    Variables are only populated by the server, and will be ignored when sending a request.
1566
1567    :param id: Resource ID.
1568    :type id: str
1569    :param name: Name of the path rule that is unique within an Application Gateway.
1570    :type name: str
1571    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1572    :vartype etag: str
1573    :ivar type: Type of the resource.
1574    :vartype type: str
1575    :param paths: Path rules of URL path map.
1576    :type paths: list[str]
1577    :param backend_address_pool: Backend address pool resource of URL path map path rule.
1578    :type backend_address_pool: ~azure.mgmt.network.v2020_04_01.models.SubResource
1579    :param backend_http_settings: Backend http settings resource of URL path map path rule.
1580    :type backend_http_settings: ~azure.mgmt.network.v2020_04_01.models.SubResource
1581    :param redirect_configuration: Redirect configuration resource of URL path map path rule.
1582    :type redirect_configuration: ~azure.mgmt.network.v2020_04_01.models.SubResource
1583    :param rewrite_rule_set: Rewrite rule set resource of URL path map path rule.
1584    :type rewrite_rule_set: ~azure.mgmt.network.v2020_04_01.models.SubResource
1585    :ivar provisioning_state: The provisioning state of the path rule resource. Possible values
1586     include: "Succeeded", "Updating", "Deleting", "Failed".
1587    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
1588    :param firewall_policy: Reference to the FirewallPolicy resource.
1589    :type firewall_policy: ~azure.mgmt.network.v2020_04_01.models.SubResource
1590    """
1591
1592    _validation = {
1593        'etag': {'readonly': True},
1594        'type': {'readonly': True},
1595        'provisioning_state': {'readonly': True},
1596    }
1597
1598    _attribute_map = {
1599        'id': {'key': 'id', 'type': 'str'},
1600        'name': {'key': 'name', 'type': 'str'},
1601        'etag': {'key': 'etag', 'type': 'str'},
1602        'type': {'key': 'type', 'type': 'str'},
1603        'paths': {'key': 'properties.paths', 'type': '[str]'},
1604        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1605        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1606        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1607        'rewrite_rule_set': {'key': 'properties.rewriteRuleSet', 'type': 'SubResource'},
1608        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1609        'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'},
1610    }
1611
1612    def __init__(
1613        self,
1614        *,
1615        id: Optional[str] = None,
1616        name: Optional[str] = None,
1617        paths: Optional[List[str]] = None,
1618        backend_address_pool: Optional["SubResource"] = None,
1619        backend_http_settings: Optional["SubResource"] = None,
1620        redirect_configuration: Optional["SubResource"] = None,
1621        rewrite_rule_set: Optional["SubResource"] = None,
1622        firewall_policy: Optional["SubResource"] = None,
1623        **kwargs
1624    ):
1625        super(ApplicationGatewayPathRule, self).__init__(id=id, **kwargs)
1626        self.name = name
1627        self.etag = None
1628        self.type = None
1629        self.paths = paths
1630        self.backend_address_pool = backend_address_pool
1631        self.backend_http_settings = backend_http_settings
1632        self.redirect_configuration = redirect_configuration
1633        self.rewrite_rule_set = rewrite_rule_set
1634        self.provisioning_state = None
1635        self.firewall_policy = firewall_policy
1636
1637
1638class ApplicationGatewayProbe(SubResource):
1639    """Probe of the application gateway.
1640
1641    Variables are only populated by the server, and will be ignored when sending a request.
1642
1643    :param id: Resource ID.
1644    :type id: str
1645    :param name: Name of the probe that is unique within an Application Gateway.
1646    :type name: str
1647    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1648    :vartype etag: str
1649    :ivar type: Type of the resource.
1650    :vartype type: str
1651    :param protocol: The protocol used for the probe. Possible values include: "Http", "Https".
1652    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayProtocol
1653    :param host: Host name to send the probe to.
1654    :type host: str
1655    :param path: Relative path of probe. Valid path starts from '/'. Probe is sent to
1656     :code:`<Protocol>`://:code:`<host>`::code:`<port>`:code:`<path>`.
1657    :type path: str
1658    :param interval: The probing interval in seconds. This is the time interval between two
1659     consecutive probes. Acceptable values are from 1 second to 86400 seconds.
1660    :type interval: int
1661    :param timeout: The probe timeout in seconds. Probe marked as failed if valid response is not
1662     received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
1663    :type timeout: int
1664    :param unhealthy_threshold: The probe retry count. Backend server is marked down after
1665     consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second
1666     to 20.
1667    :type unhealthy_threshold: int
1668    :param pick_host_name_from_backend_http_settings: Whether the host header should be picked from
1669     the backend http settings. Default value is false.
1670    :type pick_host_name_from_backend_http_settings: bool
1671    :param min_servers: Minimum number of servers that are always marked healthy. Default value is
1672     0.
1673    :type min_servers: int
1674    :param match: Criterion for classifying a healthy probe response.
1675    :type match: ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayProbeHealthResponseMatch
1676    :ivar provisioning_state: The provisioning state of the probe resource. Possible values
1677     include: "Succeeded", "Updating", "Deleting", "Failed".
1678    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
1679    :param port: Custom port which will be used for probing the backend servers. The valid value
1680     ranges from 1 to 65535. In case not set, port from http settings will be used. This property is
1681     valid for Standard_v2 and WAF_v2 only.
1682    :type port: int
1683    """
1684
1685    _validation = {
1686        'etag': {'readonly': True},
1687        'type': {'readonly': True},
1688        'provisioning_state': {'readonly': True},
1689        'port': {'maximum': 65535, 'minimum': 1},
1690    }
1691
1692    _attribute_map = {
1693        'id': {'key': 'id', 'type': 'str'},
1694        'name': {'key': 'name', 'type': 'str'},
1695        'etag': {'key': 'etag', 'type': 'str'},
1696        'type': {'key': 'type', 'type': 'str'},
1697        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1698        'host': {'key': 'properties.host', 'type': 'str'},
1699        'path': {'key': 'properties.path', 'type': 'str'},
1700        'interval': {'key': 'properties.interval', 'type': 'int'},
1701        'timeout': {'key': 'properties.timeout', 'type': 'int'},
1702        'unhealthy_threshold': {'key': 'properties.unhealthyThreshold', 'type': 'int'},
1703        'pick_host_name_from_backend_http_settings': {'key': 'properties.pickHostNameFromBackendHttpSettings', 'type': 'bool'},
1704        'min_servers': {'key': 'properties.minServers', 'type': 'int'},
1705        'match': {'key': 'properties.match', 'type': 'ApplicationGatewayProbeHealthResponseMatch'},
1706        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1707        'port': {'key': 'properties.port', 'type': 'int'},
1708    }
1709
1710    def __init__(
1711        self,
1712        *,
1713        id: Optional[str] = None,
1714        name: Optional[str] = None,
1715        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
1716        host: Optional[str] = None,
1717        path: Optional[str] = None,
1718        interval: Optional[int] = None,
1719        timeout: Optional[int] = None,
1720        unhealthy_threshold: Optional[int] = None,
1721        pick_host_name_from_backend_http_settings: Optional[bool] = None,
1722        min_servers: Optional[int] = None,
1723        match: Optional["ApplicationGatewayProbeHealthResponseMatch"] = None,
1724        port: Optional[int] = None,
1725        **kwargs
1726    ):
1727        super(ApplicationGatewayProbe, self).__init__(id=id, **kwargs)
1728        self.name = name
1729        self.etag = None
1730        self.type = None
1731        self.protocol = protocol
1732        self.host = host
1733        self.path = path
1734        self.interval = interval
1735        self.timeout = timeout
1736        self.unhealthy_threshold = unhealthy_threshold
1737        self.pick_host_name_from_backend_http_settings = pick_host_name_from_backend_http_settings
1738        self.min_servers = min_servers
1739        self.match = match
1740        self.provisioning_state = None
1741        self.port = port
1742
1743
1744class ApplicationGatewayProbeHealthResponseMatch(msrest.serialization.Model):
1745    """Application gateway probe health response match.
1746
1747    :param body: Body that must be contained in the health response. Default value is empty.
1748    :type body: str
1749    :param status_codes: Allowed ranges of healthy status codes. Default range of healthy status
1750     codes is 200-399.
1751    :type status_codes: list[str]
1752    """
1753
1754    _attribute_map = {
1755        'body': {'key': 'body', 'type': 'str'},
1756        'status_codes': {'key': 'statusCodes', 'type': '[str]'},
1757    }
1758
1759    def __init__(
1760        self,
1761        *,
1762        body: Optional[str] = None,
1763        status_codes: Optional[List[str]] = None,
1764        **kwargs
1765    ):
1766        super(ApplicationGatewayProbeHealthResponseMatch, self).__init__(**kwargs)
1767        self.body = body
1768        self.status_codes = status_codes
1769
1770
1771class ApplicationGatewayRedirectConfiguration(SubResource):
1772    """Redirect configuration of an application gateway.
1773
1774    Variables are only populated by the server, and will be ignored when sending a request.
1775
1776    :param id: Resource ID.
1777    :type id: str
1778    :param name: Name of the redirect configuration that is unique within an Application Gateway.
1779    :type name: str
1780    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1781    :vartype etag: str
1782    :ivar type: Type of the resource.
1783    :vartype type: str
1784    :param redirect_type: HTTP redirection type. Possible values include: "Permanent", "Found",
1785     "SeeOther", "Temporary".
1786    :type redirect_type: str or
1787     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayRedirectType
1788    :param target_listener: Reference to a listener to redirect the request to.
1789    :type target_listener: ~azure.mgmt.network.v2020_04_01.models.SubResource
1790    :param target_url: Url to redirect the request to.
1791    :type target_url: str
1792    :param include_path: Include path in the redirected url.
1793    :type include_path: bool
1794    :param include_query_string: Include query string in the redirected url.
1795    :type include_query_string: bool
1796    :param request_routing_rules: Request routing specifying redirect configuration.
1797    :type request_routing_rules: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
1798    :param url_path_maps: Url path maps specifying default redirect configuration.
1799    :type url_path_maps: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
1800    :param path_rules: Path rules specifying redirect configuration.
1801    :type path_rules: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
1802    """
1803
1804    _validation = {
1805        'etag': {'readonly': True},
1806        'type': {'readonly': True},
1807    }
1808
1809    _attribute_map = {
1810        'id': {'key': 'id', 'type': 'str'},
1811        'name': {'key': 'name', 'type': 'str'},
1812        'etag': {'key': 'etag', 'type': 'str'},
1813        'type': {'key': 'type', 'type': 'str'},
1814        'redirect_type': {'key': 'properties.redirectType', 'type': 'str'},
1815        'target_listener': {'key': 'properties.targetListener', 'type': 'SubResource'},
1816        'target_url': {'key': 'properties.targetUrl', 'type': 'str'},
1817        'include_path': {'key': 'properties.includePath', 'type': 'bool'},
1818        'include_query_string': {'key': 'properties.includeQueryString', 'type': 'bool'},
1819        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[SubResource]'},
1820        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[SubResource]'},
1821        'path_rules': {'key': 'properties.pathRules', 'type': '[SubResource]'},
1822    }
1823
1824    def __init__(
1825        self,
1826        *,
1827        id: Optional[str] = None,
1828        name: Optional[str] = None,
1829        redirect_type: Optional[Union[str, "ApplicationGatewayRedirectType"]] = None,
1830        target_listener: Optional["SubResource"] = None,
1831        target_url: Optional[str] = None,
1832        include_path: Optional[bool] = None,
1833        include_query_string: Optional[bool] = None,
1834        request_routing_rules: Optional[List["SubResource"]] = None,
1835        url_path_maps: Optional[List["SubResource"]] = None,
1836        path_rules: Optional[List["SubResource"]] = None,
1837        **kwargs
1838    ):
1839        super(ApplicationGatewayRedirectConfiguration, self).__init__(id=id, **kwargs)
1840        self.name = name
1841        self.etag = None
1842        self.type = None
1843        self.redirect_type = redirect_type
1844        self.target_listener = target_listener
1845        self.target_url = target_url
1846        self.include_path = include_path
1847        self.include_query_string = include_query_string
1848        self.request_routing_rules = request_routing_rules
1849        self.url_path_maps = url_path_maps
1850        self.path_rules = path_rules
1851
1852
1853class ApplicationGatewayRequestRoutingRule(SubResource):
1854    """Request routing rule of an application gateway.
1855
1856    Variables are only populated by the server, and will be ignored when sending a request.
1857
1858    :param id: Resource ID.
1859    :type id: str
1860    :param name: Name of the request routing rule that is unique within an Application Gateway.
1861    :type name: str
1862    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1863    :vartype etag: str
1864    :ivar type: Type of the resource.
1865    :vartype type: str
1866    :param rule_type: Rule type. Possible values include: "Basic", "PathBasedRouting".
1867    :type rule_type: str or
1868     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayRequestRoutingRuleType
1869    :param priority: Priority of the request routing rule.
1870    :type priority: int
1871    :param backend_address_pool: Backend address pool resource of the application gateway.
1872    :type backend_address_pool: ~azure.mgmt.network.v2020_04_01.models.SubResource
1873    :param backend_http_settings: Backend http settings resource of the application gateway.
1874    :type backend_http_settings: ~azure.mgmt.network.v2020_04_01.models.SubResource
1875    :param http_listener: Http listener resource of the application gateway.
1876    :type http_listener: ~azure.mgmt.network.v2020_04_01.models.SubResource
1877    :param url_path_map: URL path map resource of the application gateway.
1878    :type url_path_map: ~azure.mgmt.network.v2020_04_01.models.SubResource
1879    :param rewrite_rule_set: Rewrite Rule Set resource in Basic rule of the application gateway.
1880    :type rewrite_rule_set: ~azure.mgmt.network.v2020_04_01.models.SubResource
1881    :param redirect_configuration: Redirect configuration resource of the application gateway.
1882    :type redirect_configuration: ~azure.mgmt.network.v2020_04_01.models.SubResource
1883    :ivar provisioning_state: The provisioning state of the request routing rule resource. Possible
1884     values include: "Succeeded", "Updating", "Deleting", "Failed".
1885    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
1886    """
1887
1888    _validation = {
1889        'etag': {'readonly': True},
1890        'type': {'readonly': True},
1891        'priority': {'maximum': 20000, 'minimum': 1},
1892        'provisioning_state': {'readonly': True},
1893    }
1894
1895    _attribute_map = {
1896        'id': {'key': 'id', 'type': 'str'},
1897        'name': {'key': 'name', 'type': 'str'},
1898        'etag': {'key': 'etag', 'type': 'str'},
1899        'type': {'key': 'type', 'type': 'str'},
1900        'rule_type': {'key': 'properties.ruleType', 'type': 'str'},
1901        'priority': {'key': 'properties.priority', 'type': 'int'},
1902        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1903        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1904        'http_listener': {'key': 'properties.httpListener', 'type': 'SubResource'},
1905        'url_path_map': {'key': 'properties.urlPathMap', 'type': 'SubResource'},
1906        'rewrite_rule_set': {'key': 'properties.rewriteRuleSet', 'type': 'SubResource'},
1907        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1908        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1909    }
1910
1911    def __init__(
1912        self,
1913        *,
1914        id: Optional[str] = None,
1915        name: Optional[str] = None,
1916        rule_type: Optional[Union[str, "ApplicationGatewayRequestRoutingRuleType"]] = None,
1917        priority: Optional[int] = None,
1918        backend_address_pool: Optional["SubResource"] = None,
1919        backend_http_settings: Optional["SubResource"] = None,
1920        http_listener: Optional["SubResource"] = None,
1921        url_path_map: Optional["SubResource"] = None,
1922        rewrite_rule_set: Optional["SubResource"] = None,
1923        redirect_configuration: Optional["SubResource"] = None,
1924        **kwargs
1925    ):
1926        super(ApplicationGatewayRequestRoutingRule, self).__init__(id=id, **kwargs)
1927        self.name = name
1928        self.etag = None
1929        self.type = None
1930        self.rule_type = rule_type
1931        self.priority = priority
1932        self.backend_address_pool = backend_address_pool
1933        self.backend_http_settings = backend_http_settings
1934        self.http_listener = http_listener
1935        self.url_path_map = url_path_map
1936        self.rewrite_rule_set = rewrite_rule_set
1937        self.redirect_configuration = redirect_configuration
1938        self.provisioning_state = None
1939
1940
1941class ApplicationGatewayRewriteRule(msrest.serialization.Model):
1942    """Rewrite rule of an application gateway.
1943
1944    :param name: Name of the rewrite rule that is unique within an Application Gateway.
1945    :type name: str
1946    :param rule_sequence: Rule Sequence of the rewrite rule that determines the order of execution
1947     of a particular rule in a RewriteRuleSet.
1948    :type rule_sequence: int
1949    :param conditions: Conditions based on which the action set execution will be evaluated.
1950    :type conditions:
1951     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayRewriteRuleCondition]
1952    :param action_set: Set of actions to be done as part of the rewrite Rule.
1953    :type action_set: ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayRewriteRuleActionSet
1954    """
1955
1956    _attribute_map = {
1957        'name': {'key': 'name', 'type': 'str'},
1958        'rule_sequence': {'key': 'ruleSequence', 'type': 'int'},
1959        'conditions': {'key': 'conditions', 'type': '[ApplicationGatewayRewriteRuleCondition]'},
1960        'action_set': {'key': 'actionSet', 'type': 'ApplicationGatewayRewriteRuleActionSet'},
1961    }
1962
1963    def __init__(
1964        self,
1965        *,
1966        name: Optional[str] = None,
1967        rule_sequence: Optional[int] = None,
1968        conditions: Optional[List["ApplicationGatewayRewriteRuleCondition"]] = None,
1969        action_set: Optional["ApplicationGatewayRewriteRuleActionSet"] = None,
1970        **kwargs
1971    ):
1972        super(ApplicationGatewayRewriteRule, self).__init__(**kwargs)
1973        self.name = name
1974        self.rule_sequence = rule_sequence
1975        self.conditions = conditions
1976        self.action_set = action_set
1977
1978
1979class ApplicationGatewayRewriteRuleActionSet(msrest.serialization.Model):
1980    """Set of actions in the Rewrite Rule in Application Gateway.
1981
1982    :param request_header_configurations: Request Header Actions in the Action Set.
1983    :type request_header_configurations:
1984     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayHeaderConfiguration]
1985    :param response_header_configurations: Response Header Actions in the Action Set.
1986    :type response_header_configurations:
1987     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayHeaderConfiguration]
1988    :param url_configuration: Url Configuration Action in the Action Set.
1989    :type url_configuration:
1990     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayUrlConfiguration
1991    """
1992
1993    _attribute_map = {
1994        'request_header_configurations': {'key': 'requestHeaderConfigurations', 'type': '[ApplicationGatewayHeaderConfiguration]'},
1995        'response_header_configurations': {'key': 'responseHeaderConfigurations', 'type': '[ApplicationGatewayHeaderConfiguration]'},
1996        'url_configuration': {'key': 'urlConfiguration', 'type': 'ApplicationGatewayUrlConfiguration'},
1997    }
1998
1999    def __init__(
2000        self,
2001        *,
2002        request_header_configurations: Optional[List["ApplicationGatewayHeaderConfiguration"]] = None,
2003        response_header_configurations: Optional[List["ApplicationGatewayHeaderConfiguration"]] = None,
2004        url_configuration: Optional["ApplicationGatewayUrlConfiguration"] = None,
2005        **kwargs
2006    ):
2007        super(ApplicationGatewayRewriteRuleActionSet, self).__init__(**kwargs)
2008        self.request_header_configurations = request_header_configurations
2009        self.response_header_configurations = response_header_configurations
2010        self.url_configuration = url_configuration
2011
2012
2013class ApplicationGatewayRewriteRuleCondition(msrest.serialization.Model):
2014    """Set of conditions in the Rewrite Rule in Application Gateway.
2015
2016    :param variable: The condition parameter of the RewriteRuleCondition.
2017    :type variable: str
2018    :param pattern: The pattern, either fixed string or regular expression, that evaluates the
2019     truthfulness of the condition.
2020    :type pattern: str
2021    :param ignore_case: Setting this parameter to truth value with force the pattern to do a case
2022     in-sensitive comparison.
2023    :type ignore_case: bool
2024    :param negate: Setting this value as truth will force to check the negation of the condition
2025     given by the user.
2026    :type negate: bool
2027    """
2028
2029    _attribute_map = {
2030        'variable': {'key': 'variable', 'type': 'str'},
2031        'pattern': {'key': 'pattern', 'type': 'str'},
2032        'ignore_case': {'key': 'ignoreCase', 'type': 'bool'},
2033        'negate': {'key': 'negate', 'type': 'bool'},
2034    }
2035
2036    def __init__(
2037        self,
2038        *,
2039        variable: Optional[str] = None,
2040        pattern: Optional[str] = None,
2041        ignore_case: Optional[bool] = None,
2042        negate: Optional[bool] = None,
2043        **kwargs
2044    ):
2045        super(ApplicationGatewayRewriteRuleCondition, self).__init__(**kwargs)
2046        self.variable = variable
2047        self.pattern = pattern
2048        self.ignore_case = ignore_case
2049        self.negate = negate
2050
2051
2052class ApplicationGatewayRewriteRuleSet(SubResource):
2053    """Rewrite rule set of an application gateway.
2054
2055    Variables are only populated by the server, and will be ignored when sending a request.
2056
2057    :param id: Resource ID.
2058    :type id: str
2059    :param name: Name of the rewrite rule set that is unique within an Application Gateway.
2060    :type name: str
2061    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2062    :vartype etag: str
2063    :param rewrite_rules: Rewrite rules in the rewrite rule set.
2064    :type rewrite_rules: list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayRewriteRule]
2065    :ivar provisioning_state: The provisioning state of the rewrite rule set resource. Possible
2066     values include: "Succeeded", "Updating", "Deleting", "Failed".
2067    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
2068    """
2069
2070    _validation = {
2071        'etag': {'readonly': True},
2072        'provisioning_state': {'readonly': True},
2073    }
2074
2075    _attribute_map = {
2076        'id': {'key': 'id', 'type': 'str'},
2077        'name': {'key': 'name', 'type': 'str'},
2078        'etag': {'key': 'etag', 'type': 'str'},
2079        'rewrite_rules': {'key': 'properties.rewriteRules', 'type': '[ApplicationGatewayRewriteRule]'},
2080        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2081    }
2082
2083    def __init__(
2084        self,
2085        *,
2086        id: Optional[str] = None,
2087        name: Optional[str] = None,
2088        rewrite_rules: Optional[List["ApplicationGatewayRewriteRule"]] = None,
2089        **kwargs
2090    ):
2091        super(ApplicationGatewayRewriteRuleSet, self).__init__(id=id, **kwargs)
2092        self.name = name
2093        self.etag = None
2094        self.rewrite_rules = rewrite_rules
2095        self.provisioning_state = None
2096
2097
2098class ApplicationGatewaySku(msrest.serialization.Model):
2099    """SKU of an application gateway.
2100
2101    :param name: Name of an application gateway SKU. Possible values include: "Standard_Small",
2102     "Standard_Medium", "Standard_Large", "WAF_Medium", "WAF_Large", "Standard_v2", "WAF_v2".
2103    :type name: str or ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySkuName
2104    :param tier: Tier of an application gateway. Possible values include: "Standard", "WAF",
2105     "Standard_v2", "WAF_v2".
2106    :type tier: str or ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayTier
2107    :param capacity: Capacity (instance count) of an application gateway.
2108    :type capacity: int
2109    """
2110
2111    _attribute_map = {
2112        'name': {'key': 'name', 'type': 'str'},
2113        'tier': {'key': 'tier', 'type': 'str'},
2114        'capacity': {'key': 'capacity', 'type': 'int'},
2115    }
2116
2117    def __init__(
2118        self,
2119        *,
2120        name: Optional[Union[str, "ApplicationGatewaySkuName"]] = None,
2121        tier: Optional[Union[str, "ApplicationGatewayTier"]] = None,
2122        capacity: Optional[int] = None,
2123        **kwargs
2124    ):
2125        super(ApplicationGatewaySku, self).__init__(**kwargs)
2126        self.name = name
2127        self.tier = tier
2128        self.capacity = capacity
2129
2130
2131class ApplicationGatewaySslCertificate(SubResource):
2132    """SSL certificates of an application gateway.
2133
2134    Variables are only populated by the server, and will be ignored when sending a request.
2135
2136    :param id: Resource ID.
2137    :type id: str
2138    :param name: Name of the SSL certificate that is unique within an Application Gateway.
2139    :type name: str
2140    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2141    :vartype etag: str
2142    :ivar type: Type of the resource.
2143    :vartype type: str
2144    :param data: Base-64 encoded pfx certificate. Only applicable in PUT Request.
2145    :type data: str
2146    :param password: Password for the pfx file specified in data. Only applicable in PUT request.
2147    :type password: str
2148    :ivar public_cert_data: Base-64 encoded Public cert data corresponding to pfx specified in
2149     data. Only applicable in GET request.
2150    :vartype public_cert_data: str
2151    :param key_vault_secret_id: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or
2152     'Certificate' object stored in KeyVault.
2153    :type key_vault_secret_id: str
2154    :ivar provisioning_state: The provisioning state of the SSL certificate resource. Possible
2155     values include: "Succeeded", "Updating", "Deleting", "Failed".
2156    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
2157    """
2158
2159    _validation = {
2160        'etag': {'readonly': True},
2161        'type': {'readonly': True},
2162        'public_cert_data': {'readonly': True},
2163        'provisioning_state': {'readonly': True},
2164    }
2165
2166    _attribute_map = {
2167        'id': {'key': 'id', 'type': 'str'},
2168        'name': {'key': 'name', 'type': 'str'},
2169        'etag': {'key': 'etag', 'type': 'str'},
2170        'type': {'key': 'type', 'type': 'str'},
2171        'data': {'key': 'properties.data', 'type': 'str'},
2172        'password': {'key': 'properties.password', 'type': 'str'},
2173        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
2174        'key_vault_secret_id': {'key': 'properties.keyVaultSecretId', 'type': 'str'},
2175        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2176    }
2177
2178    def __init__(
2179        self,
2180        *,
2181        id: Optional[str] = None,
2182        name: Optional[str] = None,
2183        data: Optional[str] = None,
2184        password: Optional[str] = None,
2185        key_vault_secret_id: Optional[str] = None,
2186        **kwargs
2187    ):
2188        super(ApplicationGatewaySslCertificate, self).__init__(id=id, **kwargs)
2189        self.name = name
2190        self.etag = None
2191        self.type = None
2192        self.data = data
2193        self.password = password
2194        self.public_cert_data = None
2195        self.key_vault_secret_id = key_vault_secret_id
2196        self.provisioning_state = None
2197
2198
2199class ApplicationGatewaySslPolicy(msrest.serialization.Model):
2200    """Application Gateway Ssl policy.
2201
2202    :param disabled_ssl_protocols: Ssl protocols to be disabled on application gateway.
2203    :type disabled_ssl_protocols: list[str or
2204     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslProtocol]
2205    :param policy_type: Type of Ssl Policy. Possible values include: "Predefined", "Custom".
2206    :type policy_type: str or
2207     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslPolicyType
2208    :param policy_name: Name of Ssl predefined policy. Possible values include:
2209     "AppGwSslPolicy20150501", "AppGwSslPolicy20170401", "AppGwSslPolicy20170401S".
2210    :type policy_name: str or
2211     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslPolicyName
2212    :param cipher_suites: Ssl cipher suites to be enabled in the specified order to application
2213     gateway.
2214    :type cipher_suites: list[str or
2215     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslCipherSuite]
2216    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
2217     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
2218    :type min_protocol_version: str or
2219     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslProtocol
2220    """
2221
2222    _attribute_map = {
2223        'disabled_ssl_protocols': {'key': 'disabledSslProtocols', 'type': '[str]'},
2224        'policy_type': {'key': 'policyType', 'type': 'str'},
2225        'policy_name': {'key': 'policyName', 'type': 'str'},
2226        'cipher_suites': {'key': 'cipherSuites', 'type': '[str]'},
2227        'min_protocol_version': {'key': 'minProtocolVersion', 'type': 'str'},
2228    }
2229
2230    def __init__(
2231        self,
2232        *,
2233        disabled_ssl_protocols: Optional[List[Union[str, "ApplicationGatewaySslProtocol"]]] = None,
2234        policy_type: Optional[Union[str, "ApplicationGatewaySslPolicyType"]] = None,
2235        policy_name: Optional[Union[str, "ApplicationGatewaySslPolicyName"]] = None,
2236        cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
2237        min_protocol_version: Optional[Union[str, "ApplicationGatewaySslProtocol"]] = None,
2238        **kwargs
2239    ):
2240        super(ApplicationGatewaySslPolicy, self).__init__(**kwargs)
2241        self.disabled_ssl_protocols = disabled_ssl_protocols
2242        self.policy_type = policy_type
2243        self.policy_name = policy_name
2244        self.cipher_suites = cipher_suites
2245        self.min_protocol_version = min_protocol_version
2246
2247
2248class ApplicationGatewaySslPredefinedPolicy(SubResource):
2249    """An Ssl predefined policy.
2250
2251    :param id: Resource ID.
2252    :type id: str
2253    :param name: Name of the Ssl predefined policy.
2254    :type name: str
2255    :param cipher_suites: Ssl cipher suites to be enabled in the specified order for application
2256     gateway.
2257    :type cipher_suites: list[str or
2258     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslCipherSuite]
2259    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
2260     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
2261    :type min_protocol_version: str or
2262     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewaySslProtocol
2263    """
2264
2265    _attribute_map = {
2266        'id': {'key': 'id', 'type': 'str'},
2267        'name': {'key': 'name', 'type': 'str'},
2268        'cipher_suites': {'key': 'properties.cipherSuites', 'type': '[str]'},
2269        'min_protocol_version': {'key': 'properties.minProtocolVersion', 'type': 'str'},
2270    }
2271
2272    def __init__(
2273        self,
2274        *,
2275        id: Optional[str] = None,
2276        name: Optional[str] = None,
2277        cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
2278        min_protocol_version: Optional[Union[str, "ApplicationGatewaySslProtocol"]] = None,
2279        **kwargs
2280    ):
2281        super(ApplicationGatewaySslPredefinedPolicy, self).__init__(id=id, **kwargs)
2282        self.name = name
2283        self.cipher_suites = cipher_suites
2284        self.min_protocol_version = min_protocol_version
2285
2286
2287class ApplicationGatewayTrustedRootCertificate(SubResource):
2288    """Trusted Root certificates of an application gateway.
2289
2290    Variables are only populated by the server, and will be ignored when sending a request.
2291
2292    :param id: Resource ID.
2293    :type id: str
2294    :param name: Name of the trusted root certificate that is unique within an Application Gateway.
2295    :type name: str
2296    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2297    :vartype etag: str
2298    :ivar type: Type of the resource.
2299    :vartype type: str
2300    :param data: Certificate public data.
2301    :type data: str
2302    :param key_vault_secret_id: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or
2303     'Certificate' object stored in KeyVault.
2304    :type key_vault_secret_id: str
2305    :ivar provisioning_state: The provisioning state of the trusted root certificate resource.
2306     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
2307    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
2308    """
2309
2310    _validation = {
2311        'etag': {'readonly': True},
2312        'type': {'readonly': True},
2313        'provisioning_state': {'readonly': True},
2314    }
2315
2316    _attribute_map = {
2317        'id': {'key': 'id', 'type': 'str'},
2318        'name': {'key': 'name', 'type': 'str'},
2319        'etag': {'key': 'etag', 'type': 'str'},
2320        'type': {'key': 'type', 'type': 'str'},
2321        'data': {'key': 'properties.data', 'type': 'str'},
2322        'key_vault_secret_id': {'key': 'properties.keyVaultSecretId', 'type': 'str'},
2323        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2324    }
2325
2326    def __init__(
2327        self,
2328        *,
2329        id: Optional[str] = None,
2330        name: Optional[str] = None,
2331        data: Optional[str] = None,
2332        key_vault_secret_id: Optional[str] = None,
2333        **kwargs
2334    ):
2335        super(ApplicationGatewayTrustedRootCertificate, self).__init__(id=id, **kwargs)
2336        self.name = name
2337        self.etag = None
2338        self.type = None
2339        self.data = data
2340        self.key_vault_secret_id = key_vault_secret_id
2341        self.provisioning_state = None
2342
2343
2344class ApplicationGatewayUrlConfiguration(msrest.serialization.Model):
2345    """Url configuration of the Actions set in Application Gateway.
2346
2347    :param modified_path: Url path which user has provided for url rewrite. Null means no path will
2348     be updated. Default value is null.
2349    :type modified_path: str
2350    :param modified_query_string: Query string which user has provided for url rewrite. Null means
2351     no query string will be updated. Default value is null.
2352    :type modified_query_string: str
2353    :param reroute: If set as true, it will re-evaluate the url path map provided in path based
2354     request routing rules using modified path. Default value is false.
2355    :type reroute: bool
2356    """
2357
2358    _attribute_map = {
2359        'modified_path': {'key': 'modifiedPath', 'type': 'str'},
2360        'modified_query_string': {'key': 'modifiedQueryString', 'type': 'str'},
2361        'reroute': {'key': 'reroute', 'type': 'bool'},
2362    }
2363
2364    def __init__(
2365        self,
2366        *,
2367        modified_path: Optional[str] = None,
2368        modified_query_string: Optional[str] = None,
2369        reroute: Optional[bool] = None,
2370        **kwargs
2371    ):
2372        super(ApplicationGatewayUrlConfiguration, self).__init__(**kwargs)
2373        self.modified_path = modified_path
2374        self.modified_query_string = modified_query_string
2375        self.reroute = reroute
2376
2377
2378class ApplicationGatewayUrlPathMap(SubResource):
2379    """UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.
2380
2381    Variables are only populated by the server, and will be ignored when sending a request.
2382
2383    :param id: Resource ID.
2384    :type id: str
2385    :param name: Name of the URL path map that is unique within an Application Gateway.
2386    :type name: str
2387    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2388    :vartype etag: str
2389    :ivar type: Type of the resource.
2390    :vartype type: str
2391    :param default_backend_address_pool: Default backend address pool resource of URL path map.
2392    :type default_backend_address_pool: ~azure.mgmt.network.v2020_04_01.models.SubResource
2393    :param default_backend_http_settings: Default backend http settings resource of URL path map.
2394    :type default_backend_http_settings: ~azure.mgmt.network.v2020_04_01.models.SubResource
2395    :param default_rewrite_rule_set: Default Rewrite rule set resource of URL path map.
2396    :type default_rewrite_rule_set: ~azure.mgmt.network.v2020_04_01.models.SubResource
2397    :param default_redirect_configuration: Default redirect configuration resource of URL path map.
2398    :type default_redirect_configuration: ~azure.mgmt.network.v2020_04_01.models.SubResource
2399    :param path_rules: Path rule of URL path map resource.
2400    :type path_rules: list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayPathRule]
2401    :ivar provisioning_state: The provisioning state of the URL path map resource. Possible values
2402     include: "Succeeded", "Updating", "Deleting", "Failed".
2403    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
2404    """
2405
2406    _validation = {
2407        'etag': {'readonly': True},
2408        'type': {'readonly': True},
2409        'provisioning_state': {'readonly': True},
2410    }
2411
2412    _attribute_map = {
2413        'id': {'key': 'id', 'type': 'str'},
2414        'name': {'key': 'name', 'type': 'str'},
2415        'etag': {'key': 'etag', 'type': 'str'},
2416        'type': {'key': 'type', 'type': 'str'},
2417        'default_backend_address_pool': {'key': 'properties.defaultBackendAddressPool', 'type': 'SubResource'},
2418        'default_backend_http_settings': {'key': 'properties.defaultBackendHttpSettings', 'type': 'SubResource'},
2419        'default_rewrite_rule_set': {'key': 'properties.defaultRewriteRuleSet', 'type': 'SubResource'},
2420        'default_redirect_configuration': {'key': 'properties.defaultRedirectConfiguration', 'type': 'SubResource'},
2421        'path_rules': {'key': 'properties.pathRules', 'type': '[ApplicationGatewayPathRule]'},
2422        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2423    }
2424
2425    def __init__(
2426        self,
2427        *,
2428        id: Optional[str] = None,
2429        name: Optional[str] = None,
2430        default_backend_address_pool: Optional["SubResource"] = None,
2431        default_backend_http_settings: Optional["SubResource"] = None,
2432        default_rewrite_rule_set: Optional["SubResource"] = None,
2433        default_redirect_configuration: Optional["SubResource"] = None,
2434        path_rules: Optional[List["ApplicationGatewayPathRule"]] = None,
2435        **kwargs
2436    ):
2437        super(ApplicationGatewayUrlPathMap, self).__init__(id=id, **kwargs)
2438        self.name = name
2439        self.etag = None
2440        self.type = None
2441        self.default_backend_address_pool = default_backend_address_pool
2442        self.default_backend_http_settings = default_backend_http_settings
2443        self.default_rewrite_rule_set = default_rewrite_rule_set
2444        self.default_redirect_configuration = default_redirect_configuration
2445        self.path_rules = path_rules
2446        self.provisioning_state = None
2447
2448
2449class ApplicationGatewayWebApplicationFirewallConfiguration(msrest.serialization.Model):
2450    """Application gateway web application firewall configuration.
2451
2452    All required parameters must be populated in order to send to Azure.
2453
2454    :param enabled: Required. Whether the web application firewall is enabled or not.
2455    :type enabled: bool
2456    :param firewall_mode: Required. Web application firewall mode. Possible values include:
2457     "Detection", "Prevention".
2458    :type firewall_mode: str or
2459     ~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayFirewallMode
2460    :param rule_set_type: Required. The type of the web application firewall rule set. Possible
2461     values are: 'OWASP'.
2462    :type rule_set_type: str
2463    :param rule_set_version: Required. The version of the rule set type.
2464    :type rule_set_version: str
2465    :param disabled_rule_groups: The disabled rule groups.
2466    :type disabled_rule_groups:
2467     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayFirewallDisabledRuleGroup]
2468    :param request_body_check: Whether allow WAF to check request Body.
2469    :type request_body_check: bool
2470    :param max_request_body_size: Maximum request body size for WAF.
2471    :type max_request_body_size: int
2472    :param max_request_body_size_in_kb: Maximum request body size in Kb for WAF.
2473    :type max_request_body_size_in_kb: int
2474    :param file_upload_limit_in_mb: Maximum file upload size in Mb for WAF.
2475    :type file_upload_limit_in_mb: int
2476    :param exclusions: The exclusion list.
2477    :type exclusions:
2478     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayFirewallExclusion]
2479    """
2480
2481    _validation = {
2482        'enabled': {'required': True},
2483        'firewall_mode': {'required': True},
2484        'rule_set_type': {'required': True},
2485        'rule_set_version': {'required': True},
2486        'max_request_body_size': {'maximum': 128, 'minimum': 8},
2487        'max_request_body_size_in_kb': {'maximum': 128, 'minimum': 8},
2488        'file_upload_limit_in_mb': {'minimum': 0},
2489    }
2490
2491    _attribute_map = {
2492        'enabled': {'key': 'enabled', 'type': 'bool'},
2493        'firewall_mode': {'key': 'firewallMode', 'type': 'str'},
2494        'rule_set_type': {'key': 'ruleSetType', 'type': 'str'},
2495        'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'},
2496        'disabled_rule_groups': {'key': 'disabledRuleGroups', 'type': '[ApplicationGatewayFirewallDisabledRuleGroup]'},
2497        'request_body_check': {'key': 'requestBodyCheck', 'type': 'bool'},
2498        'max_request_body_size': {'key': 'maxRequestBodySize', 'type': 'int'},
2499        'max_request_body_size_in_kb': {'key': 'maxRequestBodySizeInKb', 'type': 'int'},
2500        'file_upload_limit_in_mb': {'key': 'fileUploadLimitInMb', 'type': 'int'},
2501        'exclusions': {'key': 'exclusions', 'type': '[ApplicationGatewayFirewallExclusion]'},
2502    }
2503
2504    def __init__(
2505        self,
2506        *,
2507        enabled: bool,
2508        firewall_mode: Union[str, "ApplicationGatewayFirewallMode"],
2509        rule_set_type: str,
2510        rule_set_version: str,
2511        disabled_rule_groups: Optional[List["ApplicationGatewayFirewallDisabledRuleGroup"]] = None,
2512        request_body_check: Optional[bool] = None,
2513        max_request_body_size: Optional[int] = None,
2514        max_request_body_size_in_kb: Optional[int] = None,
2515        file_upload_limit_in_mb: Optional[int] = None,
2516        exclusions: Optional[List["ApplicationGatewayFirewallExclusion"]] = None,
2517        **kwargs
2518    ):
2519        super(ApplicationGatewayWebApplicationFirewallConfiguration, self).__init__(**kwargs)
2520        self.enabled = enabled
2521        self.firewall_mode = firewall_mode
2522        self.rule_set_type = rule_set_type
2523        self.rule_set_version = rule_set_version
2524        self.disabled_rule_groups = disabled_rule_groups
2525        self.request_body_check = request_body_check
2526        self.max_request_body_size = max_request_body_size
2527        self.max_request_body_size_in_kb = max_request_body_size_in_kb
2528        self.file_upload_limit_in_mb = file_upload_limit_in_mb
2529        self.exclusions = exclusions
2530
2531
2532class FirewallPolicyRuleCondition(msrest.serialization.Model):
2533    """Properties of a rule.
2534
2535    You probably want to use the sub-classes and not this class directly. Known
2536    sub-classes are: ApplicationRuleCondition, NatRuleCondition, NetworkRuleCondition.
2537
2538    All required parameters must be populated in order to send to Azure.
2539
2540    :param name: Name of the rule condition.
2541    :type name: str
2542    :param description: Description of the rule condition.
2543    :type description: str
2544    :param rule_condition_type: Required. Rule Condition Type.Constant filled by server.  Possible
2545     values include: "ApplicationRuleCondition", "NetworkRuleCondition", "NatRuleCondition".
2546    :type rule_condition_type: str or
2547     ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleConditionType
2548    """
2549
2550    _validation = {
2551        'rule_condition_type': {'required': True},
2552    }
2553
2554    _attribute_map = {
2555        'name': {'key': 'name', 'type': 'str'},
2556        'description': {'key': 'description', 'type': 'str'},
2557        'rule_condition_type': {'key': 'ruleConditionType', 'type': 'str'},
2558    }
2559
2560    _subtype_map = {
2561        'rule_condition_type': {'ApplicationRuleCondition': 'ApplicationRuleCondition', 'NatRuleCondition': 'NatRuleCondition', 'NetworkRuleCondition': 'NetworkRuleCondition'}
2562    }
2563
2564    def __init__(
2565        self,
2566        *,
2567        name: Optional[str] = None,
2568        description: Optional[str] = None,
2569        **kwargs
2570    ):
2571        super(FirewallPolicyRuleCondition, self).__init__(**kwargs)
2572        self.name = name
2573        self.description = description
2574        self.rule_condition_type = None  # type: Optional[str]
2575
2576
2577class ApplicationRuleCondition(FirewallPolicyRuleCondition):
2578    """Rule condition of type application.
2579
2580    All required parameters must be populated in order to send to Azure.
2581
2582    :param name: Name of the rule condition.
2583    :type name: str
2584    :param description: Description of the rule condition.
2585    :type description: str
2586    :param rule_condition_type: Required. Rule Condition Type.Constant filled by server.  Possible
2587     values include: "ApplicationRuleCondition", "NetworkRuleCondition", "NatRuleCondition".
2588    :type rule_condition_type: str or
2589     ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleConditionType
2590    :param source_addresses: List of source IP addresses for this rule.
2591    :type source_addresses: list[str]
2592    :param destination_addresses: List of destination IP addresses or Service Tags.
2593    :type destination_addresses: list[str]
2594    :param protocols: Array of Application Protocols.
2595    :type protocols:
2596     list[~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleConditionApplicationProtocol]
2597    :param target_fqdns: List of FQDNs for this rule condition.
2598    :type target_fqdns: list[str]
2599    :param fqdn_tags: List of FQDN Tags for this rule condition.
2600    :type fqdn_tags: list[str]
2601    :param source_ip_groups: List of source IpGroups for this rule.
2602    :type source_ip_groups: list[str]
2603    """
2604
2605    _validation = {
2606        'rule_condition_type': {'required': True},
2607    }
2608
2609    _attribute_map = {
2610        'name': {'key': 'name', 'type': 'str'},
2611        'description': {'key': 'description', 'type': 'str'},
2612        'rule_condition_type': {'key': 'ruleConditionType', 'type': 'str'},
2613        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
2614        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
2615        'protocols': {'key': 'protocols', 'type': '[FirewallPolicyRuleConditionApplicationProtocol]'},
2616        'target_fqdns': {'key': 'targetFqdns', 'type': '[str]'},
2617        'fqdn_tags': {'key': 'fqdnTags', 'type': '[str]'},
2618        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
2619    }
2620
2621    def __init__(
2622        self,
2623        *,
2624        name: Optional[str] = None,
2625        description: Optional[str] = None,
2626        source_addresses: Optional[List[str]] = None,
2627        destination_addresses: Optional[List[str]] = None,
2628        protocols: Optional[List["FirewallPolicyRuleConditionApplicationProtocol"]] = None,
2629        target_fqdns: Optional[List[str]] = None,
2630        fqdn_tags: Optional[List[str]] = None,
2631        source_ip_groups: Optional[List[str]] = None,
2632        **kwargs
2633    ):
2634        super(ApplicationRuleCondition, self).__init__(name=name, description=description, **kwargs)
2635        self.rule_condition_type = 'ApplicationRuleCondition'  # type: str
2636        self.source_addresses = source_addresses
2637        self.destination_addresses = destination_addresses
2638        self.protocols = protocols
2639        self.target_fqdns = target_fqdns
2640        self.fqdn_tags = fqdn_tags
2641        self.source_ip_groups = source_ip_groups
2642
2643
2644class ApplicationSecurityGroup(Resource):
2645    """An application security group in a resource group.
2646
2647    Variables are only populated by the server, and will be ignored when sending a request.
2648
2649    :param id: Resource ID.
2650    :type id: str
2651    :ivar name: Resource name.
2652    :vartype name: str
2653    :ivar type: Resource type.
2654    :vartype type: str
2655    :param location: Resource location.
2656    :type location: str
2657    :param tags: A set of tags. Resource tags.
2658    :type tags: dict[str, str]
2659    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2660    :vartype etag: str
2661    :ivar resource_guid: The resource GUID property of the application security group resource. It
2662     uniquely identifies a resource, even if the user changes its name or migrate the resource
2663     across subscriptions or resource groups.
2664    :vartype resource_guid: str
2665    :ivar provisioning_state: The provisioning state of the application security group resource.
2666     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
2667    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
2668    """
2669
2670    _validation = {
2671        'name': {'readonly': True},
2672        'type': {'readonly': True},
2673        'etag': {'readonly': True},
2674        'resource_guid': {'readonly': True},
2675        'provisioning_state': {'readonly': True},
2676    }
2677
2678    _attribute_map = {
2679        'id': {'key': 'id', 'type': 'str'},
2680        'name': {'key': 'name', 'type': 'str'},
2681        'type': {'key': 'type', 'type': 'str'},
2682        'location': {'key': 'location', 'type': 'str'},
2683        'tags': {'key': 'tags', 'type': '{str}'},
2684        'etag': {'key': 'etag', 'type': 'str'},
2685        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
2686        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2687    }
2688
2689    def __init__(
2690        self,
2691        *,
2692        id: Optional[str] = None,
2693        location: Optional[str] = None,
2694        tags: Optional[Dict[str, str]] = None,
2695        **kwargs
2696    ):
2697        super(ApplicationSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
2698        self.etag = None
2699        self.resource_guid = None
2700        self.provisioning_state = None
2701
2702
2703class ApplicationSecurityGroupListResult(msrest.serialization.Model):
2704    """A list of application security groups.
2705
2706    Variables are only populated by the server, and will be ignored when sending a request.
2707
2708    :param value: A list of application security groups.
2709    :type value: list[~azure.mgmt.network.v2020_04_01.models.ApplicationSecurityGroup]
2710    :ivar next_link: The URL to get the next set of results.
2711    :vartype next_link: str
2712    """
2713
2714    _validation = {
2715        'next_link': {'readonly': True},
2716    }
2717
2718    _attribute_map = {
2719        'value': {'key': 'value', 'type': '[ApplicationSecurityGroup]'},
2720        'next_link': {'key': 'nextLink', 'type': 'str'},
2721    }
2722
2723    def __init__(
2724        self,
2725        *,
2726        value: Optional[List["ApplicationSecurityGroup"]] = None,
2727        **kwargs
2728    ):
2729        super(ApplicationSecurityGroupListResult, self).__init__(**kwargs)
2730        self.value = value
2731        self.next_link = None
2732
2733
2734class AuthorizationListResult(msrest.serialization.Model):
2735    """Response for ListAuthorizations API service call retrieves all authorizations that belongs to an ExpressRouteCircuit.
2736
2737    :param value: The authorizations in an ExpressRoute Circuit.
2738    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitAuthorization]
2739    :param next_link: The URL to get the next set of results.
2740    :type next_link: str
2741    """
2742
2743    _attribute_map = {
2744        'value': {'key': 'value', 'type': '[ExpressRouteCircuitAuthorization]'},
2745        'next_link': {'key': 'nextLink', 'type': 'str'},
2746    }
2747
2748    def __init__(
2749        self,
2750        *,
2751        value: Optional[List["ExpressRouteCircuitAuthorization"]] = None,
2752        next_link: Optional[str] = None,
2753        **kwargs
2754    ):
2755        super(AuthorizationListResult, self).__init__(**kwargs)
2756        self.value = value
2757        self.next_link = next_link
2758
2759
2760class AutoApprovedPrivateLinkService(msrest.serialization.Model):
2761    """The information of an AutoApprovedPrivateLinkService.
2762
2763    :param private_link_service: The id of the private link service resource.
2764    :type private_link_service: str
2765    """
2766
2767    _attribute_map = {
2768        'private_link_service': {'key': 'privateLinkService', 'type': 'str'},
2769    }
2770
2771    def __init__(
2772        self,
2773        *,
2774        private_link_service: Optional[str] = None,
2775        **kwargs
2776    ):
2777        super(AutoApprovedPrivateLinkService, self).__init__(**kwargs)
2778        self.private_link_service = private_link_service
2779
2780
2781class AutoApprovedPrivateLinkServicesResult(msrest.serialization.Model):
2782    """An array of private link service id that can be linked to a private end point with auto approved.
2783
2784    Variables are only populated by the server, and will be ignored when sending a request.
2785
2786    :param value: An array of auto approved private link service.
2787    :type value: list[~azure.mgmt.network.v2020_04_01.models.AutoApprovedPrivateLinkService]
2788    :ivar next_link: The URL to get the next set of results.
2789    :vartype next_link: str
2790    """
2791
2792    _validation = {
2793        'next_link': {'readonly': True},
2794    }
2795
2796    _attribute_map = {
2797        'value': {'key': 'value', 'type': '[AutoApprovedPrivateLinkService]'},
2798        'next_link': {'key': 'nextLink', 'type': 'str'},
2799    }
2800
2801    def __init__(
2802        self,
2803        *,
2804        value: Optional[List["AutoApprovedPrivateLinkService"]] = None,
2805        **kwargs
2806    ):
2807        super(AutoApprovedPrivateLinkServicesResult, self).__init__(**kwargs)
2808        self.value = value
2809        self.next_link = None
2810
2811
2812class Availability(msrest.serialization.Model):
2813    """Availability of the metric.
2814
2815    :param time_grain: The time grain of the availability.
2816    :type time_grain: str
2817    :param retention: The retention of the availability.
2818    :type retention: str
2819    :param blob_duration: Duration of the availability blob.
2820    :type blob_duration: str
2821    """
2822
2823    _attribute_map = {
2824        'time_grain': {'key': 'timeGrain', 'type': 'str'},
2825        'retention': {'key': 'retention', 'type': 'str'},
2826        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
2827    }
2828
2829    def __init__(
2830        self,
2831        *,
2832        time_grain: Optional[str] = None,
2833        retention: Optional[str] = None,
2834        blob_duration: Optional[str] = None,
2835        **kwargs
2836    ):
2837        super(Availability, self).__init__(**kwargs)
2838        self.time_grain = time_grain
2839        self.retention = retention
2840        self.blob_duration = blob_duration
2841
2842
2843class AvailableDelegation(msrest.serialization.Model):
2844    """The serviceName of an AvailableDelegation indicates a possible delegation for a subnet.
2845
2846    :param name: The name of the AvailableDelegation resource.
2847    :type name: str
2848    :param id: A unique identifier of the AvailableDelegation resource.
2849    :type id: str
2850    :param type: Resource type.
2851    :type type: str
2852    :param service_name: The name of the service and resource.
2853    :type service_name: str
2854    :param actions: The actions permitted to the service upon delegation.
2855    :type actions: list[str]
2856    """
2857
2858    _attribute_map = {
2859        'name': {'key': 'name', 'type': 'str'},
2860        'id': {'key': 'id', 'type': 'str'},
2861        'type': {'key': 'type', 'type': 'str'},
2862        'service_name': {'key': 'serviceName', 'type': 'str'},
2863        'actions': {'key': 'actions', 'type': '[str]'},
2864    }
2865
2866    def __init__(
2867        self,
2868        *,
2869        name: Optional[str] = None,
2870        id: Optional[str] = None,
2871        type: Optional[str] = None,
2872        service_name: Optional[str] = None,
2873        actions: Optional[List[str]] = None,
2874        **kwargs
2875    ):
2876        super(AvailableDelegation, self).__init__(**kwargs)
2877        self.name = name
2878        self.id = id
2879        self.type = type
2880        self.service_name = service_name
2881        self.actions = actions
2882
2883
2884class AvailableDelegationsResult(msrest.serialization.Model):
2885    """An array of available delegations.
2886
2887    Variables are only populated by the server, and will be ignored when sending a request.
2888
2889    :param value: An array of available delegations.
2890    :type value: list[~azure.mgmt.network.v2020_04_01.models.AvailableDelegation]
2891    :ivar next_link: The URL to get the next set of results.
2892    :vartype next_link: str
2893    """
2894
2895    _validation = {
2896        'next_link': {'readonly': True},
2897    }
2898
2899    _attribute_map = {
2900        'value': {'key': 'value', 'type': '[AvailableDelegation]'},
2901        'next_link': {'key': 'nextLink', 'type': 'str'},
2902    }
2903
2904    def __init__(
2905        self,
2906        *,
2907        value: Optional[List["AvailableDelegation"]] = None,
2908        **kwargs
2909    ):
2910        super(AvailableDelegationsResult, self).__init__(**kwargs)
2911        self.value = value
2912        self.next_link = None
2913
2914
2915class AvailablePrivateEndpointType(msrest.serialization.Model):
2916    """The information of an AvailablePrivateEndpointType.
2917
2918    :param name: The name of the service and resource.
2919    :type name: str
2920    :param id: A unique identifier of the AvailablePrivateEndpoint Type resource.
2921    :type id: str
2922    :param type: Resource type.
2923    :type type: str
2924    :param resource_name: The name of the service and resource.
2925    :type resource_name: str
2926    """
2927
2928    _attribute_map = {
2929        'name': {'key': 'name', 'type': 'str'},
2930        'id': {'key': 'id', 'type': 'str'},
2931        'type': {'key': 'type', 'type': 'str'},
2932        'resource_name': {'key': 'resourceName', 'type': 'str'},
2933    }
2934
2935    def __init__(
2936        self,
2937        *,
2938        name: Optional[str] = None,
2939        id: Optional[str] = None,
2940        type: Optional[str] = None,
2941        resource_name: Optional[str] = None,
2942        **kwargs
2943    ):
2944        super(AvailablePrivateEndpointType, self).__init__(**kwargs)
2945        self.name = name
2946        self.id = id
2947        self.type = type
2948        self.resource_name = resource_name
2949
2950
2951class AvailablePrivateEndpointTypesResult(msrest.serialization.Model):
2952    """An array of available PrivateEndpoint types.
2953
2954    Variables are only populated by the server, and will be ignored when sending a request.
2955
2956    :param value: An array of available privateEndpoint type.
2957    :type value: list[~azure.mgmt.network.v2020_04_01.models.AvailablePrivateEndpointType]
2958    :ivar next_link: The URL to get the next set of results.
2959    :vartype next_link: str
2960    """
2961
2962    _validation = {
2963        'next_link': {'readonly': True},
2964    }
2965
2966    _attribute_map = {
2967        'value': {'key': 'value', 'type': '[AvailablePrivateEndpointType]'},
2968        'next_link': {'key': 'nextLink', 'type': 'str'},
2969    }
2970
2971    def __init__(
2972        self,
2973        *,
2974        value: Optional[List["AvailablePrivateEndpointType"]] = None,
2975        **kwargs
2976    ):
2977        super(AvailablePrivateEndpointTypesResult, self).__init__(**kwargs)
2978        self.value = value
2979        self.next_link = None
2980
2981
2982class AvailableProvidersList(msrest.serialization.Model):
2983    """List of available countries with details.
2984
2985    All required parameters must be populated in order to send to Azure.
2986
2987    :param countries: Required. List of available countries.
2988    :type countries: list[~azure.mgmt.network.v2020_04_01.models.AvailableProvidersListCountry]
2989    """
2990
2991    _validation = {
2992        'countries': {'required': True},
2993    }
2994
2995    _attribute_map = {
2996        'countries': {'key': 'countries', 'type': '[AvailableProvidersListCountry]'},
2997    }
2998
2999    def __init__(
3000        self,
3001        *,
3002        countries: List["AvailableProvidersListCountry"],
3003        **kwargs
3004    ):
3005        super(AvailableProvidersList, self).__init__(**kwargs)
3006        self.countries = countries
3007
3008
3009class AvailableProvidersListCity(msrest.serialization.Model):
3010    """City or town details.
3011
3012    :param city_name: The city or town name.
3013    :type city_name: str
3014    :param providers: A list of Internet service providers.
3015    :type providers: list[str]
3016    """
3017
3018    _attribute_map = {
3019        'city_name': {'key': 'cityName', 'type': 'str'},
3020        'providers': {'key': 'providers', 'type': '[str]'},
3021    }
3022
3023    def __init__(
3024        self,
3025        *,
3026        city_name: Optional[str] = None,
3027        providers: Optional[List[str]] = None,
3028        **kwargs
3029    ):
3030        super(AvailableProvidersListCity, self).__init__(**kwargs)
3031        self.city_name = city_name
3032        self.providers = providers
3033
3034
3035class AvailableProvidersListCountry(msrest.serialization.Model):
3036    """Country details.
3037
3038    :param country_name: The country name.
3039    :type country_name: str
3040    :param providers: A list of Internet service providers.
3041    :type providers: list[str]
3042    :param states: List of available states in the country.
3043    :type states: list[~azure.mgmt.network.v2020_04_01.models.AvailableProvidersListState]
3044    """
3045
3046    _attribute_map = {
3047        'country_name': {'key': 'countryName', 'type': 'str'},
3048        'providers': {'key': 'providers', 'type': '[str]'},
3049        'states': {'key': 'states', 'type': '[AvailableProvidersListState]'},
3050    }
3051
3052    def __init__(
3053        self,
3054        *,
3055        country_name: Optional[str] = None,
3056        providers: Optional[List[str]] = None,
3057        states: Optional[List["AvailableProvidersListState"]] = None,
3058        **kwargs
3059    ):
3060        super(AvailableProvidersListCountry, self).__init__(**kwargs)
3061        self.country_name = country_name
3062        self.providers = providers
3063        self.states = states
3064
3065
3066class AvailableProvidersListParameters(msrest.serialization.Model):
3067    """Constraints that determine the list of available Internet service providers.
3068
3069    :param azure_locations: A list of Azure regions.
3070    :type azure_locations: list[str]
3071    :param country: The country for available providers list.
3072    :type country: str
3073    :param state: The state for available providers list.
3074    :type state: str
3075    :param city: The city or town for available providers list.
3076    :type city: str
3077    """
3078
3079    _attribute_map = {
3080        'azure_locations': {'key': 'azureLocations', 'type': '[str]'},
3081        'country': {'key': 'country', 'type': 'str'},
3082        'state': {'key': 'state', 'type': 'str'},
3083        'city': {'key': 'city', 'type': 'str'},
3084    }
3085
3086    def __init__(
3087        self,
3088        *,
3089        azure_locations: Optional[List[str]] = None,
3090        country: Optional[str] = None,
3091        state: Optional[str] = None,
3092        city: Optional[str] = None,
3093        **kwargs
3094    ):
3095        super(AvailableProvidersListParameters, self).__init__(**kwargs)
3096        self.azure_locations = azure_locations
3097        self.country = country
3098        self.state = state
3099        self.city = city
3100
3101
3102class AvailableProvidersListState(msrest.serialization.Model):
3103    """State details.
3104
3105    :param state_name: The state name.
3106    :type state_name: str
3107    :param providers: A list of Internet service providers.
3108    :type providers: list[str]
3109    :param cities: List of available cities or towns in the state.
3110    :type cities: list[~azure.mgmt.network.v2020_04_01.models.AvailableProvidersListCity]
3111    """
3112
3113    _attribute_map = {
3114        'state_name': {'key': 'stateName', 'type': 'str'},
3115        'providers': {'key': 'providers', 'type': '[str]'},
3116        'cities': {'key': 'cities', 'type': '[AvailableProvidersListCity]'},
3117    }
3118
3119    def __init__(
3120        self,
3121        *,
3122        state_name: Optional[str] = None,
3123        providers: Optional[List[str]] = None,
3124        cities: Optional[List["AvailableProvidersListCity"]] = None,
3125        **kwargs
3126    ):
3127        super(AvailableProvidersListState, self).__init__(**kwargs)
3128        self.state_name = state_name
3129        self.providers = providers
3130        self.cities = cities
3131
3132
3133class AvailableServiceAlias(msrest.serialization.Model):
3134    """The available service alias.
3135
3136    :param name: The name of the service alias.
3137    :type name: str
3138    :param id: The ID of the service alias.
3139    :type id: str
3140    :param type: The type of the resource.
3141    :type type: str
3142    :param resource_name: The resource name of the service alias.
3143    :type resource_name: str
3144    """
3145
3146    _attribute_map = {
3147        'name': {'key': 'name', 'type': 'str'},
3148        'id': {'key': 'id', 'type': 'str'},
3149        'type': {'key': 'type', 'type': 'str'},
3150        'resource_name': {'key': 'resourceName', 'type': 'str'},
3151    }
3152
3153    def __init__(
3154        self,
3155        *,
3156        name: Optional[str] = None,
3157        id: Optional[str] = None,
3158        type: Optional[str] = None,
3159        resource_name: Optional[str] = None,
3160        **kwargs
3161    ):
3162        super(AvailableServiceAlias, self).__init__(**kwargs)
3163        self.name = name
3164        self.id = id
3165        self.type = type
3166        self.resource_name = resource_name
3167
3168
3169class AvailableServiceAliasesResult(msrest.serialization.Model):
3170    """An array of available service aliases.
3171
3172    Variables are only populated by the server, and will be ignored when sending a request.
3173
3174    :param value: An array of available service aliases.
3175    :type value: list[~azure.mgmt.network.v2020_04_01.models.AvailableServiceAlias]
3176    :ivar next_link: The URL to get the next set of results.
3177    :vartype next_link: str
3178    """
3179
3180    _validation = {
3181        'next_link': {'readonly': True},
3182    }
3183
3184    _attribute_map = {
3185        'value': {'key': 'value', 'type': '[AvailableServiceAlias]'},
3186        'next_link': {'key': 'nextLink', 'type': 'str'},
3187    }
3188
3189    def __init__(
3190        self,
3191        *,
3192        value: Optional[List["AvailableServiceAlias"]] = None,
3193        **kwargs
3194    ):
3195        super(AvailableServiceAliasesResult, self).__init__(**kwargs)
3196        self.value = value
3197        self.next_link = None
3198
3199
3200class AzureAsyncOperationResult(msrest.serialization.Model):
3201    """The response body contains the status of the specified asynchronous operation, indicating whether it has succeeded, is in progress, or has failed. Note that this status is distinct from the HTTP status code returned for the Get Operation Status operation itself. If the asynchronous operation succeeded, the response body includes the HTTP status code for the successful request. If the asynchronous operation failed, the response body includes the HTTP status code for the failed request and error information regarding the failure.
3202
3203    :param status: Status of the Azure async operation. Possible values include: "InProgress",
3204     "Succeeded", "Failed".
3205    :type status: str or ~azure.mgmt.network.v2020_04_01.models.NetworkOperationStatus
3206    :param error: Details of the error occurred during specified asynchronous operation.
3207    :type error: ~azure.mgmt.network.v2020_04_01.models.Error
3208    """
3209
3210    _attribute_map = {
3211        'status': {'key': 'status', 'type': 'str'},
3212        'error': {'key': 'error', 'type': 'Error'},
3213    }
3214
3215    def __init__(
3216        self,
3217        *,
3218        status: Optional[Union[str, "NetworkOperationStatus"]] = None,
3219        error: Optional["Error"] = None,
3220        **kwargs
3221    ):
3222        super(AzureAsyncOperationResult, self).__init__(**kwargs)
3223        self.status = status
3224        self.error = error
3225
3226
3227class AzureFirewall(Resource):
3228    """Azure Firewall resource.
3229
3230    Variables are only populated by the server, and will be ignored when sending a request.
3231
3232    :param id: Resource ID.
3233    :type id: str
3234    :ivar name: Resource name.
3235    :vartype name: str
3236    :ivar type: Resource type.
3237    :vartype type: str
3238    :param location: Resource location.
3239    :type location: str
3240    :param tags: A set of tags. Resource tags.
3241    :type tags: dict[str, str]
3242    :param zones: A list of availability zones denoting where the resource needs to come from.
3243    :type zones: list[str]
3244    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3245    :vartype etag: str
3246    :param application_rule_collections: Collection of application rule collections used by Azure
3247     Firewall.
3248    :type application_rule_collections:
3249     list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallApplicationRuleCollection]
3250    :param nat_rule_collections: Collection of NAT rule collections used by Azure Firewall.
3251    :type nat_rule_collections:
3252     list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallNatRuleCollection]
3253    :param network_rule_collections: Collection of network rule collections used by Azure Firewall.
3254    :type network_rule_collections:
3255     list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallNetworkRuleCollection]
3256    :param ip_configurations: IP configuration of the Azure Firewall resource.
3257    :type ip_configurations:
3258     list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallIPConfiguration]
3259    :param management_ip_configuration: IP configuration of the Azure Firewall used for management
3260     traffic.
3261    :type management_ip_configuration:
3262     ~azure.mgmt.network.v2020_04_01.models.AzureFirewallIPConfiguration
3263    :ivar provisioning_state: The provisioning state of the Azure firewall resource. Possible
3264     values include: "Succeeded", "Updating", "Deleting", "Failed".
3265    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
3266    :param threat_intel_mode: The operation mode for Threat Intelligence. Possible values include:
3267     "Alert", "Deny", "Off".
3268    :type threat_intel_mode: str or
3269     ~azure.mgmt.network.v2020_04_01.models.AzureFirewallThreatIntelMode
3270    :param virtual_hub: The virtualHub to which the firewall belongs.
3271    :type virtual_hub: ~azure.mgmt.network.v2020_04_01.models.SubResource
3272    :param firewall_policy: The firewallPolicy associated with this azure firewall.
3273    :type firewall_policy: ~azure.mgmt.network.v2020_04_01.models.SubResource
3274    :ivar hub_ip_addresses: IP addresses associated with AzureFirewall.
3275    :vartype hub_ip_addresses: ~azure.mgmt.network.v2020_04_01.models.HubIPAddresses
3276    :ivar ip_groups: IpGroups associated with AzureFirewall.
3277    :vartype ip_groups: list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallIpGroups]
3278    :param sku: The Azure Firewall Resource SKU.
3279    :type sku: ~azure.mgmt.network.v2020_04_01.models.AzureFirewallSku
3280    :param additional_properties: The additional properties used to further config this azure
3281     firewall.
3282    :type additional_properties: dict[str, str]
3283    """
3284
3285    _validation = {
3286        'name': {'readonly': True},
3287        'type': {'readonly': True},
3288        'etag': {'readonly': True},
3289        'provisioning_state': {'readonly': True},
3290        'hub_ip_addresses': {'readonly': True},
3291        'ip_groups': {'readonly': True},
3292    }
3293
3294    _attribute_map = {
3295        'id': {'key': 'id', 'type': 'str'},
3296        'name': {'key': 'name', 'type': 'str'},
3297        'type': {'key': 'type', 'type': 'str'},
3298        'location': {'key': 'location', 'type': 'str'},
3299        'tags': {'key': 'tags', 'type': '{str}'},
3300        'zones': {'key': 'zones', 'type': '[str]'},
3301        'etag': {'key': 'etag', 'type': 'str'},
3302        'application_rule_collections': {'key': 'properties.applicationRuleCollections', 'type': '[AzureFirewallApplicationRuleCollection]'},
3303        'nat_rule_collections': {'key': 'properties.natRuleCollections', 'type': '[AzureFirewallNatRuleCollection]'},
3304        'network_rule_collections': {'key': 'properties.networkRuleCollections', 'type': '[AzureFirewallNetworkRuleCollection]'},
3305        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[AzureFirewallIPConfiguration]'},
3306        'management_ip_configuration': {'key': 'properties.managementIpConfiguration', 'type': 'AzureFirewallIPConfiguration'},
3307        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3308        'threat_intel_mode': {'key': 'properties.threatIntelMode', 'type': 'str'},
3309        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
3310        'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'},
3311        'hub_ip_addresses': {'key': 'properties.hubIpAddresses', 'type': 'HubIPAddresses'},
3312        'ip_groups': {'key': 'properties.ipGroups', 'type': '[AzureFirewallIpGroups]'},
3313        'sku': {'key': 'properties.sku', 'type': 'AzureFirewallSku'},
3314        'additional_properties': {'key': 'properties.additionalProperties', 'type': '{str}'},
3315    }
3316
3317    def __init__(
3318        self,
3319        *,
3320        id: Optional[str] = None,
3321        location: Optional[str] = None,
3322        tags: Optional[Dict[str, str]] = None,
3323        zones: Optional[List[str]] = None,
3324        application_rule_collections: Optional[List["AzureFirewallApplicationRuleCollection"]] = None,
3325        nat_rule_collections: Optional[List["AzureFirewallNatRuleCollection"]] = None,
3326        network_rule_collections: Optional[List["AzureFirewallNetworkRuleCollection"]] = None,
3327        ip_configurations: Optional[List["AzureFirewallIPConfiguration"]] = None,
3328        management_ip_configuration: Optional["AzureFirewallIPConfiguration"] = None,
3329        threat_intel_mode: Optional[Union[str, "AzureFirewallThreatIntelMode"]] = None,
3330        virtual_hub: Optional["SubResource"] = None,
3331        firewall_policy: Optional["SubResource"] = None,
3332        sku: Optional["AzureFirewallSku"] = None,
3333        additional_properties: Optional[Dict[str, str]] = None,
3334        **kwargs
3335    ):
3336        super(AzureFirewall, self).__init__(id=id, location=location, tags=tags, **kwargs)
3337        self.zones = zones
3338        self.etag = None
3339        self.application_rule_collections = application_rule_collections
3340        self.nat_rule_collections = nat_rule_collections
3341        self.network_rule_collections = network_rule_collections
3342        self.ip_configurations = ip_configurations
3343        self.management_ip_configuration = management_ip_configuration
3344        self.provisioning_state = None
3345        self.threat_intel_mode = threat_intel_mode
3346        self.virtual_hub = virtual_hub
3347        self.firewall_policy = firewall_policy
3348        self.hub_ip_addresses = None
3349        self.ip_groups = None
3350        self.sku = sku
3351        self.additional_properties = additional_properties
3352
3353
3354class AzureFirewallApplicationRule(msrest.serialization.Model):
3355    """Properties of an application rule.
3356
3357    :param name: Name of the application rule.
3358    :type name: str
3359    :param description: Description of the rule.
3360    :type description: str
3361    :param source_addresses: List of source IP addresses for this rule.
3362    :type source_addresses: list[str]
3363    :param protocols: Array of ApplicationRuleProtocols.
3364    :type protocols:
3365     list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallApplicationRuleProtocol]
3366    :param target_fqdns: List of FQDNs for this rule.
3367    :type target_fqdns: list[str]
3368    :param fqdn_tags: List of FQDN Tags for this rule.
3369    :type fqdn_tags: list[str]
3370    :param source_ip_groups: List of source IpGroups for this rule.
3371    :type source_ip_groups: list[str]
3372    """
3373
3374    _attribute_map = {
3375        'name': {'key': 'name', 'type': 'str'},
3376        'description': {'key': 'description', 'type': 'str'},
3377        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
3378        'protocols': {'key': 'protocols', 'type': '[AzureFirewallApplicationRuleProtocol]'},
3379        'target_fqdns': {'key': 'targetFqdns', 'type': '[str]'},
3380        'fqdn_tags': {'key': 'fqdnTags', 'type': '[str]'},
3381        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
3382    }
3383
3384    def __init__(
3385        self,
3386        *,
3387        name: Optional[str] = None,
3388        description: Optional[str] = None,
3389        source_addresses: Optional[List[str]] = None,
3390        protocols: Optional[List["AzureFirewallApplicationRuleProtocol"]] = None,
3391        target_fqdns: Optional[List[str]] = None,
3392        fqdn_tags: Optional[List[str]] = None,
3393        source_ip_groups: Optional[List[str]] = None,
3394        **kwargs
3395    ):
3396        super(AzureFirewallApplicationRule, self).__init__(**kwargs)
3397        self.name = name
3398        self.description = description
3399        self.source_addresses = source_addresses
3400        self.protocols = protocols
3401        self.target_fqdns = target_fqdns
3402        self.fqdn_tags = fqdn_tags
3403        self.source_ip_groups = source_ip_groups
3404
3405
3406class AzureFirewallApplicationRuleCollection(SubResource):
3407    """Application rule collection resource.
3408
3409    Variables are only populated by the server, and will be ignored when sending a request.
3410
3411    :param id: Resource ID.
3412    :type id: str
3413    :param name: The name of the resource that is unique within the Azure firewall. This name can
3414     be used to access the resource.
3415    :type name: str
3416    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3417    :vartype etag: str
3418    :param priority: Priority of the application rule collection resource.
3419    :type priority: int
3420    :param action: The action type of a rule collection.
3421    :type action: ~azure.mgmt.network.v2020_04_01.models.AzureFirewallRCAction
3422    :param rules: Collection of rules used by a application rule collection.
3423    :type rules: list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallApplicationRule]
3424    :ivar provisioning_state: The provisioning state of the application rule collection resource.
3425     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
3426    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
3427    """
3428
3429    _validation = {
3430        'etag': {'readonly': True},
3431        'priority': {'maximum': 65000, 'minimum': 100},
3432        'provisioning_state': {'readonly': True},
3433    }
3434
3435    _attribute_map = {
3436        'id': {'key': 'id', 'type': 'str'},
3437        'name': {'key': 'name', 'type': 'str'},
3438        'etag': {'key': 'etag', 'type': 'str'},
3439        'priority': {'key': 'properties.priority', 'type': 'int'},
3440        'action': {'key': 'properties.action', 'type': 'AzureFirewallRCAction'},
3441        'rules': {'key': 'properties.rules', 'type': '[AzureFirewallApplicationRule]'},
3442        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3443    }
3444
3445    def __init__(
3446        self,
3447        *,
3448        id: Optional[str] = None,
3449        name: Optional[str] = None,
3450        priority: Optional[int] = None,
3451        action: Optional["AzureFirewallRCAction"] = None,
3452        rules: Optional[List["AzureFirewallApplicationRule"]] = None,
3453        **kwargs
3454    ):
3455        super(AzureFirewallApplicationRuleCollection, self).__init__(id=id, **kwargs)
3456        self.name = name
3457        self.etag = None
3458        self.priority = priority
3459        self.action = action
3460        self.rules = rules
3461        self.provisioning_state = None
3462
3463
3464class AzureFirewallApplicationRuleProtocol(msrest.serialization.Model):
3465    """Properties of the application rule protocol.
3466
3467    :param protocol_type: Protocol type. Possible values include: "Http", "Https", "Mssql".
3468    :type protocol_type: str or
3469     ~azure.mgmt.network.v2020_04_01.models.AzureFirewallApplicationRuleProtocolType
3470    :param port: Port number for the protocol, cannot be greater than 64000. This field is
3471     optional.
3472    :type port: int
3473    """
3474
3475    _validation = {
3476        'port': {'maximum': 64000, 'minimum': 0},
3477    }
3478
3479    _attribute_map = {
3480        'protocol_type': {'key': 'protocolType', 'type': 'str'},
3481        'port': {'key': 'port', 'type': 'int'},
3482    }
3483
3484    def __init__(
3485        self,
3486        *,
3487        protocol_type: Optional[Union[str, "AzureFirewallApplicationRuleProtocolType"]] = None,
3488        port: Optional[int] = None,
3489        **kwargs
3490    ):
3491        super(AzureFirewallApplicationRuleProtocol, self).__init__(**kwargs)
3492        self.protocol_type = protocol_type
3493        self.port = port
3494
3495
3496class AzureFirewallFqdnTag(Resource):
3497    """Azure Firewall FQDN Tag Resource.
3498
3499    Variables are only populated by the server, and will be ignored when sending a request.
3500
3501    :param id: Resource ID.
3502    :type id: str
3503    :ivar name: Resource name.
3504    :vartype name: str
3505    :ivar type: Resource type.
3506    :vartype type: str
3507    :param location: Resource location.
3508    :type location: str
3509    :param tags: A set of tags. Resource tags.
3510    :type tags: dict[str, str]
3511    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3512    :vartype etag: str
3513    :ivar provisioning_state: The provisioning state of the Azure firewall FQDN tag resource.
3514     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
3515    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
3516    :ivar fqdn_tag_name: The name of this FQDN Tag.
3517    :vartype fqdn_tag_name: str
3518    """
3519
3520    _validation = {
3521        'name': {'readonly': True},
3522        'type': {'readonly': True},
3523        'etag': {'readonly': True},
3524        'provisioning_state': {'readonly': True},
3525        'fqdn_tag_name': {'readonly': True},
3526    }
3527
3528    _attribute_map = {
3529        'id': {'key': 'id', 'type': 'str'},
3530        'name': {'key': 'name', 'type': 'str'},
3531        'type': {'key': 'type', 'type': 'str'},
3532        'location': {'key': 'location', 'type': 'str'},
3533        'tags': {'key': 'tags', 'type': '{str}'},
3534        'etag': {'key': 'etag', 'type': 'str'},
3535        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3536        'fqdn_tag_name': {'key': 'properties.fqdnTagName', 'type': 'str'},
3537    }
3538
3539    def __init__(
3540        self,
3541        *,
3542        id: Optional[str] = None,
3543        location: Optional[str] = None,
3544        tags: Optional[Dict[str, str]] = None,
3545        **kwargs
3546    ):
3547        super(AzureFirewallFqdnTag, self).__init__(id=id, location=location, tags=tags, **kwargs)
3548        self.etag = None
3549        self.provisioning_state = None
3550        self.fqdn_tag_name = None
3551
3552
3553class AzureFirewallFqdnTagListResult(msrest.serialization.Model):
3554    """Response for ListAzureFirewallFqdnTags API service call.
3555
3556    :param value: List of Azure Firewall FQDN Tags in a resource group.
3557    :type value: list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallFqdnTag]
3558    :param next_link: URL to get the next set of results.
3559    :type next_link: str
3560    """
3561
3562    _attribute_map = {
3563        'value': {'key': 'value', 'type': '[AzureFirewallFqdnTag]'},
3564        'next_link': {'key': 'nextLink', 'type': 'str'},
3565    }
3566
3567    def __init__(
3568        self,
3569        *,
3570        value: Optional[List["AzureFirewallFqdnTag"]] = None,
3571        next_link: Optional[str] = None,
3572        **kwargs
3573    ):
3574        super(AzureFirewallFqdnTagListResult, self).__init__(**kwargs)
3575        self.value = value
3576        self.next_link = next_link
3577
3578
3579class AzureFirewallIPConfiguration(SubResource):
3580    """IP configuration of an Azure Firewall.
3581
3582    Variables are only populated by the server, and will be ignored when sending a request.
3583
3584    :param id: Resource ID.
3585    :type id: str
3586    :param name: Name of the resource that is unique within a resource group. This name can be used
3587     to access the resource.
3588    :type name: str
3589    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3590    :vartype etag: str
3591    :ivar type: Type of the resource.
3592    :vartype type: str
3593    :ivar private_ip_address: The Firewall Internal Load Balancer IP to be used as the next hop in
3594     User Defined Routes.
3595    :vartype private_ip_address: str
3596    :param subnet: Reference to the subnet resource. This resource must be named
3597     'AzureFirewallSubnet' or 'AzureFirewallManagementSubnet'.
3598    :type subnet: ~azure.mgmt.network.v2020_04_01.models.SubResource
3599    :param public_ip_address: Reference to the PublicIP resource. This field is a mandatory input
3600     if subnet is not null.
3601    :type public_ip_address: ~azure.mgmt.network.v2020_04_01.models.SubResource
3602    :ivar provisioning_state: The provisioning state of the Azure firewall IP configuration
3603     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
3604    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
3605    """
3606
3607    _validation = {
3608        'etag': {'readonly': True},
3609        'type': {'readonly': True},
3610        'private_ip_address': {'readonly': True},
3611        'provisioning_state': {'readonly': True},
3612    }
3613
3614    _attribute_map = {
3615        'id': {'key': 'id', 'type': 'str'},
3616        'name': {'key': 'name', 'type': 'str'},
3617        'etag': {'key': 'etag', 'type': 'str'},
3618        'type': {'key': 'type', 'type': 'str'},
3619        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
3620        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
3621        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
3622        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3623    }
3624
3625    def __init__(
3626        self,
3627        *,
3628        id: Optional[str] = None,
3629        name: Optional[str] = None,
3630        subnet: Optional["SubResource"] = None,
3631        public_ip_address: Optional["SubResource"] = None,
3632        **kwargs
3633    ):
3634        super(AzureFirewallIPConfiguration, self).__init__(id=id, **kwargs)
3635        self.name = name
3636        self.etag = None
3637        self.type = None
3638        self.private_ip_address = None
3639        self.subnet = subnet
3640        self.public_ip_address = public_ip_address
3641        self.provisioning_state = None
3642
3643
3644class AzureFirewallIpGroups(msrest.serialization.Model):
3645    """IpGroups associated with azure firewall.
3646
3647    Variables are only populated by the server, and will be ignored when sending a request.
3648
3649    :ivar id: Resource ID.
3650    :vartype id: str
3651    :ivar change_number: The iteration number.
3652    :vartype change_number: str
3653    """
3654
3655    _validation = {
3656        'id': {'readonly': True},
3657        'change_number': {'readonly': True},
3658    }
3659
3660    _attribute_map = {
3661        'id': {'key': 'id', 'type': 'str'},
3662        'change_number': {'key': 'changeNumber', 'type': 'str'},
3663    }
3664
3665    def __init__(
3666        self,
3667        **kwargs
3668    ):
3669        super(AzureFirewallIpGroups, self).__init__(**kwargs)
3670        self.id = None
3671        self.change_number = None
3672
3673
3674class AzureFirewallListResult(msrest.serialization.Model):
3675    """Response for ListAzureFirewalls API service call.
3676
3677    :param value: List of Azure Firewalls in a resource group.
3678    :type value: list[~azure.mgmt.network.v2020_04_01.models.AzureFirewall]
3679    :param next_link: URL to get the next set of results.
3680    :type next_link: str
3681    """
3682
3683    _attribute_map = {
3684        'value': {'key': 'value', 'type': '[AzureFirewall]'},
3685        'next_link': {'key': 'nextLink', 'type': 'str'},
3686    }
3687
3688    def __init__(
3689        self,
3690        *,
3691        value: Optional[List["AzureFirewall"]] = None,
3692        next_link: Optional[str] = None,
3693        **kwargs
3694    ):
3695        super(AzureFirewallListResult, self).__init__(**kwargs)
3696        self.value = value
3697        self.next_link = next_link
3698
3699
3700class AzureFirewallNatRCAction(msrest.serialization.Model):
3701    """AzureFirewall NAT Rule Collection Action.
3702
3703    :param type: The type of action. Possible values include: "Snat", "Dnat".
3704    :type type: str or ~azure.mgmt.network.v2020_04_01.models.AzureFirewallNatRCActionType
3705    """
3706
3707    _attribute_map = {
3708        'type': {'key': 'type', 'type': 'str'},
3709    }
3710
3711    def __init__(
3712        self,
3713        *,
3714        type: Optional[Union[str, "AzureFirewallNatRCActionType"]] = None,
3715        **kwargs
3716    ):
3717        super(AzureFirewallNatRCAction, self).__init__(**kwargs)
3718        self.type = type
3719
3720
3721class AzureFirewallNatRule(msrest.serialization.Model):
3722    """Properties of a NAT rule.
3723
3724    :param name: Name of the NAT rule.
3725    :type name: str
3726    :param description: Description of the rule.
3727    :type description: str
3728    :param source_addresses: List of source IP addresses for this rule.
3729    :type source_addresses: list[str]
3730    :param destination_addresses: List of destination IP addresses for this rule. Supports IP
3731     ranges, prefixes, and service tags.
3732    :type destination_addresses: list[str]
3733    :param destination_ports: List of destination ports.
3734    :type destination_ports: list[str]
3735    :param protocols: Array of AzureFirewallNetworkRuleProtocols applicable to this NAT rule.
3736    :type protocols: list[str or
3737     ~azure.mgmt.network.v2020_04_01.models.AzureFirewallNetworkRuleProtocol]
3738    :param translated_address: The translated address for this NAT rule.
3739    :type translated_address: str
3740    :param translated_port: The translated port for this NAT rule.
3741    :type translated_port: str
3742    :param translated_fqdn: The translated FQDN for this NAT rule.
3743    :type translated_fqdn: str
3744    :param source_ip_groups: List of source IpGroups for this rule.
3745    :type source_ip_groups: list[str]
3746    """
3747
3748    _attribute_map = {
3749        'name': {'key': 'name', 'type': 'str'},
3750        'description': {'key': 'description', 'type': 'str'},
3751        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
3752        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
3753        'destination_ports': {'key': 'destinationPorts', 'type': '[str]'},
3754        'protocols': {'key': 'protocols', 'type': '[str]'},
3755        'translated_address': {'key': 'translatedAddress', 'type': 'str'},
3756        'translated_port': {'key': 'translatedPort', 'type': 'str'},
3757        'translated_fqdn': {'key': 'translatedFqdn', 'type': 'str'},
3758        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
3759    }
3760
3761    def __init__(
3762        self,
3763        *,
3764        name: Optional[str] = None,
3765        description: Optional[str] = None,
3766        source_addresses: Optional[List[str]] = None,
3767        destination_addresses: Optional[List[str]] = None,
3768        destination_ports: Optional[List[str]] = None,
3769        protocols: Optional[List[Union[str, "AzureFirewallNetworkRuleProtocol"]]] = None,
3770        translated_address: Optional[str] = None,
3771        translated_port: Optional[str] = None,
3772        translated_fqdn: Optional[str] = None,
3773        source_ip_groups: Optional[List[str]] = None,
3774        **kwargs
3775    ):
3776        super(AzureFirewallNatRule, self).__init__(**kwargs)
3777        self.name = name
3778        self.description = description
3779        self.source_addresses = source_addresses
3780        self.destination_addresses = destination_addresses
3781        self.destination_ports = destination_ports
3782        self.protocols = protocols
3783        self.translated_address = translated_address
3784        self.translated_port = translated_port
3785        self.translated_fqdn = translated_fqdn
3786        self.source_ip_groups = source_ip_groups
3787
3788
3789class AzureFirewallNatRuleCollection(SubResource):
3790    """NAT rule collection resource.
3791
3792    Variables are only populated by the server, and will be ignored when sending a request.
3793
3794    :param id: Resource ID.
3795    :type id: str
3796    :param name: The name of the resource that is unique within the Azure firewall. This name can
3797     be used to access the resource.
3798    :type name: str
3799    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3800    :vartype etag: str
3801    :param priority: Priority of the NAT rule collection resource.
3802    :type priority: int
3803    :param action: The action type of a NAT rule collection.
3804    :type action: ~azure.mgmt.network.v2020_04_01.models.AzureFirewallNatRCAction
3805    :param rules: Collection of rules used by a NAT rule collection.
3806    :type rules: list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallNatRule]
3807    :ivar provisioning_state: The provisioning state of the NAT rule collection resource. Possible
3808     values include: "Succeeded", "Updating", "Deleting", "Failed".
3809    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
3810    """
3811
3812    _validation = {
3813        'etag': {'readonly': True},
3814        'priority': {'maximum': 65000, 'minimum': 100},
3815        'provisioning_state': {'readonly': True},
3816    }
3817
3818    _attribute_map = {
3819        'id': {'key': 'id', 'type': 'str'},
3820        'name': {'key': 'name', 'type': 'str'},
3821        'etag': {'key': 'etag', 'type': 'str'},
3822        'priority': {'key': 'properties.priority', 'type': 'int'},
3823        'action': {'key': 'properties.action', 'type': 'AzureFirewallNatRCAction'},
3824        'rules': {'key': 'properties.rules', 'type': '[AzureFirewallNatRule]'},
3825        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3826    }
3827
3828    def __init__(
3829        self,
3830        *,
3831        id: Optional[str] = None,
3832        name: Optional[str] = None,
3833        priority: Optional[int] = None,
3834        action: Optional["AzureFirewallNatRCAction"] = None,
3835        rules: Optional[List["AzureFirewallNatRule"]] = None,
3836        **kwargs
3837    ):
3838        super(AzureFirewallNatRuleCollection, self).__init__(id=id, **kwargs)
3839        self.name = name
3840        self.etag = None
3841        self.priority = priority
3842        self.action = action
3843        self.rules = rules
3844        self.provisioning_state = None
3845
3846
3847class AzureFirewallNetworkRule(msrest.serialization.Model):
3848    """Properties of the network rule.
3849
3850    :param name: Name of the network rule.
3851    :type name: str
3852    :param description: Description of the rule.
3853    :type description: str
3854    :param protocols: Array of AzureFirewallNetworkRuleProtocols.
3855    :type protocols: list[str or
3856     ~azure.mgmt.network.v2020_04_01.models.AzureFirewallNetworkRuleProtocol]
3857    :param source_addresses: List of source IP addresses for this rule.
3858    :type source_addresses: list[str]
3859    :param destination_addresses: List of destination IP addresses.
3860    :type destination_addresses: list[str]
3861    :param destination_ports: List of destination ports.
3862    :type destination_ports: list[str]
3863    :param destination_fqdns: List of destination FQDNs.
3864    :type destination_fqdns: list[str]
3865    :param source_ip_groups: List of source IpGroups for this rule.
3866    :type source_ip_groups: list[str]
3867    :param destination_ip_groups: List of destination IpGroups for this rule.
3868    :type destination_ip_groups: list[str]
3869    """
3870
3871    _attribute_map = {
3872        'name': {'key': 'name', 'type': 'str'},
3873        'description': {'key': 'description', 'type': 'str'},
3874        'protocols': {'key': 'protocols', 'type': '[str]'},
3875        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
3876        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
3877        'destination_ports': {'key': 'destinationPorts', 'type': '[str]'},
3878        'destination_fqdns': {'key': 'destinationFqdns', 'type': '[str]'},
3879        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
3880        'destination_ip_groups': {'key': 'destinationIpGroups', 'type': '[str]'},
3881    }
3882
3883    def __init__(
3884        self,
3885        *,
3886        name: Optional[str] = None,
3887        description: Optional[str] = None,
3888        protocols: Optional[List[Union[str, "AzureFirewallNetworkRuleProtocol"]]] = None,
3889        source_addresses: Optional[List[str]] = None,
3890        destination_addresses: Optional[List[str]] = None,
3891        destination_ports: Optional[List[str]] = None,
3892        destination_fqdns: Optional[List[str]] = None,
3893        source_ip_groups: Optional[List[str]] = None,
3894        destination_ip_groups: Optional[List[str]] = None,
3895        **kwargs
3896    ):
3897        super(AzureFirewallNetworkRule, self).__init__(**kwargs)
3898        self.name = name
3899        self.description = description
3900        self.protocols = protocols
3901        self.source_addresses = source_addresses
3902        self.destination_addresses = destination_addresses
3903        self.destination_ports = destination_ports
3904        self.destination_fqdns = destination_fqdns
3905        self.source_ip_groups = source_ip_groups
3906        self.destination_ip_groups = destination_ip_groups
3907
3908
3909class AzureFirewallNetworkRuleCollection(SubResource):
3910    """Network rule collection resource.
3911
3912    Variables are only populated by the server, and will be ignored when sending a request.
3913
3914    :param id: Resource ID.
3915    :type id: str
3916    :param name: The name of the resource that is unique within the Azure firewall. This name can
3917     be used to access the resource.
3918    :type name: str
3919    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3920    :vartype etag: str
3921    :param priority: Priority of the network rule collection resource.
3922    :type priority: int
3923    :param action: The action type of a rule collection.
3924    :type action: ~azure.mgmt.network.v2020_04_01.models.AzureFirewallRCAction
3925    :param rules: Collection of rules used by a network rule collection.
3926    :type rules: list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallNetworkRule]
3927    :ivar provisioning_state: The provisioning state of the network rule collection resource.
3928     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
3929    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
3930    """
3931
3932    _validation = {
3933        'etag': {'readonly': True},
3934        'priority': {'maximum': 65000, 'minimum': 100},
3935        'provisioning_state': {'readonly': True},
3936    }
3937
3938    _attribute_map = {
3939        'id': {'key': 'id', 'type': 'str'},
3940        'name': {'key': 'name', 'type': 'str'},
3941        'etag': {'key': 'etag', 'type': 'str'},
3942        'priority': {'key': 'properties.priority', 'type': 'int'},
3943        'action': {'key': 'properties.action', 'type': 'AzureFirewallRCAction'},
3944        'rules': {'key': 'properties.rules', 'type': '[AzureFirewallNetworkRule]'},
3945        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3946    }
3947
3948    def __init__(
3949        self,
3950        *,
3951        id: Optional[str] = None,
3952        name: Optional[str] = None,
3953        priority: Optional[int] = None,
3954        action: Optional["AzureFirewallRCAction"] = None,
3955        rules: Optional[List["AzureFirewallNetworkRule"]] = None,
3956        **kwargs
3957    ):
3958        super(AzureFirewallNetworkRuleCollection, self).__init__(id=id, **kwargs)
3959        self.name = name
3960        self.etag = None
3961        self.priority = priority
3962        self.action = action
3963        self.rules = rules
3964        self.provisioning_state = None
3965
3966
3967class AzureFirewallPublicIPAddress(msrest.serialization.Model):
3968    """Public IP Address associated with azure firewall.
3969
3970    :param address: Public IP Address value.
3971    :type address: str
3972    """
3973
3974    _attribute_map = {
3975        'address': {'key': 'address', 'type': 'str'},
3976    }
3977
3978    def __init__(
3979        self,
3980        *,
3981        address: Optional[str] = None,
3982        **kwargs
3983    ):
3984        super(AzureFirewallPublicIPAddress, self).__init__(**kwargs)
3985        self.address = address
3986
3987
3988class AzureFirewallRCAction(msrest.serialization.Model):
3989    """Properties of the AzureFirewallRCAction.
3990
3991    :param type: The type of action. Possible values include: "Allow", "Deny".
3992    :type type: str or ~azure.mgmt.network.v2020_04_01.models.AzureFirewallRCActionType
3993    """
3994
3995    _attribute_map = {
3996        'type': {'key': 'type', 'type': 'str'},
3997    }
3998
3999    def __init__(
4000        self,
4001        *,
4002        type: Optional[Union[str, "AzureFirewallRCActionType"]] = None,
4003        **kwargs
4004    ):
4005        super(AzureFirewallRCAction, self).__init__(**kwargs)
4006        self.type = type
4007
4008
4009class AzureFirewallSku(msrest.serialization.Model):
4010    """SKU of an Azure Firewall.
4011
4012    :param name: Name of an Azure Firewall SKU. Possible values include: "AZFW_VNet", "AZFW_Hub".
4013    :type name: str or ~azure.mgmt.network.v2020_04_01.models.AzureFirewallSkuName
4014    :param tier: Tier of an Azure Firewall. Possible values include: "Standard", "Premium".
4015    :type tier: str or ~azure.mgmt.network.v2020_04_01.models.AzureFirewallSkuTier
4016    """
4017
4018    _attribute_map = {
4019        'name': {'key': 'name', 'type': 'str'},
4020        'tier': {'key': 'tier', 'type': 'str'},
4021    }
4022
4023    def __init__(
4024        self,
4025        *,
4026        name: Optional[Union[str, "AzureFirewallSkuName"]] = None,
4027        tier: Optional[Union[str, "AzureFirewallSkuTier"]] = None,
4028        **kwargs
4029    ):
4030        super(AzureFirewallSku, self).__init__(**kwargs)
4031        self.name = name
4032        self.tier = tier
4033
4034
4035class AzureReachabilityReport(msrest.serialization.Model):
4036    """Azure reachability report details.
4037
4038    All required parameters must be populated in order to send to Azure.
4039
4040    :param aggregation_level: Required. The aggregation level of Azure reachability report. Can be
4041     Country, State or City.
4042    :type aggregation_level: str
4043    :param provider_location: Required. Parameters that define a geographic location.
4044    :type provider_location: ~azure.mgmt.network.v2020_04_01.models.AzureReachabilityReportLocation
4045    :param reachability_report: Required. List of Azure reachability report items.
4046    :type reachability_report:
4047     list[~azure.mgmt.network.v2020_04_01.models.AzureReachabilityReportItem]
4048    """
4049
4050    _validation = {
4051        'aggregation_level': {'required': True},
4052        'provider_location': {'required': True},
4053        'reachability_report': {'required': True},
4054    }
4055
4056    _attribute_map = {
4057        'aggregation_level': {'key': 'aggregationLevel', 'type': 'str'},
4058        'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'},
4059        'reachability_report': {'key': 'reachabilityReport', 'type': '[AzureReachabilityReportItem]'},
4060    }
4061
4062    def __init__(
4063        self,
4064        *,
4065        aggregation_level: str,
4066        provider_location: "AzureReachabilityReportLocation",
4067        reachability_report: List["AzureReachabilityReportItem"],
4068        **kwargs
4069    ):
4070        super(AzureReachabilityReport, self).__init__(**kwargs)
4071        self.aggregation_level = aggregation_level
4072        self.provider_location = provider_location
4073        self.reachability_report = reachability_report
4074
4075
4076class AzureReachabilityReportItem(msrest.serialization.Model):
4077    """Azure reachability report details for a given provider location.
4078
4079    :param provider: The Internet service provider.
4080    :type provider: str
4081    :param azure_location: The Azure region.
4082    :type azure_location: str
4083    :param latencies: List of latency details for each of the time series.
4084    :type latencies:
4085     list[~azure.mgmt.network.v2020_04_01.models.AzureReachabilityReportLatencyInfo]
4086    """
4087
4088    _attribute_map = {
4089        'provider': {'key': 'provider', 'type': 'str'},
4090        'azure_location': {'key': 'azureLocation', 'type': 'str'},
4091        'latencies': {'key': 'latencies', 'type': '[AzureReachabilityReportLatencyInfo]'},
4092    }
4093
4094    def __init__(
4095        self,
4096        *,
4097        provider: Optional[str] = None,
4098        azure_location: Optional[str] = None,
4099        latencies: Optional[List["AzureReachabilityReportLatencyInfo"]] = None,
4100        **kwargs
4101    ):
4102        super(AzureReachabilityReportItem, self).__init__(**kwargs)
4103        self.provider = provider
4104        self.azure_location = azure_location
4105        self.latencies = latencies
4106
4107
4108class AzureReachabilityReportLatencyInfo(msrest.serialization.Model):
4109    """Details on latency for a time series.
4110
4111    :param time_stamp: The time stamp.
4112    :type time_stamp: ~datetime.datetime
4113    :param score: The relative latency score between 1 and 100, higher values indicating a faster
4114     connection.
4115    :type score: int
4116    """
4117
4118    _validation = {
4119        'score': {'maximum': 100, 'minimum': 1},
4120    }
4121
4122    _attribute_map = {
4123        'time_stamp': {'key': 'timeStamp', 'type': 'iso-8601'},
4124        'score': {'key': 'score', 'type': 'int'},
4125    }
4126
4127    def __init__(
4128        self,
4129        *,
4130        time_stamp: Optional[datetime.datetime] = None,
4131        score: Optional[int] = None,
4132        **kwargs
4133    ):
4134        super(AzureReachabilityReportLatencyInfo, self).__init__(**kwargs)
4135        self.time_stamp = time_stamp
4136        self.score = score
4137
4138
4139class AzureReachabilityReportLocation(msrest.serialization.Model):
4140    """Parameters that define a geographic location.
4141
4142    All required parameters must be populated in order to send to Azure.
4143
4144    :param country: Required. The name of the country.
4145    :type country: str
4146    :param state: The name of the state.
4147    :type state: str
4148    :param city: The name of the city or town.
4149    :type city: str
4150    """
4151
4152    _validation = {
4153        'country': {'required': True},
4154    }
4155
4156    _attribute_map = {
4157        'country': {'key': 'country', 'type': 'str'},
4158        'state': {'key': 'state', 'type': 'str'},
4159        'city': {'key': 'city', 'type': 'str'},
4160    }
4161
4162    def __init__(
4163        self,
4164        *,
4165        country: str,
4166        state: Optional[str] = None,
4167        city: Optional[str] = None,
4168        **kwargs
4169    ):
4170        super(AzureReachabilityReportLocation, self).__init__(**kwargs)
4171        self.country = country
4172        self.state = state
4173        self.city = city
4174
4175
4176class AzureReachabilityReportParameters(msrest.serialization.Model):
4177    """Geographic and time constraints for Azure reachability report.
4178
4179    All required parameters must be populated in order to send to Azure.
4180
4181    :param provider_location: Required. Parameters that define a geographic location.
4182    :type provider_location: ~azure.mgmt.network.v2020_04_01.models.AzureReachabilityReportLocation
4183    :param providers: List of Internet service providers.
4184    :type providers: list[str]
4185    :param azure_locations: Optional Azure regions to scope the query to.
4186    :type azure_locations: list[str]
4187    :param start_time: Required. The start time for the Azure reachability report.
4188    :type start_time: ~datetime.datetime
4189    :param end_time: Required. The end time for the Azure reachability report.
4190    :type end_time: ~datetime.datetime
4191    """
4192
4193    _validation = {
4194        'provider_location': {'required': True},
4195        'start_time': {'required': True},
4196        'end_time': {'required': True},
4197    }
4198
4199    _attribute_map = {
4200        'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'},
4201        'providers': {'key': 'providers', 'type': '[str]'},
4202        'azure_locations': {'key': 'azureLocations', 'type': '[str]'},
4203        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
4204        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
4205    }
4206
4207    def __init__(
4208        self,
4209        *,
4210        provider_location: "AzureReachabilityReportLocation",
4211        start_time: datetime.datetime,
4212        end_time: datetime.datetime,
4213        providers: Optional[List[str]] = None,
4214        azure_locations: Optional[List[str]] = None,
4215        **kwargs
4216    ):
4217        super(AzureReachabilityReportParameters, self).__init__(**kwargs)
4218        self.provider_location = provider_location
4219        self.providers = providers
4220        self.azure_locations = azure_locations
4221        self.start_time = start_time
4222        self.end_time = end_time
4223
4224
4225class BackendAddressPool(SubResource):
4226    """Pool of backend IP addresses.
4227
4228    Variables are only populated by the server, and will be ignored when sending a request.
4229
4230    :param id: Resource ID.
4231    :type id: str
4232    :param name: The name of the resource that is unique within the set of backend address pools
4233     used by the load balancer. This name can be used to access the resource.
4234    :type name: str
4235    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4236    :vartype etag: str
4237    :ivar type: Type of the resource.
4238    :vartype type: str
4239    :param load_balancer_backend_addresses: An array of backend addresses.
4240    :type load_balancer_backend_addresses:
4241     list[~azure.mgmt.network.v2020_04_01.models.LoadBalancerBackendAddress]
4242    :ivar backend_ip_configurations: An array of references to IP addresses defined in network
4243     interfaces.
4244    :vartype backend_ip_configurations:
4245     list[~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceIPConfiguration]
4246    :ivar load_balancing_rules: An array of references to load balancing rules that use this
4247     backend address pool.
4248    :vartype load_balancing_rules: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
4249    :ivar outbound_rule: A reference to an outbound rule that uses this backend address pool.
4250    :vartype outbound_rule: ~azure.mgmt.network.v2020_04_01.models.SubResource
4251    :ivar outbound_rules: An array of references to outbound rules that use this backend address
4252     pool.
4253    :vartype outbound_rules: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
4254    :ivar provisioning_state: The provisioning state of the backend address pool resource. Possible
4255     values include: "Succeeded", "Updating", "Deleting", "Failed".
4256    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
4257    """
4258
4259    _validation = {
4260        'etag': {'readonly': True},
4261        'type': {'readonly': True},
4262        'backend_ip_configurations': {'readonly': True},
4263        'load_balancing_rules': {'readonly': True},
4264        'outbound_rule': {'readonly': True},
4265        'outbound_rules': {'readonly': True},
4266        'provisioning_state': {'readonly': True},
4267    }
4268
4269    _attribute_map = {
4270        'id': {'key': 'id', 'type': 'str'},
4271        'name': {'key': 'name', 'type': 'str'},
4272        'etag': {'key': 'etag', 'type': 'str'},
4273        'type': {'key': 'type', 'type': 'str'},
4274        'load_balancer_backend_addresses': {'key': 'properties.loadBalancerBackendAddresses', 'type': '[LoadBalancerBackendAddress]'},
4275        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
4276        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
4277        'outbound_rule': {'key': 'properties.outboundRule', 'type': 'SubResource'},
4278        'outbound_rules': {'key': 'properties.outboundRules', 'type': '[SubResource]'},
4279        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4280    }
4281
4282    def __init__(
4283        self,
4284        *,
4285        id: Optional[str] = None,
4286        name: Optional[str] = None,
4287        load_balancer_backend_addresses: Optional[List["LoadBalancerBackendAddress"]] = None,
4288        **kwargs
4289    ):
4290        super(BackendAddressPool, self).__init__(id=id, **kwargs)
4291        self.name = name
4292        self.etag = None
4293        self.type = None
4294        self.load_balancer_backend_addresses = load_balancer_backend_addresses
4295        self.backend_ip_configurations = None
4296        self.load_balancing_rules = None
4297        self.outbound_rule = None
4298        self.outbound_rules = None
4299        self.provisioning_state = None
4300
4301
4302class BastionActiveSession(msrest.serialization.Model):
4303    """The session detail for a target.
4304
4305    Variables are only populated by the server, and will be ignored when sending a request.
4306
4307    :ivar session_id: A unique id for the session.
4308    :vartype session_id: str
4309    :ivar start_time: The time when the session started.
4310    :vartype start_time: str
4311    :ivar target_subscription_id: The subscription id for the target virtual machine.
4312    :vartype target_subscription_id: str
4313    :ivar resource_type: The type of the resource.
4314    :vartype resource_type: str
4315    :ivar target_host_name: The host name of the target.
4316    :vartype target_host_name: str
4317    :ivar target_resource_group: The resource group of the target.
4318    :vartype target_resource_group: str
4319    :ivar user_name: The user name who is active on this session.
4320    :vartype user_name: str
4321    :ivar target_ip_address: The IP Address of the target.
4322    :vartype target_ip_address: str
4323    :ivar protocol: The protocol used to connect to the target. Possible values include: "SSH",
4324     "RDP".
4325    :vartype protocol: str or ~azure.mgmt.network.v2020_04_01.models.BastionConnectProtocol
4326    :ivar target_resource_id: The resource id of the target.
4327    :vartype target_resource_id: str
4328    :ivar session_duration_in_mins: Duration in mins the session has been active.
4329    :vartype session_duration_in_mins: float
4330    """
4331
4332    _validation = {
4333        'session_id': {'readonly': True},
4334        'start_time': {'readonly': True},
4335        'target_subscription_id': {'readonly': True},
4336        'resource_type': {'readonly': True},
4337        'target_host_name': {'readonly': True},
4338        'target_resource_group': {'readonly': True},
4339        'user_name': {'readonly': True},
4340        'target_ip_address': {'readonly': True},
4341        'protocol': {'readonly': True},
4342        'target_resource_id': {'readonly': True},
4343        'session_duration_in_mins': {'readonly': True},
4344    }
4345
4346    _attribute_map = {
4347        'session_id': {'key': 'sessionId', 'type': 'str'},
4348        'start_time': {'key': 'startTime', 'type': 'str'},
4349        'target_subscription_id': {'key': 'targetSubscriptionId', 'type': 'str'},
4350        'resource_type': {'key': 'resourceType', 'type': 'str'},
4351        'target_host_name': {'key': 'targetHostName', 'type': 'str'},
4352        'target_resource_group': {'key': 'targetResourceGroup', 'type': 'str'},
4353        'user_name': {'key': 'userName', 'type': 'str'},
4354        'target_ip_address': {'key': 'targetIpAddress', 'type': 'str'},
4355        'protocol': {'key': 'protocol', 'type': 'str'},
4356        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
4357        'session_duration_in_mins': {'key': 'sessionDurationInMins', 'type': 'float'},
4358    }
4359
4360    def __init__(
4361        self,
4362        **kwargs
4363    ):
4364        super(BastionActiveSession, self).__init__(**kwargs)
4365        self.session_id = None
4366        self.start_time = None
4367        self.target_subscription_id = None
4368        self.resource_type = None
4369        self.target_host_name = None
4370        self.target_resource_group = None
4371        self.user_name = None
4372        self.target_ip_address = None
4373        self.protocol = None
4374        self.target_resource_id = None
4375        self.session_duration_in_mins = None
4376
4377
4378class BastionActiveSessionListResult(msrest.serialization.Model):
4379    """Response for GetActiveSessions.
4380
4381    :param value: List of active sessions on the bastion.
4382    :type value: list[~azure.mgmt.network.v2020_04_01.models.BastionActiveSession]
4383    :param next_link: The URL to get the next set of results.
4384    :type next_link: str
4385    """
4386
4387    _attribute_map = {
4388        'value': {'key': 'value', 'type': '[BastionActiveSession]'},
4389        'next_link': {'key': 'nextLink', 'type': 'str'},
4390    }
4391
4392    def __init__(
4393        self,
4394        *,
4395        value: Optional[List["BastionActiveSession"]] = None,
4396        next_link: Optional[str] = None,
4397        **kwargs
4398    ):
4399        super(BastionActiveSessionListResult, self).__init__(**kwargs)
4400        self.value = value
4401        self.next_link = next_link
4402
4403
4404class BastionHost(Resource):
4405    """Bastion Host resource.
4406
4407    Variables are only populated by the server, and will be ignored when sending a request.
4408
4409    :param id: Resource ID.
4410    :type id: str
4411    :ivar name: Resource name.
4412    :vartype name: str
4413    :ivar type: Resource type.
4414    :vartype type: str
4415    :param location: Resource location.
4416    :type location: str
4417    :param tags: A set of tags. Resource tags.
4418    :type tags: dict[str, str]
4419    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4420    :vartype etag: str
4421    :param ip_configurations: IP configuration of the Bastion Host resource.
4422    :type ip_configurations:
4423     list[~azure.mgmt.network.v2020_04_01.models.BastionHostIPConfiguration]
4424    :param dns_name: FQDN for the endpoint on which bastion host is accessible.
4425    :type dns_name: str
4426    :ivar provisioning_state: The provisioning state of the bastion host resource. Possible values
4427     include: "Succeeded", "Updating", "Deleting", "Failed".
4428    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
4429    """
4430
4431    _validation = {
4432        'name': {'readonly': True},
4433        'type': {'readonly': True},
4434        'etag': {'readonly': True},
4435        'provisioning_state': {'readonly': True},
4436    }
4437
4438    _attribute_map = {
4439        'id': {'key': 'id', 'type': 'str'},
4440        'name': {'key': 'name', 'type': 'str'},
4441        'type': {'key': 'type', 'type': 'str'},
4442        'location': {'key': 'location', 'type': 'str'},
4443        'tags': {'key': 'tags', 'type': '{str}'},
4444        'etag': {'key': 'etag', 'type': 'str'},
4445        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[BastionHostIPConfiguration]'},
4446        'dns_name': {'key': 'properties.dnsName', 'type': 'str'},
4447        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4448    }
4449
4450    def __init__(
4451        self,
4452        *,
4453        id: Optional[str] = None,
4454        location: Optional[str] = None,
4455        tags: Optional[Dict[str, str]] = None,
4456        ip_configurations: Optional[List["BastionHostIPConfiguration"]] = None,
4457        dns_name: Optional[str] = None,
4458        **kwargs
4459    ):
4460        super(BastionHost, self).__init__(id=id, location=location, tags=tags, **kwargs)
4461        self.etag = None
4462        self.ip_configurations = ip_configurations
4463        self.dns_name = dns_name
4464        self.provisioning_state = None
4465
4466
4467class BastionHostIPConfiguration(SubResource):
4468    """IP configuration of an Bastion Host.
4469
4470    Variables are only populated by the server, and will be ignored when sending a request.
4471
4472    :param id: Resource ID.
4473    :type id: str
4474    :param name: Name of the resource that is unique within a resource group. This name can be used
4475     to access the resource.
4476    :type name: str
4477    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4478    :vartype etag: str
4479    :ivar type: Ip configuration type.
4480    :vartype type: str
4481    :param subnet: Reference of the subnet resource.
4482    :type subnet: ~azure.mgmt.network.v2020_04_01.models.SubResource
4483    :param public_ip_address: Reference of the PublicIP resource.
4484    :type public_ip_address: ~azure.mgmt.network.v2020_04_01.models.SubResource
4485    :ivar provisioning_state: The provisioning state of the bastion host IP configuration resource.
4486     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
4487    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
4488    :param private_ip_allocation_method: Private IP allocation method. Possible values include:
4489     "Static", "Dynamic".
4490    :type private_ip_allocation_method: str or
4491     ~azure.mgmt.network.v2020_04_01.models.IPAllocationMethod
4492    """
4493
4494    _validation = {
4495        'etag': {'readonly': True},
4496        'type': {'readonly': True},
4497        'provisioning_state': {'readonly': True},
4498    }
4499
4500    _attribute_map = {
4501        'id': {'key': 'id', 'type': 'str'},
4502        'name': {'key': 'name', 'type': 'str'},
4503        'etag': {'key': 'etag', 'type': 'str'},
4504        'type': {'key': 'type', 'type': 'str'},
4505        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
4506        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
4507        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4508        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
4509    }
4510
4511    def __init__(
4512        self,
4513        *,
4514        id: Optional[str] = None,
4515        name: Optional[str] = None,
4516        subnet: Optional["SubResource"] = None,
4517        public_ip_address: Optional["SubResource"] = None,
4518        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
4519        **kwargs
4520    ):
4521        super(BastionHostIPConfiguration, self).__init__(id=id, **kwargs)
4522        self.name = name
4523        self.etag = None
4524        self.type = None
4525        self.subnet = subnet
4526        self.public_ip_address = public_ip_address
4527        self.provisioning_state = None
4528        self.private_ip_allocation_method = private_ip_allocation_method
4529
4530
4531class BastionHostListResult(msrest.serialization.Model):
4532    """Response for ListBastionHosts API service call.
4533
4534    :param value: List of Bastion Hosts in a resource group.
4535    :type value: list[~azure.mgmt.network.v2020_04_01.models.BastionHost]
4536    :param next_link: URL to get the next set of results.
4537    :type next_link: str
4538    """
4539
4540    _attribute_map = {
4541        'value': {'key': 'value', 'type': '[BastionHost]'},
4542        'next_link': {'key': 'nextLink', 'type': 'str'},
4543    }
4544
4545    def __init__(
4546        self,
4547        *,
4548        value: Optional[List["BastionHost"]] = None,
4549        next_link: Optional[str] = None,
4550        **kwargs
4551    ):
4552        super(BastionHostListResult, self).__init__(**kwargs)
4553        self.value = value
4554        self.next_link = next_link
4555
4556
4557class BastionSessionDeleteResult(msrest.serialization.Model):
4558    """Response for DisconnectActiveSessions.
4559
4560    :param value: List of sessions with their corresponding state.
4561    :type value: list[~azure.mgmt.network.v2020_04_01.models.BastionSessionState]
4562    :param next_link: The URL to get the next set of results.
4563    :type next_link: str
4564    """
4565
4566    _attribute_map = {
4567        'value': {'key': 'value', 'type': '[BastionSessionState]'},
4568        'next_link': {'key': 'nextLink', 'type': 'str'},
4569    }
4570
4571    def __init__(
4572        self,
4573        *,
4574        value: Optional[List["BastionSessionState"]] = None,
4575        next_link: Optional[str] = None,
4576        **kwargs
4577    ):
4578        super(BastionSessionDeleteResult, self).__init__(**kwargs)
4579        self.value = value
4580        self.next_link = next_link
4581
4582
4583class BastionSessionState(msrest.serialization.Model):
4584    """The session state detail for a target.
4585
4586    Variables are only populated by the server, and will be ignored when sending a request.
4587
4588    :ivar session_id: A unique id for the session.
4589    :vartype session_id: str
4590    :ivar message: Used for extra information.
4591    :vartype message: str
4592    :ivar state: The state of the session. Disconnected/Failed/NotFound.
4593    :vartype state: str
4594    """
4595
4596    _validation = {
4597        'session_id': {'readonly': True},
4598        'message': {'readonly': True},
4599        'state': {'readonly': True},
4600    }
4601
4602    _attribute_map = {
4603        'session_id': {'key': 'sessionId', 'type': 'str'},
4604        'message': {'key': 'message', 'type': 'str'},
4605        'state': {'key': 'state', 'type': 'str'},
4606    }
4607
4608    def __init__(
4609        self,
4610        **kwargs
4611    ):
4612        super(BastionSessionState, self).__init__(**kwargs)
4613        self.session_id = None
4614        self.message = None
4615        self.state = None
4616
4617
4618class BastionShareableLink(msrest.serialization.Model):
4619    """Bastion Shareable Link.
4620
4621    Variables are only populated by the server, and will be ignored when sending a request.
4622
4623    All required parameters must be populated in order to send to Azure.
4624
4625    :param vm: Required. Reference of the virtual machine resource.
4626    :type vm: ~azure.mgmt.network.v2020_04_01.models.VM
4627    :ivar bsl: The unique Bastion Shareable Link to the virtual machine.
4628    :vartype bsl: str
4629    :ivar created_at: The time when the link was created.
4630    :vartype created_at: str
4631    :ivar message: Optional field indicating the warning or error message related to the vm in case
4632     of partial failure.
4633    :vartype message: str
4634    """
4635
4636    _validation = {
4637        'vm': {'required': True},
4638        'bsl': {'readonly': True},
4639        'created_at': {'readonly': True},
4640        'message': {'readonly': True},
4641    }
4642
4643    _attribute_map = {
4644        'vm': {'key': 'vm', 'type': 'VM'},
4645        'bsl': {'key': 'bsl', 'type': 'str'},
4646        'created_at': {'key': 'createdAt', 'type': 'str'},
4647        'message': {'key': 'message', 'type': 'str'},
4648    }
4649
4650    def __init__(
4651        self,
4652        *,
4653        vm: "VM",
4654        **kwargs
4655    ):
4656        super(BastionShareableLink, self).__init__(**kwargs)
4657        self.vm = vm
4658        self.bsl = None
4659        self.created_at = None
4660        self.message = None
4661
4662
4663class BastionShareableLinkListRequest(msrest.serialization.Model):
4664    """Post request for all the Bastion Shareable Link endpoints.
4665
4666    :param vms: List of VM references.
4667    :type vms: list[~azure.mgmt.network.v2020_04_01.models.BastionShareableLink]
4668    """
4669
4670    _attribute_map = {
4671        'vms': {'key': 'vms', 'type': '[BastionShareableLink]'},
4672    }
4673
4674    def __init__(
4675        self,
4676        *,
4677        vms: Optional[List["BastionShareableLink"]] = None,
4678        **kwargs
4679    ):
4680        super(BastionShareableLinkListRequest, self).__init__(**kwargs)
4681        self.vms = vms
4682
4683
4684class BastionShareableLinkListResult(msrest.serialization.Model):
4685    """Response for all the Bastion Shareable Link endpoints.
4686
4687    :param value: List of Bastion Shareable Links for the request.
4688    :type value: list[~azure.mgmt.network.v2020_04_01.models.BastionShareableLink]
4689    :param next_link: The URL to get the next set of results.
4690    :type next_link: str
4691    """
4692
4693    _attribute_map = {
4694        'value': {'key': 'value', 'type': '[BastionShareableLink]'},
4695        'next_link': {'key': 'nextLink', 'type': 'str'},
4696    }
4697
4698    def __init__(
4699        self,
4700        *,
4701        value: Optional[List["BastionShareableLink"]] = None,
4702        next_link: Optional[str] = None,
4703        **kwargs
4704    ):
4705        super(BastionShareableLinkListResult, self).__init__(**kwargs)
4706        self.value = value
4707        self.next_link = next_link
4708
4709
4710class BGPCommunity(msrest.serialization.Model):
4711    """Contains bgp community information offered in Service Community resources.
4712
4713    :param service_supported_region: The region which the service support. e.g. For O365, region is
4714     Global.
4715    :type service_supported_region: str
4716    :param community_name: The name of the bgp community. e.g. Skype.
4717    :type community_name: str
4718    :param community_value: The value of the bgp community. For more information:
4719     https://docs.microsoft.com/en-us/azure/expressroute/expressroute-routing.
4720    :type community_value: str
4721    :param community_prefixes: The prefixes that the bgp community contains.
4722    :type community_prefixes: list[str]
4723    :param is_authorized_to_use: Customer is authorized to use bgp community or not.
4724    :type is_authorized_to_use: bool
4725    :param service_group: The service group of the bgp community contains.
4726    :type service_group: str
4727    """
4728
4729    _attribute_map = {
4730        'service_supported_region': {'key': 'serviceSupportedRegion', 'type': 'str'},
4731        'community_name': {'key': 'communityName', 'type': 'str'},
4732        'community_value': {'key': 'communityValue', 'type': 'str'},
4733        'community_prefixes': {'key': 'communityPrefixes', 'type': '[str]'},
4734        'is_authorized_to_use': {'key': 'isAuthorizedToUse', 'type': 'bool'},
4735        'service_group': {'key': 'serviceGroup', 'type': 'str'},
4736    }
4737
4738    def __init__(
4739        self,
4740        *,
4741        service_supported_region: Optional[str] = None,
4742        community_name: Optional[str] = None,
4743        community_value: Optional[str] = None,
4744        community_prefixes: Optional[List[str]] = None,
4745        is_authorized_to_use: Optional[bool] = None,
4746        service_group: Optional[str] = None,
4747        **kwargs
4748    ):
4749        super(BGPCommunity, self).__init__(**kwargs)
4750        self.service_supported_region = service_supported_region
4751        self.community_name = community_name
4752        self.community_value = community_value
4753        self.community_prefixes = community_prefixes
4754        self.is_authorized_to_use = is_authorized_to_use
4755        self.service_group = service_group
4756
4757
4758class BgpPeerStatus(msrest.serialization.Model):
4759    """BGP peer status details.
4760
4761    Variables are only populated by the server, and will be ignored when sending a request.
4762
4763    :ivar local_address: The virtual network gateway's local address.
4764    :vartype local_address: str
4765    :ivar neighbor: The remote BGP peer.
4766    :vartype neighbor: str
4767    :ivar asn: The autonomous system number of the remote BGP peer.
4768    :vartype asn: long
4769    :ivar state: The BGP peer state. Possible values include: "Unknown", "Stopped", "Idle",
4770     "Connecting", "Connected".
4771    :vartype state: str or ~azure.mgmt.network.v2020_04_01.models.BgpPeerState
4772    :ivar connected_duration: For how long the peering has been up.
4773    :vartype connected_duration: str
4774    :ivar routes_received: The number of routes learned from this peer.
4775    :vartype routes_received: long
4776    :ivar messages_sent: The number of BGP messages sent.
4777    :vartype messages_sent: long
4778    :ivar messages_received: The number of BGP messages received.
4779    :vartype messages_received: long
4780    """
4781
4782    _validation = {
4783        'local_address': {'readonly': True},
4784        'neighbor': {'readonly': True},
4785        'asn': {'readonly': True, 'maximum': 4294967295, 'minimum': 0},
4786        'state': {'readonly': True},
4787        'connected_duration': {'readonly': True},
4788        'routes_received': {'readonly': True},
4789        'messages_sent': {'readonly': True},
4790        'messages_received': {'readonly': True},
4791    }
4792
4793    _attribute_map = {
4794        'local_address': {'key': 'localAddress', 'type': 'str'},
4795        'neighbor': {'key': 'neighbor', 'type': 'str'},
4796        'asn': {'key': 'asn', 'type': 'long'},
4797        'state': {'key': 'state', 'type': 'str'},
4798        'connected_duration': {'key': 'connectedDuration', 'type': 'str'},
4799        'routes_received': {'key': 'routesReceived', 'type': 'long'},
4800        'messages_sent': {'key': 'messagesSent', 'type': 'long'},
4801        'messages_received': {'key': 'messagesReceived', 'type': 'long'},
4802    }
4803
4804    def __init__(
4805        self,
4806        **kwargs
4807    ):
4808        super(BgpPeerStatus, self).__init__(**kwargs)
4809        self.local_address = None
4810        self.neighbor = None
4811        self.asn = None
4812        self.state = None
4813        self.connected_duration = None
4814        self.routes_received = None
4815        self.messages_sent = None
4816        self.messages_received = None
4817
4818
4819class BgpPeerStatusListResult(msrest.serialization.Model):
4820    """Response for list BGP peer status API service call.
4821
4822    :param value: List of BGP peers.
4823    :type value: list[~azure.mgmt.network.v2020_04_01.models.BgpPeerStatus]
4824    """
4825
4826    _attribute_map = {
4827        'value': {'key': 'value', 'type': '[BgpPeerStatus]'},
4828    }
4829
4830    def __init__(
4831        self,
4832        *,
4833        value: Optional[List["BgpPeerStatus"]] = None,
4834        **kwargs
4835    ):
4836        super(BgpPeerStatusListResult, self).__init__(**kwargs)
4837        self.value = value
4838
4839
4840class BgpServiceCommunity(Resource):
4841    """Service Community Properties.
4842
4843    Variables are only populated by the server, and will be ignored when sending a request.
4844
4845    :param id: Resource ID.
4846    :type id: str
4847    :ivar name: Resource name.
4848    :vartype name: str
4849    :ivar type: Resource type.
4850    :vartype type: str
4851    :param location: Resource location.
4852    :type location: str
4853    :param tags: A set of tags. Resource tags.
4854    :type tags: dict[str, str]
4855    :param service_name: The name of the bgp community. e.g. Skype.
4856    :type service_name: str
4857    :param bgp_communities: A list of bgp communities.
4858    :type bgp_communities: list[~azure.mgmt.network.v2020_04_01.models.BGPCommunity]
4859    """
4860
4861    _validation = {
4862        'name': {'readonly': True},
4863        'type': {'readonly': True},
4864    }
4865
4866    _attribute_map = {
4867        'id': {'key': 'id', 'type': 'str'},
4868        'name': {'key': 'name', 'type': 'str'},
4869        'type': {'key': 'type', 'type': 'str'},
4870        'location': {'key': 'location', 'type': 'str'},
4871        'tags': {'key': 'tags', 'type': '{str}'},
4872        'service_name': {'key': 'properties.serviceName', 'type': 'str'},
4873        'bgp_communities': {'key': 'properties.bgpCommunities', 'type': '[BGPCommunity]'},
4874    }
4875
4876    def __init__(
4877        self,
4878        *,
4879        id: Optional[str] = None,
4880        location: Optional[str] = None,
4881        tags: Optional[Dict[str, str]] = None,
4882        service_name: Optional[str] = None,
4883        bgp_communities: Optional[List["BGPCommunity"]] = None,
4884        **kwargs
4885    ):
4886        super(BgpServiceCommunity, self).__init__(id=id, location=location, tags=tags, **kwargs)
4887        self.service_name = service_name
4888        self.bgp_communities = bgp_communities
4889
4890
4891class BgpServiceCommunityListResult(msrest.serialization.Model):
4892    """Response for the ListServiceCommunity API service call.
4893
4894    :param value: A list of service community resources.
4895    :type value: list[~azure.mgmt.network.v2020_04_01.models.BgpServiceCommunity]
4896    :param next_link: The URL to get the next set of results.
4897    :type next_link: str
4898    """
4899
4900    _attribute_map = {
4901        'value': {'key': 'value', 'type': '[BgpServiceCommunity]'},
4902        'next_link': {'key': 'nextLink', 'type': 'str'},
4903    }
4904
4905    def __init__(
4906        self,
4907        *,
4908        value: Optional[List["BgpServiceCommunity"]] = None,
4909        next_link: Optional[str] = None,
4910        **kwargs
4911    ):
4912        super(BgpServiceCommunityListResult, self).__init__(**kwargs)
4913        self.value = value
4914        self.next_link = next_link
4915
4916
4917class BgpSettings(msrest.serialization.Model):
4918    """BGP settings details.
4919
4920    :param asn: The BGP speaker's ASN.
4921    :type asn: long
4922    :param bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker.
4923    :type bgp_peering_address: str
4924    :param peer_weight: The weight added to routes learned from this BGP speaker.
4925    :type peer_weight: int
4926    :param bgp_peering_addresses: BGP peering address with IP configuration ID for virtual network
4927     gateway.
4928    :type bgp_peering_addresses:
4929     list[~azure.mgmt.network.v2020_04_01.models.IPConfigurationBgpPeeringAddress]
4930    """
4931
4932    _validation = {
4933        'asn': {'maximum': 4294967295, 'minimum': 0},
4934    }
4935
4936    _attribute_map = {
4937        'asn': {'key': 'asn', 'type': 'long'},
4938        'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'},
4939        'peer_weight': {'key': 'peerWeight', 'type': 'int'},
4940        'bgp_peering_addresses': {'key': 'bgpPeeringAddresses', 'type': '[IPConfigurationBgpPeeringAddress]'},
4941    }
4942
4943    def __init__(
4944        self,
4945        *,
4946        asn: Optional[int] = None,
4947        bgp_peering_address: Optional[str] = None,
4948        peer_weight: Optional[int] = None,
4949        bgp_peering_addresses: Optional[List["IPConfigurationBgpPeeringAddress"]] = None,
4950        **kwargs
4951    ):
4952        super(BgpSettings, self).__init__(**kwargs)
4953        self.asn = asn
4954        self.bgp_peering_address = bgp_peering_address
4955        self.peer_weight = peer_weight
4956        self.bgp_peering_addresses = bgp_peering_addresses
4957
4958
4959class CheckPrivateLinkServiceVisibilityRequest(msrest.serialization.Model):
4960    """Request body of the CheckPrivateLinkServiceVisibility API service call.
4961
4962    :param private_link_service_alias: The alias of the private link service.
4963    :type private_link_service_alias: str
4964    """
4965
4966    _attribute_map = {
4967        'private_link_service_alias': {'key': 'privateLinkServiceAlias', 'type': 'str'},
4968    }
4969
4970    def __init__(
4971        self,
4972        *,
4973        private_link_service_alias: Optional[str] = None,
4974        **kwargs
4975    ):
4976        super(CheckPrivateLinkServiceVisibilityRequest, self).__init__(**kwargs)
4977        self.private_link_service_alias = private_link_service_alias
4978
4979
4980class CloudErrorBody(msrest.serialization.Model):
4981    """An error response from the service.
4982
4983    :param code: An identifier for the error. Codes are invariant and are intended to be consumed
4984     programmatically.
4985    :type code: str
4986    :param message: A message describing the error, intended to be suitable for display in a user
4987     interface.
4988    :type message: str
4989    :param target: The target of the particular error. For example, the name of the property in
4990     error.
4991    :type target: str
4992    :param details: A list of additional details about the error.
4993    :type details: list[~azure.mgmt.network.v2020_04_01.models.CloudErrorBody]
4994    """
4995
4996    _attribute_map = {
4997        'code': {'key': 'code', 'type': 'str'},
4998        'message': {'key': 'message', 'type': 'str'},
4999        'target': {'key': 'target', 'type': 'str'},
5000        'details': {'key': 'details', 'type': '[CloudErrorBody]'},
5001    }
5002
5003    def __init__(
5004        self,
5005        *,
5006        code: Optional[str] = None,
5007        message: Optional[str] = None,
5008        target: Optional[str] = None,
5009        details: Optional[List["CloudErrorBody"]] = None,
5010        **kwargs
5011    ):
5012        super(CloudErrorBody, self).__init__(**kwargs)
5013        self.code = code
5014        self.message = message
5015        self.target = target
5016        self.details = details
5017
5018
5019class Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties(msrest.serialization.Model):
5020    """Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties.
5021
5022    Variables are only populated by the server, and will be ignored when sending a request.
5023
5024    :ivar principal_id: The principal id of user assigned identity.
5025    :vartype principal_id: str
5026    :ivar client_id: The client id of user assigned identity.
5027    :vartype client_id: str
5028    """
5029
5030    _validation = {
5031        'principal_id': {'readonly': True},
5032        'client_id': {'readonly': True},
5033    }
5034
5035    _attribute_map = {
5036        'principal_id': {'key': 'principalId', 'type': 'str'},
5037        'client_id': {'key': 'clientId', 'type': 'str'},
5038    }
5039
5040    def __init__(
5041        self,
5042        **kwargs
5043    ):
5044        super(Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties, self).__init__(**kwargs)
5045        self.principal_id = None
5046        self.client_id = None
5047
5048
5049class ConnectionMonitor(msrest.serialization.Model):
5050    """Parameters that define the operation to create a connection monitor.
5051
5052    :param location: Connection monitor location.
5053    :type location: str
5054    :param tags: A set of tags. Connection monitor tags.
5055    :type tags: dict[str, str]
5056    :param source: Describes the source of connection monitor.
5057    :type source: ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorSource
5058    :param destination: Describes the destination of connection monitor.
5059    :type destination: ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorDestination
5060    :param auto_start: Determines if the connection monitor will start automatically once created.
5061    :type auto_start: bool
5062    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
5063    :type monitoring_interval_in_seconds: int
5064    :param endpoints: List of connection monitor endpoints.
5065    :type endpoints: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorEndpoint]
5066    :param test_configurations: List of connection monitor test configurations.
5067    :type test_configurations:
5068     list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorTestConfiguration]
5069    :param test_groups: List of connection monitor test groups.
5070    :type test_groups: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorTestGroup]
5071    :param outputs: List of connection monitor outputs.
5072    :type outputs: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorOutput]
5073    :param notes: Optional notes to be associated with the connection monitor.
5074    :type notes: str
5075    """
5076
5077    _attribute_map = {
5078        'location': {'key': 'location', 'type': 'str'},
5079        'tags': {'key': 'tags', 'type': '{str}'},
5080        'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'},
5081        'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'},
5082        'auto_start': {'key': 'properties.autoStart', 'type': 'bool'},
5083        'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'},
5084        'endpoints': {'key': 'properties.endpoints', 'type': '[ConnectionMonitorEndpoint]'},
5085        'test_configurations': {'key': 'properties.testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'},
5086        'test_groups': {'key': 'properties.testGroups', 'type': '[ConnectionMonitorTestGroup]'},
5087        'outputs': {'key': 'properties.outputs', 'type': '[ConnectionMonitorOutput]'},
5088        'notes': {'key': 'properties.notes', 'type': 'str'},
5089    }
5090
5091    def __init__(
5092        self,
5093        *,
5094        location: Optional[str] = None,
5095        tags: Optional[Dict[str, str]] = None,
5096        source: Optional["ConnectionMonitorSource"] = None,
5097        destination: Optional["ConnectionMonitorDestination"] = None,
5098        auto_start: Optional[bool] = True,
5099        monitoring_interval_in_seconds: Optional[int] = 60,
5100        endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None,
5101        test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None,
5102        test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None,
5103        outputs: Optional[List["ConnectionMonitorOutput"]] = None,
5104        notes: Optional[str] = None,
5105        **kwargs
5106    ):
5107        super(ConnectionMonitor, self).__init__(**kwargs)
5108        self.location = location
5109        self.tags = tags
5110        self.source = source
5111        self.destination = destination
5112        self.auto_start = auto_start
5113        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
5114        self.endpoints = endpoints
5115        self.test_configurations = test_configurations
5116        self.test_groups = test_groups
5117        self.outputs = outputs
5118        self.notes = notes
5119
5120
5121class ConnectionMonitorDestination(msrest.serialization.Model):
5122    """Describes the destination of connection monitor.
5123
5124    :param resource_id: The ID of the resource used as the destination by connection monitor.
5125    :type resource_id: str
5126    :param address: Address of the connection monitor destination (IP or domain name).
5127    :type address: str
5128    :param port: The destination port used by connection monitor.
5129    :type port: int
5130    """
5131
5132    _attribute_map = {
5133        'resource_id': {'key': 'resourceId', 'type': 'str'},
5134        'address': {'key': 'address', 'type': 'str'},
5135        'port': {'key': 'port', 'type': 'int'},
5136    }
5137
5138    def __init__(
5139        self,
5140        *,
5141        resource_id: Optional[str] = None,
5142        address: Optional[str] = None,
5143        port: Optional[int] = None,
5144        **kwargs
5145    ):
5146        super(ConnectionMonitorDestination, self).__init__(**kwargs)
5147        self.resource_id = resource_id
5148        self.address = address
5149        self.port = port
5150
5151
5152class ConnectionMonitorEndpoint(msrest.serialization.Model):
5153    """Describes the connection monitor endpoint.
5154
5155    All required parameters must be populated in order to send to Azure.
5156
5157    :param name: Required. The name of the connection monitor endpoint.
5158    :type name: str
5159    :param resource_id: Resource ID of the connection monitor endpoint.
5160    :type resource_id: str
5161    :param address: Address of the connection monitor endpoint (IP or domain name).
5162    :type address: str
5163    :param filter: Filter for sub-items within the endpoint.
5164    :type filter: ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorEndpointFilter
5165    """
5166
5167    _validation = {
5168        'name': {'required': True},
5169    }
5170
5171    _attribute_map = {
5172        'name': {'key': 'name', 'type': 'str'},
5173        'resource_id': {'key': 'resourceId', 'type': 'str'},
5174        'address': {'key': 'address', 'type': 'str'},
5175        'filter': {'key': 'filter', 'type': 'ConnectionMonitorEndpointFilter'},
5176    }
5177
5178    def __init__(
5179        self,
5180        *,
5181        name: str,
5182        resource_id: Optional[str] = None,
5183        address: Optional[str] = None,
5184        filter: Optional["ConnectionMonitorEndpointFilter"] = None,
5185        **kwargs
5186    ):
5187        super(ConnectionMonitorEndpoint, self).__init__(**kwargs)
5188        self.name = name
5189        self.resource_id = resource_id
5190        self.address = address
5191        self.filter = filter
5192
5193
5194class ConnectionMonitorEndpointFilter(msrest.serialization.Model):
5195    """Describes the connection monitor endpoint filter.
5196
5197    :param type: The behavior of the endpoint filter. Currently only 'Include' is supported.
5198     Possible values include: "Include".
5199    :type type: str or ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorEndpointFilterType
5200    :param items: List of items in the filter.
5201    :type items: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorEndpointFilterItem]
5202    """
5203
5204    _attribute_map = {
5205        'type': {'key': 'type', 'type': 'str'},
5206        'items': {'key': 'items', 'type': '[ConnectionMonitorEndpointFilterItem]'},
5207    }
5208
5209    def __init__(
5210        self,
5211        *,
5212        type: Optional[Union[str, "ConnectionMonitorEndpointFilterType"]] = None,
5213        items: Optional[List["ConnectionMonitorEndpointFilterItem"]] = None,
5214        **kwargs
5215    ):
5216        super(ConnectionMonitorEndpointFilter, self).__init__(**kwargs)
5217        self.type = type
5218        self.items = items
5219
5220
5221class ConnectionMonitorEndpointFilterItem(msrest.serialization.Model):
5222    """Describes the connection monitor endpoint filter item.
5223
5224    :param type: The type of item included in the filter. Currently only 'AgentAddress' is
5225     supported. Possible values include: "AgentAddress".
5226    :type type: str or
5227     ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorEndpointFilterItemType
5228    :param address: The address of the filter item.
5229    :type address: str
5230    """
5231
5232    _attribute_map = {
5233        'type': {'key': 'type', 'type': 'str'},
5234        'address': {'key': 'address', 'type': 'str'},
5235    }
5236
5237    def __init__(
5238        self,
5239        *,
5240        type: Optional[Union[str, "ConnectionMonitorEndpointFilterItemType"]] = None,
5241        address: Optional[str] = None,
5242        **kwargs
5243    ):
5244        super(ConnectionMonitorEndpointFilterItem, self).__init__(**kwargs)
5245        self.type = type
5246        self.address = address
5247
5248
5249class ConnectionMonitorHttpConfiguration(msrest.serialization.Model):
5250    """Describes the HTTP configuration.
5251
5252    :param port: The port to connect to.
5253    :type port: int
5254    :param method: The HTTP method to use. Possible values include: "Get", "Post".
5255    :type method: str or ~azure.mgmt.network.v2020_04_01.models.HTTPConfigurationMethod
5256    :param path: The path component of the URI. For instance, "/dir1/dir2".
5257    :type path: str
5258    :param request_headers: The HTTP headers to transmit with the request.
5259    :type request_headers: list[~azure.mgmt.network.v2020_04_01.models.HTTPHeader]
5260    :param valid_status_code_ranges: HTTP status codes to consider successful. For instance,
5261     "2xx,301-304,418".
5262    :type valid_status_code_ranges: list[str]
5263    :param prefer_https: Value indicating whether HTTPS is preferred over HTTP in cases where the
5264     choice is not explicit.
5265    :type prefer_https: bool
5266    """
5267
5268    _attribute_map = {
5269        'port': {'key': 'port', 'type': 'int'},
5270        'method': {'key': 'method', 'type': 'str'},
5271        'path': {'key': 'path', 'type': 'str'},
5272        'request_headers': {'key': 'requestHeaders', 'type': '[HTTPHeader]'},
5273        'valid_status_code_ranges': {'key': 'validStatusCodeRanges', 'type': '[str]'},
5274        'prefer_https': {'key': 'preferHTTPS', 'type': 'bool'},
5275    }
5276
5277    def __init__(
5278        self,
5279        *,
5280        port: Optional[int] = None,
5281        method: Optional[Union[str, "HTTPConfigurationMethod"]] = None,
5282        path: Optional[str] = None,
5283        request_headers: Optional[List["HTTPHeader"]] = None,
5284        valid_status_code_ranges: Optional[List[str]] = None,
5285        prefer_https: Optional[bool] = None,
5286        **kwargs
5287    ):
5288        super(ConnectionMonitorHttpConfiguration, self).__init__(**kwargs)
5289        self.port = port
5290        self.method = method
5291        self.path = path
5292        self.request_headers = request_headers
5293        self.valid_status_code_ranges = valid_status_code_ranges
5294        self.prefer_https = prefer_https
5295
5296
5297class ConnectionMonitorIcmpConfiguration(msrest.serialization.Model):
5298    """Describes the ICMP configuration.
5299
5300    :param disable_trace_route: Value indicating whether path evaluation with trace route should be
5301     disabled.
5302    :type disable_trace_route: bool
5303    """
5304
5305    _attribute_map = {
5306        'disable_trace_route': {'key': 'disableTraceRoute', 'type': 'bool'},
5307    }
5308
5309    def __init__(
5310        self,
5311        *,
5312        disable_trace_route: Optional[bool] = None,
5313        **kwargs
5314    ):
5315        super(ConnectionMonitorIcmpConfiguration, self).__init__(**kwargs)
5316        self.disable_trace_route = disable_trace_route
5317
5318
5319class ConnectionMonitorListResult(msrest.serialization.Model):
5320    """List of connection monitors.
5321
5322    :param value: Information about connection monitors.
5323    :type value: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorResult]
5324    """
5325
5326    _attribute_map = {
5327        'value': {'key': 'value', 'type': '[ConnectionMonitorResult]'},
5328    }
5329
5330    def __init__(
5331        self,
5332        *,
5333        value: Optional[List["ConnectionMonitorResult"]] = None,
5334        **kwargs
5335    ):
5336        super(ConnectionMonitorListResult, self).__init__(**kwargs)
5337        self.value = value
5338
5339
5340class ConnectionMonitorOutput(msrest.serialization.Model):
5341    """Describes a connection monitor output destination.
5342
5343    :param type: Connection monitor output destination type. Currently, only "Workspace" is
5344     supported. Possible values include: "Workspace".
5345    :type type: str or ~azure.mgmt.network.v2020_04_01.models.OutputType
5346    :param workspace_settings: Describes the settings for producing output into a log analytics
5347     workspace.
5348    :type workspace_settings:
5349     ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorWorkspaceSettings
5350    """
5351
5352    _attribute_map = {
5353        'type': {'key': 'type', 'type': 'str'},
5354        'workspace_settings': {'key': 'workspaceSettings', 'type': 'ConnectionMonitorWorkspaceSettings'},
5355    }
5356
5357    def __init__(
5358        self,
5359        *,
5360        type: Optional[Union[str, "OutputType"]] = None,
5361        workspace_settings: Optional["ConnectionMonitorWorkspaceSettings"] = None,
5362        **kwargs
5363    ):
5364        super(ConnectionMonitorOutput, self).__init__(**kwargs)
5365        self.type = type
5366        self.workspace_settings = workspace_settings
5367
5368
5369class ConnectionMonitorParameters(msrest.serialization.Model):
5370    """Parameters that define the operation to create a connection monitor.
5371
5372    :param source: Describes the source of connection monitor.
5373    :type source: ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorSource
5374    :param destination: Describes the destination of connection monitor.
5375    :type destination: ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorDestination
5376    :param auto_start: Determines if the connection monitor will start automatically once created.
5377    :type auto_start: bool
5378    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
5379    :type monitoring_interval_in_seconds: int
5380    :param endpoints: List of connection monitor endpoints.
5381    :type endpoints: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorEndpoint]
5382    :param test_configurations: List of connection monitor test configurations.
5383    :type test_configurations:
5384     list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorTestConfiguration]
5385    :param test_groups: List of connection monitor test groups.
5386    :type test_groups: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorTestGroup]
5387    :param outputs: List of connection monitor outputs.
5388    :type outputs: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorOutput]
5389    :param notes: Optional notes to be associated with the connection monitor.
5390    :type notes: str
5391    """
5392
5393    _attribute_map = {
5394        'source': {'key': 'source', 'type': 'ConnectionMonitorSource'},
5395        'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'},
5396        'auto_start': {'key': 'autoStart', 'type': 'bool'},
5397        'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'},
5398        'endpoints': {'key': 'endpoints', 'type': '[ConnectionMonitorEndpoint]'},
5399        'test_configurations': {'key': 'testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'},
5400        'test_groups': {'key': 'testGroups', 'type': '[ConnectionMonitorTestGroup]'},
5401        'outputs': {'key': 'outputs', 'type': '[ConnectionMonitorOutput]'},
5402        'notes': {'key': 'notes', 'type': 'str'},
5403    }
5404
5405    def __init__(
5406        self,
5407        *,
5408        source: Optional["ConnectionMonitorSource"] = None,
5409        destination: Optional["ConnectionMonitorDestination"] = None,
5410        auto_start: Optional[bool] = True,
5411        monitoring_interval_in_seconds: Optional[int] = 60,
5412        endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None,
5413        test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None,
5414        test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None,
5415        outputs: Optional[List["ConnectionMonitorOutput"]] = None,
5416        notes: Optional[str] = None,
5417        **kwargs
5418    ):
5419        super(ConnectionMonitorParameters, self).__init__(**kwargs)
5420        self.source = source
5421        self.destination = destination
5422        self.auto_start = auto_start
5423        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
5424        self.endpoints = endpoints
5425        self.test_configurations = test_configurations
5426        self.test_groups = test_groups
5427        self.outputs = outputs
5428        self.notes = notes
5429
5430
5431class ConnectionMonitorQueryResult(msrest.serialization.Model):
5432    """List of connection states snapshots.
5433
5434    :param source_status: Status of connection monitor source. Possible values include: "Unknown",
5435     "Active", "Inactive".
5436    :type source_status: str or
5437     ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorSourceStatus
5438    :param states: Information about connection states.
5439    :type states: list[~azure.mgmt.network.v2020_04_01.models.ConnectionStateSnapshot]
5440    """
5441
5442    _attribute_map = {
5443        'source_status': {'key': 'sourceStatus', 'type': 'str'},
5444        'states': {'key': 'states', 'type': '[ConnectionStateSnapshot]'},
5445    }
5446
5447    def __init__(
5448        self,
5449        *,
5450        source_status: Optional[Union[str, "ConnectionMonitorSourceStatus"]] = None,
5451        states: Optional[List["ConnectionStateSnapshot"]] = None,
5452        **kwargs
5453    ):
5454        super(ConnectionMonitorQueryResult, self).__init__(**kwargs)
5455        self.source_status = source_status
5456        self.states = states
5457
5458
5459class ConnectionMonitorResult(msrest.serialization.Model):
5460    """Information about the connection monitor.
5461
5462    Variables are only populated by the server, and will be ignored when sending a request.
5463
5464    :ivar name: Name of the connection monitor.
5465    :vartype name: str
5466    :ivar id: ID of the connection monitor.
5467    :vartype id: str
5468    :ivar etag: A unique read-only string that changes whenever the resource is updated.
5469    :vartype etag: str
5470    :ivar type: Connection monitor type.
5471    :vartype type: str
5472    :param location: Connection monitor location.
5473    :type location: str
5474    :param tags: A set of tags. Connection monitor tags.
5475    :type tags: dict[str, str]
5476    :param source: Describes the source of connection monitor.
5477    :type source: ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorSource
5478    :param destination: Describes the destination of connection monitor.
5479    :type destination: ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorDestination
5480    :param auto_start: Determines if the connection monitor will start automatically once created.
5481    :type auto_start: bool
5482    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
5483    :type monitoring_interval_in_seconds: int
5484    :param endpoints: List of connection monitor endpoints.
5485    :type endpoints: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorEndpoint]
5486    :param test_configurations: List of connection monitor test configurations.
5487    :type test_configurations:
5488     list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorTestConfiguration]
5489    :param test_groups: List of connection monitor test groups.
5490    :type test_groups: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorTestGroup]
5491    :param outputs: List of connection monitor outputs.
5492    :type outputs: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorOutput]
5493    :param notes: Optional notes to be associated with the connection monitor.
5494    :type notes: str
5495    :ivar provisioning_state: The provisioning state of the connection monitor. Possible values
5496     include: "Succeeded", "Updating", "Deleting", "Failed".
5497    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
5498    :ivar start_time: The date and time when the connection monitor was started.
5499    :vartype start_time: ~datetime.datetime
5500    :ivar monitoring_status: The monitoring status of the connection monitor.
5501    :vartype monitoring_status: str
5502    :ivar connection_monitor_type: Type of connection monitor. Possible values include:
5503     "MultiEndpoint", "SingleSourceDestination".
5504    :vartype connection_monitor_type: str or
5505     ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorType
5506    """
5507
5508    _validation = {
5509        'name': {'readonly': True},
5510        'id': {'readonly': True},
5511        'etag': {'readonly': True},
5512        'type': {'readonly': True},
5513        'provisioning_state': {'readonly': True},
5514        'start_time': {'readonly': True},
5515        'monitoring_status': {'readonly': True},
5516        'connection_monitor_type': {'readonly': True},
5517    }
5518
5519    _attribute_map = {
5520        'name': {'key': 'name', 'type': 'str'},
5521        'id': {'key': 'id', 'type': 'str'},
5522        'etag': {'key': 'etag', 'type': 'str'},
5523        'type': {'key': 'type', 'type': 'str'},
5524        'location': {'key': 'location', 'type': 'str'},
5525        'tags': {'key': 'tags', 'type': '{str}'},
5526        'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'},
5527        'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'},
5528        'auto_start': {'key': 'properties.autoStart', 'type': 'bool'},
5529        'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'},
5530        'endpoints': {'key': 'properties.endpoints', 'type': '[ConnectionMonitorEndpoint]'},
5531        'test_configurations': {'key': 'properties.testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'},
5532        'test_groups': {'key': 'properties.testGroups', 'type': '[ConnectionMonitorTestGroup]'},
5533        'outputs': {'key': 'properties.outputs', 'type': '[ConnectionMonitorOutput]'},
5534        'notes': {'key': 'properties.notes', 'type': 'str'},
5535        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5536        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
5537        'monitoring_status': {'key': 'properties.monitoringStatus', 'type': 'str'},
5538        'connection_monitor_type': {'key': 'properties.connectionMonitorType', 'type': 'str'},
5539    }
5540
5541    def __init__(
5542        self,
5543        *,
5544        location: Optional[str] = None,
5545        tags: Optional[Dict[str, str]] = None,
5546        source: Optional["ConnectionMonitorSource"] = None,
5547        destination: Optional["ConnectionMonitorDestination"] = None,
5548        auto_start: Optional[bool] = True,
5549        monitoring_interval_in_seconds: Optional[int] = 60,
5550        endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None,
5551        test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None,
5552        test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None,
5553        outputs: Optional[List["ConnectionMonitorOutput"]] = None,
5554        notes: Optional[str] = None,
5555        **kwargs
5556    ):
5557        super(ConnectionMonitorResult, self).__init__(**kwargs)
5558        self.name = None
5559        self.id = None
5560        self.etag = None
5561        self.type = None
5562        self.location = location
5563        self.tags = tags
5564        self.source = source
5565        self.destination = destination
5566        self.auto_start = auto_start
5567        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
5568        self.endpoints = endpoints
5569        self.test_configurations = test_configurations
5570        self.test_groups = test_groups
5571        self.outputs = outputs
5572        self.notes = notes
5573        self.provisioning_state = None
5574        self.start_time = None
5575        self.monitoring_status = None
5576        self.connection_monitor_type = None
5577
5578
5579class ConnectionMonitorResultProperties(ConnectionMonitorParameters):
5580    """Describes the properties of a connection monitor.
5581
5582    Variables are only populated by the server, and will be ignored when sending a request.
5583
5584    :param source: Describes the source of connection monitor.
5585    :type source: ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorSource
5586    :param destination: Describes the destination of connection monitor.
5587    :type destination: ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorDestination
5588    :param auto_start: Determines if the connection monitor will start automatically once created.
5589    :type auto_start: bool
5590    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
5591    :type monitoring_interval_in_seconds: int
5592    :param endpoints: List of connection monitor endpoints.
5593    :type endpoints: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorEndpoint]
5594    :param test_configurations: List of connection monitor test configurations.
5595    :type test_configurations:
5596     list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorTestConfiguration]
5597    :param test_groups: List of connection monitor test groups.
5598    :type test_groups: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorTestGroup]
5599    :param outputs: List of connection monitor outputs.
5600    :type outputs: list[~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorOutput]
5601    :param notes: Optional notes to be associated with the connection monitor.
5602    :type notes: str
5603    :ivar provisioning_state: The provisioning state of the connection monitor. Possible values
5604     include: "Succeeded", "Updating", "Deleting", "Failed".
5605    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
5606    :ivar start_time: The date and time when the connection monitor was started.
5607    :vartype start_time: ~datetime.datetime
5608    :ivar monitoring_status: The monitoring status of the connection monitor.
5609    :vartype monitoring_status: str
5610    :ivar connection_monitor_type: Type of connection monitor. Possible values include:
5611     "MultiEndpoint", "SingleSourceDestination".
5612    :vartype connection_monitor_type: str or
5613     ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorType
5614    """
5615
5616    _validation = {
5617        'provisioning_state': {'readonly': True},
5618        'start_time': {'readonly': True},
5619        'monitoring_status': {'readonly': True},
5620        'connection_monitor_type': {'readonly': True},
5621    }
5622
5623    _attribute_map = {
5624        'source': {'key': 'source', 'type': 'ConnectionMonitorSource'},
5625        'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'},
5626        'auto_start': {'key': 'autoStart', 'type': 'bool'},
5627        'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'},
5628        'endpoints': {'key': 'endpoints', 'type': '[ConnectionMonitorEndpoint]'},
5629        'test_configurations': {'key': 'testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'},
5630        'test_groups': {'key': 'testGroups', 'type': '[ConnectionMonitorTestGroup]'},
5631        'outputs': {'key': 'outputs', 'type': '[ConnectionMonitorOutput]'},
5632        'notes': {'key': 'notes', 'type': 'str'},
5633        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
5634        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
5635        'monitoring_status': {'key': 'monitoringStatus', 'type': 'str'},
5636        'connection_monitor_type': {'key': 'connectionMonitorType', 'type': 'str'},
5637    }
5638
5639    def __init__(
5640        self,
5641        *,
5642        source: Optional["ConnectionMonitorSource"] = None,
5643        destination: Optional["ConnectionMonitorDestination"] = None,
5644        auto_start: Optional[bool] = True,
5645        monitoring_interval_in_seconds: Optional[int] = 60,
5646        endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None,
5647        test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None,
5648        test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None,
5649        outputs: Optional[List["ConnectionMonitorOutput"]] = None,
5650        notes: Optional[str] = None,
5651        **kwargs
5652    ):
5653        super(ConnectionMonitorResultProperties, self).__init__(source=source, destination=destination, auto_start=auto_start, monitoring_interval_in_seconds=monitoring_interval_in_seconds, endpoints=endpoints, test_configurations=test_configurations, test_groups=test_groups, outputs=outputs, notes=notes, **kwargs)
5654        self.provisioning_state = None
5655        self.start_time = None
5656        self.monitoring_status = None
5657        self.connection_monitor_type = None
5658
5659
5660class ConnectionMonitorSource(msrest.serialization.Model):
5661    """Describes the source of connection monitor.
5662
5663    All required parameters must be populated in order to send to Azure.
5664
5665    :param resource_id: Required. The ID of the resource used as the source by connection monitor.
5666    :type resource_id: str
5667    :param port: The source port used by connection monitor.
5668    :type port: int
5669    """
5670
5671    _validation = {
5672        'resource_id': {'required': True},
5673    }
5674
5675    _attribute_map = {
5676        'resource_id': {'key': 'resourceId', 'type': 'str'},
5677        'port': {'key': 'port', 'type': 'int'},
5678    }
5679
5680    def __init__(
5681        self,
5682        *,
5683        resource_id: str,
5684        port: Optional[int] = None,
5685        **kwargs
5686    ):
5687        super(ConnectionMonitorSource, self).__init__(**kwargs)
5688        self.resource_id = resource_id
5689        self.port = port
5690
5691
5692class ConnectionMonitorSuccessThreshold(msrest.serialization.Model):
5693    """Describes the threshold for declaring a test successful.
5694
5695    :param checks_failed_percent: The maximum percentage of failed checks permitted for a test to
5696     evaluate as successful.
5697    :type checks_failed_percent: int
5698    :param round_trip_time_ms: The maximum round-trip time in milliseconds permitted for a test to
5699     evaluate as successful.
5700    :type round_trip_time_ms: float
5701    """
5702
5703    _attribute_map = {
5704        'checks_failed_percent': {'key': 'checksFailedPercent', 'type': 'int'},
5705        'round_trip_time_ms': {'key': 'roundTripTimeMs', 'type': 'float'},
5706    }
5707
5708    def __init__(
5709        self,
5710        *,
5711        checks_failed_percent: Optional[int] = None,
5712        round_trip_time_ms: Optional[float] = None,
5713        **kwargs
5714    ):
5715        super(ConnectionMonitorSuccessThreshold, self).__init__(**kwargs)
5716        self.checks_failed_percent = checks_failed_percent
5717        self.round_trip_time_ms = round_trip_time_ms
5718
5719
5720class ConnectionMonitorTcpConfiguration(msrest.serialization.Model):
5721    """Describes the TCP configuration.
5722
5723    :param port: The port to connect to.
5724    :type port: int
5725    :param disable_trace_route: Value indicating whether path evaluation with trace route should be
5726     disabled.
5727    :type disable_trace_route: bool
5728    """
5729
5730    _attribute_map = {
5731        'port': {'key': 'port', 'type': 'int'},
5732        'disable_trace_route': {'key': 'disableTraceRoute', 'type': 'bool'},
5733    }
5734
5735    def __init__(
5736        self,
5737        *,
5738        port: Optional[int] = None,
5739        disable_trace_route: Optional[bool] = None,
5740        **kwargs
5741    ):
5742        super(ConnectionMonitorTcpConfiguration, self).__init__(**kwargs)
5743        self.port = port
5744        self.disable_trace_route = disable_trace_route
5745
5746
5747class ConnectionMonitorTestConfiguration(msrest.serialization.Model):
5748    """Describes a connection monitor test configuration.
5749
5750    All required parameters must be populated in order to send to Azure.
5751
5752    :param name: Required. The name of the connection monitor test configuration.
5753    :type name: str
5754    :param test_frequency_sec: The frequency of test evaluation, in seconds.
5755    :type test_frequency_sec: int
5756    :param protocol: Required. The protocol to use in test evaluation. Possible values include:
5757     "Tcp", "Http", "Icmp".
5758    :type protocol: str or
5759     ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorTestConfigurationProtocol
5760    :param preferred_ip_version: The preferred IP version to use in test evaluation. The connection
5761     monitor may choose to use a different version depending on other parameters. Possible values
5762     include: "IPv4", "IPv6".
5763    :type preferred_ip_version: str or ~azure.mgmt.network.v2020_04_01.models.PreferredIPVersion
5764    :param http_configuration: The parameters used to perform test evaluation over HTTP.
5765    :type http_configuration:
5766     ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorHttpConfiguration
5767    :param tcp_configuration: The parameters used to perform test evaluation over TCP.
5768    :type tcp_configuration:
5769     ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorTcpConfiguration
5770    :param icmp_configuration: The parameters used to perform test evaluation over ICMP.
5771    :type icmp_configuration:
5772     ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorIcmpConfiguration
5773    :param success_threshold: The threshold for declaring a test successful.
5774    :type success_threshold:
5775     ~azure.mgmt.network.v2020_04_01.models.ConnectionMonitorSuccessThreshold
5776    """
5777
5778    _validation = {
5779        'name': {'required': True},
5780        'protocol': {'required': True},
5781    }
5782
5783    _attribute_map = {
5784        'name': {'key': 'name', 'type': 'str'},
5785        'test_frequency_sec': {'key': 'testFrequencySec', 'type': 'int'},
5786        'protocol': {'key': 'protocol', 'type': 'str'},
5787        'preferred_ip_version': {'key': 'preferredIPVersion', 'type': 'str'},
5788        'http_configuration': {'key': 'httpConfiguration', 'type': 'ConnectionMonitorHttpConfiguration'},
5789        'tcp_configuration': {'key': 'tcpConfiguration', 'type': 'ConnectionMonitorTcpConfiguration'},
5790        'icmp_configuration': {'key': 'icmpConfiguration', 'type': 'ConnectionMonitorIcmpConfiguration'},
5791        'success_threshold': {'key': 'successThreshold', 'type': 'ConnectionMonitorSuccessThreshold'},
5792    }
5793
5794    def __init__(
5795        self,
5796        *,
5797        name: str,
5798        protocol: Union[str, "ConnectionMonitorTestConfigurationProtocol"],
5799        test_frequency_sec: Optional[int] = None,
5800        preferred_ip_version: Optional[Union[str, "PreferredIPVersion"]] = None,
5801        http_configuration: Optional["ConnectionMonitorHttpConfiguration"] = None,
5802        tcp_configuration: Optional["ConnectionMonitorTcpConfiguration"] = None,
5803        icmp_configuration: Optional["ConnectionMonitorIcmpConfiguration"] = None,
5804        success_threshold: Optional["ConnectionMonitorSuccessThreshold"] = None,
5805        **kwargs
5806    ):
5807        super(ConnectionMonitorTestConfiguration, self).__init__(**kwargs)
5808        self.name = name
5809        self.test_frequency_sec = test_frequency_sec
5810        self.protocol = protocol
5811        self.preferred_ip_version = preferred_ip_version
5812        self.http_configuration = http_configuration
5813        self.tcp_configuration = tcp_configuration
5814        self.icmp_configuration = icmp_configuration
5815        self.success_threshold = success_threshold
5816
5817
5818class ConnectionMonitorTestGroup(msrest.serialization.Model):
5819    """Describes the connection monitor test group.
5820
5821    All required parameters must be populated in order to send to Azure.
5822
5823    :param name: Required. The name of the connection monitor test group.
5824    :type name: str
5825    :param disable: Value indicating whether test group is disabled.
5826    :type disable: bool
5827    :param test_configurations: Required. List of test configuration names.
5828    :type test_configurations: list[str]
5829    :param sources: Required. List of source endpoint names.
5830    :type sources: list[str]
5831    :param destinations: Required. List of destination endpoint names.
5832    :type destinations: list[str]
5833    """
5834
5835    _validation = {
5836        'name': {'required': True},
5837        'test_configurations': {'required': True},
5838        'sources': {'required': True},
5839        'destinations': {'required': True},
5840    }
5841
5842    _attribute_map = {
5843        'name': {'key': 'name', 'type': 'str'},
5844        'disable': {'key': 'disable', 'type': 'bool'},
5845        'test_configurations': {'key': 'testConfigurations', 'type': '[str]'},
5846        'sources': {'key': 'sources', 'type': '[str]'},
5847        'destinations': {'key': 'destinations', 'type': '[str]'},
5848    }
5849
5850    def __init__(
5851        self,
5852        *,
5853        name: str,
5854        test_configurations: List[str],
5855        sources: List[str],
5856        destinations: List[str],
5857        disable: Optional[bool] = None,
5858        **kwargs
5859    ):
5860        super(ConnectionMonitorTestGroup, self).__init__(**kwargs)
5861        self.name = name
5862        self.disable = disable
5863        self.test_configurations = test_configurations
5864        self.sources = sources
5865        self.destinations = destinations
5866
5867
5868class ConnectionMonitorWorkspaceSettings(msrest.serialization.Model):
5869    """Describes the settings for producing output into a log analytics workspace.
5870
5871    :param workspace_resource_id: Log analytics workspace resource ID.
5872    :type workspace_resource_id: str
5873    """
5874
5875    _attribute_map = {
5876        'workspace_resource_id': {'key': 'workspaceResourceId', 'type': 'str'},
5877    }
5878
5879    def __init__(
5880        self,
5881        *,
5882        workspace_resource_id: Optional[str] = None,
5883        **kwargs
5884    ):
5885        super(ConnectionMonitorWorkspaceSettings, self).__init__(**kwargs)
5886        self.workspace_resource_id = workspace_resource_id
5887
5888
5889class ConnectionResetSharedKey(msrest.serialization.Model):
5890    """The virtual network connection reset shared key.
5891
5892    All required parameters must be populated in order to send to Azure.
5893
5894    :param key_length: Required. The virtual network connection reset shared key length, should
5895     between 1 and 128.
5896    :type key_length: int
5897    """
5898
5899    _validation = {
5900        'key_length': {'required': True, 'maximum': 128, 'minimum': 1},
5901    }
5902
5903    _attribute_map = {
5904        'key_length': {'key': 'keyLength', 'type': 'int'},
5905    }
5906
5907    def __init__(
5908        self,
5909        *,
5910        key_length: int,
5911        **kwargs
5912    ):
5913        super(ConnectionResetSharedKey, self).__init__(**kwargs)
5914        self.key_length = key_length
5915
5916
5917class ConnectionSharedKey(SubResource):
5918    """Response for GetConnectionSharedKey API service call.
5919
5920    All required parameters must be populated in order to send to Azure.
5921
5922    :param id: Resource ID.
5923    :type id: str
5924    :param value: Required. The virtual network connection shared key value.
5925    :type value: str
5926    """
5927
5928    _validation = {
5929        'value': {'required': True},
5930    }
5931
5932    _attribute_map = {
5933        'id': {'key': 'id', 'type': 'str'},
5934        'value': {'key': 'value', 'type': 'str'},
5935    }
5936
5937    def __init__(
5938        self,
5939        *,
5940        value: str,
5941        id: Optional[str] = None,
5942        **kwargs
5943    ):
5944        super(ConnectionSharedKey, self).__init__(id=id, **kwargs)
5945        self.value = value
5946
5947
5948class ConnectionStateSnapshot(msrest.serialization.Model):
5949    """Connection state snapshot.
5950
5951    Variables are only populated by the server, and will be ignored when sending a request.
5952
5953    :param connection_state: The connection state. Possible values include: "Reachable",
5954     "Unreachable", "Unknown".
5955    :type connection_state: str or ~azure.mgmt.network.v2020_04_01.models.ConnectionState
5956    :param start_time: The start time of the connection snapshot.
5957    :type start_time: ~datetime.datetime
5958    :param end_time: The end time of the connection snapshot.
5959    :type end_time: ~datetime.datetime
5960    :param evaluation_state: Connectivity analysis evaluation state. Possible values include:
5961     "NotStarted", "InProgress", "Completed".
5962    :type evaluation_state: str or ~azure.mgmt.network.v2020_04_01.models.EvaluationState
5963    :param avg_latency_in_ms: Average latency in ms.
5964    :type avg_latency_in_ms: int
5965    :param min_latency_in_ms: Minimum latency in ms.
5966    :type min_latency_in_ms: int
5967    :param max_latency_in_ms: Maximum latency in ms.
5968    :type max_latency_in_ms: int
5969    :param probes_sent: The number of sent probes.
5970    :type probes_sent: int
5971    :param probes_failed: The number of failed probes.
5972    :type probes_failed: int
5973    :ivar hops: List of hops between the source and the destination.
5974    :vartype hops: list[~azure.mgmt.network.v2020_04_01.models.ConnectivityHop]
5975    """
5976
5977    _validation = {
5978        'hops': {'readonly': True},
5979    }
5980
5981    _attribute_map = {
5982        'connection_state': {'key': 'connectionState', 'type': 'str'},
5983        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
5984        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
5985        'evaluation_state': {'key': 'evaluationState', 'type': 'str'},
5986        'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'int'},
5987        'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'int'},
5988        'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'int'},
5989        'probes_sent': {'key': 'probesSent', 'type': 'int'},
5990        'probes_failed': {'key': 'probesFailed', 'type': 'int'},
5991        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
5992    }
5993
5994    def __init__(
5995        self,
5996        *,
5997        connection_state: Optional[Union[str, "ConnectionState"]] = None,
5998        start_time: Optional[datetime.datetime] = None,
5999        end_time: Optional[datetime.datetime] = None,
6000        evaluation_state: Optional[Union[str, "EvaluationState"]] = None,
6001        avg_latency_in_ms: Optional[int] = None,
6002        min_latency_in_ms: Optional[int] = None,
6003        max_latency_in_ms: Optional[int] = None,
6004        probes_sent: Optional[int] = None,
6005        probes_failed: Optional[int] = None,
6006        **kwargs
6007    ):
6008        super(ConnectionStateSnapshot, self).__init__(**kwargs)
6009        self.connection_state = connection_state
6010        self.start_time = start_time
6011        self.end_time = end_time
6012        self.evaluation_state = evaluation_state
6013        self.avg_latency_in_ms = avg_latency_in_ms
6014        self.min_latency_in_ms = min_latency_in_ms
6015        self.max_latency_in_ms = max_latency_in_ms
6016        self.probes_sent = probes_sent
6017        self.probes_failed = probes_failed
6018        self.hops = None
6019
6020
6021class ConnectivityDestination(msrest.serialization.Model):
6022    """Parameters that define destination of connection.
6023
6024    :param resource_id: The ID of the resource to which a connection attempt will be made.
6025    :type resource_id: str
6026    :param address: The IP address or URI the resource to which a connection attempt will be made.
6027    :type address: str
6028    :param port: Port on which check connectivity will be performed.
6029    :type port: int
6030    """
6031
6032    _attribute_map = {
6033        'resource_id': {'key': 'resourceId', 'type': 'str'},
6034        'address': {'key': 'address', 'type': 'str'},
6035        'port': {'key': 'port', 'type': 'int'},
6036    }
6037
6038    def __init__(
6039        self,
6040        *,
6041        resource_id: Optional[str] = None,
6042        address: Optional[str] = None,
6043        port: Optional[int] = None,
6044        **kwargs
6045    ):
6046        super(ConnectivityDestination, self).__init__(**kwargs)
6047        self.resource_id = resource_id
6048        self.address = address
6049        self.port = port
6050
6051
6052class ConnectivityHop(msrest.serialization.Model):
6053    """Information about a hop between the source and the destination.
6054
6055    Variables are only populated by the server, and will be ignored when sending a request.
6056
6057    :ivar type: The type of the hop.
6058    :vartype type: str
6059    :ivar id: The ID of the hop.
6060    :vartype id: str
6061    :ivar address: The IP address of the hop.
6062    :vartype address: str
6063    :ivar resource_id: The ID of the resource corresponding to this hop.
6064    :vartype resource_id: str
6065    :ivar next_hop_ids: List of next hop identifiers.
6066    :vartype next_hop_ids: list[str]
6067    :ivar issues: List of issues.
6068    :vartype issues: list[~azure.mgmt.network.v2020_04_01.models.ConnectivityIssue]
6069    """
6070
6071    _validation = {
6072        'type': {'readonly': True},
6073        'id': {'readonly': True},
6074        'address': {'readonly': True},
6075        'resource_id': {'readonly': True},
6076        'next_hop_ids': {'readonly': True},
6077        'issues': {'readonly': True},
6078    }
6079
6080    _attribute_map = {
6081        'type': {'key': 'type', 'type': 'str'},
6082        'id': {'key': 'id', 'type': 'str'},
6083        'address': {'key': 'address', 'type': 'str'},
6084        'resource_id': {'key': 'resourceId', 'type': 'str'},
6085        'next_hop_ids': {'key': 'nextHopIds', 'type': '[str]'},
6086        'issues': {'key': 'issues', 'type': '[ConnectivityIssue]'},
6087    }
6088
6089    def __init__(
6090        self,
6091        **kwargs
6092    ):
6093        super(ConnectivityHop, self).__init__(**kwargs)
6094        self.type = None
6095        self.id = None
6096        self.address = None
6097        self.resource_id = None
6098        self.next_hop_ids = None
6099        self.issues = None
6100
6101
6102class ConnectivityInformation(msrest.serialization.Model):
6103    """Information on the connectivity status.
6104
6105    Variables are only populated by the server, and will be ignored when sending a request.
6106
6107    :ivar hops: List of hops between the source and the destination.
6108    :vartype hops: list[~azure.mgmt.network.v2020_04_01.models.ConnectivityHop]
6109    :ivar connection_status: The connection status. Possible values include: "Unknown",
6110     "Connected", "Disconnected", "Degraded".
6111    :vartype connection_status: str or ~azure.mgmt.network.v2020_04_01.models.ConnectionStatus
6112    :ivar avg_latency_in_ms: Average latency in milliseconds.
6113    :vartype avg_latency_in_ms: int
6114    :ivar min_latency_in_ms: Minimum latency in milliseconds.
6115    :vartype min_latency_in_ms: int
6116    :ivar max_latency_in_ms: Maximum latency in milliseconds.
6117    :vartype max_latency_in_ms: int
6118    :ivar probes_sent: Total number of probes sent.
6119    :vartype probes_sent: int
6120    :ivar probes_failed: Number of failed probes.
6121    :vartype probes_failed: int
6122    """
6123
6124    _validation = {
6125        'hops': {'readonly': True},
6126        'connection_status': {'readonly': True},
6127        'avg_latency_in_ms': {'readonly': True},
6128        'min_latency_in_ms': {'readonly': True},
6129        'max_latency_in_ms': {'readonly': True},
6130        'probes_sent': {'readonly': True},
6131        'probes_failed': {'readonly': True},
6132    }
6133
6134    _attribute_map = {
6135        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
6136        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
6137        'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'int'},
6138        'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'int'},
6139        'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'int'},
6140        'probes_sent': {'key': 'probesSent', 'type': 'int'},
6141        'probes_failed': {'key': 'probesFailed', 'type': 'int'},
6142    }
6143
6144    def __init__(
6145        self,
6146        **kwargs
6147    ):
6148        super(ConnectivityInformation, self).__init__(**kwargs)
6149        self.hops = None
6150        self.connection_status = None
6151        self.avg_latency_in_ms = None
6152        self.min_latency_in_ms = None
6153        self.max_latency_in_ms = None
6154        self.probes_sent = None
6155        self.probes_failed = None
6156
6157
6158class ConnectivityIssue(msrest.serialization.Model):
6159    """Information about an issue encountered in the process of checking for connectivity.
6160
6161    Variables are only populated by the server, and will be ignored when sending a request.
6162
6163    :ivar origin: The origin of the issue. Possible values include: "Local", "Inbound", "Outbound".
6164    :vartype origin: str or ~azure.mgmt.network.v2020_04_01.models.Origin
6165    :ivar severity: The severity of the issue. Possible values include: "Error", "Warning".
6166    :vartype severity: str or ~azure.mgmt.network.v2020_04_01.models.Severity
6167    :ivar type: The type of issue. Possible values include: "Unknown", "AgentStopped",
6168     "GuestFirewall", "DnsResolution", "SocketBind", "NetworkSecurityRule", "UserDefinedRoute",
6169     "PortThrottled", "Platform".
6170    :vartype type: str or ~azure.mgmt.network.v2020_04_01.models.IssueType
6171    :ivar context: Provides additional context on the issue.
6172    :vartype context: list[dict[str, str]]
6173    """
6174
6175    _validation = {
6176        'origin': {'readonly': True},
6177        'severity': {'readonly': True},
6178        'type': {'readonly': True},
6179        'context': {'readonly': True},
6180    }
6181
6182    _attribute_map = {
6183        'origin': {'key': 'origin', 'type': 'str'},
6184        'severity': {'key': 'severity', 'type': 'str'},
6185        'type': {'key': 'type', 'type': 'str'},
6186        'context': {'key': 'context', 'type': '[{str}]'},
6187    }
6188
6189    def __init__(
6190        self,
6191        **kwargs
6192    ):
6193        super(ConnectivityIssue, self).__init__(**kwargs)
6194        self.origin = None
6195        self.severity = None
6196        self.type = None
6197        self.context = None
6198
6199
6200class ConnectivityParameters(msrest.serialization.Model):
6201    """Parameters that determine how the connectivity check will be performed.
6202
6203    All required parameters must be populated in order to send to Azure.
6204
6205    :param source: Required. The source of the connection.
6206    :type source: ~azure.mgmt.network.v2020_04_01.models.ConnectivitySource
6207    :param destination: Required. The destination of connection.
6208    :type destination: ~azure.mgmt.network.v2020_04_01.models.ConnectivityDestination
6209    :param protocol: Network protocol. Possible values include: "Tcp", "Http", "Https", "Icmp".
6210    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.Protocol
6211    :param protocol_configuration: Configuration of the protocol.
6212    :type protocol_configuration: ~azure.mgmt.network.v2020_04_01.models.ProtocolConfiguration
6213    :param preferred_ip_version: Preferred IP version of the connection. Possible values include:
6214     "IPv4", "IPv6".
6215    :type preferred_ip_version: str or ~azure.mgmt.network.v2020_04_01.models.IPVersion
6216    """
6217
6218    _validation = {
6219        'source': {'required': True},
6220        'destination': {'required': True},
6221    }
6222
6223    _attribute_map = {
6224        'source': {'key': 'source', 'type': 'ConnectivitySource'},
6225        'destination': {'key': 'destination', 'type': 'ConnectivityDestination'},
6226        'protocol': {'key': 'protocol', 'type': 'str'},
6227        'protocol_configuration': {'key': 'protocolConfiguration', 'type': 'ProtocolConfiguration'},
6228        'preferred_ip_version': {'key': 'preferredIPVersion', 'type': 'str'},
6229    }
6230
6231    def __init__(
6232        self,
6233        *,
6234        source: "ConnectivitySource",
6235        destination: "ConnectivityDestination",
6236        protocol: Optional[Union[str, "Protocol"]] = None,
6237        protocol_configuration: Optional["ProtocolConfiguration"] = None,
6238        preferred_ip_version: Optional[Union[str, "IPVersion"]] = None,
6239        **kwargs
6240    ):
6241        super(ConnectivityParameters, self).__init__(**kwargs)
6242        self.source = source
6243        self.destination = destination
6244        self.protocol = protocol
6245        self.protocol_configuration = protocol_configuration
6246        self.preferred_ip_version = preferred_ip_version
6247
6248
6249class ConnectivitySource(msrest.serialization.Model):
6250    """Parameters that define the source of the connection.
6251
6252    All required parameters must be populated in order to send to Azure.
6253
6254    :param resource_id: Required. The ID of the resource from which a connectivity check will be
6255     initiated.
6256    :type resource_id: str
6257    :param port: The source port from which a connectivity check will be performed.
6258    :type port: int
6259    """
6260
6261    _validation = {
6262        'resource_id': {'required': True},
6263    }
6264
6265    _attribute_map = {
6266        'resource_id': {'key': 'resourceId', 'type': 'str'},
6267        'port': {'key': 'port', 'type': 'int'},
6268    }
6269
6270    def __init__(
6271        self,
6272        *,
6273        resource_id: str,
6274        port: Optional[int] = None,
6275        **kwargs
6276    ):
6277        super(ConnectivitySource, self).__init__(**kwargs)
6278        self.resource_id = resource_id
6279        self.port = port
6280
6281
6282class Container(SubResource):
6283    """Reference to container resource in remote resource provider.
6284
6285    :param id: Resource ID.
6286    :type id: str
6287    """
6288
6289    _attribute_map = {
6290        'id': {'key': 'id', 'type': 'str'},
6291    }
6292
6293    def __init__(
6294        self,
6295        *,
6296        id: Optional[str] = None,
6297        **kwargs
6298    ):
6299        super(Container, self).__init__(id=id, **kwargs)
6300
6301
6302class ContainerNetworkInterface(SubResource):
6303    """Container network interface child resource.
6304
6305    Variables are only populated by the server, and will be ignored when sending a request.
6306
6307    :param id: Resource ID.
6308    :type id: str
6309    :param name: The name of the resource. This name can be used to access the resource.
6310    :type name: str
6311    :ivar type: Sub Resource type.
6312    :vartype type: str
6313    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6314    :vartype etag: str
6315    :ivar container_network_interface_configuration: Container network interface configuration from
6316     which this container network interface is created.
6317    :vartype container_network_interface_configuration:
6318     ~azure.mgmt.network.v2020_04_01.models.ContainerNetworkInterfaceConfiguration
6319    :param container: Reference to the container to which this container network interface is
6320     attached.
6321    :type container: ~azure.mgmt.network.v2020_04_01.models.Container
6322    :ivar ip_configurations: Reference to the ip configuration on this container nic.
6323    :vartype ip_configurations:
6324     list[~azure.mgmt.network.v2020_04_01.models.ContainerNetworkInterfaceIpConfiguration]
6325    :ivar provisioning_state: The provisioning state of the container network interface resource.
6326     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
6327    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
6328    """
6329
6330    _validation = {
6331        'type': {'readonly': True},
6332        'etag': {'readonly': True},
6333        'container_network_interface_configuration': {'readonly': True},
6334        'ip_configurations': {'readonly': True},
6335        'provisioning_state': {'readonly': True},
6336    }
6337
6338    _attribute_map = {
6339        'id': {'key': 'id', 'type': 'str'},
6340        'name': {'key': 'name', 'type': 'str'},
6341        'type': {'key': 'type', 'type': 'str'},
6342        'etag': {'key': 'etag', 'type': 'str'},
6343        'container_network_interface_configuration': {'key': 'properties.containerNetworkInterfaceConfiguration', 'type': 'ContainerNetworkInterfaceConfiguration'},
6344        'container': {'key': 'properties.container', 'type': 'Container'},
6345        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[ContainerNetworkInterfaceIpConfiguration]'},
6346        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6347    }
6348
6349    def __init__(
6350        self,
6351        *,
6352        id: Optional[str] = None,
6353        name: Optional[str] = None,
6354        container: Optional["Container"] = None,
6355        **kwargs
6356    ):
6357        super(ContainerNetworkInterface, self).__init__(id=id, **kwargs)
6358        self.name = name
6359        self.type = None
6360        self.etag = None
6361        self.container_network_interface_configuration = None
6362        self.container = container
6363        self.ip_configurations = None
6364        self.provisioning_state = None
6365
6366
6367class ContainerNetworkInterfaceConfiguration(SubResource):
6368    """Container network interface configuration child resource.
6369
6370    Variables are only populated by the server, and will be ignored when sending a request.
6371
6372    :param id: Resource ID.
6373    :type id: str
6374    :param name: The name of the resource. This name can be used to access the resource.
6375    :type name: str
6376    :ivar type: Sub Resource type.
6377    :vartype type: str
6378    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6379    :vartype etag: str
6380    :param ip_configurations: A list of ip configurations of the container network interface
6381     configuration.
6382    :type ip_configurations: list[~azure.mgmt.network.v2020_04_01.models.IPConfigurationProfile]
6383    :param container_network_interfaces: A list of container network interfaces created from this
6384     container network interface configuration.
6385    :type container_network_interfaces: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
6386    :ivar provisioning_state: The provisioning state of the container network interface
6387     configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
6388    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
6389    """
6390
6391    _validation = {
6392        'type': {'readonly': True},
6393        'etag': {'readonly': True},
6394        'provisioning_state': {'readonly': True},
6395    }
6396
6397    _attribute_map = {
6398        'id': {'key': 'id', 'type': 'str'},
6399        'name': {'key': 'name', 'type': 'str'},
6400        'type': {'key': 'type', 'type': 'str'},
6401        'etag': {'key': 'etag', 'type': 'str'},
6402        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfigurationProfile]'},
6403        'container_network_interfaces': {'key': 'properties.containerNetworkInterfaces', 'type': '[SubResource]'},
6404        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6405    }
6406
6407    def __init__(
6408        self,
6409        *,
6410        id: Optional[str] = None,
6411        name: Optional[str] = None,
6412        ip_configurations: Optional[List["IPConfigurationProfile"]] = None,
6413        container_network_interfaces: Optional[List["SubResource"]] = None,
6414        **kwargs
6415    ):
6416        super(ContainerNetworkInterfaceConfiguration, self).__init__(id=id, **kwargs)
6417        self.name = name
6418        self.type = None
6419        self.etag = None
6420        self.ip_configurations = ip_configurations
6421        self.container_network_interfaces = container_network_interfaces
6422        self.provisioning_state = None
6423
6424
6425class ContainerNetworkInterfaceIpConfiguration(msrest.serialization.Model):
6426    """The ip configuration for a container network interface.
6427
6428    Variables are only populated by the server, and will be ignored when sending a request.
6429
6430    :param name: The name of the resource. This name can be used to access the resource.
6431    :type name: str
6432    :ivar type: Sub Resource type.
6433    :vartype type: str
6434    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6435    :vartype etag: str
6436    :ivar provisioning_state: The provisioning state of the container network interface IP
6437     configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
6438    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
6439    """
6440
6441    _validation = {
6442        'type': {'readonly': True},
6443        'etag': {'readonly': True},
6444        'provisioning_state': {'readonly': True},
6445    }
6446
6447    _attribute_map = {
6448        'name': {'key': 'name', 'type': 'str'},
6449        'type': {'key': 'type', 'type': 'str'},
6450        'etag': {'key': 'etag', 'type': 'str'},
6451        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6452    }
6453
6454    def __init__(
6455        self,
6456        *,
6457        name: Optional[str] = None,
6458        **kwargs
6459    ):
6460        super(ContainerNetworkInterfaceIpConfiguration, self).__init__(**kwargs)
6461        self.name = name
6462        self.type = None
6463        self.etag = None
6464        self.provisioning_state = None
6465
6466
6467class CustomDnsConfigPropertiesFormat(msrest.serialization.Model):
6468    """Contains custom Dns resolution configuration from customer.
6469
6470    :param fqdn: Fqdn that resolves to private endpoint ip address.
6471    :type fqdn: str
6472    :param ip_addresses: A list of private ip addresses of the private endpoint.
6473    :type ip_addresses: list[str]
6474    """
6475
6476    _attribute_map = {
6477        'fqdn': {'key': 'fqdn', 'type': 'str'},
6478        'ip_addresses': {'key': 'ipAddresses', 'type': '[str]'},
6479    }
6480
6481    def __init__(
6482        self,
6483        *,
6484        fqdn: Optional[str] = None,
6485        ip_addresses: Optional[List[str]] = None,
6486        **kwargs
6487    ):
6488        super(CustomDnsConfigPropertiesFormat, self).__init__(**kwargs)
6489        self.fqdn = fqdn
6490        self.ip_addresses = ip_addresses
6491
6492
6493class DdosCustomPolicy(Resource):
6494    """A DDoS custom policy in a resource group.
6495
6496    Variables are only populated by the server, and will be ignored when sending a request.
6497
6498    :param id: Resource ID.
6499    :type id: str
6500    :ivar name: Resource name.
6501    :vartype name: str
6502    :ivar type: Resource type.
6503    :vartype type: str
6504    :param location: Resource location.
6505    :type location: str
6506    :param tags: A set of tags. Resource tags.
6507    :type tags: dict[str, str]
6508    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6509    :vartype etag: str
6510    :ivar resource_guid: The resource GUID property of the DDoS custom policy resource. It uniquely
6511     identifies the resource, even if the user changes its name or migrate the resource across
6512     subscriptions or resource groups.
6513    :vartype resource_guid: str
6514    :ivar provisioning_state: The provisioning state of the DDoS custom policy resource. Possible
6515     values include: "Succeeded", "Updating", "Deleting", "Failed".
6516    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
6517    :ivar public_ip_addresses: The list of public IPs associated with the DDoS custom policy
6518     resource. This list is read-only.
6519    :vartype public_ip_addresses: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
6520    :param protocol_custom_settings: The protocol-specific DDoS policy customization parameters.
6521    :type protocol_custom_settings:
6522     list[~azure.mgmt.network.v2020_04_01.models.ProtocolCustomSettingsFormat]
6523    """
6524
6525    _validation = {
6526        'name': {'readonly': True},
6527        'type': {'readonly': True},
6528        'etag': {'readonly': True},
6529        'resource_guid': {'readonly': True},
6530        'provisioning_state': {'readonly': True},
6531        'public_ip_addresses': {'readonly': True},
6532    }
6533
6534    _attribute_map = {
6535        'id': {'key': 'id', 'type': 'str'},
6536        'name': {'key': 'name', 'type': 'str'},
6537        'type': {'key': 'type', 'type': 'str'},
6538        'location': {'key': 'location', 'type': 'str'},
6539        'tags': {'key': 'tags', 'type': '{str}'},
6540        'etag': {'key': 'etag', 'type': 'str'},
6541        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6542        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6543        'public_ip_addresses': {'key': 'properties.publicIPAddresses', 'type': '[SubResource]'},
6544        'protocol_custom_settings': {'key': 'properties.protocolCustomSettings', 'type': '[ProtocolCustomSettingsFormat]'},
6545    }
6546
6547    def __init__(
6548        self,
6549        *,
6550        id: Optional[str] = None,
6551        location: Optional[str] = None,
6552        tags: Optional[Dict[str, str]] = None,
6553        protocol_custom_settings: Optional[List["ProtocolCustomSettingsFormat"]] = None,
6554        **kwargs
6555    ):
6556        super(DdosCustomPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs)
6557        self.etag = None
6558        self.resource_guid = None
6559        self.provisioning_state = None
6560        self.public_ip_addresses = None
6561        self.protocol_custom_settings = protocol_custom_settings
6562
6563
6564class DdosProtectionPlan(msrest.serialization.Model):
6565    """A DDoS protection plan in a resource group.
6566
6567    Variables are only populated by the server, and will be ignored when sending a request.
6568
6569    :ivar id: Resource ID.
6570    :vartype id: str
6571    :ivar name: Resource name.
6572    :vartype name: str
6573    :ivar type: Resource type.
6574    :vartype type: str
6575    :param location: Resource location.
6576    :type location: str
6577    :param tags: A set of tags. Resource tags.
6578    :type tags: dict[str, str]
6579    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6580    :vartype etag: str
6581    :ivar resource_guid: The resource GUID property of the DDoS protection plan resource. It
6582     uniquely identifies the resource, even if the user changes its name or migrate the resource
6583     across subscriptions or resource groups.
6584    :vartype resource_guid: str
6585    :ivar provisioning_state: The provisioning state of the DDoS protection plan resource. Possible
6586     values include: "Succeeded", "Updating", "Deleting", "Failed".
6587    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
6588    :ivar virtual_networks: The list of virtual networks associated with the DDoS protection plan
6589     resource. This list is read-only.
6590    :vartype virtual_networks: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
6591    """
6592
6593    _validation = {
6594        'id': {'readonly': True},
6595        'name': {'readonly': True},
6596        'type': {'readonly': True},
6597        'etag': {'readonly': True},
6598        'resource_guid': {'readonly': True},
6599        'provisioning_state': {'readonly': True},
6600        'virtual_networks': {'readonly': True},
6601    }
6602
6603    _attribute_map = {
6604        'id': {'key': 'id', 'type': 'str'},
6605        'name': {'key': 'name', 'type': 'str'},
6606        'type': {'key': 'type', 'type': 'str'},
6607        'location': {'key': 'location', 'type': 'str'},
6608        'tags': {'key': 'tags', 'type': '{str}'},
6609        'etag': {'key': 'etag', 'type': 'str'},
6610        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6611        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6612        'virtual_networks': {'key': 'properties.virtualNetworks', 'type': '[SubResource]'},
6613    }
6614
6615    def __init__(
6616        self,
6617        *,
6618        location: Optional[str] = None,
6619        tags: Optional[Dict[str, str]] = None,
6620        **kwargs
6621    ):
6622        super(DdosProtectionPlan, self).__init__(**kwargs)
6623        self.id = None
6624        self.name = None
6625        self.type = None
6626        self.location = location
6627        self.tags = tags
6628        self.etag = None
6629        self.resource_guid = None
6630        self.provisioning_state = None
6631        self.virtual_networks = None
6632
6633
6634class DdosProtectionPlanListResult(msrest.serialization.Model):
6635    """A list of DDoS protection plans.
6636
6637    Variables are only populated by the server, and will be ignored when sending a request.
6638
6639    :param value: A list of DDoS protection plans.
6640    :type value: list[~azure.mgmt.network.v2020_04_01.models.DdosProtectionPlan]
6641    :ivar next_link: The URL to get the next set of results.
6642    :vartype next_link: str
6643    """
6644
6645    _validation = {
6646        'next_link': {'readonly': True},
6647    }
6648
6649    _attribute_map = {
6650        'value': {'key': 'value', 'type': '[DdosProtectionPlan]'},
6651        'next_link': {'key': 'nextLink', 'type': 'str'},
6652    }
6653
6654    def __init__(
6655        self,
6656        *,
6657        value: Optional[List["DdosProtectionPlan"]] = None,
6658        **kwargs
6659    ):
6660        super(DdosProtectionPlanListResult, self).__init__(**kwargs)
6661        self.value = value
6662        self.next_link = None
6663
6664
6665class DdosSettings(msrest.serialization.Model):
6666    """Contains the DDoS protection settings of the public IP.
6667
6668    :param ddos_custom_policy: The DDoS custom policy associated with the public IP.
6669    :type ddos_custom_policy: ~azure.mgmt.network.v2020_04_01.models.SubResource
6670    :param protection_coverage: The DDoS protection policy customizability of the public IP. Only
6671     standard coverage will have the ability to be customized. Possible values include: "Basic",
6672     "Standard".
6673    :type protection_coverage: str or
6674     ~azure.mgmt.network.v2020_04_01.models.DdosSettingsProtectionCoverage
6675    :param protected_ip: Enables DDoS protection on the public IP.
6676    :type protected_ip: bool
6677    """
6678
6679    _attribute_map = {
6680        'ddos_custom_policy': {'key': 'ddosCustomPolicy', 'type': 'SubResource'},
6681        'protection_coverage': {'key': 'protectionCoverage', 'type': 'str'},
6682        'protected_ip': {'key': 'protectedIP', 'type': 'bool'},
6683    }
6684
6685    def __init__(
6686        self,
6687        *,
6688        ddos_custom_policy: Optional["SubResource"] = None,
6689        protection_coverage: Optional[Union[str, "DdosSettingsProtectionCoverage"]] = None,
6690        protected_ip: Optional[bool] = None,
6691        **kwargs
6692    ):
6693        super(DdosSettings, self).__init__(**kwargs)
6694        self.ddos_custom_policy = ddos_custom_policy
6695        self.protection_coverage = protection_coverage
6696        self.protected_ip = protected_ip
6697
6698
6699class Delegation(SubResource):
6700    """Details the service to which the subnet is delegated.
6701
6702    Variables are only populated by the server, and will be ignored when sending a request.
6703
6704    :param id: Resource ID.
6705    :type id: str
6706    :param name: The name of the resource that is unique within a subnet. This name can be used to
6707     access the resource.
6708    :type name: str
6709    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6710    :vartype etag: str
6711    :param service_name: The name of the service to whom the subnet should be delegated (e.g.
6712     Microsoft.Sql/servers).
6713    :type service_name: str
6714    :ivar actions: The actions permitted to the service upon delegation.
6715    :vartype actions: list[str]
6716    :ivar provisioning_state: The provisioning state of the service delegation resource. Possible
6717     values include: "Succeeded", "Updating", "Deleting", "Failed".
6718    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
6719    """
6720
6721    _validation = {
6722        'etag': {'readonly': True},
6723        'actions': {'readonly': True},
6724        'provisioning_state': {'readonly': True},
6725    }
6726
6727    _attribute_map = {
6728        'id': {'key': 'id', 'type': 'str'},
6729        'name': {'key': 'name', 'type': 'str'},
6730        'etag': {'key': 'etag', 'type': 'str'},
6731        'service_name': {'key': 'properties.serviceName', 'type': 'str'},
6732        'actions': {'key': 'properties.actions', 'type': '[str]'},
6733        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6734    }
6735
6736    def __init__(
6737        self,
6738        *,
6739        id: Optional[str] = None,
6740        name: Optional[str] = None,
6741        service_name: Optional[str] = None,
6742        **kwargs
6743    ):
6744        super(Delegation, self).__init__(id=id, **kwargs)
6745        self.name = name
6746        self.etag = None
6747        self.service_name = service_name
6748        self.actions = None
6749        self.provisioning_state = None
6750
6751
6752class DeviceProperties(msrest.serialization.Model):
6753    """List of properties of the device.
6754
6755    :param device_vendor: Name of the device Vendor.
6756    :type device_vendor: str
6757    :param device_model: Model of the device.
6758    :type device_model: str
6759    :param link_speed_in_mbps: Link speed.
6760    :type link_speed_in_mbps: int
6761    """
6762
6763    _attribute_map = {
6764        'device_vendor': {'key': 'deviceVendor', 'type': 'str'},
6765        'device_model': {'key': 'deviceModel', 'type': 'str'},
6766        'link_speed_in_mbps': {'key': 'linkSpeedInMbps', 'type': 'int'},
6767    }
6768
6769    def __init__(
6770        self,
6771        *,
6772        device_vendor: Optional[str] = None,
6773        device_model: Optional[str] = None,
6774        link_speed_in_mbps: Optional[int] = None,
6775        **kwargs
6776    ):
6777        super(DeviceProperties, self).__init__(**kwargs)
6778        self.device_vendor = device_vendor
6779        self.device_model = device_model
6780        self.link_speed_in_mbps = link_speed_in_mbps
6781
6782
6783class DhcpOptions(msrest.serialization.Model):
6784    """DhcpOptions contains an array of DNS servers available to VMs deployed in the virtual network. Standard DHCP option for a subnet overrides VNET DHCP options.
6785
6786    :param dns_servers: The list of DNS servers IP addresses.
6787    :type dns_servers: list[str]
6788    """
6789
6790    _attribute_map = {
6791        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
6792    }
6793
6794    def __init__(
6795        self,
6796        *,
6797        dns_servers: Optional[List[str]] = None,
6798        **kwargs
6799    ):
6800        super(DhcpOptions, self).__init__(**kwargs)
6801        self.dns_servers = dns_servers
6802
6803
6804class Dimension(msrest.serialization.Model):
6805    """Dimension of the metric.
6806
6807    :param name: The name of the dimension.
6808    :type name: str
6809    :param display_name: The display name of the dimension.
6810    :type display_name: str
6811    :param internal_name: The internal name of the dimension.
6812    :type internal_name: str
6813    """
6814
6815    _attribute_map = {
6816        'name': {'key': 'name', 'type': 'str'},
6817        'display_name': {'key': 'displayName', 'type': 'str'},
6818        'internal_name': {'key': 'internalName', 'type': 'str'},
6819    }
6820
6821    def __init__(
6822        self,
6823        *,
6824        name: Optional[str] = None,
6825        display_name: Optional[str] = None,
6826        internal_name: Optional[str] = None,
6827        **kwargs
6828    ):
6829        super(Dimension, self).__init__(**kwargs)
6830        self.name = name
6831        self.display_name = display_name
6832        self.internal_name = internal_name
6833
6834
6835class DnsNameAvailabilityResult(msrest.serialization.Model):
6836    """Response for the CheckDnsNameAvailability API service call.
6837
6838    :param available: Domain availability (True/False).
6839    :type available: bool
6840    """
6841
6842    _attribute_map = {
6843        'available': {'key': 'available', 'type': 'bool'},
6844    }
6845
6846    def __init__(
6847        self,
6848        *,
6849        available: Optional[bool] = None,
6850        **kwargs
6851    ):
6852        super(DnsNameAvailabilityResult, self).__init__(**kwargs)
6853        self.available = available
6854
6855
6856class EffectiveNetworkSecurityGroup(msrest.serialization.Model):
6857    """Effective network security group.
6858
6859    :param network_security_group: The ID of network security group that is applied.
6860    :type network_security_group: ~azure.mgmt.network.v2020_04_01.models.SubResource
6861    :param association: Associated resources.
6862    :type association:
6863     ~azure.mgmt.network.v2020_04_01.models.EffectiveNetworkSecurityGroupAssociation
6864    :param effective_security_rules: A collection of effective security rules.
6865    :type effective_security_rules:
6866     list[~azure.mgmt.network.v2020_04_01.models.EffectiveNetworkSecurityRule]
6867    :param tag_map: Mapping of tags to list of IP Addresses included within the tag.
6868    :type tag_map: str
6869    """
6870
6871    _attribute_map = {
6872        'network_security_group': {'key': 'networkSecurityGroup', 'type': 'SubResource'},
6873        'association': {'key': 'association', 'type': 'EffectiveNetworkSecurityGroupAssociation'},
6874        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
6875        'tag_map': {'key': 'tagMap', 'type': 'str'},
6876    }
6877
6878    def __init__(
6879        self,
6880        *,
6881        network_security_group: Optional["SubResource"] = None,
6882        association: Optional["EffectiveNetworkSecurityGroupAssociation"] = None,
6883        effective_security_rules: Optional[List["EffectiveNetworkSecurityRule"]] = None,
6884        tag_map: Optional[str] = None,
6885        **kwargs
6886    ):
6887        super(EffectiveNetworkSecurityGroup, self).__init__(**kwargs)
6888        self.network_security_group = network_security_group
6889        self.association = association
6890        self.effective_security_rules = effective_security_rules
6891        self.tag_map = tag_map
6892
6893
6894class EffectiveNetworkSecurityGroupAssociation(msrest.serialization.Model):
6895    """The effective network security group association.
6896
6897    :param subnet: The ID of the subnet if assigned.
6898    :type subnet: ~azure.mgmt.network.v2020_04_01.models.SubResource
6899    :param network_interface: The ID of the network interface if assigned.
6900    :type network_interface: ~azure.mgmt.network.v2020_04_01.models.SubResource
6901    """
6902
6903    _attribute_map = {
6904        'subnet': {'key': 'subnet', 'type': 'SubResource'},
6905        'network_interface': {'key': 'networkInterface', 'type': 'SubResource'},
6906    }
6907
6908    def __init__(
6909        self,
6910        *,
6911        subnet: Optional["SubResource"] = None,
6912        network_interface: Optional["SubResource"] = None,
6913        **kwargs
6914    ):
6915        super(EffectiveNetworkSecurityGroupAssociation, self).__init__(**kwargs)
6916        self.subnet = subnet
6917        self.network_interface = network_interface
6918
6919
6920class EffectiveNetworkSecurityGroupListResult(msrest.serialization.Model):
6921    """Response for list effective network security groups API service call.
6922
6923    Variables are only populated by the server, and will be ignored when sending a request.
6924
6925    :param value: A list of effective network security groups.
6926    :type value: list[~azure.mgmt.network.v2020_04_01.models.EffectiveNetworkSecurityGroup]
6927    :ivar next_link: The URL to get the next set of results.
6928    :vartype next_link: str
6929    """
6930
6931    _validation = {
6932        'next_link': {'readonly': True},
6933    }
6934
6935    _attribute_map = {
6936        'value': {'key': 'value', 'type': '[EffectiveNetworkSecurityGroup]'},
6937        'next_link': {'key': 'nextLink', 'type': 'str'},
6938    }
6939
6940    def __init__(
6941        self,
6942        *,
6943        value: Optional[List["EffectiveNetworkSecurityGroup"]] = None,
6944        **kwargs
6945    ):
6946        super(EffectiveNetworkSecurityGroupListResult, self).__init__(**kwargs)
6947        self.value = value
6948        self.next_link = None
6949
6950
6951class EffectiveNetworkSecurityRule(msrest.serialization.Model):
6952    """Effective network security rules.
6953
6954    :param name: The name of the security rule specified by the user (if created by the user).
6955    :type name: str
6956    :param protocol: The network protocol this rule applies to. Possible values include: "Tcp",
6957     "Udp", "All".
6958    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.EffectiveSecurityRuleProtocol
6959    :param source_port_range: The source port or range.
6960    :type source_port_range: str
6961    :param destination_port_range: The destination port or range.
6962    :type destination_port_range: str
6963    :param source_port_ranges: The source port ranges. Expected values include a single integer
6964     between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
6965    :type source_port_ranges: list[str]
6966    :param destination_port_ranges: The destination port ranges. Expected values include a single
6967     integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
6968    :type destination_port_ranges: list[str]
6969    :param source_address_prefix: The source address prefix.
6970    :type source_address_prefix: str
6971    :param destination_address_prefix: The destination address prefix.
6972    :type destination_address_prefix: str
6973    :param source_address_prefixes: The source address prefixes. Expected values include CIDR IP
6974     ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the
6975     asterisk (*).
6976    :type source_address_prefixes: list[str]
6977    :param destination_address_prefixes: The destination address prefixes. Expected values include
6978     CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and
6979     the asterisk (*).
6980    :type destination_address_prefixes: list[str]
6981    :param expanded_source_address_prefix: The expanded source address prefix.
6982    :type expanded_source_address_prefix: list[str]
6983    :param expanded_destination_address_prefix: Expanded destination address prefix.
6984    :type expanded_destination_address_prefix: list[str]
6985    :param access: Whether network traffic is allowed or denied. Possible values include: "Allow",
6986     "Deny".
6987    :type access: str or ~azure.mgmt.network.v2020_04_01.models.SecurityRuleAccess
6988    :param priority: The priority of the rule.
6989    :type priority: int
6990    :param direction: The direction of the rule. Possible values include: "Inbound", "Outbound".
6991    :type direction: str or ~azure.mgmt.network.v2020_04_01.models.SecurityRuleDirection
6992    """
6993
6994    _attribute_map = {
6995        'name': {'key': 'name', 'type': 'str'},
6996        'protocol': {'key': 'protocol', 'type': 'str'},
6997        'source_port_range': {'key': 'sourcePortRange', 'type': 'str'},
6998        'destination_port_range': {'key': 'destinationPortRange', 'type': 'str'},
6999        'source_port_ranges': {'key': 'sourcePortRanges', 'type': '[str]'},
7000        'destination_port_ranges': {'key': 'destinationPortRanges', 'type': '[str]'},
7001        'source_address_prefix': {'key': 'sourceAddressPrefix', 'type': 'str'},
7002        'destination_address_prefix': {'key': 'destinationAddressPrefix', 'type': 'str'},
7003        'source_address_prefixes': {'key': 'sourceAddressPrefixes', 'type': '[str]'},
7004        'destination_address_prefixes': {'key': 'destinationAddressPrefixes', 'type': '[str]'},
7005        'expanded_source_address_prefix': {'key': 'expandedSourceAddressPrefix', 'type': '[str]'},
7006        'expanded_destination_address_prefix': {'key': 'expandedDestinationAddressPrefix', 'type': '[str]'},
7007        'access': {'key': 'access', 'type': 'str'},
7008        'priority': {'key': 'priority', 'type': 'int'},
7009        'direction': {'key': 'direction', 'type': 'str'},
7010    }
7011
7012    def __init__(
7013        self,
7014        *,
7015        name: Optional[str] = None,
7016        protocol: Optional[Union[str, "EffectiveSecurityRuleProtocol"]] = None,
7017        source_port_range: Optional[str] = None,
7018        destination_port_range: Optional[str] = None,
7019        source_port_ranges: Optional[List[str]] = None,
7020        destination_port_ranges: Optional[List[str]] = None,
7021        source_address_prefix: Optional[str] = None,
7022        destination_address_prefix: Optional[str] = None,
7023        source_address_prefixes: Optional[List[str]] = None,
7024        destination_address_prefixes: Optional[List[str]] = None,
7025        expanded_source_address_prefix: Optional[List[str]] = None,
7026        expanded_destination_address_prefix: Optional[List[str]] = None,
7027        access: Optional[Union[str, "SecurityRuleAccess"]] = None,
7028        priority: Optional[int] = None,
7029        direction: Optional[Union[str, "SecurityRuleDirection"]] = None,
7030        **kwargs
7031    ):
7032        super(EffectiveNetworkSecurityRule, self).__init__(**kwargs)
7033        self.name = name
7034        self.protocol = protocol
7035        self.source_port_range = source_port_range
7036        self.destination_port_range = destination_port_range
7037        self.source_port_ranges = source_port_ranges
7038        self.destination_port_ranges = destination_port_ranges
7039        self.source_address_prefix = source_address_prefix
7040        self.destination_address_prefix = destination_address_prefix
7041        self.source_address_prefixes = source_address_prefixes
7042        self.destination_address_prefixes = destination_address_prefixes
7043        self.expanded_source_address_prefix = expanded_source_address_prefix
7044        self.expanded_destination_address_prefix = expanded_destination_address_prefix
7045        self.access = access
7046        self.priority = priority
7047        self.direction = direction
7048
7049
7050class EffectiveRoute(msrest.serialization.Model):
7051    """Effective Route.
7052
7053    :param name: The name of the user defined route. This is optional.
7054    :type name: str
7055    :param disable_bgp_route_propagation: If true, on-premises routes are not propagated to the
7056     network interfaces in the subnet.
7057    :type disable_bgp_route_propagation: bool
7058    :param source: Who created the route. Possible values include: "Unknown", "User",
7059     "VirtualNetworkGateway", "Default".
7060    :type source: str or ~azure.mgmt.network.v2020_04_01.models.EffectiveRouteSource
7061    :param state: The value of effective route. Possible values include: "Active", "Invalid".
7062    :type state: str or ~azure.mgmt.network.v2020_04_01.models.EffectiveRouteState
7063    :param address_prefix: The address prefixes of the effective routes in CIDR notation.
7064    :type address_prefix: list[str]
7065    :param next_hop_ip_address: The IP address of the next hop of the effective route.
7066    :type next_hop_ip_address: list[str]
7067    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values
7068     include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
7069    :type next_hop_type: str or ~azure.mgmt.network.v2020_04_01.models.RouteNextHopType
7070    """
7071
7072    _attribute_map = {
7073        'name': {'key': 'name', 'type': 'str'},
7074        'disable_bgp_route_propagation': {'key': 'disableBgpRoutePropagation', 'type': 'bool'},
7075        'source': {'key': 'source', 'type': 'str'},
7076        'state': {'key': 'state', 'type': 'str'},
7077        'address_prefix': {'key': 'addressPrefix', 'type': '[str]'},
7078        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': '[str]'},
7079        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
7080    }
7081
7082    def __init__(
7083        self,
7084        *,
7085        name: Optional[str] = None,
7086        disable_bgp_route_propagation: Optional[bool] = None,
7087        source: Optional[Union[str, "EffectiveRouteSource"]] = None,
7088        state: Optional[Union[str, "EffectiveRouteState"]] = None,
7089        address_prefix: Optional[List[str]] = None,
7090        next_hop_ip_address: Optional[List[str]] = None,
7091        next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None,
7092        **kwargs
7093    ):
7094        super(EffectiveRoute, self).__init__(**kwargs)
7095        self.name = name
7096        self.disable_bgp_route_propagation = disable_bgp_route_propagation
7097        self.source = source
7098        self.state = state
7099        self.address_prefix = address_prefix
7100        self.next_hop_ip_address = next_hop_ip_address
7101        self.next_hop_type = next_hop_type
7102
7103
7104class EffectiveRouteListResult(msrest.serialization.Model):
7105    """Response for list effective route API service call.
7106
7107    Variables are only populated by the server, and will be ignored when sending a request.
7108
7109    :param value: A list of effective routes.
7110    :type value: list[~azure.mgmt.network.v2020_04_01.models.EffectiveRoute]
7111    :ivar next_link: The URL to get the next set of results.
7112    :vartype next_link: str
7113    """
7114
7115    _validation = {
7116        'next_link': {'readonly': True},
7117    }
7118
7119    _attribute_map = {
7120        'value': {'key': 'value', 'type': '[EffectiveRoute]'},
7121        'next_link': {'key': 'nextLink', 'type': 'str'},
7122    }
7123
7124    def __init__(
7125        self,
7126        *,
7127        value: Optional[List["EffectiveRoute"]] = None,
7128        **kwargs
7129    ):
7130        super(EffectiveRouteListResult, self).__init__(**kwargs)
7131        self.value = value
7132        self.next_link = None
7133
7134
7135class EndpointServiceResult(SubResource):
7136    """Endpoint service.
7137
7138    Variables are only populated by the server, and will be ignored when sending a request.
7139
7140    :param id: Resource ID.
7141    :type id: str
7142    :ivar name: Name of the endpoint service.
7143    :vartype name: str
7144    :ivar type: Type of the endpoint service.
7145    :vartype type: str
7146    """
7147
7148    _validation = {
7149        'name': {'readonly': True},
7150        'type': {'readonly': True},
7151    }
7152
7153    _attribute_map = {
7154        'id': {'key': 'id', 'type': 'str'},
7155        'name': {'key': 'name', 'type': 'str'},
7156        'type': {'key': 'type', 'type': 'str'},
7157    }
7158
7159    def __init__(
7160        self,
7161        *,
7162        id: Optional[str] = None,
7163        **kwargs
7164    ):
7165        super(EndpointServiceResult, self).__init__(id=id, **kwargs)
7166        self.name = None
7167        self.type = None
7168
7169
7170class EndpointServicesListResult(msrest.serialization.Model):
7171    """Response for the ListAvailableEndpointServices API service call.
7172
7173    :param value: List of available endpoint services in a region.
7174    :type value: list[~azure.mgmt.network.v2020_04_01.models.EndpointServiceResult]
7175    :param next_link: The URL to get the next set of results.
7176    :type next_link: str
7177    """
7178
7179    _attribute_map = {
7180        'value': {'key': 'value', 'type': '[EndpointServiceResult]'},
7181        'next_link': {'key': 'nextLink', 'type': 'str'},
7182    }
7183
7184    def __init__(
7185        self,
7186        *,
7187        value: Optional[List["EndpointServiceResult"]] = None,
7188        next_link: Optional[str] = None,
7189        **kwargs
7190    ):
7191        super(EndpointServicesListResult, self).__init__(**kwargs)
7192        self.value = value
7193        self.next_link = next_link
7194
7195
7196class Error(msrest.serialization.Model):
7197    """Common error representation.
7198
7199    :param code: Error code.
7200    :type code: str
7201    :param message: Error message.
7202    :type message: str
7203    :param target: Error target.
7204    :type target: str
7205    :param details: Error details.
7206    :type details: list[~azure.mgmt.network.v2020_04_01.models.ErrorDetails]
7207    :param inner_error: Inner error message.
7208    :type inner_error: str
7209    """
7210
7211    _attribute_map = {
7212        'code': {'key': 'code', 'type': 'str'},
7213        'message': {'key': 'message', 'type': 'str'},
7214        'target': {'key': 'target', 'type': 'str'},
7215        'details': {'key': 'details', 'type': '[ErrorDetails]'},
7216        'inner_error': {'key': 'innerError', 'type': 'str'},
7217    }
7218
7219    def __init__(
7220        self,
7221        *,
7222        code: Optional[str] = None,
7223        message: Optional[str] = None,
7224        target: Optional[str] = None,
7225        details: Optional[List["ErrorDetails"]] = None,
7226        inner_error: Optional[str] = None,
7227        **kwargs
7228    ):
7229        super(Error, self).__init__(**kwargs)
7230        self.code = code
7231        self.message = message
7232        self.target = target
7233        self.details = details
7234        self.inner_error = inner_error
7235
7236
7237class ErrorDetails(msrest.serialization.Model):
7238    """Common error details representation.
7239
7240    :param code: Error code.
7241    :type code: str
7242    :param target: Error target.
7243    :type target: str
7244    :param message: Error message.
7245    :type message: str
7246    """
7247
7248    _attribute_map = {
7249        'code': {'key': 'code', 'type': 'str'},
7250        'target': {'key': 'target', 'type': 'str'},
7251        'message': {'key': 'message', 'type': 'str'},
7252    }
7253
7254    def __init__(
7255        self,
7256        *,
7257        code: Optional[str] = None,
7258        target: Optional[str] = None,
7259        message: Optional[str] = None,
7260        **kwargs
7261    ):
7262        super(ErrorDetails, self).__init__(**kwargs)
7263        self.code = code
7264        self.target = target
7265        self.message = message
7266
7267
7268class ErrorResponse(msrest.serialization.Model):
7269    """The error object.
7270
7271    :param error: The error details object.
7272    :type error: ~azure.mgmt.network.v2020_04_01.models.ErrorDetails
7273    """
7274
7275    _attribute_map = {
7276        'error': {'key': 'error', 'type': 'ErrorDetails'},
7277    }
7278
7279    def __init__(
7280        self,
7281        *,
7282        error: Optional["ErrorDetails"] = None,
7283        **kwargs
7284    ):
7285        super(ErrorResponse, self).__init__(**kwargs)
7286        self.error = error
7287
7288
7289class EvaluatedNetworkSecurityGroup(msrest.serialization.Model):
7290    """Results of network security group evaluation.
7291
7292    Variables are only populated by the server, and will be ignored when sending a request.
7293
7294    :param network_security_group_id: Network security group ID.
7295    :type network_security_group_id: str
7296    :param applied_to: Resource ID of nic or subnet to which network security group is applied.
7297    :type applied_to: str
7298    :param matched_rule: Matched network security rule.
7299    :type matched_rule: ~azure.mgmt.network.v2020_04_01.models.MatchedRule
7300    :ivar rules_evaluation_result: List of network security rules evaluation results.
7301    :vartype rules_evaluation_result:
7302     list[~azure.mgmt.network.v2020_04_01.models.NetworkSecurityRulesEvaluationResult]
7303    """
7304
7305    _validation = {
7306        'rules_evaluation_result': {'readonly': True},
7307    }
7308
7309    _attribute_map = {
7310        'network_security_group_id': {'key': 'networkSecurityGroupId', 'type': 'str'},
7311        'applied_to': {'key': 'appliedTo', 'type': 'str'},
7312        'matched_rule': {'key': 'matchedRule', 'type': 'MatchedRule'},
7313        'rules_evaluation_result': {'key': 'rulesEvaluationResult', 'type': '[NetworkSecurityRulesEvaluationResult]'},
7314    }
7315
7316    def __init__(
7317        self,
7318        *,
7319        network_security_group_id: Optional[str] = None,
7320        applied_to: Optional[str] = None,
7321        matched_rule: Optional["MatchedRule"] = None,
7322        **kwargs
7323    ):
7324        super(EvaluatedNetworkSecurityGroup, self).__init__(**kwargs)
7325        self.network_security_group_id = network_security_group_id
7326        self.applied_to = applied_to
7327        self.matched_rule = matched_rule
7328        self.rules_evaluation_result = None
7329
7330
7331class ExpressRouteCircuit(Resource):
7332    """ExpressRouteCircuit resource.
7333
7334    Variables are only populated by the server, and will be ignored when sending a request.
7335
7336    :param id: Resource ID.
7337    :type id: str
7338    :ivar name: Resource name.
7339    :vartype name: str
7340    :ivar type: Resource type.
7341    :vartype type: str
7342    :param location: Resource location.
7343    :type location: str
7344    :param tags: A set of tags. Resource tags.
7345    :type tags: dict[str, str]
7346    :param sku: The SKU.
7347    :type sku: ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitSku
7348    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7349    :vartype etag: str
7350    :param allow_classic_operations: Allow classic operations.
7351    :type allow_classic_operations: bool
7352    :param circuit_provisioning_state: The CircuitProvisioningState state of the resource.
7353    :type circuit_provisioning_state: str
7354    :param service_provider_provisioning_state: The ServiceProviderProvisioningState state of the
7355     resource. Possible values include: "NotProvisioned", "Provisioning", "Provisioned",
7356     "Deprovisioning".
7357    :type service_provider_provisioning_state: str or
7358     ~azure.mgmt.network.v2020_04_01.models.ServiceProviderProvisioningState
7359    :param authorizations: The list of authorizations.
7360    :type authorizations:
7361     list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitAuthorization]
7362    :param peerings: The list of peerings.
7363    :type peerings: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeering]
7364    :param service_key: The ServiceKey.
7365    :type service_key: str
7366    :param service_provider_notes: The ServiceProviderNotes.
7367    :type service_provider_notes: str
7368    :param service_provider_properties: The ServiceProviderProperties.
7369    :type service_provider_properties:
7370     ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitServiceProviderProperties
7371    :param express_route_port: The reference to the ExpressRoutePort resource when the circuit is
7372     provisioned on an ExpressRoutePort resource.
7373    :type express_route_port: ~azure.mgmt.network.v2020_04_01.models.SubResource
7374    :param bandwidth_in_gbps: The bandwidth of the circuit when the circuit is provisioned on an
7375     ExpressRoutePort resource.
7376    :type bandwidth_in_gbps: float
7377    :ivar stag: The identifier of the circuit traffic. Outer tag for QinQ encapsulation.
7378    :vartype stag: int
7379    :ivar provisioning_state: The provisioning state of the express route circuit resource.
7380     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
7381    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
7382    :param gateway_manager_etag: The GatewayManager Etag.
7383    :type gateway_manager_etag: str
7384    :param global_reach_enabled: Flag denoting global reach status.
7385    :type global_reach_enabled: bool
7386    """
7387
7388    _validation = {
7389        'name': {'readonly': True},
7390        'type': {'readonly': True},
7391        'etag': {'readonly': True},
7392        'stag': {'readonly': True},
7393        'provisioning_state': {'readonly': True},
7394    }
7395
7396    _attribute_map = {
7397        'id': {'key': 'id', 'type': 'str'},
7398        'name': {'key': 'name', 'type': 'str'},
7399        'type': {'key': 'type', 'type': 'str'},
7400        'location': {'key': 'location', 'type': 'str'},
7401        'tags': {'key': 'tags', 'type': '{str}'},
7402        'sku': {'key': 'sku', 'type': 'ExpressRouteCircuitSku'},
7403        'etag': {'key': 'etag', 'type': 'str'},
7404        'allow_classic_operations': {'key': 'properties.allowClassicOperations', 'type': 'bool'},
7405        'circuit_provisioning_state': {'key': 'properties.circuitProvisioningState', 'type': 'str'},
7406        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
7407        'authorizations': {'key': 'properties.authorizations', 'type': '[ExpressRouteCircuitAuthorization]'},
7408        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
7409        'service_key': {'key': 'properties.serviceKey', 'type': 'str'},
7410        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
7411        'service_provider_properties': {'key': 'properties.serviceProviderProperties', 'type': 'ExpressRouteCircuitServiceProviderProperties'},
7412        'express_route_port': {'key': 'properties.expressRoutePort', 'type': 'SubResource'},
7413        'bandwidth_in_gbps': {'key': 'properties.bandwidthInGbps', 'type': 'float'},
7414        'stag': {'key': 'properties.stag', 'type': 'int'},
7415        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7416        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
7417        'global_reach_enabled': {'key': 'properties.globalReachEnabled', 'type': 'bool'},
7418    }
7419
7420    def __init__(
7421        self,
7422        *,
7423        id: Optional[str] = None,
7424        location: Optional[str] = None,
7425        tags: Optional[Dict[str, str]] = None,
7426        sku: Optional["ExpressRouteCircuitSku"] = None,
7427        allow_classic_operations: Optional[bool] = None,
7428        circuit_provisioning_state: Optional[str] = None,
7429        service_provider_provisioning_state: Optional[Union[str, "ServiceProviderProvisioningState"]] = None,
7430        authorizations: Optional[List["ExpressRouteCircuitAuthorization"]] = None,
7431        peerings: Optional[List["ExpressRouteCircuitPeering"]] = None,
7432        service_key: Optional[str] = None,
7433        service_provider_notes: Optional[str] = None,
7434        service_provider_properties: Optional["ExpressRouteCircuitServiceProviderProperties"] = None,
7435        express_route_port: Optional["SubResource"] = None,
7436        bandwidth_in_gbps: Optional[float] = None,
7437        gateway_manager_etag: Optional[str] = None,
7438        global_reach_enabled: Optional[bool] = None,
7439        **kwargs
7440    ):
7441        super(ExpressRouteCircuit, self).__init__(id=id, location=location, tags=tags, **kwargs)
7442        self.sku = sku
7443        self.etag = None
7444        self.allow_classic_operations = allow_classic_operations
7445        self.circuit_provisioning_state = circuit_provisioning_state
7446        self.service_provider_provisioning_state = service_provider_provisioning_state
7447        self.authorizations = authorizations
7448        self.peerings = peerings
7449        self.service_key = service_key
7450        self.service_provider_notes = service_provider_notes
7451        self.service_provider_properties = service_provider_properties
7452        self.express_route_port = express_route_port
7453        self.bandwidth_in_gbps = bandwidth_in_gbps
7454        self.stag = None
7455        self.provisioning_state = None
7456        self.gateway_manager_etag = gateway_manager_etag
7457        self.global_reach_enabled = global_reach_enabled
7458
7459
7460class ExpressRouteCircuitArpTable(msrest.serialization.Model):
7461    """The ARP table associated with the ExpressRouteCircuit.
7462
7463    :param age: Entry age in minutes.
7464    :type age: int
7465    :param interface: Interface address.
7466    :type interface: str
7467    :param ip_address: The IP address.
7468    :type ip_address: str
7469    :param mac_address: The MAC address.
7470    :type mac_address: str
7471    """
7472
7473    _attribute_map = {
7474        'age': {'key': 'age', 'type': 'int'},
7475        'interface': {'key': 'interface', 'type': 'str'},
7476        'ip_address': {'key': 'ipAddress', 'type': 'str'},
7477        'mac_address': {'key': 'macAddress', 'type': 'str'},
7478    }
7479
7480    def __init__(
7481        self,
7482        *,
7483        age: Optional[int] = None,
7484        interface: Optional[str] = None,
7485        ip_address: Optional[str] = None,
7486        mac_address: Optional[str] = None,
7487        **kwargs
7488    ):
7489        super(ExpressRouteCircuitArpTable, self).__init__(**kwargs)
7490        self.age = age
7491        self.interface = interface
7492        self.ip_address = ip_address
7493        self.mac_address = mac_address
7494
7495
7496class ExpressRouteCircuitAuthorization(SubResource):
7497    """Authorization in an ExpressRouteCircuit resource.
7498
7499    Variables are only populated by the server, and will be ignored when sending a request.
7500
7501    :param id: Resource ID.
7502    :type id: str
7503    :param name: The name of the resource that is unique within a resource group. This name can be
7504     used to access the resource.
7505    :type name: str
7506    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7507    :vartype etag: str
7508    :ivar type: Type of the resource.
7509    :vartype type: str
7510    :param authorization_key: The authorization key.
7511    :type authorization_key: str
7512    :param authorization_use_status: The authorization use status. Possible values include:
7513     "Available", "InUse".
7514    :type authorization_use_status: str or
7515     ~azure.mgmt.network.v2020_04_01.models.AuthorizationUseStatus
7516    :ivar provisioning_state: The provisioning state of the authorization resource. Possible values
7517     include: "Succeeded", "Updating", "Deleting", "Failed".
7518    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
7519    """
7520
7521    _validation = {
7522        'etag': {'readonly': True},
7523        'type': {'readonly': True},
7524        'provisioning_state': {'readonly': True},
7525    }
7526
7527    _attribute_map = {
7528        'id': {'key': 'id', 'type': 'str'},
7529        'name': {'key': 'name', 'type': 'str'},
7530        'etag': {'key': 'etag', 'type': 'str'},
7531        'type': {'key': 'type', 'type': 'str'},
7532        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
7533        'authorization_use_status': {'key': 'properties.authorizationUseStatus', 'type': 'str'},
7534        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7535    }
7536
7537    def __init__(
7538        self,
7539        *,
7540        id: Optional[str] = None,
7541        name: Optional[str] = None,
7542        authorization_key: Optional[str] = None,
7543        authorization_use_status: Optional[Union[str, "AuthorizationUseStatus"]] = None,
7544        **kwargs
7545    ):
7546        super(ExpressRouteCircuitAuthorization, self).__init__(id=id, **kwargs)
7547        self.name = name
7548        self.etag = None
7549        self.type = None
7550        self.authorization_key = authorization_key
7551        self.authorization_use_status = authorization_use_status
7552        self.provisioning_state = None
7553
7554
7555class ExpressRouteCircuitConnection(SubResource):
7556    """Express Route Circuit Connection in an ExpressRouteCircuitPeering resource.
7557
7558    Variables are only populated by the server, and will be ignored when sending a request.
7559
7560    :param id: Resource ID.
7561    :type id: str
7562    :param name: The name of the resource that is unique within a resource group. This name can be
7563     used to access the resource.
7564    :type name: str
7565    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7566    :vartype etag: str
7567    :ivar type: Type of the resource.
7568    :vartype type: str
7569    :param express_route_circuit_peering: Reference to Express Route Circuit Private Peering
7570     Resource of the circuit initiating connection.
7571    :type express_route_circuit_peering: ~azure.mgmt.network.v2020_04_01.models.SubResource
7572    :param peer_express_route_circuit_peering: Reference to Express Route Circuit Private Peering
7573     Resource of the peered circuit.
7574    :type peer_express_route_circuit_peering: ~azure.mgmt.network.v2020_04_01.models.SubResource
7575    :param address_prefix: /29 IP address space to carve out Customer addresses for tunnels.
7576    :type address_prefix: str
7577    :param authorization_key: The authorization key.
7578    :type authorization_key: str
7579    :param ipv6_circuit_connection_config: IPv6 Address PrefixProperties of the express route
7580     circuit connection.
7581    :type ipv6_circuit_connection_config:
7582     ~azure.mgmt.network.v2020_04_01.models.Ipv6CircuitConnectionConfig
7583    :ivar circuit_connection_status: Express Route Circuit connection state. Possible values
7584     include: "Connected", "Connecting", "Disconnected".
7585    :vartype circuit_connection_status: str or
7586     ~azure.mgmt.network.v2020_04_01.models.CircuitConnectionStatus
7587    :ivar provisioning_state: The provisioning state of the express route circuit connection
7588     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
7589    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
7590    """
7591
7592    _validation = {
7593        'etag': {'readonly': True},
7594        'type': {'readonly': True},
7595        'circuit_connection_status': {'readonly': True},
7596        'provisioning_state': {'readonly': True},
7597    }
7598
7599    _attribute_map = {
7600        'id': {'key': 'id', 'type': 'str'},
7601        'name': {'key': 'name', 'type': 'str'},
7602        'etag': {'key': 'etag', 'type': 'str'},
7603        'type': {'key': 'type', 'type': 'str'},
7604        'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'SubResource'},
7605        'peer_express_route_circuit_peering': {'key': 'properties.peerExpressRouteCircuitPeering', 'type': 'SubResource'},
7606        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
7607        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
7608        'ipv6_circuit_connection_config': {'key': 'properties.ipv6CircuitConnectionConfig', 'type': 'Ipv6CircuitConnectionConfig'},
7609        'circuit_connection_status': {'key': 'properties.circuitConnectionStatus', 'type': 'str'},
7610        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7611    }
7612
7613    def __init__(
7614        self,
7615        *,
7616        id: Optional[str] = None,
7617        name: Optional[str] = None,
7618        express_route_circuit_peering: Optional["SubResource"] = None,
7619        peer_express_route_circuit_peering: Optional["SubResource"] = None,
7620        address_prefix: Optional[str] = None,
7621        authorization_key: Optional[str] = None,
7622        ipv6_circuit_connection_config: Optional["Ipv6CircuitConnectionConfig"] = None,
7623        **kwargs
7624    ):
7625        super(ExpressRouteCircuitConnection, self).__init__(id=id, **kwargs)
7626        self.name = name
7627        self.etag = None
7628        self.type = None
7629        self.express_route_circuit_peering = express_route_circuit_peering
7630        self.peer_express_route_circuit_peering = peer_express_route_circuit_peering
7631        self.address_prefix = address_prefix
7632        self.authorization_key = authorization_key
7633        self.ipv6_circuit_connection_config = ipv6_circuit_connection_config
7634        self.circuit_connection_status = None
7635        self.provisioning_state = None
7636
7637
7638class ExpressRouteCircuitConnectionListResult(msrest.serialization.Model):
7639    """Response for ListConnections API service call retrieves all global reach connections that belongs to a Private Peering for an ExpressRouteCircuit.
7640
7641    :param value: The global reach connection associated with Private Peering in an ExpressRoute
7642     Circuit.
7643    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitConnection]
7644    :param next_link: The URL to get the next set of results.
7645    :type next_link: str
7646    """
7647
7648    _attribute_map = {
7649        'value': {'key': 'value', 'type': '[ExpressRouteCircuitConnection]'},
7650        'next_link': {'key': 'nextLink', 'type': 'str'},
7651    }
7652
7653    def __init__(
7654        self,
7655        *,
7656        value: Optional[List["ExpressRouteCircuitConnection"]] = None,
7657        next_link: Optional[str] = None,
7658        **kwargs
7659    ):
7660        super(ExpressRouteCircuitConnectionListResult, self).__init__(**kwargs)
7661        self.value = value
7662        self.next_link = next_link
7663
7664
7665class ExpressRouteCircuitListResult(msrest.serialization.Model):
7666    """Response for ListExpressRouteCircuit API service call.
7667
7668    :param value: A list of ExpressRouteCircuits in a resource group.
7669    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuit]
7670    :param next_link: The URL to get the next set of results.
7671    :type next_link: str
7672    """
7673
7674    _attribute_map = {
7675        'value': {'key': 'value', 'type': '[ExpressRouteCircuit]'},
7676        'next_link': {'key': 'nextLink', 'type': 'str'},
7677    }
7678
7679    def __init__(
7680        self,
7681        *,
7682        value: Optional[List["ExpressRouteCircuit"]] = None,
7683        next_link: Optional[str] = None,
7684        **kwargs
7685    ):
7686        super(ExpressRouteCircuitListResult, self).__init__(**kwargs)
7687        self.value = value
7688        self.next_link = next_link
7689
7690
7691class ExpressRouteCircuitPeering(SubResource):
7692    """Peering in an ExpressRouteCircuit resource.
7693
7694    Variables are only populated by the server, and will be ignored when sending a request.
7695
7696    :param id: Resource ID.
7697    :type id: str
7698    :param name: The name of the resource that is unique within a resource group. This name can be
7699     used to access the resource.
7700    :type name: str
7701    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7702    :vartype etag: str
7703    :ivar type: Type of the resource.
7704    :vartype type: str
7705    :param peering_type: The peering type. Possible values include: "AzurePublicPeering",
7706     "AzurePrivatePeering", "MicrosoftPeering".
7707    :type peering_type: str or ~azure.mgmt.network.v2020_04_01.models.ExpressRoutePeeringType
7708    :param state: The peering state. Possible values include: "Disabled", "Enabled".
7709    :type state: str or ~azure.mgmt.network.v2020_04_01.models.ExpressRoutePeeringState
7710    :param azure_asn: The Azure ASN.
7711    :type azure_asn: int
7712    :param peer_asn: The peer ASN.
7713    :type peer_asn: long
7714    :param primary_peer_address_prefix: The primary address prefix.
7715    :type primary_peer_address_prefix: str
7716    :param secondary_peer_address_prefix: The secondary address prefix.
7717    :type secondary_peer_address_prefix: str
7718    :param primary_azure_port: The primary port.
7719    :type primary_azure_port: str
7720    :param secondary_azure_port: The secondary port.
7721    :type secondary_azure_port: str
7722    :param shared_key: The shared key.
7723    :type shared_key: str
7724    :param vlan_id: The VLAN ID.
7725    :type vlan_id: int
7726    :param microsoft_peering_config: The Microsoft peering configuration.
7727    :type microsoft_peering_config:
7728     ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeeringConfig
7729    :param stats: The peering stats of express route circuit.
7730    :type stats: ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitStats
7731    :ivar provisioning_state: The provisioning state of the express route circuit peering resource.
7732     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
7733    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
7734    :param gateway_manager_etag: The GatewayManager Etag.
7735    :type gateway_manager_etag: str
7736    :ivar last_modified_by: Who was the last to modify the peering.
7737    :vartype last_modified_by: str
7738    :param route_filter: The reference to the RouteFilter resource.
7739    :type route_filter: ~azure.mgmt.network.v2020_04_01.models.SubResource
7740    :param ipv6_peering_config: The IPv6 peering configuration.
7741    :type ipv6_peering_config:
7742     ~azure.mgmt.network.v2020_04_01.models.Ipv6ExpressRouteCircuitPeeringConfig
7743    :param express_route_connection: The ExpressRoute connection.
7744    :type express_route_connection: ~azure.mgmt.network.v2020_04_01.models.ExpressRouteConnectionId
7745    :param connections: The list of circuit connections associated with Azure Private Peering for
7746     this circuit.
7747    :type connections: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitConnection]
7748    :ivar peered_connections: The list of peered circuit connections associated with Azure Private
7749     Peering for this circuit.
7750    :vartype peered_connections:
7751     list[~azure.mgmt.network.v2020_04_01.models.PeerExpressRouteCircuitConnection]
7752    """
7753
7754    _validation = {
7755        'etag': {'readonly': True},
7756        'type': {'readonly': True},
7757        'peer_asn': {'maximum': 4294967295, 'minimum': 1},
7758        'provisioning_state': {'readonly': True},
7759        'last_modified_by': {'readonly': True},
7760        'peered_connections': {'readonly': True},
7761    }
7762
7763    _attribute_map = {
7764        'id': {'key': 'id', 'type': 'str'},
7765        'name': {'key': 'name', 'type': 'str'},
7766        'etag': {'key': 'etag', 'type': 'str'},
7767        'type': {'key': 'type', 'type': 'str'},
7768        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
7769        'state': {'key': 'properties.state', 'type': 'str'},
7770        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
7771        'peer_asn': {'key': 'properties.peerASN', 'type': 'long'},
7772        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
7773        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
7774        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
7775        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
7776        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
7777        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
7778        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
7779        'stats': {'key': 'properties.stats', 'type': 'ExpressRouteCircuitStats'},
7780        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7781        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
7782        'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'},
7783        'route_filter': {'key': 'properties.routeFilter', 'type': 'SubResource'},
7784        'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'},
7785        'express_route_connection': {'key': 'properties.expressRouteConnection', 'type': 'ExpressRouteConnectionId'},
7786        'connections': {'key': 'properties.connections', 'type': '[ExpressRouteCircuitConnection]'},
7787        'peered_connections': {'key': 'properties.peeredConnections', 'type': '[PeerExpressRouteCircuitConnection]'},
7788    }
7789
7790    def __init__(
7791        self,
7792        *,
7793        id: Optional[str] = None,
7794        name: Optional[str] = None,
7795        peering_type: Optional[Union[str, "ExpressRoutePeeringType"]] = None,
7796        state: Optional[Union[str, "ExpressRoutePeeringState"]] = None,
7797        azure_asn: Optional[int] = None,
7798        peer_asn: Optional[int] = None,
7799        primary_peer_address_prefix: Optional[str] = None,
7800        secondary_peer_address_prefix: Optional[str] = None,
7801        primary_azure_port: Optional[str] = None,
7802        secondary_azure_port: Optional[str] = None,
7803        shared_key: Optional[str] = None,
7804        vlan_id: Optional[int] = None,
7805        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
7806        stats: Optional["ExpressRouteCircuitStats"] = None,
7807        gateway_manager_etag: Optional[str] = None,
7808        route_filter: Optional["SubResource"] = None,
7809        ipv6_peering_config: Optional["Ipv6ExpressRouteCircuitPeeringConfig"] = None,
7810        express_route_connection: Optional["ExpressRouteConnectionId"] = None,
7811        connections: Optional[List["ExpressRouteCircuitConnection"]] = None,
7812        **kwargs
7813    ):
7814        super(ExpressRouteCircuitPeering, self).__init__(id=id, **kwargs)
7815        self.name = name
7816        self.etag = None
7817        self.type = None
7818        self.peering_type = peering_type
7819        self.state = state
7820        self.azure_asn = azure_asn
7821        self.peer_asn = peer_asn
7822        self.primary_peer_address_prefix = primary_peer_address_prefix
7823        self.secondary_peer_address_prefix = secondary_peer_address_prefix
7824        self.primary_azure_port = primary_azure_port
7825        self.secondary_azure_port = secondary_azure_port
7826        self.shared_key = shared_key
7827        self.vlan_id = vlan_id
7828        self.microsoft_peering_config = microsoft_peering_config
7829        self.stats = stats
7830        self.provisioning_state = None
7831        self.gateway_manager_etag = gateway_manager_etag
7832        self.last_modified_by = None
7833        self.route_filter = route_filter
7834        self.ipv6_peering_config = ipv6_peering_config
7835        self.express_route_connection = express_route_connection
7836        self.connections = connections
7837        self.peered_connections = None
7838
7839
7840class ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
7841    """Specifies the peering configuration.
7842
7843    Variables are only populated by the server, and will be ignored when sending a request.
7844
7845    :param advertised_public_prefixes: The reference to AdvertisedPublicPrefixes.
7846    :type advertised_public_prefixes: list[str]
7847    :param advertised_communities: The communities of bgp peering. Specified for microsoft peering.
7848    :type advertised_communities: list[str]
7849    :ivar advertised_public_prefixes_state: The advertised public prefix state of the Peering
7850     resource. Possible values include: "NotConfigured", "Configuring", "Configured",
7851     "ValidationNeeded".
7852    :vartype advertised_public_prefixes_state: str or
7853     ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeeringAdvertisedPublicPrefixState
7854    :param legacy_mode: The legacy mode of the peering.
7855    :type legacy_mode: int
7856    :param customer_asn: The CustomerASN of the peering.
7857    :type customer_asn: int
7858    :param routing_registry_name: The RoutingRegistryName of the configuration.
7859    :type routing_registry_name: str
7860    """
7861
7862    _validation = {
7863        'advertised_public_prefixes_state': {'readonly': True},
7864    }
7865
7866    _attribute_map = {
7867        'advertised_public_prefixes': {'key': 'advertisedPublicPrefixes', 'type': '[str]'},
7868        'advertised_communities': {'key': 'advertisedCommunities', 'type': '[str]'},
7869        'advertised_public_prefixes_state': {'key': 'advertisedPublicPrefixesState', 'type': 'str'},
7870        'legacy_mode': {'key': 'legacyMode', 'type': 'int'},
7871        'customer_asn': {'key': 'customerASN', 'type': 'int'},
7872        'routing_registry_name': {'key': 'routingRegistryName', 'type': 'str'},
7873    }
7874
7875    def __init__(
7876        self,
7877        *,
7878        advertised_public_prefixes: Optional[List[str]] = None,
7879        advertised_communities: Optional[List[str]] = None,
7880        legacy_mode: Optional[int] = None,
7881        customer_asn: Optional[int] = None,
7882        routing_registry_name: Optional[str] = None,
7883        **kwargs
7884    ):
7885        super(ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
7886        self.advertised_public_prefixes = advertised_public_prefixes
7887        self.advertised_communities = advertised_communities
7888        self.advertised_public_prefixes_state = None
7889        self.legacy_mode = legacy_mode
7890        self.customer_asn = customer_asn
7891        self.routing_registry_name = routing_registry_name
7892
7893
7894class ExpressRouteCircuitPeeringId(msrest.serialization.Model):
7895    """ExpressRoute circuit peering identifier.
7896
7897    :param id: The ID of the ExpressRoute circuit peering.
7898    :type id: str
7899    """
7900
7901    _attribute_map = {
7902        'id': {'key': 'id', 'type': 'str'},
7903    }
7904
7905    def __init__(
7906        self,
7907        *,
7908        id: Optional[str] = None,
7909        **kwargs
7910    ):
7911        super(ExpressRouteCircuitPeeringId, self).__init__(**kwargs)
7912        self.id = id
7913
7914
7915class ExpressRouteCircuitPeeringListResult(msrest.serialization.Model):
7916    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCircuit.
7917
7918    :param value: The peerings in an express route circuit.
7919    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeering]
7920    :param next_link: The URL to get the next set of results.
7921    :type next_link: str
7922    """
7923
7924    _attribute_map = {
7925        'value': {'key': 'value', 'type': '[ExpressRouteCircuitPeering]'},
7926        'next_link': {'key': 'nextLink', 'type': 'str'},
7927    }
7928
7929    def __init__(
7930        self,
7931        *,
7932        value: Optional[List["ExpressRouteCircuitPeering"]] = None,
7933        next_link: Optional[str] = None,
7934        **kwargs
7935    ):
7936        super(ExpressRouteCircuitPeeringListResult, self).__init__(**kwargs)
7937        self.value = value
7938        self.next_link = next_link
7939
7940
7941class ExpressRouteCircuitReference(msrest.serialization.Model):
7942    """Reference to an express route circuit.
7943
7944    :param id: Corresponding Express Route Circuit Id.
7945    :type id: str
7946    """
7947
7948    _attribute_map = {
7949        'id': {'key': 'id', 'type': 'str'},
7950    }
7951
7952    def __init__(
7953        self,
7954        *,
7955        id: Optional[str] = None,
7956        **kwargs
7957    ):
7958        super(ExpressRouteCircuitReference, self).__init__(**kwargs)
7959        self.id = id
7960
7961
7962class ExpressRouteCircuitRoutesTable(msrest.serialization.Model):
7963    """The routes table associated with the ExpressRouteCircuit.
7964
7965    :param network: IP address of a network entity.
7966    :type network: str
7967    :param next_hop: NextHop address.
7968    :type next_hop: str
7969    :param loc_prf: Local preference value as set with the set local-preference route-map
7970     configuration command.
7971    :type loc_prf: str
7972    :param weight: Route Weight.
7973    :type weight: int
7974    :param path: Autonomous system paths to the destination network.
7975    :type path: str
7976    """
7977
7978    _attribute_map = {
7979        'network': {'key': 'network', 'type': 'str'},
7980        'next_hop': {'key': 'nextHop', 'type': 'str'},
7981        'loc_prf': {'key': 'locPrf', 'type': 'str'},
7982        'weight': {'key': 'weight', 'type': 'int'},
7983        'path': {'key': 'path', 'type': 'str'},
7984    }
7985
7986    def __init__(
7987        self,
7988        *,
7989        network: Optional[str] = None,
7990        next_hop: Optional[str] = None,
7991        loc_prf: Optional[str] = None,
7992        weight: Optional[int] = None,
7993        path: Optional[str] = None,
7994        **kwargs
7995    ):
7996        super(ExpressRouteCircuitRoutesTable, self).__init__(**kwargs)
7997        self.network = network
7998        self.next_hop = next_hop
7999        self.loc_prf = loc_prf
8000        self.weight = weight
8001        self.path = path
8002
8003
8004class ExpressRouteCircuitRoutesTableSummary(msrest.serialization.Model):
8005    """The routes table associated with the ExpressRouteCircuit.
8006
8007    :param neighbor: IP address of the neighbor.
8008    :type neighbor: str
8009    :param v: BGP version number spoken to the neighbor.
8010    :type v: int
8011    :param as_property: Autonomous system number.
8012    :type as_property: int
8013    :param up_down: The length of time that the BGP session has been in the Established state, or
8014     the current status if not in the Established state.
8015    :type up_down: str
8016    :param state_pfx_rcd: Current state of the BGP session, and the number of prefixes that have
8017     been received from a neighbor or peer group.
8018    :type state_pfx_rcd: str
8019    """
8020
8021    _attribute_map = {
8022        'neighbor': {'key': 'neighbor', 'type': 'str'},
8023        'v': {'key': 'v', 'type': 'int'},
8024        'as_property': {'key': 'as', 'type': 'int'},
8025        'up_down': {'key': 'upDown', 'type': 'str'},
8026        'state_pfx_rcd': {'key': 'statePfxRcd', 'type': 'str'},
8027    }
8028
8029    def __init__(
8030        self,
8031        *,
8032        neighbor: Optional[str] = None,
8033        v: Optional[int] = None,
8034        as_property: Optional[int] = None,
8035        up_down: Optional[str] = None,
8036        state_pfx_rcd: Optional[str] = None,
8037        **kwargs
8038    ):
8039        super(ExpressRouteCircuitRoutesTableSummary, self).__init__(**kwargs)
8040        self.neighbor = neighbor
8041        self.v = v
8042        self.as_property = as_property
8043        self.up_down = up_down
8044        self.state_pfx_rcd = state_pfx_rcd
8045
8046
8047class ExpressRouteCircuitsArpTableListResult(msrest.serialization.Model):
8048    """Response for ListArpTable associated with the Express Route Circuits API.
8049
8050    :param value: A list of the ARP tables.
8051    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitArpTable]
8052    :param next_link: The URL to get the next set of results.
8053    :type next_link: str
8054    """
8055
8056    _attribute_map = {
8057        'value': {'key': 'value', 'type': '[ExpressRouteCircuitArpTable]'},
8058        'next_link': {'key': 'nextLink', 'type': 'str'},
8059    }
8060
8061    def __init__(
8062        self,
8063        *,
8064        value: Optional[List["ExpressRouteCircuitArpTable"]] = None,
8065        next_link: Optional[str] = None,
8066        **kwargs
8067    ):
8068        super(ExpressRouteCircuitsArpTableListResult, self).__init__(**kwargs)
8069        self.value = value
8070        self.next_link = next_link
8071
8072
8073class ExpressRouteCircuitServiceProviderProperties(msrest.serialization.Model):
8074    """Contains ServiceProviderProperties in an ExpressRouteCircuit.
8075
8076    :param service_provider_name: The serviceProviderName.
8077    :type service_provider_name: str
8078    :param peering_location: The peering location.
8079    :type peering_location: str
8080    :param bandwidth_in_mbps: The BandwidthInMbps.
8081    :type bandwidth_in_mbps: int
8082    """
8083
8084    _attribute_map = {
8085        'service_provider_name': {'key': 'serviceProviderName', 'type': 'str'},
8086        'peering_location': {'key': 'peeringLocation', 'type': 'str'},
8087        'bandwidth_in_mbps': {'key': 'bandwidthInMbps', 'type': 'int'},
8088    }
8089
8090    def __init__(
8091        self,
8092        *,
8093        service_provider_name: Optional[str] = None,
8094        peering_location: Optional[str] = None,
8095        bandwidth_in_mbps: Optional[int] = None,
8096        **kwargs
8097    ):
8098        super(ExpressRouteCircuitServiceProviderProperties, self).__init__(**kwargs)
8099        self.service_provider_name = service_provider_name
8100        self.peering_location = peering_location
8101        self.bandwidth_in_mbps = bandwidth_in_mbps
8102
8103
8104class ExpressRouteCircuitSku(msrest.serialization.Model):
8105    """Contains SKU in an ExpressRouteCircuit.
8106
8107    :param name: The name of the SKU.
8108    :type name: str
8109    :param tier: The tier of the SKU. Possible values include: "Standard", "Premium", "Basic",
8110     "Local".
8111    :type tier: str or ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitSkuTier
8112    :param family: The family of the SKU. Possible values include: "UnlimitedData", "MeteredData".
8113    :type family: str or ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitSkuFamily
8114    """
8115
8116    _attribute_map = {
8117        'name': {'key': 'name', 'type': 'str'},
8118        'tier': {'key': 'tier', 'type': 'str'},
8119        'family': {'key': 'family', 'type': 'str'},
8120    }
8121
8122    def __init__(
8123        self,
8124        *,
8125        name: Optional[str] = None,
8126        tier: Optional[Union[str, "ExpressRouteCircuitSkuTier"]] = None,
8127        family: Optional[Union[str, "ExpressRouteCircuitSkuFamily"]] = None,
8128        **kwargs
8129    ):
8130        super(ExpressRouteCircuitSku, self).__init__(**kwargs)
8131        self.name = name
8132        self.tier = tier
8133        self.family = family
8134
8135
8136class ExpressRouteCircuitsRoutesTableListResult(msrest.serialization.Model):
8137    """Response for ListRoutesTable associated with the Express Route Circuits API.
8138
8139    :param value: The list of routes table.
8140    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitRoutesTable]
8141    :param next_link: The URL to get the next set of results.
8142    :type next_link: str
8143    """
8144
8145    _attribute_map = {
8146        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTable]'},
8147        'next_link': {'key': 'nextLink', 'type': 'str'},
8148    }
8149
8150    def __init__(
8151        self,
8152        *,
8153        value: Optional[List["ExpressRouteCircuitRoutesTable"]] = None,
8154        next_link: Optional[str] = None,
8155        **kwargs
8156    ):
8157        super(ExpressRouteCircuitsRoutesTableListResult, self).__init__(**kwargs)
8158        self.value = value
8159        self.next_link = next_link
8160
8161
8162class ExpressRouteCircuitsRoutesTableSummaryListResult(msrest.serialization.Model):
8163    """Response for ListRoutesTable associated with the Express Route Circuits API.
8164
8165    :param value: A list of the routes table.
8166    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitRoutesTableSummary]
8167    :param next_link: The URL to get the next set of results.
8168    :type next_link: str
8169    """
8170
8171    _attribute_map = {
8172        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTableSummary]'},
8173        'next_link': {'key': 'nextLink', 'type': 'str'},
8174    }
8175
8176    def __init__(
8177        self,
8178        *,
8179        value: Optional[List["ExpressRouteCircuitRoutesTableSummary"]] = None,
8180        next_link: Optional[str] = None,
8181        **kwargs
8182    ):
8183        super(ExpressRouteCircuitsRoutesTableSummaryListResult, self).__init__(**kwargs)
8184        self.value = value
8185        self.next_link = next_link
8186
8187
8188class ExpressRouteCircuitStats(msrest.serialization.Model):
8189    """Contains stats associated with the peering.
8190
8191    :param primarybytes_in: The Primary BytesIn of the peering.
8192    :type primarybytes_in: long
8193    :param primarybytes_out: The primary BytesOut of the peering.
8194    :type primarybytes_out: long
8195    :param secondarybytes_in: The secondary BytesIn of the peering.
8196    :type secondarybytes_in: long
8197    :param secondarybytes_out: The secondary BytesOut of the peering.
8198    :type secondarybytes_out: long
8199    """
8200
8201    _attribute_map = {
8202        'primarybytes_in': {'key': 'primarybytesIn', 'type': 'long'},
8203        'primarybytes_out': {'key': 'primarybytesOut', 'type': 'long'},
8204        'secondarybytes_in': {'key': 'secondarybytesIn', 'type': 'long'},
8205        'secondarybytes_out': {'key': 'secondarybytesOut', 'type': 'long'},
8206    }
8207
8208    def __init__(
8209        self,
8210        *,
8211        primarybytes_in: Optional[int] = None,
8212        primarybytes_out: Optional[int] = None,
8213        secondarybytes_in: Optional[int] = None,
8214        secondarybytes_out: Optional[int] = None,
8215        **kwargs
8216    ):
8217        super(ExpressRouteCircuitStats, self).__init__(**kwargs)
8218        self.primarybytes_in = primarybytes_in
8219        self.primarybytes_out = primarybytes_out
8220        self.secondarybytes_in = secondarybytes_in
8221        self.secondarybytes_out = secondarybytes_out
8222
8223
8224class ExpressRouteConnection(SubResource):
8225    """ExpressRouteConnection resource.
8226
8227    Variables are only populated by the server, and will be ignored when sending a request.
8228
8229    All required parameters must be populated in order to send to Azure.
8230
8231    :param id: Resource ID.
8232    :type id: str
8233    :param name: Required. The name of the resource.
8234    :type name: str
8235    :ivar provisioning_state: The provisioning state of the express route connection resource.
8236     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
8237    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
8238    :param express_route_circuit_peering: The ExpressRoute circuit peering.
8239    :type express_route_circuit_peering:
8240     ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeeringId
8241    :param authorization_key: Authorization key to establish the connection.
8242    :type authorization_key: str
8243    :param routing_weight: The routing weight associated to the connection.
8244    :type routing_weight: int
8245    :param enable_internet_security: Enable internet security.
8246    :type enable_internet_security: bool
8247    :param routing_configuration: The Routing Configuration indicating the associated and
8248     propagated route tables on this connection.
8249    :type routing_configuration: ~azure.mgmt.network.v2020_04_01.models.RoutingConfiguration
8250    """
8251
8252    _validation = {
8253        'name': {'required': True},
8254        'provisioning_state': {'readonly': True},
8255    }
8256
8257    _attribute_map = {
8258        'id': {'key': 'id', 'type': 'str'},
8259        'name': {'key': 'name', 'type': 'str'},
8260        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8261        'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'ExpressRouteCircuitPeeringId'},
8262        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
8263        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
8264        'enable_internet_security': {'key': 'properties.enableInternetSecurity', 'type': 'bool'},
8265        'routing_configuration': {'key': 'properties.routingConfiguration', 'type': 'RoutingConfiguration'},
8266    }
8267
8268    def __init__(
8269        self,
8270        *,
8271        name: str,
8272        id: Optional[str] = None,
8273        express_route_circuit_peering: Optional["ExpressRouteCircuitPeeringId"] = None,
8274        authorization_key: Optional[str] = None,
8275        routing_weight: Optional[int] = None,
8276        enable_internet_security: Optional[bool] = None,
8277        routing_configuration: Optional["RoutingConfiguration"] = None,
8278        **kwargs
8279    ):
8280        super(ExpressRouteConnection, self).__init__(id=id, **kwargs)
8281        self.name = name
8282        self.provisioning_state = None
8283        self.express_route_circuit_peering = express_route_circuit_peering
8284        self.authorization_key = authorization_key
8285        self.routing_weight = routing_weight
8286        self.enable_internet_security = enable_internet_security
8287        self.routing_configuration = routing_configuration
8288
8289
8290class ExpressRouteConnectionId(msrest.serialization.Model):
8291    """The ID of the ExpressRouteConnection.
8292
8293    Variables are only populated by the server, and will be ignored when sending a request.
8294
8295    :ivar id: The ID of the ExpressRouteConnection.
8296    :vartype id: str
8297    """
8298
8299    _validation = {
8300        'id': {'readonly': True},
8301    }
8302
8303    _attribute_map = {
8304        'id': {'key': 'id', 'type': 'str'},
8305    }
8306
8307    def __init__(
8308        self,
8309        **kwargs
8310    ):
8311        super(ExpressRouteConnectionId, self).__init__(**kwargs)
8312        self.id = None
8313
8314
8315class ExpressRouteConnectionList(msrest.serialization.Model):
8316    """ExpressRouteConnection list.
8317
8318    :param value: The list of ExpressRoute connections.
8319    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteConnection]
8320    """
8321
8322    _attribute_map = {
8323        'value': {'key': 'value', 'type': '[ExpressRouteConnection]'},
8324    }
8325
8326    def __init__(
8327        self,
8328        *,
8329        value: Optional[List["ExpressRouteConnection"]] = None,
8330        **kwargs
8331    ):
8332        super(ExpressRouteConnectionList, self).__init__(**kwargs)
8333        self.value = value
8334
8335
8336class ExpressRouteCrossConnection(Resource):
8337    """ExpressRouteCrossConnection resource.
8338
8339    Variables are only populated by the server, and will be ignored when sending a request.
8340
8341    :param id: Resource ID.
8342    :type id: str
8343    :ivar name: Resource name.
8344    :vartype name: str
8345    :ivar type: Resource type.
8346    :vartype type: str
8347    :param location: Resource location.
8348    :type location: str
8349    :param tags: A set of tags. Resource tags.
8350    :type tags: dict[str, str]
8351    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8352    :vartype etag: str
8353    :ivar primary_azure_port: The name of the primary port.
8354    :vartype primary_azure_port: str
8355    :ivar secondary_azure_port: The name of the secondary port.
8356    :vartype secondary_azure_port: str
8357    :ivar s_tag: The identifier of the circuit traffic.
8358    :vartype s_tag: int
8359    :param peering_location: The peering location of the ExpressRoute circuit.
8360    :type peering_location: str
8361    :param bandwidth_in_mbps: The circuit bandwidth In Mbps.
8362    :type bandwidth_in_mbps: int
8363    :param express_route_circuit: The ExpressRouteCircuit.
8364    :type express_route_circuit:
8365     ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitReference
8366    :param service_provider_provisioning_state: The provisioning state of the circuit in the
8367     connectivity provider system. Possible values include: "NotProvisioned", "Provisioning",
8368     "Provisioned", "Deprovisioning".
8369    :type service_provider_provisioning_state: str or
8370     ~azure.mgmt.network.v2020_04_01.models.ServiceProviderProvisioningState
8371    :param service_provider_notes: Additional read only notes set by the connectivity provider.
8372    :type service_provider_notes: str
8373    :ivar provisioning_state: The provisioning state of the express route cross connection
8374     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
8375    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
8376    :param peerings: The list of peerings.
8377    :type peerings: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCrossConnectionPeering]
8378    """
8379
8380    _validation = {
8381        'name': {'readonly': True},
8382        'type': {'readonly': True},
8383        'etag': {'readonly': True},
8384        'primary_azure_port': {'readonly': True},
8385        'secondary_azure_port': {'readonly': True},
8386        's_tag': {'readonly': True},
8387        'provisioning_state': {'readonly': True},
8388    }
8389
8390    _attribute_map = {
8391        'id': {'key': 'id', 'type': 'str'},
8392        'name': {'key': 'name', 'type': 'str'},
8393        'type': {'key': 'type', 'type': 'str'},
8394        'location': {'key': 'location', 'type': 'str'},
8395        'tags': {'key': 'tags', 'type': '{str}'},
8396        'etag': {'key': 'etag', 'type': 'str'},
8397        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
8398        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
8399        's_tag': {'key': 'properties.sTag', 'type': 'int'},
8400        'peering_location': {'key': 'properties.peeringLocation', 'type': 'str'},
8401        'bandwidth_in_mbps': {'key': 'properties.bandwidthInMbps', 'type': 'int'},
8402        'express_route_circuit': {'key': 'properties.expressRouteCircuit', 'type': 'ExpressRouteCircuitReference'},
8403        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
8404        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
8405        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8406        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCrossConnectionPeering]'},
8407    }
8408
8409    def __init__(
8410        self,
8411        *,
8412        id: Optional[str] = None,
8413        location: Optional[str] = None,
8414        tags: Optional[Dict[str, str]] = None,
8415        peering_location: Optional[str] = None,
8416        bandwidth_in_mbps: Optional[int] = None,
8417        express_route_circuit: Optional["ExpressRouteCircuitReference"] = None,
8418        service_provider_provisioning_state: Optional[Union[str, "ServiceProviderProvisioningState"]] = None,
8419        service_provider_notes: Optional[str] = None,
8420        peerings: Optional[List["ExpressRouteCrossConnectionPeering"]] = None,
8421        **kwargs
8422    ):
8423        super(ExpressRouteCrossConnection, self).__init__(id=id, location=location, tags=tags, **kwargs)
8424        self.etag = None
8425        self.primary_azure_port = None
8426        self.secondary_azure_port = None
8427        self.s_tag = None
8428        self.peering_location = peering_location
8429        self.bandwidth_in_mbps = bandwidth_in_mbps
8430        self.express_route_circuit = express_route_circuit
8431        self.service_provider_provisioning_state = service_provider_provisioning_state
8432        self.service_provider_notes = service_provider_notes
8433        self.provisioning_state = None
8434        self.peerings = peerings
8435
8436
8437class ExpressRouteCrossConnectionListResult(msrest.serialization.Model):
8438    """Response for ListExpressRouteCrossConnection API service call.
8439
8440    Variables are only populated by the server, and will be ignored when sending a request.
8441
8442    :param value: A list of ExpressRouteCrossConnection resources.
8443    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCrossConnection]
8444    :ivar next_link: The URL to get the next set of results.
8445    :vartype next_link: str
8446    """
8447
8448    _validation = {
8449        'next_link': {'readonly': True},
8450    }
8451
8452    _attribute_map = {
8453        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnection]'},
8454        'next_link': {'key': 'nextLink', 'type': 'str'},
8455    }
8456
8457    def __init__(
8458        self,
8459        *,
8460        value: Optional[List["ExpressRouteCrossConnection"]] = None,
8461        **kwargs
8462    ):
8463        super(ExpressRouteCrossConnectionListResult, self).__init__(**kwargs)
8464        self.value = value
8465        self.next_link = None
8466
8467
8468class ExpressRouteCrossConnectionPeering(SubResource):
8469    """Peering in an ExpressRoute Cross Connection resource.
8470
8471    Variables are only populated by the server, and will be ignored when sending a request.
8472
8473    :param id: Resource ID.
8474    :type id: str
8475    :param name: The name of the resource that is unique within a resource group. This name can be
8476     used to access the resource.
8477    :type name: str
8478    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8479    :vartype etag: str
8480    :param peering_type: The peering type. Possible values include: "AzurePublicPeering",
8481     "AzurePrivatePeering", "MicrosoftPeering".
8482    :type peering_type: str or ~azure.mgmt.network.v2020_04_01.models.ExpressRoutePeeringType
8483    :param state: The peering state. Possible values include: "Disabled", "Enabled".
8484    :type state: str or ~azure.mgmt.network.v2020_04_01.models.ExpressRoutePeeringState
8485    :ivar azure_asn: The Azure ASN.
8486    :vartype azure_asn: int
8487    :param peer_asn: The peer ASN.
8488    :type peer_asn: long
8489    :param primary_peer_address_prefix: The primary address prefix.
8490    :type primary_peer_address_prefix: str
8491    :param secondary_peer_address_prefix: The secondary address prefix.
8492    :type secondary_peer_address_prefix: str
8493    :ivar primary_azure_port: The primary port.
8494    :vartype primary_azure_port: str
8495    :ivar secondary_azure_port: The secondary port.
8496    :vartype secondary_azure_port: str
8497    :param shared_key: The shared key.
8498    :type shared_key: str
8499    :param vlan_id: The VLAN ID.
8500    :type vlan_id: int
8501    :param microsoft_peering_config: The Microsoft peering configuration.
8502    :type microsoft_peering_config:
8503     ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeeringConfig
8504    :ivar provisioning_state: The provisioning state of the express route cross connection peering
8505     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
8506    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
8507    :param gateway_manager_etag: The GatewayManager Etag.
8508    :type gateway_manager_etag: str
8509    :ivar last_modified_by: Who was the last to modify the peering.
8510    :vartype last_modified_by: str
8511    :param ipv6_peering_config: The IPv6 peering configuration.
8512    :type ipv6_peering_config:
8513     ~azure.mgmt.network.v2020_04_01.models.Ipv6ExpressRouteCircuitPeeringConfig
8514    """
8515
8516    _validation = {
8517        'etag': {'readonly': True},
8518        'azure_asn': {'readonly': True},
8519        'peer_asn': {'maximum': 4294967295, 'minimum': 1},
8520        'primary_azure_port': {'readonly': True},
8521        'secondary_azure_port': {'readonly': True},
8522        'provisioning_state': {'readonly': True},
8523        'last_modified_by': {'readonly': True},
8524    }
8525
8526    _attribute_map = {
8527        'id': {'key': 'id', 'type': 'str'},
8528        'name': {'key': 'name', 'type': 'str'},
8529        'etag': {'key': 'etag', 'type': 'str'},
8530        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
8531        'state': {'key': 'properties.state', 'type': 'str'},
8532        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
8533        'peer_asn': {'key': 'properties.peerASN', 'type': 'long'},
8534        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
8535        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
8536        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
8537        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
8538        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
8539        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
8540        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
8541        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8542        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
8543        'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'},
8544        'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'},
8545    }
8546
8547    def __init__(
8548        self,
8549        *,
8550        id: Optional[str] = None,
8551        name: Optional[str] = None,
8552        peering_type: Optional[Union[str, "ExpressRoutePeeringType"]] = None,
8553        state: Optional[Union[str, "ExpressRoutePeeringState"]] = None,
8554        peer_asn: Optional[int] = None,
8555        primary_peer_address_prefix: Optional[str] = None,
8556        secondary_peer_address_prefix: Optional[str] = None,
8557        shared_key: Optional[str] = None,
8558        vlan_id: Optional[int] = None,
8559        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
8560        gateway_manager_etag: Optional[str] = None,
8561        ipv6_peering_config: Optional["Ipv6ExpressRouteCircuitPeeringConfig"] = None,
8562        **kwargs
8563    ):
8564        super(ExpressRouteCrossConnectionPeering, self).__init__(id=id, **kwargs)
8565        self.name = name
8566        self.etag = None
8567        self.peering_type = peering_type
8568        self.state = state
8569        self.azure_asn = None
8570        self.peer_asn = peer_asn
8571        self.primary_peer_address_prefix = primary_peer_address_prefix
8572        self.secondary_peer_address_prefix = secondary_peer_address_prefix
8573        self.primary_azure_port = None
8574        self.secondary_azure_port = None
8575        self.shared_key = shared_key
8576        self.vlan_id = vlan_id
8577        self.microsoft_peering_config = microsoft_peering_config
8578        self.provisioning_state = None
8579        self.gateway_manager_etag = gateway_manager_etag
8580        self.last_modified_by = None
8581        self.ipv6_peering_config = ipv6_peering_config
8582
8583
8584class ExpressRouteCrossConnectionPeeringList(msrest.serialization.Model):
8585    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCrossConnection.
8586
8587    Variables are only populated by the server, and will be ignored when sending a request.
8588
8589    :param value: The peerings in an express route cross connection.
8590    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCrossConnectionPeering]
8591    :ivar next_link: The URL to get the next set of results.
8592    :vartype next_link: str
8593    """
8594
8595    _validation = {
8596        'next_link': {'readonly': True},
8597    }
8598
8599    _attribute_map = {
8600        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnectionPeering]'},
8601        'next_link': {'key': 'nextLink', 'type': 'str'},
8602    }
8603
8604    def __init__(
8605        self,
8606        *,
8607        value: Optional[List["ExpressRouteCrossConnectionPeering"]] = None,
8608        **kwargs
8609    ):
8610        super(ExpressRouteCrossConnectionPeeringList, self).__init__(**kwargs)
8611        self.value = value
8612        self.next_link = None
8613
8614
8615class ExpressRouteCrossConnectionRoutesTableSummary(msrest.serialization.Model):
8616    """The routes table associated with the ExpressRouteCircuit.
8617
8618    :param neighbor: IP address of Neighbor router.
8619    :type neighbor: str
8620    :param asn: Autonomous system number.
8621    :type asn: int
8622    :param up_down: The length of time that the BGP session has been in the Established state, or
8623     the current status if not in the Established state.
8624    :type up_down: str
8625    :param state_or_prefixes_received: Current state of the BGP session, and the number of prefixes
8626     that have been received from a neighbor or peer group.
8627    :type state_or_prefixes_received: str
8628    """
8629
8630    _attribute_map = {
8631        'neighbor': {'key': 'neighbor', 'type': 'str'},
8632        'asn': {'key': 'asn', 'type': 'int'},
8633        'up_down': {'key': 'upDown', 'type': 'str'},
8634        'state_or_prefixes_received': {'key': 'stateOrPrefixesReceived', 'type': 'str'},
8635    }
8636
8637    def __init__(
8638        self,
8639        *,
8640        neighbor: Optional[str] = None,
8641        asn: Optional[int] = None,
8642        up_down: Optional[str] = None,
8643        state_or_prefixes_received: Optional[str] = None,
8644        **kwargs
8645    ):
8646        super(ExpressRouteCrossConnectionRoutesTableSummary, self).__init__(**kwargs)
8647        self.neighbor = neighbor
8648        self.asn = asn
8649        self.up_down = up_down
8650        self.state_or_prefixes_received = state_or_prefixes_received
8651
8652
8653class ExpressRouteCrossConnectionsRoutesTableSummaryListResult(msrest.serialization.Model):
8654    """Response for ListRoutesTable associated with the Express Route Cross Connections.
8655
8656    Variables are only populated by the server, and will be ignored when sending a request.
8657
8658    :param value: A list of the routes table.
8659    :type value:
8660     list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCrossConnectionRoutesTableSummary]
8661    :ivar next_link: The URL to get the next set of results.
8662    :vartype next_link: str
8663    """
8664
8665    _validation = {
8666        'next_link': {'readonly': True},
8667    }
8668
8669    _attribute_map = {
8670        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnectionRoutesTableSummary]'},
8671        'next_link': {'key': 'nextLink', 'type': 'str'},
8672    }
8673
8674    def __init__(
8675        self,
8676        *,
8677        value: Optional[List["ExpressRouteCrossConnectionRoutesTableSummary"]] = None,
8678        **kwargs
8679    ):
8680        super(ExpressRouteCrossConnectionsRoutesTableSummaryListResult, self).__init__(**kwargs)
8681        self.value = value
8682        self.next_link = None
8683
8684
8685class ExpressRouteGateway(Resource):
8686    """ExpressRoute gateway resource.
8687
8688    Variables are only populated by the server, and will be ignored when sending a request.
8689
8690    :param id: Resource ID.
8691    :type id: str
8692    :ivar name: Resource name.
8693    :vartype name: str
8694    :ivar type: Resource type.
8695    :vartype type: str
8696    :param location: Resource location.
8697    :type location: str
8698    :param tags: A set of tags. Resource tags.
8699    :type tags: dict[str, str]
8700    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8701    :vartype etag: str
8702    :param auto_scale_configuration: Configuration for auto scaling.
8703    :type auto_scale_configuration:
8704     ~azure.mgmt.network.v2020_04_01.models.ExpressRouteGatewayPropertiesAutoScaleConfiguration
8705    :ivar express_route_connections: List of ExpressRoute connections to the ExpressRoute gateway.
8706    :vartype express_route_connections:
8707     list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteConnection]
8708    :ivar provisioning_state: The provisioning state of the express route gateway resource.
8709     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
8710    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
8711    :param virtual_hub: The Virtual Hub where the ExpressRoute gateway is or will be deployed.
8712    :type virtual_hub: ~azure.mgmt.network.v2020_04_01.models.VirtualHubId
8713    """
8714
8715    _validation = {
8716        'name': {'readonly': True},
8717        'type': {'readonly': True},
8718        'etag': {'readonly': True},
8719        'express_route_connections': {'readonly': True},
8720        'provisioning_state': {'readonly': True},
8721    }
8722
8723    _attribute_map = {
8724        'id': {'key': 'id', 'type': 'str'},
8725        'name': {'key': 'name', 'type': 'str'},
8726        'type': {'key': 'type', 'type': 'str'},
8727        'location': {'key': 'location', 'type': 'str'},
8728        'tags': {'key': 'tags', 'type': '{str}'},
8729        'etag': {'key': 'etag', 'type': 'str'},
8730        'auto_scale_configuration': {'key': 'properties.autoScaleConfiguration', 'type': 'ExpressRouteGatewayPropertiesAutoScaleConfiguration'},
8731        'express_route_connections': {'key': 'properties.expressRouteConnections', 'type': '[ExpressRouteConnection]'},
8732        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8733        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'VirtualHubId'},
8734    }
8735
8736    def __init__(
8737        self,
8738        *,
8739        id: Optional[str] = None,
8740        location: Optional[str] = None,
8741        tags: Optional[Dict[str, str]] = None,
8742        auto_scale_configuration: Optional["ExpressRouteGatewayPropertiesAutoScaleConfiguration"] = None,
8743        virtual_hub: Optional["VirtualHubId"] = None,
8744        **kwargs
8745    ):
8746        super(ExpressRouteGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
8747        self.etag = None
8748        self.auto_scale_configuration = auto_scale_configuration
8749        self.express_route_connections = None
8750        self.provisioning_state = None
8751        self.virtual_hub = virtual_hub
8752
8753
8754class ExpressRouteGatewayList(msrest.serialization.Model):
8755    """List of ExpressRoute gateways.
8756
8757    :param value: List of ExpressRoute gateways.
8758    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteGateway]
8759    """
8760
8761    _attribute_map = {
8762        'value': {'key': 'value', 'type': '[ExpressRouteGateway]'},
8763    }
8764
8765    def __init__(
8766        self,
8767        *,
8768        value: Optional[List["ExpressRouteGateway"]] = None,
8769        **kwargs
8770    ):
8771        super(ExpressRouteGatewayList, self).__init__(**kwargs)
8772        self.value = value
8773
8774
8775class ExpressRouteGatewayPropertiesAutoScaleConfiguration(msrest.serialization.Model):
8776    """Configuration for auto scaling.
8777
8778    :param bounds: Minimum and maximum number of scale units to deploy.
8779    :type bounds:
8780     ~azure.mgmt.network.v2020_04_01.models.ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds
8781    """
8782
8783    _attribute_map = {
8784        'bounds': {'key': 'bounds', 'type': 'ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds'},
8785    }
8786
8787    def __init__(
8788        self,
8789        *,
8790        bounds: Optional["ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds"] = None,
8791        **kwargs
8792    ):
8793        super(ExpressRouteGatewayPropertiesAutoScaleConfiguration, self).__init__(**kwargs)
8794        self.bounds = bounds
8795
8796
8797class ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds(msrest.serialization.Model):
8798    """Minimum and maximum number of scale units to deploy.
8799
8800    :param min: Minimum number of scale units deployed for ExpressRoute gateway.
8801    :type min: int
8802    :param max: Maximum number of scale units deployed for ExpressRoute gateway.
8803    :type max: int
8804    """
8805
8806    _attribute_map = {
8807        'min': {'key': 'min', 'type': 'int'},
8808        'max': {'key': 'max', 'type': 'int'},
8809    }
8810
8811    def __init__(
8812        self,
8813        *,
8814        min: Optional[int] = None,
8815        max: Optional[int] = None,
8816        **kwargs
8817    ):
8818        super(ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds, self).__init__(**kwargs)
8819        self.min = min
8820        self.max = max
8821
8822
8823class ExpressRouteLink(SubResource):
8824    """ExpressRouteLink child resource definition.
8825
8826    Variables are only populated by the server, and will be ignored when sending a request.
8827
8828    :param id: Resource ID.
8829    :type id: str
8830    :param name: Name of child port resource that is unique among child port resources of the
8831     parent.
8832    :type name: str
8833    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8834    :vartype etag: str
8835    :ivar router_name: Name of Azure router associated with physical port.
8836    :vartype router_name: str
8837    :ivar interface_name: Name of Azure router interface.
8838    :vartype interface_name: str
8839    :ivar patch_panel_id: Mapping between physical port to patch panel port.
8840    :vartype patch_panel_id: str
8841    :ivar rack_id: Mapping of physical patch panel to rack.
8842    :vartype rack_id: str
8843    :ivar connector_type: Physical fiber port type. Possible values include: "LC", "SC".
8844    :vartype connector_type: str or
8845     ~azure.mgmt.network.v2020_04_01.models.ExpressRouteLinkConnectorType
8846    :param admin_state: Administrative state of the physical port. Possible values include:
8847     "Enabled", "Disabled".
8848    :type admin_state: str or ~azure.mgmt.network.v2020_04_01.models.ExpressRouteLinkAdminState
8849    :ivar provisioning_state: The provisioning state of the express route link resource. Possible
8850     values include: "Succeeded", "Updating", "Deleting", "Failed".
8851    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
8852    :param mac_sec_config: MacSec configuration.
8853    :type mac_sec_config: ~azure.mgmt.network.v2020_04_01.models.ExpressRouteLinkMacSecConfig
8854    """
8855
8856    _validation = {
8857        'etag': {'readonly': True},
8858        'router_name': {'readonly': True},
8859        'interface_name': {'readonly': True},
8860        'patch_panel_id': {'readonly': True},
8861        'rack_id': {'readonly': True},
8862        'connector_type': {'readonly': True},
8863        'provisioning_state': {'readonly': True},
8864    }
8865
8866    _attribute_map = {
8867        'id': {'key': 'id', 'type': 'str'},
8868        'name': {'key': 'name', 'type': 'str'},
8869        'etag': {'key': 'etag', 'type': 'str'},
8870        'router_name': {'key': 'properties.routerName', 'type': 'str'},
8871        'interface_name': {'key': 'properties.interfaceName', 'type': 'str'},
8872        'patch_panel_id': {'key': 'properties.patchPanelId', 'type': 'str'},
8873        'rack_id': {'key': 'properties.rackId', 'type': 'str'},
8874        'connector_type': {'key': 'properties.connectorType', 'type': 'str'},
8875        'admin_state': {'key': 'properties.adminState', 'type': 'str'},
8876        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8877        'mac_sec_config': {'key': 'properties.macSecConfig', 'type': 'ExpressRouteLinkMacSecConfig'},
8878    }
8879
8880    def __init__(
8881        self,
8882        *,
8883        id: Optional[str] = None,
8884        name: Optional[str] = None,
8885        admin_state: Optional[Union[str, "ExpressRouteLinkAdminState"]] = None,
8886        mac_sec_config: Optional["ExpressRouteLinkMacSecConfig"] = None,
8887        **kwargs
8888    ):
8889        super(ExpressRouteLink, self).__init__(id=id, **kwargs)
8890        self.name = name
8891        self.etag = None
8892        self.router_name = None
8893        self.interface_name = None
8894        self.patch_panel_id = None
8895        self.rack_id = None
8896        self.connector_type = None
8897        self.admin_state = admin_state
8898        self.provisioning_state = None
8899        self.mac_sec_config = mac_sec_config
8900
8901
8902class ExpressRouteLinkListResult(msrest.serialization.Model):
8903    """Response for ListExpressRouteLinks API service call.
8904
8905    :param value: The list of ExpressRouteLink sub-resources.
8906    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteLink]
8907    :param next_link: The URL to get the next set of results.
8908    :type next_link: str
8909    """
8910
8911    _attribute_map = {
8912        'value': {'key': 'value', 'type': '[ExpressRouteLink]'},
8913        'next_link': {'key': 'nextLink', 'type': 'str'},
8914    }
8915
8916    def __init__(
8917        self,
8918        *,
8919        value: Optional[List["ExpressRouteLink"]] = None,
8920        next_link: Optional[str] = None,
8921        **kwargs
8922    ):
8923        super(ExpressRouteLinkListResult, self).__init__(**kwargs)
8924        self.value = value
8925        self.next_link = next_link
8926
8927
8928class ExpressRouteLinkMacSecConfig(msrest.serialization.Model):
8929    """ExpressRouteLink Mac Security Configuration.
8930
8931    :param ckn_secret_identifier: Keyvault Secret Identifier URL containing Mac security CKN key.
8932    :type ckn_secret_identifier: str
8933    :param cak_secret_identifier: Keyvault Secret Identifier URL containing Mac security CAK key.
8934    :type cak_secret_identifier: str
8935    :param cipher: Mac security cipher. Possible values include: "gcm-aes-128", "gcm-aes-256".
8936    :type cipher: str or ~azure.mgmt.network.v2020_04_01.models.ExpressRouteLinkMacSecCipher
8937    """
8938
8939    _attribute_map = {
8940        'ckn_secret_identifier': {'key': 'cknSecretIdentifier', 'type': 'str'},
8941        'cak_secret_identifier': {'key': 'cakSecretIdentifier', 'type': 'str'},
8942        'cipher': {'key': 'cipher', 'type': 'str'},
8943    }
8944
8945    def __init__(
8946        self,
8947        *,
8948        ckn_secret_identifier: Optional[str] = None,
8949        cak_secret_identifier: Optional[str] = None,
8950        cipher: Optional[Union[str, "ExpressRouteLinkMacSecCipher"]] = None,
8951        **kwargs
8952    ):
8953        super(ExpressRouteLinkMacSecConfig, self).__init__(**kwargs)
8954        self.ckn_secret_identifier = ckn_secret_identifier
8955        self.cak_secret_identifier = cak_secret_identifier
8956        self.cipher = cipher
8957
8958
8959class ExpressRoutePort(Resource):
8960    """ExpressRoutePort resource definition.
8961
8962    Variables are only populated by the server, and will be ignored when sending a request.
8963
8964    :param id: Resource ID.
8965    :type id: str
8966    :ivar name: Resource name.
8967    :vartype name: str
8968    :ivar type: Resource type.
8969    :vartype type: str
8970    :param location: Resource location.
8971    :type location: str
8972    :param tags: A set of tags. Resource tags.
8973    :type tags: dict[str, str]
8974    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8975    :vartype etag: str
8976    :param identity: The identity of ExpressRoutePort, if configured.
8977    :type identity: ~azure.mgmt.network.v2020_04_01.models.ManagedServiceIdentity
8978    :param peering_location: The name of the peering location that the ExpressRoutePort is mapped
8979     to physically.
8980    :type peering_location: str
8981    :param bandwidth_in_gbps: Bandwidth of procured ports in Gbps.
8982    :type bandwidth_in_gbps: int
8983    :ivar provisioned_bandwidth_in_gbps: Aggregate Gbps of associated circuit bandwidths.
8984    :vartype provisioned_bandwidth_in_gbps: float
8985    :ivar mtu: Maximum transmission unit of the physical port pair(s).
8986    :vartype mtu: str
8987    :param encapsulation: Encapsulation method on physical ports. Possible values include: "Dot1Q",
8988     "QinQ".
8989    :type encapsulation: str or
8990     ~azure.mgmt.network.v2020_04_01.models.ExpressRoutePortsEncapsulation
8991    :ivar ether_type: Ether type of the physical port.
8992    :vartype ether_type: str
8993    :ivar allocation_date: Date of the physical port allocation to be used in Letter of
8994     Authorization.
8995    :vartype allocation_date: str
8996    :param links: The set of physical links of the ExpressRoutePort resource.
8997    :type links: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteLink]
8998    :ivar circuits: Reference the ExpressRoute circuit(s) that are provisioned on this
8999     ExpressRoutePort resource.
9000    :vartype circuits: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
9001    :ivar provisioning_state: The provisioning state of the express route port resource. Possible
9002     values include: "Succeeded", "Updating", "Deleting", "Failed".
9003    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
9004    :ivar resource_guid: The resource GUID property of the express route port resource.
9005    :vartype resource_guid: str
9006    """
9007
9008    _validation = {
9009        'name': {'readonly': True},
9010        'type': {'readonly': True},
9011        'etag': {'readonly': True},
9012        'provisioned_bandwidth_in_gbps': {'readonly': True},
9013        'mtu': {'readonly': True},
9014        'ether_type': {'readonly': True},
9015        'allocation_date': {'readonly': True},
9016        'circuits': {'readonly': True},
9017        'provisioning_state': {'readonly': True},
9018        'resource_guid': {'readonly': True},
9019    }
9020
9021    _attribute_map = {
9022        'id': {'key': 'id', 'type': 'str'},
9023        'name': {'key': 'name', 'type': 'str'},
9024        'type': {'key': 'type', 'type': 'str'},
9025        'location': {'key': 'location', 'type': 'str'},
9026        'tags': {'key': 'tags', 'type': '{str}'},
9027        'etag': {'key': 'etag', 'type': 'str'},
9028        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
9029        'peering_location': {'key': 'properties.peeringLocation', 'type': 'str'},
9030        'bandwidth_in_gbps': {'key': 'properties.bandwidthInGbps', 'type': 'int'},
9031        'provisioned_bandwidth_in_gbps': {'key': 'properties.provisionedBandwidthInGbps', 'type': 'float'},
9032        'mtu': {'key': 'properties.mtu', 'type': 'str'},
9033        'encapsulation': {'key': 'properties.encapsulation', 'type': 'str'},
9034        'ether_type': {'key': 'properties.etherType', 'type': 'str'},
9035        'allocation_date': {'key': 'properties.allocationDate', 'type': 'str'},
9036        'links': {'key': 'properties.links', 'type': '[ExpressRouteLink]'},
9037        'circuits': {'key': 'properties.circuits', 'type': '[SubResource]'},
9038        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9039        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
9040    }
9041
9042    def __init__(
9043        self,
9044        *,
9045        id: Optional[str] = None,
9046        location: Optional[str] = None,
9047        tags: Optional[Dict[str, str]] = None,
9048        identity: Optional["ManagedServiceIdentity"] = None,
9049        peering_location: Optional[str] = None,
9050        bandwidth_in_gbps: Optional[int] = None,
9051        encapsulation: Optional[Union[str, "ExpressRoutePortsEncapsulation"]] = None,
9052        links: Optional[List["ExpressRouteLink"]] = None,
9053        **kwargs
9054    ):
9055        super(ExpressRoutePort, self).__init__(id=id, location=location, tags=tags, **kwargs)
9056        self.etag = None
9057        self.identity = identity
9058        self.peering_location = peering_location
9059        self.bandwidth_in_gbps = bandwidth_in_gbps
9060        self.provisioned_bandwidth_in_gbps = None
9061        self.mtu = None
9062        self.encapsulation = encapsulation
9063        self.ether_type = None
9064        self.allocation_date = None
9065        self.links = links
9066        self.circuits = None
9067        self.provisioning_state = None
9068        self.resource_guid = None
9069
9070
9071class ExpressRoutePortListResult(msrest.serialization.Model):
9072    """Response for ListExpressRoutePorts API service call.
9073
9074    :param value: A list of ExpressRoutePort resources.
9075    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRoutePort]
9076    :param next_link: The URL to get the next set of results.
9077    :type next_link: str
9078    """
9079
9080    _attribute_map = {
9081        'value': {'key': 'value', 'type': '[ExpressRoutePort]'},
9082        'next_link': {'key': 'nextLink', 'type': 'str'},
9083    }
9084
9085    def __init__(
9086        self,
9087        *,
9088        value: Optional[List["ExpressRoutePort"]] = None,
9089        next_link: Optional[str] = None,
9090        **kwargs
9091    ):
9092        super(ExpressRoutePortListResult, self).__init__(**kwargs)
9093        self.value = value
9094        self.next_link = next_link
9095
9096
9097class ExpressRoutePortsLocation(Resource):
9098    """Definition of the ExpressRoutePorts peering location resource.
9099
9100    Variables are only populated by the server, and will be ignored when sending a request.
9101
9102    :param id: Resource ID.
9103    :type id: str
9104    :ivar name: Resource name.
9105    :vartype name: str
9106    :ivar type: Resource type.
9107    :vartype type: str
9108    :param location: Resource location.
9109    :type location: str
9110    :param tags: A set of tags. Resource tags.
9111    :type tags: dict[str, str]
9112    :ivar address: Address of peering location.
9113    :vartype address: str
9114    :ivar contact: Contact details of peering locations.
9115    :vartype contact: str
9116    :param available_bandwidths: The inventory of available ExpressRoutePort bandwidths.
9117    :type available_bandwidths:
9118     list[~azure.mgmt.network.v2020_04_01.models.ExpressRoutePortsLocationBandwidths]
9119    :ivar provisioning_state: The provisioning state of the express route port location resource.
9120     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
9121    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
9122    """
9123
9124    _validation = {
9125        'name': {'readonly': True},
9126        'type': {'readonly': True},
9127        'address': {'readonly': True},
9128        'contact': {'readonly': True},
9129        'provisioning_state': {'readonly': True},
9130    }
9131
9132    _attribute_map = {
9133        'id': {'key': 'id', 'type': 'str'},
9134        'name': {'key': 'name', 'type': 'str'},
9135        'type': {'key': 'type', 'type': 'str'},
9136        'location': {'key': 'location', 'type': 'str'},
9137        'tags': {'key': 'tags', 'type': '{str}'},
9138        'address': {'key': 'properties.address', 'type': 'str'},
9139        'contact': {'key': 'properties.contact', 'type': 'str'},
9140        'available_bandwidths': {'key': 'properties.availableBandwidths', 'type': '[ExpressRoutePortsLocationBandwidths]'},
9141        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9142    }
9143
9144    def __init__(
9145        self,
9146        *,
9147        id: Optional[str] = None,
9148        location: Optional[str] = None,
9149        tags: Optional[Dict[str, str]] = None,
9150        available_bandwidths: Optional[List["ExpressRoutePortsLocationBandwidths"]] = None,
9151        **kwargs
9152    ):
9153        super(ExpressRoutePortsLocation, self).__init__(id=id, location=location, tags=tags, **kwargs)
9154        self.address = None
9155        self.contact = None
9156        self.available_bandwidths = available_bandwidths
9157        self.provisioning_state = None
9158
9159
9160class ExpressRoutePortsLocationBandwidths(msrest.serialization.Model):
9161    """Real-time inventory of available ExpressRoute port bandwidths.
9162
9163    Variables are only populated by the server, and will be ignored when sending a request.
9164
9165    :ivar offer_name: Bandwidth descriptive name.
9166    :vartype offer_name: str
9167    :ivar value_in_gbps: Bandwidth value in Gbps.
9168    :vartype value_in_gbps: int
9169    """
9170
9171    _validation = {
9172        'offer_name': {'readonly': True},
9173        'value_in_gbps': {'readonly': True},
9174    }
9175
9176    _attribute_map = {
9177        'offer_name': {'key': 'offerName', 'type': 'str'},
9178        'value_in_gbps': {'key': 'valueInGbps', 'type': 'int'},
9179    }
9180
9181    def __init__(
9182        self,
9183        **kwargs
9184    ):
9185        super(ExpressRoutePortsLocationBandwidths, self).__init__(**kwargs)
9186        self.offer_name = None
9187        self.value_in_gbps = None
9188
9189
9190class ExpressRoutePortsLocationListResult(msrest.serialization.Model):
9191    """Response for ListExpressRoutePortsLocations API service call.
9192
9193    :param value: The list of all ExpressRoutePort peering locations.
9194    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRoutePortsLocation]
9195    :param next_link: The URL to get the next set of results.
9196    :type next_link: str
9197    """
9198
9199    _attribute_map = {
9200        'value': {'key': 'value', 'type': '[ExpressRoutePortsLocation]'},
9201        'next_link': {'key': 'nextLink', 'type': 'str'},
9202    }
9203
9204    def __init__(
9205        self,
9206        *,
9207        value: Optional[List["ExpressRoutePortsLocation"]] = None,
9208        next_link: Optional[str] = None,
9209        **kwargs
9210    ):
9211        super(ExpressRoutePortsLocationListResult, self).__init__(**kwargs)
9212        self.value = value
9213        self.next_link = next_link
9214
9215
9216class ExpressRouteServiceProvider(Resource):
9217    """A ExpressRouteResourceProvider object.
9218
9219    Variables are only populated by the server, and will be ignored when sending a request.
9220
9221    :param id: Resource ID.
9222    :type id: str
9223    :ivar name: Resource name.
9224    :vartype name: str
9225    :ivar type: Resource type.
9226    :vartype type: str
9227    :param location: Resource location.
9228    :type location: str
9229    :param tags: A set of tags. Resource tags.
9230    :type tags: dict[str, str]
9231    :param peering_locations: A list of peering locations.
9232    :type peering_locations: list[str]
9233    :param bandwidths_offered: A list of bandwidths offered.
9234    :type bandwidths_offered:
9235     list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteServiceProviderBandwidthsOffered]
9236    :ivar provisioning_state: The provisioning state of the express route service provider
9237     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
9238    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
9239    """
9240
9241    _validation = {
9242        'name': {'readonly': True},
9243        'type': {'readonly': True},
9244        'provisioning_state': {'readonly': True},
9245    }
9246
9247    _attribute_map = {
9248        'id': {'key': 'id', 'type': 'str'},
9249        'name': {'key': 'name', 'type': 'str'},
9250        'type': {'key': 'type', 'type': 'str'},
9251        'location': {'key': 'location', 'type': 'str'},
9252        'tags': {'key': 'tags', 'type': '{str}'},
9253        'peering_locations': {'key': 'properties.peeringLocations', 'type': '[str]'},
9254        'bandwidths_offered': {'key': 'properties.bandwidthsOffered', 'type': '[ExpressRouteServiceProviderBandwidthsOffered]'},
9255        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9256    }
9257
9258    def __init__(
9259        self,
9260        *,
9261        id: Optional[str] = None,
9262        location: Optional[str] = None,
9263        tags: Optional[Dict[str, str]] = None,
9264        peering_locations: Optional[List[str]] = None,
9265        bandwidths_offered: Optional[List["ExpressRouteServiceProviderBandwidthsOffered"]] = None,
9266        **kwargs
9267    ):
9268        super(ExpressRouteServiceProvider, self).__init__(id=id, location=location, tags=tags, **kwargs)
9269        self.peering_locations = peering_locations
9270        self.bandwidths_offered = bandwidths_offered
9271        self.provisioning_state = None
9272
9273
9274class ExpressRouteServiceProviderBandwidthsOffered(msrest.serialization.Model):
9275    """Contains bandwidths offered in ExpressRouteServiceProvider resources.
9276
9277    :param offer_name: The OfferName.
9278    :type offer_name: str
9279    :param value_in_mbps: The ValueInMbps.
9280    :type value_in_mbps: int
9281    """
9282
9283    _attribute_map = {
9284        'offer_name': {'key': 'offerName', 'type': 'str'},
9285        'value_in_mbps': {'key': 'valueInMbps', 'type': 'int'},
9286    }
9287
9288    def __init__(
9289        self,
9290        *,
9291        offer_name: Optional[str] = None,
9292        value_in_mbps: Optional[int] = None,
9293        **kwargs
9294    ):
9295        super(ExpressRouteServiceProviderBandwidthsOffered, self).__init__(**kwargs)
9296        self.offer_name = offer_name
9297        self.value_in_mbps = value_in_mbps
9298
9299
9300class ExpressRouteServiceProviderListResult(msrest.serialization.Model):
9301    """Response for the ListExpressRouteServiceProvider API service call.
9302
9303    :param value: A list of ExpressRouteResourceProvider resources.
9304    :type value: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteServiceProvider]
9305    :param next_link: The URL to get the next set of results.
9306    :type next_link: str
9307    """
9308
9309    _attribute_map = {
9310        'value': {'key': 'value', 'type': '[ExpressRouteServiceProvider]'},
9311        'next_link': {'key': 'nextLink', 'type': 'str'},
9312    }
9313
9314    def __init__(
9315        self,
9316        *,
9317        value: Optional[List["ExpressRouteServiceProvider"]] = None,
9318        next_link: Optional[str] = None,
9319        **kwargs
9320    ):
9321        super(ExpressRouteServiceProviderListResult, self).__init__(**kwargs)
9322        self.value = value
9323        self.next_link = next_link
9324
9325
9326class FirewallPolicy(Resource):
9327    """FirewallPolicy Resource.
9328
9329    Variables are only populated by the server, and will be ignored when sending a request.
9330
9331    :param id: Resource ID.
9332    :type id: str
9333    :ivar name: Resource name.
9334    :vartype name: str
9335    :ivar type: Resource type.
9336    :vartype type: str
9337    :param location: Resource location.
9338    :type location: str
9339    :param tags: A set of tags. Resource tags.
9340    :type tags: dict[str, str]
9341    :ivar etag: A unique read-only string that changes whenever the resource is updated.
9342    :vartype etag: str
9343    :ivar rule_groups: List of references to FirewallPolicyRuleGroups.
9344    :vartype rule_groups: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
9345    :ivar provisioning_state: The provisioning state of the firewall policy resource. Possible
9346     values include: "Succeeded", "Updating", "Deleting", "Failed".
9347    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
9348    :param base_policy: The parent firewall policy from which rules are inherited.
9349    :type base_policy: ~azure.mgmt.network.v2020_04_01.models.SubResource
9350    :ivar firewalls: List of references to Azure Firewalls that this Firewall Policy is associated
9351     with.
9352    :vartype firewalls: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
9353    :ivar child_policies: List of references to Child Firewall Policies.
9354    :vartype child_policies: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
9355    :param threat_intel_mode: The operation mode for Threat Intelligence. Possible values include:
9356     "Alert", "Deny", "Off".
9357    :type threat_intel_mode: str or
9358     ~azure.mgmt.network.v2020_04_01.models.AzureFirewallThreatIntelMode
9359    :param threat_intel_whitelist: ThreatIntel Whitelist for Firewall Policy.
9360    :type threat_intel_whitelist:
9361     ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyThreatIntelWhitelist
9362    """
9363
9364    _validation = {
9365        'name': {'readonly': True},
9366        'type': {'readonly': True},
9367        'etag': {'readonly': True},
9368        'rule_groups': {'readonly': True},
9369        'provisioning_state': {'readonly': True},
9370        'firewalls': {'readonly': True},
9371        'child_policies': {'readonly': True},
9372    }
9373
9374    _attribute_map = {
9375        'id': {'key': 'id', 'type': 'str'},
9376        'name': {'key': 'name', 'type': 'str'},
9377        'type': {'key': 'type', 'type': 'str'},
9378        'location': {'key': 'location', 'type': 'str'},
9379        'tags': {'key': 'tags', 'type': '{str}'},
9380        'etag': {'key': 'etag', 'type': 'str'},
9381        'rule_groups': {'key': 'properties.ruleGroups', 'type': '[SubResource]'},
9382        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9383        'base_policy': {'key': 'properties.basePolicy', 'type': 'SubResource'},
9384        'firewalls': {'key': 'properties.firewalls', 'type': '[SubResource]'},
9385        'child_policies': {'key': 'properties.childPolicies', 'type': '[SubResource]'},
9386        'threat_intel_mode': {'key': 'properties.threatIntelMode', 'type': 'str'},
9387        'threat_intel_whitelist': {'key': 'properties.threatIntelWhitelist', 'type': 'FirewallPolicyThreatIntelWhitelist'},
9388    }
9389
9390    def __init__(
9391        self,
9392        *,
9393        id: Optional[str] = None,
9394        location: Optional[str] = None,
9395        tags: Optional[Dict[str, str]] = None,
9396        base_policy: Optional["SubResource"] = None,
9397        threat_intel_mode: Optional[Union[str, "AzureFirewallThreatIntelMode"]] = None,
9398        threat_intel_whitelist: Optional["FirewallPolicyThreatIntelWhitelist"] = None,
9399        **kwargs
9400    ):
9401        super(FirewallPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs)
9402        self.etag = None
9403        self.rule_groups = None
9404        self.provisioning_state = None
9405        self.base_policy = base_policy
9406        self.firewalls = None
9407        self.child_policies = None
9408        self.threat_intel_mode = threat_intel_mode
9409        self.threat_intel_whitelist = threat_intel_whitelist
9410
9411
9412class FirewallPolicyRule(msrest.serialization.Model):
9413    """Properties of the rule.
9414
9415    You probably want to use the sub-classes and not this class directly. Known
9416    sub-classes are: FirewallPolicyFilterRule, FirewallPolicyNatRule.
9417
9418    All required parameters must be populated in order to send to Azure.
9419
9420    :param rule_type: Required. The type of the rule.Constant filled by server.  Possible values
9421     include: "FirewallPolicyNatRule", "FirewallPolicyFilterRule".
9422    :type rule_type: str or ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleType
9423    :param name: The name of the rule.
9424    :type name: str
9425    :param priority: Priority of the Firewall Policy Rule resource.
9426    :type priority: int
9427    """
9428
9429    _validation = {
9430        'rule_type': {'required': True},
9431        'priority': {'maximum': 65000, 'minimum': 100},
9432    }
9433
9434    _attribute_map = {
9435        'rule_type': {'key': 'ruleType', 'type': 'str'},
9436        'name': {'key': 'name', 'type': 'str'},
9437        'priority': {'key': 'priority', 'type': 'int'},
9438    }
9439
9440    _subtype_map = {
9441        'rule_type': {'FirewallPolicyFilterRule': 'FirewallPolicyFilterRule', 'FirewallPolicyNatRule': 'FirewallPolicyNatRule'}
9442    }
9443
9444    def __init__(
9445        self,
9446        *,
9447        name: Optional[str] = None,
9448        priority: Optional[int] = None,
9449        **kwargs
9450    ):
9451        super(FirewallPolicyRule, self).__init__(**kwargs)
9452        self.rule_type = None  # type: Optional[str]
9453        self.name = name
9454        self.priority = priority
9455
9456
9457class FirewallPolicyFilterRule(FirewallPolicyRule):
9458    """Firewall Policy Filter Rule.
9459
9460    All required parameters must be populated in order to send to Azure.
9461
9462    :param rule_type: Required. The type of the rule.Constant filled by server.  Possible values
9463     include: "FirewallPolicyNatRule", "FirewallPolicyFilterRule".
9464    :type rule_type: str or ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleType
9465    :param name: The name of the rule.
9466    :type name: str
9467    :param priority: Priority of the Firewall Policy Rule resource.
9468    :type priority: int
9469    :param action: The action type of a Filter rule.
9470    :type action: ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyFilterRuleAction
9471    :param rule_conditions: Collection of rule conditions used by a rule.
9472    :type rule_conditions: list[~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleCondition]
9473    """
9474
9475    _validation = {
9476        'rule_type': {'required': True},
9477        'priority': {'maximum': 65000, 'minimum': 100},
9478    }
9479
9480    _attribute_map = {
9481        'rule_type': {'key': 'ruleType', 'type': 'str'},
9482        'name': {'key': 'name', 'type': 'str'},
9483        'priority': {'key': 'priority', 'type': 'int'},
9484        'action': {'key': 'action', 'type': 'FirewallPolicyFilterRuleAction'},
9485        'rule_conditions': {'key': 'ruleConditions', 'type': '[FirewallPolicyRuleCondition]'},
9486    }
9487
9488    def __init__(
9489        self,
9490        *,
9491        name: Optional[str] = None,
9492        priority: Optional[int] = None,
9493        action: Optional["FirewallPolicyFilterRuleAction"] = None,
9494        rule_conditions: Optional[List["FirewallPolicyRuleCondition"]] = None,
9495        **kwargs
9496    ):
9497        super(FirewallPolicyFilterRule, self).__init__(name=name, priority=priority, **kwargs)
9498        self.rule_type = 'FirewallPolicyFilterRule'  # type: str
9499        self.action = action
9500        self.rule_conditions = rule_conditions
9501
9502
9503class FirewallPolicyFilterRuleAction(msrest.serialization.Model):
9504    """Properties of the FirewallPolicyFilterRuleAction.
9505
9506    :param type: The type of action. Possible values include: "Allow", "Deny".
9507    :type type: str or ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyFilterRuleActionType
9508    """
9509
9510    _attribute_map = {
9511        'type': {'key': 'type', 'type': 'str'},
9512    }
9513
9514    def __init__(
9515        self,
9516        *,
9517        type: Optional[Union[str, "FirewallPolicyFilterRuleActionType"]] = None,
9518        **kwargs
9519    ):
9520        super(FirewallPolicyFilterRuleAction, self).__init__(**kwargs)
9521        self.type = type
9522
9523
9524class FirewallPolicyListResult(msrest.serialization.Model):
9525    """Response for ListFirewallPolicies API service call.
9526
9527    :param value: List of Firewall Policies in a resource group.
9528    :type value: list[~azure.mgmt.network.v2020_04_01.models.FirewallPolicy]
9529    :param next_link: URL to get the next set of results.
9530    :type next_link: str
9531    """
9532
9533    _attribute_map = {
9534        'value': {'key': 'value', 'type': '[FirewallPolicy]'},
9535        'next_link': {'key': 'nextLink', 'type': 'str'},
9536    }
9537
9538    def __init__(
9539        self,
9540        *,
9541        value: Optional[List["FirewallPolicy"]] = None,
9542        next_link: Optional[str] = None,
9543        **kwargs
9544    ):
9545        super(FirewallPolicyListResult, self).__init__(**kwargs)
9546        self.value = value
9547        self.next_link = next_link
9548
9549
9550class FirewallPolicyNatRule(FirewallPolicyRule):
9551    """Firewall Policy NAT Rule.
9552
9553    All required parameters must be populated in order to send to Azure.
9554
9555    :param rule_type: Required. The type of the rule.Constant filled by server.  Possible values
9556     include: "FirewallPolicyNatRule", "FirewallPolicyFilterRule".
9557    :type rule_type: str or ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleType
9558    :param name: The name of the rule.
9559    :type name: str
9560    :param priority: Priority of the Firewall Policy Rule resource.
9561    :type priority: int
9562    :param action: The action type of a Nat rule.
9563    :type action: ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyNatRuleAction
9564    :param translated_address: The translated address for this NAT rule.
9565    :type translated_address: str
9566    :param translated_port: The translated port for this NAT rule.
9567    :type translated_port: str
9568    :param rule_condition: The match conditions for incoming traffic.
9569    :type rule_condition: ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleCondition
9570    """
9571
9572    _validation = {
9573        'rule_type': {'required': True},
9574        'priority': {'maximum': 65000, 'minimum': 100},
9575    }
9576
9577    _attribute_map = {
9578        'rule_type': {'key': 'ruleType', 'type': 'str'},
9579        'name': {'key': 'name', 'type': 'str'},
9580        'priority': {'key': 'priority', 'type': 'int'},
9581        'action': {'key': 'action', 'type': 'FirewallPolicyNatRuleAction'},
9582        'translated_address': {'key': 'translatedAddress', 'type': 'str'},
9583        'translated_port': {'key': 'translatedPort', 'type': 'str'},
9584        'rule_condition': {'key': 'ruleCondition', 'type': 'FirewallPolicyRuleCondition'},
9585    }
9586
9587    def __init__(
9588        self,
9589        *,
9590        name: Optional[str] = None,
9591        priority: Optional[int] = None,
9592        action: Optional["FirewallPolicyNatRuleAction"] = None,
9593        translated_address: Optional[str] = None,
9594        translated_port: Optional[str] = None,
9595        rule_condition: Optional["FirewallPolicyRuleCondition"] = None,
9596        **kwargs
9597    ):
9598        super(FirewallPolicyNatRule, self).__init__(name=name, priority=priority, **kwargs)
9599        self.rule_type = 'FirewallPolicyNatRule'  # type: str
9600        self.action = action
9601        self.translated_address = translated_address
9602        self.translated_port = translated_port
9603        self.rule_condition = rule_condition
9604
9605
9606class FirewallPolicyNatRuleAction(msrest.serialization.Model):
9607    """Properties of the FirewallPolicyNatRuleAction.
9608
9609    :param type: The type of action. Possible values include: "DNAT".
9610    :type type: str or ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyNatRuleActionType
9611    """
9612
9613    _attribute_map = {
9614        'type': {'key': 'type', 'type': 'str'},
9615    }
9616
9617    def __init__(
9618        self,
9619        *,
9620        type: Optional[Union[str, "FirewallPolicyNatRuleActionType"]] = None,
9621        **kwargs
9622    ):
9623        super(FirewallPolicyNatRuleAction, self).__init__(**kwargs)
9624        self.type = type
9625
9626
9627class FirewallPolicyRuleConditionApplicationProtocol(msrest.serialization.Model):
9628    """Properties of the application rule protocol.
9629
9630    :param protocol_type: Protocol type. Possible values include: "Http", "Https".
9631    :type protocol_type: str or
9632     ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleConditionApplicationProtocolType
9633    :param port: Port number for the protocol, cannot be greater than 64000.
9634    :type port: int
9635    """
9636
9637    _validation = {
9638        'port': {'maximum': 64000, 'minimum': 0},
9639    }
9640
9641    _attribute_map = {
9642        'protocol_type': {'key': 'protocolType', 'type': 'str'},
9643        'port': {'key': 'port', 'type': 'int'},
9644    }
9645
9646    def __init__(
9647        self,
9648        *,
9649        protocol_type: Optional[Union[str, "FirewallPolicyRuleConditionApplicationProtocolType"]] = None,
9650        port: Optional[int] = None,
9651        **kwargs
9652    ):
9653        super(FirewallPolicyRuleConditionApplicationProtocol, self).__init__(**kwargs)
9654        self.protocol_type = protocol_type
9655        self.port = port
9656
9657
9658class FirewallPolicyRuleGroup(SubResource):
9659    """Rule Group resource.
9660
9661    Variables are only populated by the server, and will be ignored when sending a request.
9662
9663    :param id: Resource ID.
9664    :type id: str
9665    :param name: The name of the resource that is unique within a resource group. This name can be
9666     used to access the resource.
9667    :type name: str
9668    :ivar etag: A unique read-only string that changes whenever the resource is updated.
9669    :vartype etag: str
9670    :ivar type: Rule Group type.
9671    :vartype type: str
9672    :param priority: Priority of the Firewall Policy Rule Group resource.
9673    :type priority: int
9674    :param rules: Group of Firewall Policy rules.
9675    :type rules: list[~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRule]
9676    :ivar provisioning_state: The provisioning state of the firewall policy rule group resource.
9677     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
9678    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
9679    """
9680
9681    _validation = {
9682        'etag': {'readonly': True},
9683        'type': {'readonly': True},
9684        'priority': {'maximum': 65000, 'minimum': 100},
9685        'provisioning_state': {'readonly': True},
9686    }
9687
9688    _attribute_map = {
9689        'id': {'key': 'id', 'type': 'str'},
9690        'name': {'key': 'name', 'type': 'str'},
9691        'etag': {'key': 'etag', 'type': 'str'},
9692        'type': {'key': 'type', 'type': 'str'},
9693        'priority': {'key': 'properties.priority', 'type': 'int'},
9694        'rules': {'key': 'properties.rules', 'type': '[FirewallPolicyRule]'},
9695        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9696    }
9697
9698    def __init__(
9699        self,
9700        *,
9701        id: Optional[str] = None,
9702        name: Optional[str] = None,
9703        priority: Optional[int] = None,
9704        rules: Optional[List["FirewallPolicyRule"]] = None,
9705        **kwargs
9706    ):
9707        super(FirewallPolicyRuleGroup, self).__init__(id=id, **kwargs)
9708        self.name = name
9709        self.etag = None
9710        self.type = None
9711        self.priority = priority
9712        self.rules = rules
9713        self.provisioning_state = None
9714
9715
9716class FirewallPolicyRuleGroupListResult(msrest.serialization.Model):
9717    """Response for ListFirewallPolicyRuleGroups API service call.
9718
9719    :param value: List of FirewallPolicyRuleGroups in a FirewallPolicy.
9720    :type value: list[~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleGroup]
9721    :param next_link: URL to get the next set of results.
9722    :type next_link: str
9723    """
9724
9725    _attribute_map = {
9726        'value': {'key': 'value', 'type': '[FirewallPolicyRuleGroup]'},
9727        'next_link': {'key': 'nextLink', 'type': 'str'},
9728    }
9729
9730    def __init__(
9731        self,
9732        *,
9733        value: Optional[List["FirewallPolicyRuleGroup"]] = None,
9734        next_link: Optional[str] = None,
9735        **kwargs
9736    ):
9737        super(FirewallPolicyRuleGroupListResult, self).__init__(**kwargs)
9738        self.value = value
9739        self.next_link = next_link
9740
9741
9742class FirewallPolicyThreatIntelWhitelist(msrest.serialization.Model):
9743    """ThreatIntel Whitelist for Firewall Policy.
9744
9745    :param ip_addresses: List of IP addresses for the ThreatIntel Whitelist.
9746    :type ip_addresses: list[str]
9747    :param fqdns: List of FQDNs for the ThreatIntel Whitelist.
9748    :type fqdns: list[str]
9749    """
9750
9751    _attribute_map = {
9752        'ip_addresses': {'key': 'ipAddresses', 'type': '[str]'},
9753        'fqdns': {'key': 'fqdns', 'type': '[str]'},
9754    }
9755
9756    def __init__(
9757        self,
9758        *,
9759        ip_addresses: Optional[List[str]] = None,
9760        fqdns: Optional[List[str]] = None,
9761        **kwargs
9762    ):
9763        super(FirewallPolicyThreatIntelWhitelist, self).__init__(**kwargs)
9764        self.ip_addresses = ip_addresses
9765        self.fqdns = fqdns
9766
9767
9768class FlowLog(Resource):
9769    """A flow log resource.
9770
9771    Variables are only populated by the server, and will be ignored when sending a request.
9772
9773    :param id: Resource ID.
9774    :type id: str
9775    :ivar name: Resource name.
9776    :vartype name: str
9777    :ivar type: Resource type.
9778    :vartype type: str
9779    :param location: Resource location.
9780    :type location: str
9781    :param tags: A set of tags. Resource tags.
9782    :type tags: dict[str, str]
9783    :ivar etag: A unique read-only string that changes whenever the resource is updated.
9784    :vartype etag: str
9785    :param target_resource_id: ID of network security group to which flow log will be applied.
9786    :type target_resource_id: str
9787    :ivar target_resource_guid: Guid of network security group to which flow log will be applied.
9788    :vartype target_resource_guid: str
9789    :param storage_id: ID of the storage account which is used to store the flow log.
9790    :type storage_id: str
9791    :param enabled: Flag to enable/disable flow logging.
9792    :type enabled: bool
9793    :param retention_policy: Parameters that define the retention policy for flow log.
9794    :type retention_policy: ~azure.mgmt.network.v2020_04_01.models.RetentionPolicyParameters
9795    :param format: Parameters that define the flow log format.
9796    :type format: ~azure.mgmt.network.v2020_04_01.models.FlowLogFormatParameters
9797    :param flow_analytics_configuration: Parameters that define the configuration of traffic
9798     analytics.
9799    :type flow_analytics_configuration:
9800     ~azure.mgmt.network.v2020_04_01.models.TrafficAnalyticsProperties
9801    :ivar provisioning_state: The provisioning state of the flow log. Possible values include:
9802     "Succeeded", "Updating", "Deleting", "Failed".
9803    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
9804    """
9805
9806    _validation = {
9807        'name': {'readonly': True},
9808        'type': {'readonly': True},
9809        'etag': {'readonly': True},
9810        'target_resource_guid': {'readonly': True},
9811        'provisioning_state': {'readonly': True},
9812    }
9813
9814    _attribute_map = {
9815        'id': {'key': 'id', 'type': 'str'},
9816        'name': {'key': 'name', 'type': 'str'},
9817        'type': {'key': 'type', 'type': 'str'},
9818        'location': {'key': 'location', 'type': 'str'},
9819        'tags': {'key': 'tags', 'type': '{str}'},
9820        'etag': {'key': 'etag', 'type': 'str'},
9821        'target_resource_id': {'key': 'properties.targetResourceId', 'type': 'str'},
9822        'target_resource_guid': {'key': 'properties.targetResourceGuid', 'type': 'str'},
9823        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
9824        'enabled': {'key': 'properties.enabled', 'type': 'bool'},
9825        'retention_policy': {'key': 'properties.retentionPolicy', 'type': 'RetentionPolicyParameters'},
9826        'format': {'key': 'properties.format', 'type': 'FlowLogFormatParameters'},
9827        'flow_analytics_configuration': {'key': 'properties.flowAnalyticsConfiguration', 'type': 'TrafficAnalyticsProperties'},
9828        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9829    }
9830
9831    def __init__(
9832        self,
9833        *,
9834        id: Optional[str] = None,
9835        location: Optional[str] = None,
9836        tags: Optional[Dict[str, str]] = None,
9837        target_resource_id: Optional[str] = None,
9838        storage_id: Optional[str] = None,
9839        enabled: Optional[bool] = None,
9840        retention_policy: Optional["RetentionPolicyParameters"] = None,
9841        format: Optional["FlowLogFormatParameters"] = None,
9842        flow_analytics_configuration: Optional["TrafficAnalyticsProperties"] = None,
9843        **kwargs
9844    ):
9845        super(FlowLog, self).__init__(id=id, location=location, tags=tags, **kwargs)
9846        self.etag = None
9847        self.target_resource_id = target_resource_id
9848        self.target_resource_guid = None
9849        self.storage_id = storage_id
9850        self.enabled = enabled
9851        self.retention_policy = retention_policy
9852        self.format = format
9853        self.flow_analytics_configuration = flow_analytics_configuration
9854        self.provisioning_state = None
9855
9856
9857class FlowLogFormatParameters(msrest.serialization.Model):
9858    """Parameters that define the flow log format.
9859
9860    :param type: The file type of flow log. Possible values include: "JSON".
9861    :type type: str or ~azure.mgmt.network.v2020_04_01.models.FlowLogFormatType
9862    :param version: The version (revision) of the flow log.
9863    :type version: int
9864    """
9865
9866    _attribute_map = {
9867        'type': {'key': 'type', 'type': 'str'},
9868        'version': {'key': 'version', 'type': 'int'},
9869    }
9870
9871    def __init__(
9872        self,
9873        *,
9874        type: Optional[Union[str, "FlowLogFormatType"]] = None,
9875        version: Optional[int] = 0,
9876        **kwargs
9877    ):
9878        super(FlowLogFormatParameters, self).__init__(**kwargs)
9879        self.type = type
9880        self.version = version
9881
9882
9883class FlowLogInformation(msrest.serialization.Model):
9884    """Information on the configuration of flow log and traffic analytics (optional) .
9885
9886    All required parameters must be populated in order to send to Azure.
9887
9888    :param target_resource_id: Required. The ID of the resource to configure for flow log and
9889     traffic analytics (optional) .
9890    :type target_resource_id: str
9891    :param flow_analytics_configuration: Parameters that define the configuration of traffic
9892     analytics.
9893    :type flow_analytics_configuration:
9894     ~azure.mgmt.network.v2020_04_01.models.TrafficAnalyticsProperties
9895    :param storage_id: Required. ID of the storage account which is used to store the flow log.
9896    :type storage_id: str
9897    :param enabled: Required. Flag to enable/disable flow logging.
9898    :type enabled: bool
9899    :param retention_policy: Parameters that define the retention policy for flow log.
9900    :type retention_policy: ~azure.mgmt.network.v2020_04_01.models.RetentionPolicyParameters
9901    :param format: Parameters that define the flow log format.
9902    :type format: ~azure.mgmt.network.v2020_04_01.models.FlowLogFormatParameters
9903    """
9904
9905    _validation = {
9906        'target_resource_id': {'required': True},
9907        'storage_id': {'required': True},
9908        'enabled': {'required': True},
9909    }
9910
9911    _attribute_map = {
9912        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
9913        'flow_analytics_configuration': {'key': 'flowAnalyticsConfiguration', 'type': 'TrafficAnalyticsProperties'},
9914        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
9915        'enabled': {'key': 'properties.enabled', 'type': 'bool'},
9916        'retention_policy': {'key': 'properties.retentionPolicy', 'type': 'RetentionPolicyParameters'},
9917        'format': {'key': 'properties.format', 'type': 'FlowLogFormatParameters'},
9918    }
9919
9920    def __init__(
9921        self,
9922        *,
9923        target_resource_id: str,
9924        storage_id: str,
9925        enabled: bool,
9926        flow_analytics_configuration: Optional["TrafficAnalyticsProperties"] = None,
9927        retention_policy: Optional["RetentionPolicyParameters"] = None,
9928        format: Optional["FlowLogFormatParameters"] = None,
9929        **kwargs
9930    ):
9931        super(FlowLogInformation, self).__init__(**kwargs)
9932        self.target_resource_id = target_resource_id
9933        self.flow_analytics_configuration = flow_analytics_configuration
9934        self.storage_id = storage_id
9935        self.enabled = enabled
9936        self.retention_policy = retention_policy
9937        self.format = format
9938
9939
9940class FlowLogListResult(msrest.serialization.Model):
9941    """List of flow logs.
9942
9943    Variables are only populated by the server, and will be ignored when sending a request.
9944
9945    :param value: Information about flow log resource.
9946    :type value: list[~azure.mgmt.network.v2020_04_01.models.FlowLog]
9947    :ivar next_link: The URL to get the next set of results.
9948    :vartype next_link: str
9949    """
9950
9951    _validation = {
9952        'next_link': {'readonly': True},
9953    }
9954
9955    _attribute_map = {
9956        'value': {'key': 'value', 'type': '[FlowLog]'},
9957        'next_link': {'key': 'nextLink', 'type': 'str'},
9958    }
9959
9960    def __init__(
9961        self,
9962        *,
9963        value: Optional[List["FlowLog"]] = None,
9964        **kwargs
9965    ):
9966        super(FlowLogListResult, self).__init__(**kwargs)
9967        self.value = value
9968        self.next_link = None
9969
9970
9971class FlowLogStatusParameters(msrest.serialization.Model):
9972    """Parameters that define a resource to query flow log and traffic analytics (optional) status.
9973
9974    All required parameters must be populated in order to send to Azure.
9975
9976    :param target_resource_id: Required. The target resource where getting the flow log and traffic
9977     analytics (optional) status.
9978    :type target_resource_id: str
9979    """
9980
9981    _validation = {
9982        'target_resource_id': {'required': True},
9983    }
9984
9985    _attribute_map = {
9986        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
9987    }
9988
9989    def __init__(
9990        self,
9991        *,
9992        target_resource_id: str,
9993        **kwargs
9994    ):
9995        super(FlowLogStatusParameters, self).__init__(**kwargs)
9996        self.target_resource_id = target_resource_id
9997
9998
9999class FrontendIPConfiguration(SubResource):
10000    """Frontend IP address of the load balancer.
10001
10002    Variables are only populated by the server, and will be ignored when sending a request.
10003
10004    :param id: Resource ID.
10005    :type id: str
10006    :param name: The name of the resource that is unique within the set of frontend IP
10007     configurations used by the load balancer. This name can be used to access the resource.
10008    :type name: str
10009    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10010    :vartype etag: str
10011    :ivar type: Type of the resource.
10012    :vartype type: str
10013    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
10014     come from.
10015    :type zones: list[str]
10016    :ivar inbound_nat_rules: An array of references to inbound rules that use this frontend IP.
10017    :vartype inbound_nat_rules: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
10018    :ivar inbound_nat_pools: An array of references to inbound pools that use this frontend IP.
10019    :vartype inbound_nat_pools: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
10020    :ivar outbound_rules: An array of references to outbound rules that use this frontend IP.
10021    :vartype outbound_rules: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
10022    :ivar load_balancing_rules: An array of references to load balancing rules that use this
10023     frontend IP.
10024    :vartype load_balancing_rules: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
10025    :param private_ip_address: The private IP address of the IP configuration.
10026    :type private_ip_address: str
10027    :param private_ip_allocation_method: The Private IP allocation method. Possible values include:
10028     "Static", "Dynamic".
10029    :type private_ip_allocation_method: str or
10030     ~azure.mgmt.network.v2020_04_01.models.IPAllocationMethod
10031    :param private_ip_address_version: Whether the specific ipconfiguration is IPv4 or IPv6.
10032     Default is taken as IPv4. Possible values include: "IPv4", "IPv6".
10033    :type private_ip_address_version: str or ~azure.mgmt.network.v2020_04_01.models.IPVersion
10034    :param subnet: The reference to the subnet resource.
10035    :type subnet: ~azure.mgmt.network.v2020_04_01.models.Subnet
10036    :param public_ip_address: The reference to the Public IP resource.
10037    :type public_ip_address: ~azure.mgmt.network.v2020_04_01.models.PublicIPAddress
10038    :param public_ip_prefix: The reference to the Public IP Prefix resource.
10039    :type public_ip_prefix: ~azure.mgmt.network.v2020_04_01.models.SubResource
10040    :ivar provisioning_state: The provisioning state of the frontend IP configuration resource.
10041     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
10042    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
10043    """
10044
10045    _validation = {
10046        'etag': {'readonly': True},
10047        'type': {'readonly': True},
10048        'inbound_nat_rules': {'readonly': True},
10049        'inbound_nat_pools': {'readonly': True},
10050        'outbound_rules': {'readonly': True},
10051        'load_balancing_rules': {'readonly': True},
10052        'provisioning_state': {'readonly': True},
10053    }
10054
10055    _attribute_map = {
10056        'id': {'key': 'id', 'type': 'str'},
10057        'name': {'key': 'name', 'type': 'str'},
10058        'etag': {'key': 'etag', 'type': 'str'},
10059        'type': {'key': 'type', 'type': 'str'},
10060        'zones': {'key': 'zones', 'type': '[str]'},
10061        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[SubResource]'},
10062        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[SubResource]'},
10063        'outbound_rules': {'key': 'properties.outboundRules', 'type': '[SubResource]'},
10064        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
10065        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
10066        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
10067        'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'},
10068        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
10069        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
10070        'public_ip_prefix': {'key': 'properties.publicIPPrefix', 'type': 'SubResource'},
10071        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10072    }
10073
10074    def __init__(
10075        self,
10076        *,
10077        id: Optional[str] = None,
10078        name: Optional[str] = None,
10079        zones: Optional[List[str]] = None,
10080        private_ip_address: Optional[str] = None,
10081        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
10082        private_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
10083        subnet: Optional["Subnet"] = None,
10084        public_ip_address: Optional["PublicIPAddress"] = None,
10085        public_ip_prefix: Optional["SubResource"] = None,
10086        **kwargs
10087    ):
10088        super(FrontendIPConfiguration, self).__init__(id=id, **kwargs)
10089        self.name = name
10090        self.etag = None
10091        self.type = None
10092        self.zones = zones
10093        self.inbound_nat_rules = None
10094        self.inbound_nat_pools = None
10095        self.outbound_rules = None
10096        self.load_balancing_rules = None
10097        self.private_ip_address = private_ip_address
10098        self.private_ip_allocation_method = private_ip_allocation_method
10099        self.private_ip_address_version = private_ip_address_version
10100        self.subnet = subnet
10101        self.public_ip_address = public_ip_address
10102        self.public_ip_prefix = public_ip_prefix
10103        self.provisioning_state = None
10104
10105
10106class GatewayRoute(msrest.serialization.Model):
10107    """Gateway routing details.
10108
10109    Variables are only populated by the server, and will be ignored when sending a request.
10110
10111    :ivar local_address: The gateway's local address.
10112    :vartype local_address: str
10113    :ivar network: The route's network prefix.
10114    :vartype network: str
10115    :ivar next_hop: The route's next hop.
10116    :vartype next_hop: str
10117    :ivar source_peer: The peer this route was learned from.
10118    :vartype source_peer: str
10119    :ivar origin: The source this route was learned from.
10120    :vartype origin: str
10121    :ivar as_path: The route's AS path sequence.
10122    :vartype as_path: str
10123    :ivar weight: The route's weight.
10124    :vartype weight: int
10125    """
10126
10127    _validation = {
10128        'local_address': {'readonly': True},
10129        'network': {'readonly': True},
10130        'next_hop': {'readonly': True},
10131        'source_peer': {'readonly': True},
10132        'origin': {'readonly': True},
10133        'as_path': {'readonly': True},
10134        'weight': {'readonly': True},
10135    }
10136
10137    _attribute_map = {
10138        'local_address': {'key': 'localAddress', 'type': 'str'},
10139        'network': {'key': 'network', 'type': 'str'},
10140        'next_hop': {'key': 'nextHop', 'type': 'str'},
10141        'source_peer': {'key': 'sourcePeer', 'type': 'str'},
10142        'origin': {'key': 'origin', 'type': 'str'},
10143        'as_path': {'key': 'asPath', 'type': 'str'},
10144        'weight': {'key': 'weight', 'type': 'int'},
10145    }
10146
10147    def __init__(
10148        self,
10149        **kwargs
10150    ):
10151        super(GatewayRoute, self).__init__(**kwargs)
10152        self.local_address = None
10153        self.network = None
10154        self.next_hop = None
10155        self.source_peer = None
10156        self.origin = None
10157        self.as_path = None
10158        self.weight = None
10159
10160
10161class GatewayRouteListResult(msrest.serialization.Model):
10162    """List of virtual network gateway routes.
10163
10164    :param value: List of gateway routes.
10165    :type value: list[~azure.mgmt.network.v2020_04_01.models.GatewayRoute]
10166    """
10167
10168    _attribute_map = {
10169        'value': {'key': 'value', 'type': '[GatewayRoute]'},
10170    }
10171
10172    def __init__(
10173        self,
10174        *,
10175        value: Optional[List["GatewayRoute"]] = None,
10176        **kwargs
10177    ):
10178        super(GatewayRouteListResult, self).__init__(**kwargs)
10179        self.value = value
10180
10181
10182class GetVpnSitesConfigurationRequest(msrest.serialization.Model):
10183    """List of Vpn-Sites.
10184
10185    All required parameters must be populated in order to send to Azure.
10186
10187    :param vpn_sites: List of resource-ids of the vpn-sites for which config is to be downloaded.
10188    :type vpn_sites: list[str]
10189    :param output_blob_sas_url: Required. The sas-url to download the configurations for vpn-sites.
10190    :type output_blob_sas_url: str
10191    """
10192
10193    _validation = {
10194        'output_blob_sas_url': {'required': True},
10195    }
10196
10197    _attribute_map = {
10198        'vpn_sites': {'key': 'vpnSites', 'type': '[str]'},
10199        'output_blob_sas_url': {'key': 'outputBlobSasUrl', 'type': 'str'},
10200    }
10201
10202    def __init__(
10203        self,
10204        *,
10205        output_blob_sas_url: str,
10206        vpn_sites: Optional[List[str]] = None,
10207        **kwargs
10208    ):
10209        super(GetVpnSitesConfigurationRequest, self).__init__(**kwargs)
10210        self.vpn_sites = vpn_sites
10211        self.output_blob_sas_url = output_blob_sas_url
10212
10213
10214class HTTPConfiguration(msrest.serialization.Model):
10215    """HTTP configuration of the connectivity check.
10216
10217    :param method: HTTP method. Possible values include: "Get".
10218    :type method: str or ~azure.mgmt.network.v2020_04_01.models.HTTPMethod
10219    :param headers: List of HTTP headers.
10220    :type headers: list[~azure.mgmt.network.v2020_04_01.models.HTTPHeader]
10221    :param valid_status_codes: Valid status codes.
10222    :type valid_status_codes: list[int]
10223    """
10224
10225    _attribute_map = {
10226        'method': {'key': 'method', 'type': 'str'},
10227        'headers': {'key': 'headers', 'type': '[HTTPHeader]'},
10228        'valid_status_codes': {'key': 'validStatusCodes', 'type': '[int]'},
10229    }
10230
10231    def __init__(
10232        self,
10233        *,
10234        method: Optional[Union[str, "HTTPMethod"]] = None,
10235        headers: Optional[List["HTTPHeader"]] = None,
10236        valid_status_codes: Optional[List[int]] = None,
10237        **kwargs
10238    ):
10239        super(HTTPConfiguration, self).__init__(**kwargs)
10240        self.method = method
10241        self.headers = headers
10242        self.valid_status_codes = valid_status_codes
10243
10244
10245class HTTPHeader(msrest.serialization.Model):
10246    """The HTTP header.
10247
10248    :param name: The name in HTTP header.
10249    :type name: str
10250    :param value: The value in HTTP header.
10251    :type value: str
10252    """
10253
10254    _attribute_map = {
10255        'name': {'key': 'name', 'type': 'str'},
10256        'value': {'key': 'value', 'type': 'str'},
10257    }
10258
10259    def __init__(
10260        self,
10261        *,
10262        name: Optional[str] = None,
10263        value: Optional[str] = None,
10264        **kwargs
10265    ):
10266        super(HTTPHeader, self).__init__(**kwargs)
10267        self.name = name
10268        self.value = value
10269
10270
10271class HubIPAddresses(msrest.serialization.Model):
10272    """IP addresses associated with azure firewall.
10273
10274    :param public_ip_addresses: List of Public IP addresses associated with azure firewall.
10275    :type public_ip_addresses:
10276     list[~azure.mgmt.network.v2020_04_01.models.AzureFirewallPublicIPAddress]
10277    :param private_ip_address: Private IP Address associated with azure firewall.
10278    :type private_ip_address: str
10279    """
10280
10281    _attribute_map = {
10282        'public_ip_addresses': {'key': 'publicIPAddresses', 'type': '[AzureFirewallPublicIPAddress]'},
10283        'private_ip_address': {'key': 'privateIPAddress', 'type': 'str'},
10284    }
10285
10286    def __init__(
10287        self,
10288        *,
10289        public_ip_addresses: Optional[List["AzureFirewallPublicIPAddress"]] = None,
10290        private_ip_address: Optional[str] = None,
10291        **kwargs
10292    ):
10293        super(HubIPAddresses, self).__init__(**kwargs)
10294        self.public_ip_addresses = public_ip_addresses
10295        self.private_ip_address = private_ip_address
10296
10297
10298class HubRoute(msrest.serialization.Model):
10299    """RouteTable route.
10300
10301    All required parameters must be populated in order to send to Azure.
10302
10303    :param name: Required. The name of the Route that is unique within a RouteTable. This name can
10304     be used to access this route.
10305    :type name: str
10306    :param destination_type: Required. The type of destinations (eg: CIDR, ResourceId, Service).
10307    :type destination_type: str
10308    :param destinations: Required. List of all destinations.
10309    :type destinations: list[str]
10310    :param next_hop_type: Required. The type of next hop (eg: ResourceId).
10311    :type next_hop_type: str
10312    :param next_hop: Required. NextHop resource ID.
10313    :type next_hop: str
10314    """
10315
10316    _validation = {
10317        'name': {'required': True},
10318        'destination_type': {'required': True},
10319        'destinations': {'required': True},
10320        'next_hop_type': {'required': True},
10321        'next_hop': {'required': True},
10322    }
10323
10324    _attribute_map = {
10325        'name': {'key': 'name', 'type': 'str'},
10326        'destination_type': {'key': 'destinationType', 'type': 'str'},
10327        'destinations': {'key': 'destinations', 'type': '[str]'},
10328        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
10329        'next_hop': {'key': 'nextHop', 'type': 'str'},
10330    }
10331
10332    def __init__(
10333        self,
10334        *,
10335        name: str,
10336        destination_type: str,
10337        destinations: List[str],
10338        next_hop_type: str,
10339        next_hop: str,
10340        **kwargs
10341    ):
10342        super(HubRoute, self).__init__(**kwargs)
10343        self.name = name
10344        self.destination_type = destination_type
10345        self.destinations = destinations
10346        self.next_hop_type = next_hop_type
10347        self.next_hop = next_hop
10348
10349
10350class HubRouteTable(SubResource):
10351    """RouteTable resource in a virtual hub.
10352
10353    Variables are only populated by the server, and will be ignored when sending a request.
10354
10355    :param id: Resource ID.
10356    :type id: str
10357    :param name: The name of the resource that is unique within a resource group. This name can be
10358     used to access the resource.
10359    :type name: str
10360    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10361    :vartype etag: str
10362    :ivar type: Resource type.
10363    :vartype type: str
10364    :param routes: List of all routes.
10365    :type routes: list[~azure.mgmt.network.v2020_04_01.models.HubRoute]
10366    :param labels: List of labels associated with this route table.
10367    :type labels: list[str]
10368    :ivar associated_connections: List of all connections associated with this route table.
10369    :vartype associated_connections: list[str]
10370    :ivar propagating_connections: List of all connections that advertise to this route table.
10371    :vartype propagating_connections: list[str]
10372    :ivar provisioning_state: The provisioning state of the RouteTable resource. Possible values
10373     include: "Succeeded", "Updating", "Deleting", "Failed".
10374    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
10375    """
10376
10377    _validation = {
10378        'etag': {'readonly': True},
10379        'type': {'readonly': True},
10380        'associated_connections': {'readonly': True},
10381        'propagating_connections': {'readonly': True},
10382        'provisioning_state': {'readonly': True},
10383    }
10384
10385    _attribute_map = {
10386        'id': {'key': 'id', 'type': 'str'},
10387        'name': {'key': 'name', 'type': 'str'},
10388        'etag': {'key': 'etag', 'type': 'str'},
10389        'type': {'key': 'type', 'type': 'str'},
10390        'routes': {'key': 'properties.routes', 'type': '[HubRoute]'},
10391        'labels': {'key': 'properties.labels', 'type': '[str]'},
10392        'associated_connections': {'key': 'properties.associatedConnections', 'type': '[str]'},
10393        'propagating_connections': {'key': 'properties.propagatingConnections', 'type': '[str]'},
10394        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10395    }
10396
10397    def __init__(
10398        self,
10399        *,
10400        id: Optional[str] = None,
10401        name: Optional[str] = None,
10402        routes: Optional[List["HubRoute"]] = None,
10403        labels: Optional[List[str]] = None,
10404        **kwargs
10405    ):
10406        super(HubRouteTable, self).__init__(id=id, **kwargs)
10407        self.name = name
10408        self.etag = None
10409        self.type = None
10410        self.routes = routes
10411        self.labels = labels
10412        self.associated_connections = None
10413        self.propagating_connections = None
10414        self.provisioning_state = None
10415
10416
10417class HubVirtualNetworkConnection(SubResource):
10418    """HubVirtualNetworkConnection Resource.
10419
10420    Variables are only populated by the server, and will be ignored when sending a request.
10421
10422    :param id: Resource ID.
10423    :type id: str
10424    :param name: The name of the resource that is unique within a resource group. This name can be
10425     used to access the resource.
10426    :type name: str
10427    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10428    :vartype etag: str
10429    :param remote_virtual_network: Reference to the remote virtual network.
10430    :type remote_virtual_network: ~azure.mgmt.network.v2020_04_01.models.SubResource
10431    :param allow_hub_to_remote_vnet_transit: VirtualHub to RemoteVnet transit to enabled or not.
10432    :type allow_hub_to_remote_vnet_transit: bool
10433    :param allow_remote_vnet_to_use_hub_vnet_gateways: Allow RemoteVnet to use Virtual Hub's
10434     gateways.
10435    :type allow_remote_vnet_to_use_hub_vnet_gateways: bool
10436    :param enable_internet_security: Enable internet security.
10437    :type enable_internet_security: bool
10438    :param routing_configuration: The Routing Configuration indicating the associated and
10439     propagated route tables on this connection.
10440    :type routing_configuration: ~azure.mgmt.network.v2020_04_01.models.RoutingConfiguration
10441    :ivar provisioning_state: The provisioning state of the hub virtual network connection
10442     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
10443    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
10444    """
10445
10446    _validation = {
10447        'etag': {'readonly': True},
10448        'provisioning_state': {'readonly': True},
10449    }
10450
10451    _attribute_map = {
10452        'id': {'key': 'id', 'type': 'str'},
10453        'name': {'key': 'name', 'type': 'str'},
10454        'etag': {'key': 'etag', 'type': 'str'},
10455        'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'},
10456        'allow_hub_to_remote_vnet_transit': {'key': 'properties.allowHubToRemoteVnetTransit', 'type': 'bool'},
10457        'allow_remote_vnet_to_use_hub_vnet_gateways': {'key': 'properties.allowRemoteVnetToUseHubVnetGateways', 'type': 'bool'},
10458        'enable_internet_security': {'key': 'properties.enableInternetSecurity', 'type': 'bool'},
10459        'routing_configuration': {'key': 'properties.routingConfiguration', 'type': 'RoutingConfiguration'},
10460        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10461    }
10462
10463    def __init__(
10464        self,
10465        *,
10466        id: Optional[str] = None,
10467        name: Optional[str] = None,
10468        remote_virtual_network: Optional["SubResource"] = None,
10469        allow_hub_to_remote_vnet_transit: Optional[bool] = None,
10470        allow_remote_vnet_to_use_hub_vnet_gateways: Optional[bool] = None,
10471        enable_internet_security: Optional[bool] = None,
10472        routing_configuration: Optional["RoutingConfiguration"] = None,
10473        **kwargs
10474    ):
10475        super(HubVirtualNetworkConnection, self).__init__(id=id, **kwargs)
10476        self.name = name
10477        self.etag = None
10478        self.remote_virtual_network = remote_virtual_network
10479        self.allow_hub_to_remote_vnet_transit = allow_hub_to_remote_vnet_transit
10480        self.allow_remote_vnet_to_use_hub_vnet_gateways = allow_remote_vnet_to_use_hub_vnet_gateways
10481        self.enable_internet_security = enable_internet_security
10482        self.routing_configuration = routing_configuration
10483        self.provisioning_state = None
10484
10485
10486class InboundNatPool(SubResource):
10487    """Inbound NAT pool of the load balancer.
10488
10489    Variables are only populated by the server, and will be ignored when sending a request.
10490
10491    :param id: Resource ID.
10492    :type id: str
10493    :param name: The name of the resource that is unique within the set of inbound NAT pools used
10494     by the load balancer. This name can be used to access the resource.
10495    :type name: str
10496    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10497    :vartype etag: str
10498    :ivar type: Type of the resource.
10499    :vartype type: str
10500    :param frontend_ip_configuration: A reference to frontend IP addresses.
10501    :type frontend_ip_configuration: ~azure.mgmt.network.v2020_04_01.models.SubResource
10502    :param protocol: The reference to the transport protocol used by the inbound NAT pool. Possible
10503     values include: "Udp", "Tcp", "All".
10504    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.TransportProtocol
10505    :param frontend_port_range_start: The first port number in the range of external ports that
10506     will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values
10507     range between 1 and 65534.
10508    :type frontend_port_range_start: int
10509    :param frontend_port_range_end: The last port number in the range of external ports that will
10510     be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range
10511     between 1 and 65535.
10512    :type frontend_port_range_end: int
10513    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
10514     are between 1 and 65535.
10515    :type backend_port: int
10516    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
10517     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
10518     protocol is set to TCP.
10519    :type idle_timeout_in_minutes: int
10520    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
10521     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
10522     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
10523     after you create the endpoint.
10524    :type enable_floating_ip: bool
10525    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
10526     connection termination. This element is only used when the protocol is set to TCP.
10527    :type enable_tcp_reset: bool
10528    :ivar provisioning_state: The provisioning state of the inbound NAT pool resource. Possible
10529     values include: "Succeeded", "Updating", "Deleting", "Failed".
10530    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
10531    """
10532
10533    _validation = {
10534        'etag': {'readonly': True},
10535        'type': {'readonly': True},
10536        'provisioning_state': {'readonly': True},
10537    }
10538
10539    _attribute_map = {
10540        'id': {'key': 'id', 'type': 'str'},
10541        'name': {'key': 'name', 'type': 'str'},
10542        'etag': {'key': 'etag', 'type': 'str'},
10543        'type': {'key': 'type', 'type': 'str'},
10544        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
10545        'protocol': {'key': 'properties.protocol', 'type': 'str'},
10546        'frontend_port_range_start': {'key': 'properties.frontendPortRangeStart', 'type': 'int'},
10547        'frontend_port_range_end': {'key': 'properties.frontendPortRangeEnd', 'type': 'int'},
10548        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
10549        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
10550        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
10551        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
10552        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10553    }
10554
10555    def __init__(
10556        self,
10557        *,
10558        id: Optional[str] = None,
10559        name: Optional[str] = None,
10560        frontend_ip_configuration: Optional["SubResource"] = None,
10561        protocol: Optional[Union[str, "TransportProtocol"]] = None,
10562        frontend_port_range_start: Optional[int] = None,
10563        frontend_port_range_end: Optional[int] = None,
10564        backend_port: Optional[int] = None,
10565        idle_timeout_in_minutes: Optional[int] = None,
10566        enable_floating_ip: Optional[bool] = None,
10567        enable_tcp_reset: Optional[bool] = None,
10568        **kwargs
10569    ):
10570        super(InboundNatPool, self).__init__(id=id, **kwargs)
10571        self.name = name
10572        self.etag = None
10573        self.type = None
10574        self.frontend_ip_configuration = frontend_ip_configuration
10575        self.protocol = protocol
10576        self.frontend_port_range_start = frontend_port_range_start
10577        self.frontend_port_range_end = frontend_port_range_end
10578        self.backend_port = backend_port
10579        self.idle_timeout_in_minutes = idle_timeout_in_minutes
10580        self.enable_floating_ip = enable_floating_ip
10581        self.enable_tcp_reset = enable_tcp_reset
10582        self.provisioning_state = None
10583
10584
10585class InboundNatRule(SubResource):
10586    """Inbound NAT rule of the load balancer.
10587
10588    Variables are only populated by the server, and will be ignored when sending a request.
10589
10590    :param id: Resource ID.
10591    :type id: str
10592    :param name: The name of the resource that is unique within the set of inbound NAT rules used
10593     by the load balancer. This name can be used to access the resource.
10594    :type name: str
10595    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10596    :vartype etag: str
10597    :ivar type: Type of the resource.
10598    :vartype type: str
10599    :param frontend_ip_configuration: A reference to frontend IP addresses.
10600    :type frontend_ip_configuration: ~azure.mgmt.network.v2020_04_01.models.SubResource
10601    :ivar backend_ip_configuration: A reference to a private IP address defined on a network
10602     interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations
10603     is forwarded to the backend IP.
10604    :vartype backend_ip_configuration:
10605     ~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceIPConfiguration
10606    :param protocol: The reference to the transport protocol used by the load balancing rule.
10607     Possible values include: "Udp", "Tcp", "All".
10608    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.TransportProtocol
10609    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
10610     unique within the Load Balancer. Acceptable values range from 1 to 65534.
10611    :type frontend_port: int
10612    :param backend_port: The port used for the internal endpoint. Acceptable values range from 1 to
10613     65535.
10614    :type backend_port: int
10615    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
10616     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
10617     protocol is set to TCP.
10618    :type idle_timeout_in_minutes: int
10619    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
10620     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
10621     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
10622     after you create the endpoint.
10623    :type enable_floating_ip: bool
10624    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
10625     connection termination. This element is only used when the protocol is set to TCP.
10626    :type enable_tcp_reset: bool
10627    :ivar provisioning_state: The provisioning state of the inbound NAT rule resource. Possible
10628     values include: "Succeeded", "Updating", "Deleting", "Failed".
10629    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
10630    """
10631
10632    _validation = {
10633        'etag': {'readonly': True},
10634        'type': {'readonly': True},
10635        'backend_ip_configuration': {'readonly': True},
10636        'provisioning_state': {'readonly': True},
10637    }
10638
10639    _attribute_map = {
10640        'id': {'key': 'id', 'type': 'str'},
10641        'name': {'key': 'name', 'type': 'str'},
10642        'etag': {'key': 'etag', 'type': 'str'},
10643        'type': {'key': 'type', 'type': 'str'},
10644        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
10645        'backend_ip_configuration': {'key': 'properties.backendIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
10646        'protocol': {'key': 'properties.protocol', 'type': 'str'},
10647        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
10648        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
10649        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
10650        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
10651        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
10652        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10653    }
10654
10655    def __init__(
10656        self,
10657        *,
10658        id: Optional[str] = None,
10659        name: Optional[str] = None,
10660        frontend_ip_configuration: Optional["SubResource"] = None,
10661        protocol: Optional[Union[str, "TransportProtocol"]] = None,
10662        frontend_port: Optional[int] = None,
10663        backend_port: Optional[int] = None,
10664        idle_timeout_in_minutes: Optional[int] = None,
10665        enable_floating_ip: Optional[bool] = None,
10666        enable_tcp_reset: Optional[bool] = None,
10667        **kwargs
10668    ):
10669        super(InboundNatRule, self).__init__(id=id, **kwargs)
10670        self.name = name
10671        self.etag = None
10672        self.type = None
10673        self.frontend_ip_configuration = frontend_ip_configuration
10674        self.backend_ip_configuration = None
10675        self.protocol = protocol
10676        self.frontend_port = frontend_port
10677        self.backend_port = backend_port
10678        self.idle_timeout_in_minutes = idle_timeout_in_minutes
10679        self.enable_floating_ip = enable_floating_ip
10680        self.enable_tcp_reset = enable_tcp_reset
10681        self.provisioning_state = None
10682
10683
10684class InboundNatRuleListResult(msrest.serialization.Model):
10685    """Response for ListInboundNatRule API service call.
10686
10687    Variables are only populated by the server, and will be ignored when sending a request.
10688
10689    :param value: A list of inbound nat rules in a load balancer.
10690    :type value: list[~azure.mgmt.network.v2020_04_01.models.InboundNatRule]
10691    :ivar next_link: The URL to get the next set of results.
10692    :vartype next_link: str
10693    """
10694
10695    _validation = {
10696        'next_link': {'readonly': True},
10697    }
10698
10699    _attribute_map = {
10700        'value': {'key': 'value', 'type': '[InboundNatRule]'},
10701        'next_link': {'key': 'nextLink', 'type': 'str'},
10702    }
10703
10704    def __init__(
10705        self,
10706        *,
10707        value: Optional[List["InboundNatRule"]] = None,
10708        **kwargs
10709    ):
10710        super(InboundNatRuleListResult, self).__init__(**kwargs)
10711        self.value = value
10712        self.next_link = None
10713
10714
10715class IPAddressAvailabilityResult(msrest.serialization.Model):
10716    """Response for CheckIPAddressAvailability API service call.
10717
10718    :param available: Private IP address availability.
10719    :type available: bool
10720    :param available_ip_addresses: Contains other available private IP addresses if the asked for
10721     address is taken.
10722    :type available_ip_addresses: list[str]
10723    """
10724
10725    _attribute_map = {
10726        'available': {'key': 'available', 'type': 'bool'},
10727        'available_ip_addresses': {'key': 'availableIPAddresses', 'type': '[str]'},
10728    }
10729
10730    def __init__(
10731        self,
10732        *,
10733        available: Optional[bool] = None,
10734        available_ip_addresses: Optional[List[str]] = None,
10735        **kwargs
10736    ):
10737        super(IPAddressAvailabilityResult, self).__init__(**kwargs)
10738        self.available = available
10739        self.available_ip_addresses = available_ip_addresses
10740
10741
10742class IpAllocation(Resource):
10743    """IpAllocation resource.
10744
10745    Variables are only populated by the server, and will be ignored when sending a request.
10746
10747    :param id: Resource ID.
10748    :type id: str
10749    :ivar name: Resource name.
10750    :vartype name: str
10751    :ivar type: Resource type.
10752    :vartype type: str
10753    :param location: Resource location.
10754    :type location: str
10755    :param tags: A set of tags. Resource tags.
10756    :type tags: dict[str, str]
10757    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10758    :vartype etag: str
10759    :ivar subnet: The Subnet that using the prefix of this IpAllocation resource.
10760    :vartype subnet: ~azure.mgmt.network.v2020_04_01.models.SubResource
10761    :ivar virtual_network: The VirtualNetwork that using the prefix of this IpAllocation resource.
10762    :vartype virtual_network: ~azure.mgmt.network.v2020_04_01.models.SubResource
10763    :param type_properties_type: The type for the IpAllocation. Possible values include:
10764     "Undefined", "Hypernet".
10765    :type type_properties_type: str or ~azure.mgmt.network.v2020_04_01.models.IpAllocationType
10766    :param prefix: The address prefix for the IpAllocation.
10767    :type prefix: str
10768    :param prefix_length: The address prefix length for the IpAllocation.
10769    :type prefix_length: int
10770    :param prefix_type: The address prefix Type for the IpAllocation. Possible values include:
10771     "IPv4", "IPv6".
10772    :type prefix_type: str or ~azure.mgmt.network.v2020_04_01.models.IPVersion
10773    :param ipam_allocation_id: The IPAM allocation ID.
10774    :type ipam_allocation_id: str
10775    :param allocation_tags: IpAllocation tags.
10776    :type allocation_tags: dict[str, str]
10777    """
10778
10779    _validation = {
10780        'name': {'readonly': True},
10781        'type': {'readonly': True},
10782        'etag': {'readonly': True},
10783        'subnet': {'readonly': True},
10784        'virtual_network': {'readonly': True},
10785    }
10786
10787    _attribute_map = {
10788        'id': {'key': 'id', 'type': 'str'},
10789        'name': {'key': 'name', 'type': 'str'},
10790        'type': {'key': 'type', 'type': 'str'},
10791        'location': {'key': 'location', 'type': 'str'},
10792        'tags': {'key': 'tags', 'type': '{str}'},
10793        'etag': {'key': 'etag', 'type': 'str'},
10794        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
10795        'virtual_network': {'key': 'properties.virtualNetwork', 'type': 'SubResource'},
10796        'type_properties_type': {'key': 'properties.type', 'type': 'str'},
10797        'prefix': {'key': 'properties.prefix', 'type': 'str'},
10798        'prefix_length': {'key': 'properties.prefixLength', 'type': 'int'},
10799        'prefix_type': {'key': 'properties.prefixType', 'type': 'str'},
10800        'ipam_allocation_id': {'key': 'properties.ipamAllocationId', 'type': 'str'},
10801        'allocation_tags': {'key': 'properties.allocationTags', 'type': '{str}'},
10802    }
10803
10804    def __init__(
10805        self,
10806        *,
10807        id: Optional[str] = None,
10808        location: Optional[str] = None,
10809        tags: Optional[Dict[str, str]] = None,
10810        type_properties_type: Optional[Union[str, "IpAllocationType"]] = None,
10811        prefix: Optional[str] = None,
10812        prefix_length: Optional[int] = 0,
10813        prefix_type: Optional[Union[str, "IPVersion"]] = None,
10814        ipam_allocation_id: Optional[str] = None,
10815        allocation_tags: Optional[Dict[str, str]] = None,
10816        **kwargs
10817    ):
10818        super(IpAllocation, self).__init__(id=id, location=location, tags=tags, **kwargs)
10819        self.etag = None
10820        self.subnet = None
10821        self.virtual_network = None
10822        self.type_properties_type = type_properties_type
10823        self.prefix = prefix
10824        self.prefix_length = prefix_length
10825        self.prefix_type = prefix_type
10826        self.ipam_allocation_id = ipam_allocation_id
10827        self.allocation_tags = allocation_tags
10828
10829
10830class IpAllocationListResult(msrest.serialization.Model):
10831    """Response for the ListIpAllocations API service call.
10832
10833    :param value: A list of IpAllocation resources.
10834    :type value: list[~azure.mgmt.network.v2020_04_01.models.IpAllocation]
10835    :param next_link: The URL to get the next set of results.
10836    :type next_link: str
10837    """
10838
10839    _attribute_map = {
10840        'value': {'key': 'value', 'type': '[IpAllocation]'},
10841        'next_link': {'key': 'nextLink', 'type': 'str'},
10842    }
10843
10844    def __init__(
10845        self,
10846        *,
10847        value: Optional[List["IpAllocation"]] = None,
10848        next_link: Optional[str] = None,
10849        **kwargs
10850    ):
10851        super(IpAllocationListResult, self).__init__(**kwargs)
10852        self.value = value
10853        self.next_link = next_link
10854
10855
10856class IPConfiguration(SubResource):
10857    """IP configuration.
10858
10859    Variables are only populated by the server, and will be ignored when sending a request.
10860
10861    :param id: Resource ID.
10862    :type id: str
10863    :param name: The name of the resource that is unique within a resource group. This name can be
10864     used to access the resource.
10865    :type name: str
10866    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10867    :vartype etag: str
10868    :param private_ip_address: The private IP address of the IP configuration.
10869    :type private_ip_address: str
10870    :param private_ip_allocation_method: The private IP address allocation method. Possible values
10871     include: "Static", "Dynamic".
10872    :type private_ip_allocation_method: str or
10873     ~azure.mgmt.network.v2020_04_01.models.IPAllocationMethod
10874    :param subnet: The reference to the subnet resource.
10875    :type subnet: ~azure.mgmt.network.v2020_04_01.models.Subnet
10876    :param public_ip_address: The reference to the public IP resource.
10877    :type public_ip_address: ~azure.mgmt.network.v2020_04_01.models.PublicIPAddress
10878    :ivar provisioning_state: The provisioning state of the IP configuration resource. Possible
10879     values include: "Succeeded", "Updating", "Deleting", "Failed".
10880    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
10881    """
10882
10883    _validation = {
10884        'etag': {'readonly': True},
10885        'provisioning_state': {'readonly': True},
10886    }
10887
10888    _attribute_map = {
10889        'id': {'key': 'id', 'type': 'str'},
10890        'name': {'key': 'name', 'type': 'str'},
10891        'etag': {'key': 'etag', 'type': 'str'},
10892        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
10893        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
10894        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
10895        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
10896        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10897    }
10898
10899    def __init__(
10900        self,
10901        *,
10902        id: Optional[str] = None,
10903        name: Optional[str] = None,
10904        private_ip_address: Optional[str] = None,
10905        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
10906        subnet: Optional["Subnet"] = None,
10907        public_ip_address: Optional["PublicIPAddress"] = None,
10908        **kwargs
10909    ):
10910        super(IPConfiguration, self).__init__(id=id, **kwargs)
10911        self.name = name
10912        self.etag = None
10913        self.private_ip_address = private_ip_address
10914        self.private_ip_allocation_method = private_ip_allocation_method
10915        self.subnet = subnet
10916        self.public_ip_address = public_ip_address
10917        self.provisioning_state = None
10918
10919
10920class IPConfigurationBgpPeeringAddress(msrest.serialization.Model):
10921    """Properties of IPConfigurationBgpPeeringAddress.
10922
10923    Variables are only populated by the server, and will be ignored when sending a request.
10924
10925    :param ipconfiguration_id: The ID of IP configuration which belongs to gateway.
10926    :type ipconfiguration_id: str
10927    :ivar default_bgp_ip_addresses: The list of default BGP peering addresses which belong to IP
10928     configuration.
10929    :vartype default_bgp_ip_addresses: list[str]
10930    :param custom_bgp_ip_addresses: The list of custom BGP peering addresses which belong to IP
10931     configuration.
10932    :type custom_bgp_ip_addresses: list[str]
10933    :ivar tunnel_ip_addresses: The list of tunnel public IP addresses which belong to IP
10934     configuration.
10935    :vartype tunnel_ip_addresses: list[str]
10936    """
10937
10938    _validation = {
10939        'default_bgp_ip_addresses': {'readonly': True},
10940        'tunnel_ip_addresses': {'readonly': True},
10941    }
10942
10943    _attribute_map = {
10944        'ipconfiguration_id': {'key': 'ipconfigurationId', 'type': 'str'},
10945        'default_bgp_ip_addresses': {'key': 'defaultBgpIpAddresses', 'type': '[str]'},
10946        'custom_bgp_ip_addresses': {'key': 'customBgpIpAddresses', 'type': '[str]'},
10947        'tunnel_ip_addresses': {'key': 'tunnelIpAddresses', 'type': '[str]'},
10948    }
10949
10950    def __init__(
10951        self,
10952        *,
10953        ipconfiguration_id: Optional[str] = None,
10954        custom_bgp_ip_addresses: Optional[List[str]] = None,
10955        **kwargs
10956    ):
10957        super(IPConfigurationBgpPeeringAddress, self).__init__(**kwargs)
10958        self.ipconfiguration_id = ipconfiguration_id
10959        self.default_bgp_ip_addresses = None
10960        self.custom_bgp_ip_addresses = custom_bgp_ip_addresses
10961        self.tunnel_ip_addresses = None
10962
10963
10964class IPConfigurationProfile(SubResource):
10965    """IP configuration profile child resource.
10966
10967    Variables are only populated by the server, and will be ignored when sending a request.
10968
10969    :param id: Resource ID.
10970    :type id: str
10971    :param name: The name of the resource. This name can be used to access the resource.
10972    :type name: str
10973    :ivar type: Sub Resource type.
10974    :vartype type: str
10975    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10976    :vartype etag: str
10977    :param subnet: The reference to the subnet resource to create a container network interface ip
10978     configuration.
10979    :type subnet: ~azure.mgmt.network.v2020_04_01.models.Subnet
10980    :ivar provisioning_state: The provisioning state of the IP configuration profile resource.
10981     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
10982    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
10983    """
10984
10985    _validation = {
10986        'type': {'readonly': True},
10987        'etag': {'readonly': True},
10988        'provisioning_state': {'readonly': True},
10989    }
10990
10991    _attribute_map = {
10992        'id': {'key': 'id', 'type': 'str'},
10993        'name': {'key': 'name', 'type': 'str'},
10994        'type': {'key': 'type', 'type': 'str'},
10995        'etag': {'key': 'etag', 'type': 'str'},
10996        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
10997        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10998    }
10999
11000    def __init__(
11001        self,
11002        *,
11003        id: Optional[str] = None,
11004        name: Optional[str] = None,
11005        subnet: Optional["Subnet"] = None,
11006        **kwargs
11007    ):
11008        super(IPConfigurationProfile, self).__init__(id=id, **kwargs)
11009        self.name = name
11010        self.type = None
11011        self.etag = None
11012        self.subnet = subnet
11013        self.provisioning_state = None
11014
11015
11016class IpGroup(Resource):
11017    """The IpGroups resource information.
11018
11019    Variables are only populated by the server, and will be ignored when sending a request.
11020
11021    :param id: Resource ID.
11022    :type id: str
11023    :ivar name: Resource name.
11024    :vartype name: str
11025    :ivar type: Resource type.
11026    :vartype type: str
11027    :param location: Resource location.
11028    :type location: str
11029    :param tags: A set of tags. Resource tags.
11030    :type tags: dict[str, str]
11031    :ivar etag: A unique read-only string that changes whenever the resource is updated.
11032    :vartype etag: str
11033    :ivar provisioning_state: The provisioning state of the IpGroups resource. Possible values
11034     include: "Succeeded", "Updating", "Deleting", "Failed".
11035    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
11036    :param ip_addresses: IpAddresses/IpAddressPrefixes in the IpGroups resource.
11037    :type ip_addresses: list[str]
11038    :ivar firewalls: List of references to Azure resources that this IpGroups is associated with.
11039    :vartype firewalls: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
11040    """
11041
11042    _validation = {
11043        'name': {'readonly': True},
11044        'type': {'readonly': True},
11045        'etag': {'readonly': True},
11046        'provisioning_state': {'readonly': True},
11047        'firewalls': {'readonly': True},
11048    }
11049
11050    _attribute_map = {
11051        'id': {'key': 'id', 'type': 'str'},
11052        'name': {'key': 'name', 'type': 'str'},
11053        'type': {'key': 'type', 'type': 'str'},
11054        'location': {'key': 'location', 'type': 'str'},
11055        'tags': {'key': 'tags', 'type': '{str}'},
11056        'etag': {'key': 'etag', 'type': 'str'},
11057        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11058        'ip_addresses': {'key': 'properties.ipAddresses', 'type': '[str]'},
11059        'firewalls': {'key': 'properties.firewalls', 'type': '[SubResource]'},
11060    }
11061
11062    def __init__(
11063        self,
11064        *,
11065        id: Optional[str] = None,
11066        location: Optional[str] = None,
11067        tags: Optional[Dict[str, str]] = None,
11068        ip_addresses: Optional[List[str]] = None,
11069        **kwargs
11070    ):
11071        super(IpGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
11072        self.etag = None
11073        self.provisioning_state = None
11074        self.ip_addresses = ip_addresses
11075        self.firewalls = None
11076
11077
11078class IpGroupListResult(msrest.serialization.Model):
11079    """Response for the ListIpGroups API service call.
11080
11081    :param value: The list of IpGroups information resources.
11082    :type value: list[~azure.mgmt.network.v2020_04_01.models.IpGroup]
11083    :param next_link: URL to get the next set of results.
11084    :type next_link: str
11085    """
11086
11087    _attribute_map = {
11088        'value': {'key': 'value', 'type': '[IpGroup]'},
11089        'next_link': {'key': 'nextLink', 'type': 'str'},
11090    }
11091
11092    def __init__(
11093        self,
11094        *,
11095        value: Optional[List["IpGroup"]] = None,
11096        next_link: Optional[str] = None,
11097        **kwargs
11098    ):
11099        super(IpGroupListResult, self).__init__(**kwargs)
11100        self.value = value
11101        self.next_link = next_link
11102
11103
11104class IpsecPolicy(msrest.serialization.Model):
11105    """An IPSec Policy configuration for a virtual network gateway connection.
11106
11107    All required parameters must be populated in order to send to Azure.
11108
11109    :param sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode
11110     or Phase 2 SA) lifetime in seconds for a site to site VPN tunnel.
11111    :type sa_life_time_seconds: int
11112    :param sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode
11113     or Phase 2 SA) payload size in KB for a site to site VPN tunnel.
11114    :type sa_data_size_kilobytes: int
11115    :param ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible
11116     values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192",
11117     "GCMAES256".
11118    :type ipsec_encryption: str or ~azure.mgmt.network.v2020_04_01.models.IpsecEncryption
11119    :param ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values
11120     include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256".
11121    :type ipsec_integrity: str or ~azure.mgmt.network.v2020_04_01.models.IpsecIntegrity
11122    :param ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values
11123     include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128".
11124    :type ike_encryption: str or ~azure.mgmt.network.v2020_04_01.models.IkeEncryption
11125    :param ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values
11126     include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128".
11127    :type ike_integrity: str or ~azure.mgmt.network.v2020_04_01.models.IkeIntegrity
11128    :param dh_group: Required. The DH Group used in IKE Phase 1 for initial SA. Possible values
11129     include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384",
11130     "DHGroup24".
11131    :type dh_group: str or ~azure.mgmt.network.v2020_04_01.models.DhGroup
11132    :param pfs_group: Required. The Pfs Group used in IKE Phase 2 for new child SA. Possible values
11133     include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14", "PFSMM".
11134    :type pfs_group: str or ~azure.mgmt.network.v2020_04_01.models.PfsGroup
11135    """
11136
11137    _validation = {
11138        'sa_life_time_seconds': {'required': True},
11139        'sa_data_size_kilobytes': {'required': True},
11140        'ipsec_encryption': {'required': True},
11141        'ipsec_integrity': {'required': True},
11142        'ike_encryption': {'required': True},
11143        'ike_integrity': {'required': True},
11144        'dh_group': {'required': True},
11145        'pfs_group': {'required': True},
11146    }
11147
11148    _attribute_map = {
11149        'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'},
11150        'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'},
11151        'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'},
11152        'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'},
11153        'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'},
11154        'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'},
11155        'dh_group': {'key': 'dhGroup', 'type': 'str'},
11156        'pfs_group': {'key': 'pfsGroup', 'type': 'str'},
11157    }
11158
11159    def __init__(
11160        self,
11161        *,
11162        sa_life_time_seconds: int,
11163        sa_data_size_kilobytes: int,
11164        ipsec_encryption: Union[str, "IpsecEncryption"],
11165        ipsec_integrity: Union[str, "IpsecIntegrity"],
11166        ike_encryption: Union[str, "IkeEncryption"],
11167        ike_integrity: Union[str, "IkeIntegrity"],
11168        dh_group: Union[str, "DhGroup"],
11169        pfs_group: Union[str, "PfsGroup"],
11170        **kwargs
11171    ):
11172        super(IpsecPolicy, self).__init__(**kwargs)
11173        self.sa_life_time_seconds = sa_life_time_seconds
11174        self.sa_data_size_kilobytes = sa_data_size_kilobytes
11175        self.ipsec_encryption = ipsec_encryption
11176        self.ipsec_integrity = ipsec_integrity
11177        self.ike_encryption = ike_encryption
11178        self.ike_integrity = ike_integrity
11179        self.dh_group = dh_group
11180        self.pfs_group = pfs_group
11181
11182
11183class IpTag(msrest.serialization.Model):
11184    """Contains the IpTag associated with the object.
11185
11186    :param ip_tag_type: The IP tag type. Example: FirstPartyUsage.
11187    :type ip_tag_type: str
11188    :param tag: The value of the IP tag associated with the public IP. Example: SQL.
11189    :type tag: str
11190    """
11191
11192    _attribute_map = {
11193        'ip_tag_type': {'key': 'ipTagType', 'type': 'str'},
11194        'tag': {'key': 'tag', 'type': 'str'},
11195    }
11196
11197    def __init__(
11198        self,
11199        *,
11200        ip_tag_type: Optional[str] = None,
11201        tag: Optional[str] = None,
11202        **kwargs
11203    ):
11204        super(IpTag, self).__init__(**kwargs)
11205        self.ip_tag_type = ip_tag_type
11206        self.tag = tag
11207
11208
11209class Ipv6CircuitConnectionConfig(msrest.serialization.Model):
11210    """IPv6 Circuit Connection properties for global reach.
11211
11212    Variables are only populated by the server, and will be ignored when sending a request.
11213
11214    :param address_prefix: /125 IP address space to carve out customer addresses for global reach.
11215    :type address_prefix: str
11216    :ivar circuit_connection_status: Express Route Circuit connection state. Possible values
11217     include: "Connected", "Connecting", "Disconnected".
11218    :vartype circuit_connection_status: str or
11219     ~azure.mgmt.network.v2020_04_01.models.CircuitConnectionStatus
11220    """
11221
11222    _validation = {
11223        'circuit_connection_status': {'readonly': True},
11224    }
11225
11226    _attribute_map = {
11227        'address_prefix': {'key': 'addressPrefix', 'type': 'str'},
11228        'circuit_connection_status': {'key': 'circuitConnectionStatus', 'type': 'str'},
11229    }
11230
11231    def __init__(
11232        self,
11233        *,
11234        address_prefix: Optional[str] = None,
11235        **kwargs
11236    ):
11237        super(Ipv6CircuitConnectionConfig, self).__init__(**kwargs)
11238        self.address_prefix = address_prefix
11239        self.circuit_connection_status = None
11240
11241
11242class Ipv6ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
11243    """Contains IPv6 peering config.
11244
11245    :param primary_peer_address_prefix: The primary address prefix.
11246    :type primary_peer_address_prefix: str
11247    :param secondary_peer_address_prefix: The secondary address prefix.
11248    :type secondary_peer_address_prefix: str
11249    :param microsoft_peering_config: The Microsoft peering configuration.
11250    :type microsoft_peering_config:
11251     ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeeringConfig
11252    :param route_filter: The reference to the RouteFilter resource.
11253    :type route_filter: ~azure.mgmt.network.v2020_04_01.models.SubResource
11254    :param state: The state of peering. Possible values include: "Disabled", "Enabled".
11255    :type state: str or ~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeeringState
11256    """
11257
11258    _attribute_map = {
11259        'primary_peer_address_prefix': {'key': 'primaryPeerAddressPrefix', 'type': 'str'},
11260        'secondary_peer_address_prefix': {'key': 'secondaryPeerAddressPrefix', 'type': 'str'},
11261        'microsoft_peering_config': {'key': 'microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
11262        'route_filter': {'key': 'routeFilter', 'type': 'SubResource'},
11263        'state': {'key': 'state', 'type': 'str'},
11264    }
11265
11266    def __init__(
11267        self,
11268        *,
11269        primary_peer_address_prefix: Optional[str] = None,
11270        secondary_peer_address_prefix: Optional[str] = None,
11271        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
11272        route_filter: Optional["SubResource"] = None,
11273        state: Optional[Union[str, "ExpressRouteCircuitPeeringState"]] = None,
11274        **kwargs
11275    ):
11276        super(Ipv6ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
11277        self.primary_peer_address_prefix = primary_peer_address_prefix
11278        self.secondary_peer_address_prefix = secondary_peer_address_prefix
11279        self.microsoft_peering_config = microsoft_peering_config
11280        self.route_filter = route_filter
11281        self.state = state
11282
11283
11284class ListHubRouteTablesResult(msrest.serialization.Model):
11285    """List of RouteTables and a URL nextLink to get the next set of results.
11286
11287    :param value: List of RouteTables.
11288    :type value: list[~azure.mgmt.network.v2020_04_01.models.HubRouteTable]
11289    :param next_link: URL to get the next set of operation list results if there are any.
11290    :type next_link: str
11291    """
11292
11293    _attribute_map = {
11294        'value': {'key': 'value', 'type': '[HubRouteTable]'},
11295        'next_link': {'key': 'nextLink', 'type': 'str'},
11296    }
11297
11298    def __init__(
11299        self,
11300        *,
11301        value: Optional[List["HubRouteTable"]] = None,
11302        next_link: Optional[str] = None,
11303        **kwargs
11304    ):
11305        super(ListHubRouteTablesResult, self).__init__(**kwargs)
11306        self.value = value
11307        self.next_link = next_link
11308
11309
11310class ListHubVirtualNetworkConnectionsResult(msrest.serialization.Model):
11311    """List of HubVirtualNetworkConnections and a URL nextLink to get the next set of results.
11312
11313    :param value: List of HubVirtualNetworkConnections.
11314    :type value: list[~azure.mgmt.network.v2020_04_01.models.HubVirtualNetworkConnection]
11315    :param next_link: URL to get the next set of operation list results if there are any.
11316    :type next_link: str
11317    """
11318
11319    _attribute_map = {
11320        'value': {'key': 'value', 'type': '[HubVirtualNetworkConnection]'},
11321        'next_link': {'key': 'nextLink', 'type': 'str'},
11322    }
11323
11324    def __init__(
11325        self,
11326        *,
11327        value: Optional[List["HubVirtualNetworkConnection"]] = None,
11328        next_link: Optional[str] = None,
11329        **kwargs
11330    ):
11331        super(ListHubVirtualNetworkConnectionsResult, self).__init__(**kwargs)
11332        self.value = value
11333        self.next_link = next_link
11334
11335
11336class ListP2SVpnGatewaysResult(msrest.serialization.Model):
11337    """Result of the request to list P2SVpnGateways. It contains a list of P2SVpnGateways and a URL nextLink to get the next set of results.
11338
11339    :param value: List of P2SVpnGateways.
11340    :type value: list[~azure.mgmt.network.v2020_04_01.models.P2SVpnGateway]
11341    :param next_link: URL to get the next set of operation list results if there are any.
11342    :type next_link: str
11343    """
11344
11345    _attribute_map = {
11346        'value': {'key': 'value', 'type': '[P2SVpnGateway]'},
11347        'next_link': {'key': 'nextLink', 'type': 'str'},
11348    }
11349
11350    def __init__(
11351        self,
11352        *,
11353        value: Optional[List["P2SVpnGateway"]] = None,
11354        next_link: Optional[str] = None,
11355        **kwargs
11356    ):
11357        super(ListP2SVpnGatewaysResult, self).__init__(**kwargs)
11358        self.value = value
11359        self.next_link = next_link
11360
11361
11362class ListVirtualHubRouteTableV2SResult(msrest.serialization.Model):
11363    """List of VirtualHubRouteTableV2s and a URL nextLink to get the next set of results.
11364
11365    :param value: List of VirtualHubRouteTableV2s.
11366    :type value: list[~azure.mgmt.network.v2020_04_01.models.VirtualHubRouteTableV2]
11367    :param next_link: URL to get the next set of operation list results if there are any.
11368    :type next_link: str
11369    """
11370
11371    _attribute_map = {
11372        'value': {'key': 'value', 'type': '[VirtualHubRouteTableV2]'},
11373        'next_link': {'key': 'nextLink', 'type': 'str'},
11374    }
11375
11376    def __init__(
11377        self,
11378        *,
11379        value: Optional[List["VirtualHubRouteTableV2"]] = None,
11380        next_link: Optional[str] = None,
11381        **kwargs
11382    ):
11383        super(ListVirtualHubRouteTableV2SResult, self).__init__(**kwargs)
11384        self.value = value
11385        self.next_link = next_link
11386
11387
11388class ListVirtualHubsResult(msrest.serialization.Model):
11389    """Result of the request to list VirtualHubs. It contains a list of VirtualHubs and a URL nextLink to get the next set of results.
11390
11391    :param value: List of VirtualHubs.
11392    :type value: list[~azure.mgmt.network.v2020_04_01.models.VirtualHub]
11393    :param next_link: URL to get the next set of operation list results if there are any.
11394    :type next_link: str
11395    """
11396
11397    _attribute_map = {
11398        'value': {'key': 'value', 'type': '[VirtualHub]'},
11399        'next_link': {'key': 'nextLink', 'type': 'str'},
11400    }
11401
11402    def __init__(
11403        self,
11404        *,
11405        value: Optional[List["VirtualHub"]] = None,
11406        next_link: Optional[str] = None,
11407        **kwargs
11408    ):
11409        super(ListVirtualHubsResult, self).__init__(**kwargs)
11410        self.value = value
11411        self.next_link = next_link
11412
11413
11414class ListVirtualWANsResult(msrest.serialization.Model):
11415    """Result of the request to list VirtualWANs. It contains a list of VirtualWANs and a URL nextLink to get the next set of results.
11416
11417    :param value: List of VirtualWANs.
11418    :type value: list[~azure.mgmt.network.v2020_04_01.models.VirtualWAN]
11419    :param next_link: URL to get the next set of operation list results if there are any.
11420    :type next_link: str
11421    """
11422
11423    _attribute_map = {
11424        'value': {'key': 'value', 'type': '[VirtualWAN]'},
11425        'next_link': {'key': 'nextLink', 'type': 'str'},
11426    }
11427
11428    def __init__(
11429        self,
11430        *,
11431        value: Optional[List["VirtualWAN"]] = None,
11432        next_link: Optional[str] = None,
11433        **kwargs
11434    ):
11435        super(ListVirtualWANsResult, self).__init__(**kwargs)
11436        self.value = value
11437        self.next_link = next_link
11438
11439
11440class ListVpnConnectionsResult(msrest.serialization.Model):
11441    """Result of the request to list all vpn connections to a virtual wan vpn gateway. It contains a list of Vpn Connections and a URL nextLink to get the next set of results.
11442
11443    :param value: List of Vpn Connections.
11444    :type value: list[~azure.mgmt.network.v2020_04_01.models.VpnConnection]
11445    :param next_link: URL to get the next set of operation list results if there are any.
11446    :type next_link: str
11447    """
11448
11449    _attribute_map = {
11450        'value': {'key': 'value', 'type': '[VpnConnection]'},
11451        'next_link': {'key': 'nextLink', 'type': 'str'},
11452    }
11453
11454    def __init__(
11455        self,
11456        *,
11457        value: Optional[List["VpnConnection"]] = None,
11458        next_link: Optional[str] = None,
11459        **kwargs
11460    ):
11461        super(ListVpnConnectionsResult, self).__init__(**kwargs)
11462        self.value = value
11463        self.next_link = next_link
11464
11465
11466class ListVpnGatewaysResult(msrest.serialization.Model):
11467    """Result of the request to list VpnGateways. It contains a list of VpnGateways and a URL nextLink to get the next set of results.
11468
11469    :param value: List of VpnGateways.
11470    :type value: list[~azure.mgmt.network.v2020_04_01.models.VpnGateway]
11471    :param next_link: URL to get the next set of operation list results if there are any.
11472    :type next_link: str
11473    """
11474
11475    _attribute_map = {
11476        'value': {'key': 'value', 'type': '[VpnGateway]'},
11477        'next_link': {'key': 'nextLink', 'type': 'str'},
11478    }
11479
11480    def __init__(
11481        self,
11482        *,
11483        value: Optional[List["VpnGateway"]] = None,
11484        next_link: Optional[str] = None,
11485        **kwargs
11486    ):
11487        super(ListVpnGatewaysResult, self).__init__(**kwargs)
11488        self.value = value
11489        self.next_link = next_link
11490
11491
11492class ListVpnServerConfigurationsResult(msrest.serialization.Model):
11493    """Result of the request to list all VpnServerConfigurations. It contains a list of VpnServerConfigurations and a URL nextLink to get the next set of results.
11494
11495    :param value: List of VpnServerConfigurations.
11496    :type value: list[~azure.mgmt.network.v2020_04_01.models.VpnServerConfiguration]
11497    :param next_link: URL to get the next set of operation list results if there are any.
11498    :type next_link: str
11499    """
11500
11501    _attribute_map = {
11502        'value': {'key': 'value', 'type': '[VpnServerConfiguration]'},
11503        'next_link': {'key': 'nextLink', 'type': 'str'},
11504    }
11505
11506    def __init__(
11507        self,
11508        *,
11509        value: Optional[List["VpnServerConfiguration"]] = None,
11510        next_link: Optional[str] = None,
11511        **kwargs
11512    ):
11513        super(ListVpnServerConfigurationsResult, self).__init__(**kwargs)
11514        self.value = value
11515        self.next_link = next_link
11516
11517
11518class ListVpnSiteLinkConnectionsResult(msrest.serialization.Model):
11519    """Result of the request to list all vpn connections to a virtual wan vpn gateway. It contains a list of Vpn Connections and a URL nextLink to get the next set of results.
11520
11521    :param value: List of VpnSiteLinkConnections.
11522    :type value: list[~azure.mgmt.network.v2020_04_01.models.VpnSiteLinkConnection]
11523    :param next_link: URL to get the next set of operation list results if there are any.
11524    :type next_link: str
11525    """
11526
11527    _attribute_map = {
11528        'value': {'key': 'value', 'type': '[VpnSiteLinkConnection]'},
11529        'next_link': {'key': 'nextLink', 'type': 'str'},
11530    }
11531
11532    def __init__(
11533        self,
11534        *,
11535        value: Optional[List["VpnSiteLinkConnection"]] = None,
11536        next_link: Optional[str] = None,
11537        **kwargs
11538    ):
11539        super(ListVpnSiteLinkConnectionsResult, self).__init__(**kwargs)
11540        self.value = value
11541        self.next_link = next_link
11542
11543
11544class ListVpnSiteLinksResult(msrest.serialization.Model):
11545    """Result of the request to list VpnSiteLinks. It contains a list of VpnSiteLinks and a URL nextLink to get the next set of results.
11546
11547    :param value: List of VpnSitesLinks.
11548    :type value: list[~azure.mgmt.network.v2020_04_01.models.VpnSiteLink]
11549    :param next_link: URL to get the next set of operation list results if there are any.
11550    :type next_link: str
11551    """
11552
11553    _attribute_map = {
11554        'value': {'key': 'value', 'type': '[VpnSiteLink]'},
11555        'next_link': {'key': 'nextLink', 'type': 'str'},
11556    }
11557
11558    def __init__(
11559        self,
11560        *,
11561        value: Optional[List["VpnSiteLink"]] = None,
11562        next_link: Optional[str] = None,
11563        **kwargs
11564    ):
11565        super(ListVpnSiteLinksResult, self).__init__(**kwargs)
11566        self.value = value
11567        self.next_link = next_link
11568
11569
11570class ListVpnSitesResult(msrest.serialization.Model):
11571    """Result of the request to list VpnSites. It contains a list of VpnSites and a URL nextLink to get the next set of results.
11572
11573    :param value: List of VpnSites.
11574    :type value: list[~azure.mgmt.network.v2020_04_01.models.VpnSite]
11575    :param next_link: URL to get the next set of operation list results if there are any.
11576    :type next_link: str
11577    """
11578
11579    _attribute_map = {
11580        'value': {'key': 'value', 'type': '[VpnSite]'},
11581        'next_link': {'key': 'nextLink', 'type': 'str'},
11582    }
11583
11584    def __init__(
11585        self,
11586        *,
11587        value: Optional[List["VpnSite"]] = None,
11588        next_link: Optional[str] = None,
11589        **kwargs
11590    ):
11591        super(ListVpnSitesResult, self).__init__(**kwargs)
11592        self.value = value
11593        self.next_link = next_link
11594
11595
11596class LoadBalancer(Resource):
11597    """LoadBalancer resource.
11598
11599    Variables are only populated by the server, and will be ignored when sending a request.
11600
11601    :param id: Resource ID.
11602    :type id: str
11603    :ivar name: Resource name.
11604    :vartype name: str
11605    :ivar type: Resource type.
11606    :vartype type: str
11607    :param location: Resource location.
11608    :type location: str
11609    :param tags: A set of tags. Resource tags.
11610    :type tags: dict[str, str]
11611    :param sku: The load balancer SKU.
11612    :type sku: ~azure.mgmt.network.v2020_04_01.models.LoadBalancerSku
11613    :ivar etag: A unique read-only string that changes whenever the resource is updated.
11614    :vartype etag: str
11615    :param frontend_ip_configurations: Object representing the frontend IPs to be used for the load
11616     balancer.
11617    :type frontend_ip_configurations:
11618     list[~azure.mgmt.network.v2020_04_01.models.FrontendIPConfiguration]
11619    :param backend_address_pools: Collection of backend address pools used by a load balancer.
11620    :type backend_address_pools: list[~azure.mgmt.network.v2020_04_01.models.BackendAddressPool]
11621    :param load_balancing_rules: Object collection representing the load balancing rules Gets the
11622     provisioning.
11623    :type load_balancing_rules: list[~azure.mgmt.network.v2020_04_01.models.LoadBalancingRule]
11624    :param probes: Collection of probe objects used in the load balancer.
11625    :type probes: list[~azure.mgmt.network.v2020_04_01.models.Probe]
11626    :param inbound_nat_rules: Collection of inbound NAT Rules used by a load balancer. Defining
11627     inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT
11628     pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are
11629     associated with individual virtual machines cannot reference an Inbound NAT pool. They have to
11630     reference individual inbound NAT rules.
11631    :type inbound_nat_rules: list[~azure.mgmt.network.v2020_04_01.models.InboundNatRule]
11632    :param inbound_nat_pools: Defines an external port range for inbound NAT to a single backend
11633     port on NICs associated with a load balancer. Inbound NAT rules are created automatically for
11634     each NIC associated with the Load Balancer using an external port from this range. Defining an
11635     Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules.
11636     Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with
11637     individual virtual machines cannot reference an inbound NAT pool. They have to reference
11638     individual inbound NAT rules.
11639    :type inbound_nat_pools: list[~azure.mgmt.network.v2020_04_01.models.InboundNatPool]
11640    :param outbound_rules: The outbound rules.
11641    :type outbound_rules: list[~azure.mgmt.network.v2020_04_01.models.OutboundRule]
11642    :ivar resource_guid: The resource GUID property of the load balancer resource.
11643    :vartype resource_guid: str
11644    :ivar provisioning_state: The provisioning state of the load balancer resource. Possible values
11645     include: "Succeeded", "Updating", "Deleting", "Failed".
11646    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
11647    """
11648
11649    _validation = {
11650        'name': {'readonly': True},
11651        'type': {'readonly': True},
11652        'etag': {'readonly': True},
11653        'resource_guid': {'readonly': True},
11654        'provisioning_state': {'readonly': True},
11655    }
11656
11657    _attribute_map = {
11658        'id': {'key': 'id', 'type': 'str'},
11659        'name': {'key': 'name', 'type': 'str'},
11660        'type': {'key': 'type', 'type': 'str'},
11661        'location': {'key': 'location', 'type': 'str'},
11662        'tags': {'key': 'tags', 'type': '{str}'},
11663        'sku': {'key': 'sku', 'type': 'LoadBalancerSku'},
11664        'etag': {'key': 'etag', 'type': 'str'},
11665        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[FrontendIPConfiguration]'},
11666        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[BackendAddressPool]'},
11667        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[LoadBalancingRule]'},
11668        'probes': {'key': 'properties.probes', 'type': '[Probe]'},
11669        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[InboundNatRule]'},
11670        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[InboundNatPool]'},
11671        'outbound_rules': {'key': 'properties.outboundRules', 'type': '[OutboundRule]'},
11672        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
11673        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11674    }
11675
11676    def __init__(
11677        self,
11678        *,
11679        id: Optional[str] = None,
11680        location: Optional[str] = None,
11681        tags: Optional[Dict[str, str]] = None,
11682        sku: Optional["LoadBalancerSku"] = None,
11683        frontend_ip_configurations: Optional[List["FrontendIPConfiguration"]] = None,
11684        backend_address_pools: Optional[List["BackendAddressPool"]] = None,
11685        load_balancing_rules: Optional[List["LoadBalancingRule"]] = None,
11686        probes: Optional[List["Probe"]] = None,
11687        inbound_nat_rules: Optional[List["InboundNatRule"]] = None,
11688        inbound_nat_pools: Optional[List["InboundNatPool"]] = None,
11689        outbound_rules: Optional[List["OutboundRule"]] = None,
11690        **kwargs
11691    ):
11692        super(LoadBalancer, self).__init__(id=id, location=location, tags=tags, **kwargs)
11693        self.sku = sku
11694        self.etag = None
11695        self.frontend_ip_configurations = frontend_ip_configurations
11696        self.backend_address_pools = backend_address_pools
11697        self.load_balancing_rules = load_balancing_rules
11698        self.probes = probes
11699        self.inbound_nat_rules = inbound_nat_rules
11700        self.inbound_nat_pools = inbound_nat_pools
11701        self.outbound_rules = outbound_rules
11702        self.resource_guid = None
11703        self.provisioning_state = None
11704
11705
11706class LoadBalancerBackendAddress(msrest.serialization.Model):
11707    """Load balancer backend addresses.
11708
11709    Variables are only populated by the server, and will be ignored when sending a request.
11710
11711    :param name: Name of the backend address.
11712    :type name: str
11713    :param virtual_network: Reference to an existing virtual network.
11714    :type virtual_network: ~azure.mgmt.network.v2020_04_01.models.SubResource
11715    :param ip_address: IP Address belonging to the referenced virtual network.
11716    :type ip_address: str
11717    :ivar network_interface_ip_configuration: Reference to IP address defined in network
11718     interfaces.
11719    :vartype network_interface_ip_configuration: ~azure.mgmt.network.v2020_04_01.models.SubResource
11720    """
11721
11722    _validation = {
11723        'network_interface_ip_configuration': {'readonly': True},
11724    }
11725
11726    _attribute_map = {
11727        'name': {'key': 'name', 'type': 'str'},
11728        'virtual_network': {'key': 'properties.virtualNetwork', 'type': 'SubResource'},
11729        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
11730        'network_interface_ip_configuration': {'key': 'properties.networkInterfaceIPConfiguration', 'type': 'SubResource'},
11731    }
11732
11733    def __init__(
11734        self,
11735        *,
11736        name: Optional[str] = None,
11737        virtual_network: Optional["SubResource"] = None,
11738        ip_address: Optional[str] = None,
11739        **kwargs
11740    ):
11741        super(LoadBalancerBackendAddress, self).__init__(**kwargs)
11742        self.name = name
11743        self.virtual_network = virtual_network
11744        self.ip_address = ip_address
11745        self.network_interface_ip_configuration = None
11746
11747
11748class LoadBalancerBackendAddressPoolListResult(msrest.serialization.Model):
11749    """Response for ListBackendAddressPool API service call.
11750
11751    Variables are only populated by the server, and will be ignored when sending a request.
11752
11753    :param value: A list of backend address pools in a load balancer.
11754    :type value: list[~azure.mgmt.network.v2020_04_01.models.BackendAddressPool]
11755    :ivar next_link: The URL to get the next set of results.
11756    :vartype next_link: str
11757    """
11758
11759    _validation = {
11760        'next_link': {'readonly': True},
11761    }
11762
11763    _attribute_map = {
11764        'value': {'key': 'value', 'type': '[BackendAddressPool]'},
11765        'next_link': {'key': 'nextLink', 'type': 'str'},
11766    }
11767
11768    def __init__(
11769        self,
11770        *,
11771        value: Optional[List["BackendAddressPool"]] = None,
11772        **kwargs
11773    ):
11774        super(LoadBalancerBackendAddressPoolListResult, self).__init__(**kwargs)
11775        self.value = value
11776        self.next_link = None
11777
11778
11779class LoadBalancerFrontendIPConfigurationListResult(msrest.serialization.Model):
11780    """Response for ListFrontendIPConfiguration API service call.
11781
11782    Variables are only populated by the server, and will be ignored when sending a request.
11783
11784    :param value: A list of frontend IP configurations in a load balancer.
11785    :type value: list[~azure.mgmt.network.v2020_04_01.models.FrontendIPConfiguration]
11786    :ivar next_link: The URL to get the next set of results.
11787    :vartype next_link: str
11788    """
11789
11790    _validation = {
11791        'next_link': {'readonly': True},
11792    }
11793
11794    _attribute_map = {
11795        'value': {'key': 'value', 'type': '[FrontendIPConfiguration]'},
11796        'next_link': {'key': 'nextLink', 'type': 'str'},
11797    }
11798
11799    def __init__(
11800        self,
11801        *,
11802        value: Optional[List["FrontendIPConfiguration"]] = None,
11803        **kwargs
11804    ):
11805        super(LoadBalancerFrontendIPConfigurationListResult, self).__init__(**kwargs)
11806        self.value = value
11807        self.next_link = None
11808
11809
11810class LoadBalancerListResult(msrest.serialization.Model):
11811    """Response for ListLoadBalancers API service call.
11812
11813    Variables are only populated by the server, and will be ignored when sending a request.
11814
11815    :param value: A list of load balancers in a resource group.
11816    :type value: list[~azure.mgmt.network.v2020_04_01.models.LoadBalancer]
11817    :ivar next_link: The URL to get the next set of results.
11818    :vartype next_link: str
11819    """
11820
11821    _validation = {
11822        'next_link': {'readonly': True},
11823    }
11824
11825    _attribute_map = {
11826        'value': {'key': 'value', 'type': '[LoadBalancer]'},
11827        'next_link': {'key': 'nextLink', 'type': 'str'},
11828    }
11829
11830    def __init__(
11831        self,
11832        *,
11833        value: Optional[List["LoadBalancer"]] = None,
11834        **kwargs
11835    ):
11836        super(LoadBalancerListResult, self).__init__(**kwargs)
11837        self.value = value
11838        self.next_link = None
11839
11840
11841class LoadBalancerLoadBalancingRuleListResult(msrest.serialization.Model):
11842    """Response for ListLoadBalancingRule API service call.
11843
11844    Variables are only populated by the server, and will be ignored when sending a request.
11845
11846    :param value: A list of load balancing rules in a load balancer.
11847    :type value: list[~azure.mgmt.network.v2020_04_01.models.LoadBalancingRule]
11848    :ivar next_link: The URL to get the next set of results.
11849    :vartype next_link: str
11850    """
11851
11852    _validation = {
11853        'next_link': {'readonly': True},
11854    }
11855
11856    _attribute_map = {
11857        'value': {'key': 'value', 'type': '[LoadBalancingRule]'},
11858        'next_link': {'key': 'nextLink', 'type': 'str'},
11859    }
11860
11861    def __init__(
11862        self,
11863        *,
11864        value: Optional[List["LoadBalancingRule"]] = None,
11865        **kwargs
11866    ):
11867        super(LoadBalancerLoadBalancingRuleListResult, self).__init__(**kwargs)
11868        self.value = value
11869        self.next_link = None
11870
11871
11872class LoadBalancerOutboundRuleListResult(msrest.serialization.Model):
11873    """Response for ListOutboundRule API service call.
11874
11875    Variables are only populated by the server, and will be ignored when sending a request.
11876
11877    :param value: A list of outbound rules in a load balancer.
11878    :type value: list[~azure.mgmt.network.v2020_04_01.models.OutboundRule]
11879    :ivar next_link: The URL to get the next set of results.
11880    :vartype next_link: str
11881    """
11882
11883    _validation = {
11884        'next_link': {'readonly': True},
11885    }
11886
11887    _attribute_map = {
11888        'value': {'key': 'value', 'type': '[OutboundRule]'},
11889        'next_link': {'key': 'nextLink', 'type': 'str'},
11890    }
11891
11892    def __init__(
11893        self,
11894        *,
11895        value: Optional[List["OutboundRule"]] = None,
11896        **kwargs
11897    ):
11898        super(LoadBalancerOutboundRuleListResult, self).__init__(**kwargs)
11899        self.value = value
11900        self.next_link = None
11901
11902
11903class LoadBalancerProbeListResult(msrest.serialization.Model):
11904    """Response for ListProbe API service call.
11905
11906    Variables are only populated by the server, and will be ignored when sending a request.
11907
11908    :param value: A list of probes in a load balancer.
11909    :type value: list[~azure.mgmt.network.v2020_04_01.models.Probe]
11910    :ivar next_link: The URL to get the next set of results.
11911    :vartype next_link: str
11912    """
11913
11914    _validation = {
11915        'next_link': {'readonly': True},
11916    }
11917
11918    _attribute_map = {
11919        'value': {'key': 'value', 'type': '[Probe]'},
11920        'next_link': {'key': 'nextLink', 'type': 'str'},
11921    }
11922
11923    def __init__(
11924        self,
11925        *,
11926        value: Optional[List["Probe"]] = None,
11927        **kwargs
11928    ):
11929        super(LoadBalancerProbeListResult, self).__init__(**kwargs)
11930        self.value = value
11931        self.next_link = None
11932
11933
11934class LoadBalancerSku(msrest.serialization.Model):
11935    """SKU of a load balancer.
11936
11937    :param name: Name of a load balancer SKU. Possible values include: "Basic", "Standard".
11938    :type name: str or ~azure.mgmt.network.v2020_04_01.models.LoadBalancerSkuName
11939    """
11940
11941    _attribute_map = {
11942        'name': {'key': 'name', 'type': 'str'},
11943    }
11944
11945    def __init__(
11946        self,
11947        *,
11948        name: Optional[Union[str, "LoadBalancerSkuName"]] = None,
11949        **kwargs
11950    ):
11951        super(LoadBalancerSku, self).__init__(**kwargs)
11952        self.name = name
11953
11954
11955class LoadBalancingRule(SubResource):
11956    """A load balancing rule for a load balancer.
11957
11958    Variables are only populated by the server, and will be ignored when sending a request.
11959
11960    :param id: Resource ID.
11961    :type id: str
11962    :param name: The name of the resource that is unique within the set of load balancing rules
11963     used by the load balancer. This name can be used to access the resource.
11964    :type name: str
11965    :ivar etag: A unique read-only string that changes whenever the resource is updated.
11966    :vartype etag: str
11967    :ivar type: Type of the resource.
11968    :vartype type: str
11969    :param frontend_ip_configuration: A reference to frontend IP addresses.
11970    :type frontend_ip_configuration: ~azure.mgmt.network.v2020_04_01.models.SubResource
11971    :param backend_address_pool: A reference to a pool of DIPs. Inbound traffic is randomly load
11972     balanced across IPs in the backend IPs.
11973    :type backend_address_pool: ~azure.mgmt.network.v2020_04_01.models.SubResource
11974    :param probe: The reference to the load balancer probe used by the load balancing rule.
11975    :type probe: ~azure.mgmt.network.v2020_04_01.models.SubResource
11976    :param protocol: The reference to the transport protocol used by the load balancing rule.
11977     Possible values include: "Udp", "Tcp", "All".
11978    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.TransportProtocol
11979    :param load_distribution: The load distribution policy for this rule. Possible values include:
11980     "Default", "SourceIP", "SourceIPProtocol".
11981    :type load_distribution: str or ~azure.mgmt.network.v2020_04_01.models.LoadDistribution
11982    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
11983     unique within the Load Balancer. Acceptable values are between 0 and 65534. Note that value 0
11984     enables "Any Port".
11985    :type frontend_port: int
11986    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
11987     are between 0 and 65535. Note that value 0 enables "Any Port".
11988    :type backend_port: int
11989    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
11990     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
11991     protocol is set to TCP.
11992    :type idle_timeout_in_minutes: int
11993    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
11994     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
11995     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
11996     after you create the endpoint.
11997    :type enable_floating_ip: bool
11998    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
11999     connection termination. This element is only used when the protocol is set to TCP.
12000    :type enable_tcp_reset: bool
12001    :param disable_outbound_snat: Configures SNAT for the VMs in the backend pool to use the
12002     publicIP address specified in the frontend of the load balancing rule.
12003    :type disable_outbound_snat: bool
12004    :ivar provisioning_state: The provisioning state of the load balancing rule resource. Possible
12005     values include: "Succeeded", "Updating", "Deleting", "Failed".
12006    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
12007    """
12008
12009    _validation = {
12010        'etag': {'readonly': True},
12011        'type': {'readonly': True},
12012        'provisioning_state': {'readonly': True},
12013    }
12014
12015    _attribute_map = {
12016        'id': {'key': 'id', 'type': 'str'},
12017        'name': {'key': 'name', 'type': 'str'},
12018        'etag': {'key': 'etag', 'type': 'str'},
12019        'type': {'key': 'type', 'type': 'str'},
12020        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
12021        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
12022        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
12023        'protocol': {'key': 'properties.protocol', 'type': 'str'},
12024        'load_distribution': {'key': 'properties.loadDistribution', 'type': 'str'},
12025        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
12026        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
12027        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
12028        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
12029        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
12030        'disable_outbound_snat': {'key': 'properties.disableOutboundSnat', 'type': 'bool'},
12031        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
12032    }
12033
12034    def __init__(
12035        self,
12036        *,
12037        id: Optional[str] = None,
12038        name: Optional[str] = None,
12039        frontend_ip_configuration: Optional["SubResource"] = None,
12040        backend_address_pool: Optional["SubResource"] = None,
12041        probe: Optional["SubResource"] = None,
12042        protocol: Optional[Union[str, "TransportProtocol"]] = None,
12043        load_distribution: Optional[Union[str, "LoadDistribution"]] = None,
12044        frontend_port: Optional[int] = None,
12045        backend_port: Optional[int] = None,
12046        idle_timeout_in_minutes: Optional[int] = None,
12047        enable_floating_ip: Optional[bool] = None,
12048        enable_tcp_reset: Optional[bool] = None,
12049        disable_outbound_snat: Optional[bool] = None,
12050        **kwargs
12051    ):
12052        super(LoadBalancingRule, self).__init__(id=id, **kwargs)
12053        self.name = name
12054        self.etag = None
12055        self.type = None
12056        self.frontend_ip_configuration = frontend_ip_configuration
12057        self.backend_address_pool = backend_address_pool
12058        self.probe = probe
12059        self.protocol = protocol
12060        self.load_distribution = load_distribution
12061        self.frontend_port = frontend_port
12062        self.backend_port = backend_port
12063        self.idle_timeout_in_minutes = idle_timeout_in_minutes
12064        self.enable_floating_ip = enable_floating_ip
12065        self.enable_tcp_reset = enable_tcp_reset
12066        self.disable_outbound_snat = disable_outbound_snat
12067        self.provisioning_state = None
12068
12069
12070class LocalNetworkGateway(Resource):
12071    """A common class for general resource information.
12072
12073    Variables are only populated by the server, and will be ignored when sending a request.
12074
12075    :param id: Resource ID.
12076    :type id: str
12077    :ivar name: Resource name.
12078    :vartype name: str
12079    :ivar type: Resource type.
12080    :vartype type: str
12081    :param location: Resource location.
12082    :type location: str
12083    :param tags: A set of tags. Resource tags.
12084    :type tags: dict[str, str]
12085    :ivar etag: A unique read-only string that changes whenever the resource is updated.
12086    :vartype etag: str
12087    :param local_network_address_space: Local network site address space.
12088    :type local_network_address_space: ~azure.mgmt.network.v2020_04_01.models.AddressSpace
12089    :param gateway_ip_address: IP address of local network gateway.
12090    :type gateway_ip_address: str
12091    :param fqdn: FQDN of local network gateway.
12092    :type fqdn: str
12093    :param bgp_settings: Local network gateway's BGP speaker settings.
12094    :type bgp_settings: ~azure.mgmt.network.v2020_04_01.models.BgpSettings
12095    :ivar resource_guid: The resource GUID property of the local network gateway resource.
12096    :vartype resource_guid: str
12097    :ivar provisioning_state: The provisioning state of the local network gateway resource.
12098     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
12099    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
12100    """
12101
12102    _validation = {
12103        'name': {'readonly': True},
12104        'type': {'readonly': True},
12105        'etag': {'readonly': True},
12106        'resource_guid': {'readonly': True},
12107        'provisioning_state': {'readonly': True},
12108    }
12109
12110    _attribute_map = {
12111        'id': {'key': 'id', 'type': 'str'},
12112        'name': {'key': 'name', 'type': 'str'},
12113        'type': {'key': 'type', 'type': 'str'},
12114        'location': {'key': 'location', 'type': 'str'},
12115        'tags': {'key': 'tags', 'type': '{str}'},
12116        'etag': {'key': 'etag', 'type': 'str'},
12117        'local_network_address_space': {'key': 'properties.localNetworkAddressSpace', 'type': 'AddressSpace'},
12118        'gateway_ip_address': {'key': 'properties.gatewayIpAddress', 'type': 'str'},
12119        'fqdn': {'key': 'properties.fqdn', 'type': 'str'},
12120        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
12121        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
12122        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
12123    }
12124
12125    def __init__(
12126        self,
12127        *,
12128        id: Optional[str] = None,
12129        location: Optional[str] = None,
12130        tags: Optional[Dict[str, str]] = None,
12131        local_network_address_space: Optional["AddressSpace"] = None,
12132        gateway_ip_address: Optional[str] = None,
12133        fqdn: Optional[str] = None,
12134        bgp_settings: Optional["BgpSettings"] = None,
12135        **kwargs
12136    ):
12137        super(LocalNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
12138        self.etag = None
12139        self.local_network_address_space = local_network_address_space
12140        self.gateway_ip_address = gateway_ip_address
12141        self.fqdn = fqdn
12142        self.bgp_settings = bgp_settings
12143        self.resource_guid = None
12144        self.provisioning_state = None
12145
12146
12147class LocalNetworkGatewayListResult(msrest.serialization.Model):
12148    """Response for ListLocalNetworkGateways API service call.
12149
12150    Variables are only populated by the server, and will be ignored when sending a request.
12151
12152    :param value: A list of local network gateways that exists in a resource group.
12153    :type value: list[~azure.mgmt.network.v2020_04_01.models.LocalNetworkGateway]
12154    :ivar next_link: The URL to get the next set of results.
12155    :vartype next_link: str
12156    """
12157
12158    _validation = {
12159        'next_link': {'readonly': True},
12160    }
12161
12162    _attribute_map = {
12163        'value': {'key': 'value', 'type': '[LocalNetworkGateway]'},
12164        'next_link': {'key': 'nextLink', 'type': 'str'},
12165    }
12166
12167    def __init__(
12168        self,
12169        *,
12170        value: Optional[List["LocalNetworkGateway"]] = None,
12171        **kwargs
12172    ):
12173        super(LocalNetworkGatewayListResult, self).__init__(**kwargs)
12174        self.value = value
12175        self.next_link = None
12176
12177
12178class LogSpecification(msrest.serialization.Model):
12179    """Description of logging specification.
12180
12181    :param name: The name of the specification.
12182    :type name: str
12183    :param display_name: The display name of the specification.
12184    :type display_name: str
12185    :param blob_duration: Duration of the blob.
12186    :type blob_duration: str
12187    """
12188
12189    _attribute_map = {
12190        'name': {'key': 'name', 'type': 'str'},
12191        'display_name': {'key': 'displayName', 'type': 'str'},
12192        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
12193    }
12194
12195    def __init__(
12196        self,
12197        *,
12198        name: Optional[str] = None,
12199        display_name: Optional[str] = None,
12200        blob_duration: Optional[str] = None,
12201        **kwargs
12202    ):
12203        super(LogSpecification, self).__init__(**kwargs)
12204        self.name = name
12205        self.display_name = display_name
12206        self.blob_duration = blob_duration
12207
12208
12209class ManagedRuleGroupOverride(msrest.serialization.Model):
12210    """Defines a managed rule group override setting.
12211
12212    All required parameters must be populated in order to send to Azure.
12213
12214    :param rule_group_name: Required. The managed rule group to override.
12215    :type rule_group_name: str
12216    :param rules: List of rules that will be disabled. If none specified, all rules in the group
12217     will be disabled.
12218    :type rules: list[~azure.mgmt.network.v2020_04_01.models.ManagedRuleOverride]
12219    """
12220
12221    _validation = {
12222        'rule_group_name': {'required': True},
12223    }
12224
12225    _attribute_map = {
12226        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
12227        'rules': {'key': 'rules', 'type': '[ManagedRuleOverride]'},
12228    }
12229
12230    def __init__(
12231        self,
12232        *,
12233        rule_group_name: str,
12234        rules: Optional[List["ManagedRuleOverride"]] = None,
12235        **kwargs
12236    ):
12237        super(ManagedRuleGroupOverride, self).__init__(**kwargs)
12238        self.rule_group_name = rule_group_name
12239        self.rules = rules
12240
12241
12242class ManagedRuleOverride(msrest.serialization.Model):
12243    """Defines a managed rule group override setting.
12244
12245    All required parameters must be populated in order to send to Azure.
12246
12247    :param rule_id: Required. Identifier for the managed rule.
12248    :type rule_id: str
12249    :param state: The state of the managed rule. Defaults to Disabled if not specified. Possible
12250     values include: "Disabled".
12251    :type state: str or ~azure.mgmt.network.v2020_04_01.models.ManagedRuleEnabledState
12252    """
12253
12254    _validation = {
12255        'rule_id': {'required': True},
12256    }
12257
12258    _attribute_map = {
12259        'rule_id': {'key': 'ruleId', 'type': 'str'},
12260        'state': {'key': 'state', 'type': 'str'},
12261    }
12262
12263    def __init__(
12264        self,
12265        *,
12266        rule_id: str,
12267        state: Optional[Union[str, "ManagedRuleEnabledState"]] = None,
12268        **kwargs
12269    ):
12270        super(ManagedRuleOverride, self).__init__(**kwargs)
12271        self.rule_id = rule_id
12272        self.state = state
12273
12274
12275class ManagedRulesDefinition(msrest.serialization.Model):
12276    """Allow to exclude some variable satisfy the condition for the WAF check.
12277
12278    All required parameters must be populated in order to send to Azure.
12279
12280    :param exclusions: The Exclusions that are applied on the policy.
12281    :type exclusions: list[~azure.mgmt.network.v2020_04_01.models.OwaspCrsExclusionEntry]
12282    :param managed_rule_sets: Required. The managed rule sets that are associated with the policy.
12283    :type managed_rule_sets: list[~azure.mgmt.network.v2020_04_01.models.ManagedRuleSet]
12284    """
12285
12286    _validation = {
12287        'managed_rule_sets': {'required': True},
12288    }
12289
12290    _attribute_map = {
12291        'exclusions': {'key': 'exclusions', 'type': '[OwaspCrsExclusionEntry]'},
12292        'managed_rule_sets': {'key': 'managedRuleSets', 'type': '[ManagedRuleSet]'},
12293    }
12294
12295    def __init__(
12296        self,
12297        *,
12298        managed_rule_sets: List["ManagedRuleSet"],
12299        exclusions: Optional[List["OwaspCrsExclusionEntry"]] = None,
12300        **kwargs
12301    ):
12302        super(ManagedRulesDefinition, self).__init__(**kwargs)
12303        self.exclusions = exclusions
12304        self.managed_rule_sets = managed_rule_sets
12305
12306
12307class ManagedRuleSet(msrest.serialization.Model):
12308    """Defines a managed rule set.
12309
12310    All required parameters must be populated in order to send to Azure.
12311
12312    :param rule_set_type: Required. Defines the rule set type to use.
12313    :type rule_set_type: str
12314    :param rule_set_version: Required. Defines the version of the rule set to use.
12315    :type rule_set_version: str
12316    :param rule_group_overrides: Defines the rule group overrides to apply to the rule set.
12317    :type rule_group_overrides:
12318     list[~azure.mgmt.network.v2020_04_01.models.ManagedRuleGroupOverride]
12319    """
12320
12321    _validation = {
12322        'rule_set_type': {'required': True},
12323        'rule_set_version': {'required': True},
12324    }
12325
12326    _attribute_map = {
12327        'rule_set_type': {'key': 'ruleSetType', 'type': 'str'},
12328        'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'},
12329        'rule_group_overrides': {'key': 'ruleGroupOverrides', 'type': '[ManagedRuleGroupOverride]'},
12330    }
12331
12332    def __init__(
12333        self,
12334        *,
12335        rule_set_type: str,
12336        rule_set_version: str,
12337        rule_group_overrides: Optional[List["ManagedRuleGroupOverride"]] = None,
12338        **kwargs
12339    ):
12340        super(ManagedRuleSet, self).__init__(**kwargs)
12341        self.rule_set_type = rule_set_type
12342        self.rule_set_version = rule_set_version
12343        self.rule_group_overrides = rule_group_overrides
12344
12345
12346class ManagedServiceIdentity(msrest.serialization.Model):
12347    """Identity for the resource.
12348
12349    Variables are only populated by the server, and will be ignored when sending a request.
12350
12351    :ivar principal_id: The principal id of the system assigned identity. This property will only
12352     be provided for a system assigned identity.
12353    :vartype principal_id: str
12354    :ivar tenant_id: The tenant id of the system assigned identity. This property will only be
12355     provided for a system assigned identity.
12356    :vartype tenant_id: str
12357    :param type: The type of identity used for the resource. The type 'SystemAssigned,
12358     UserAssigned' includes both an implicitly created identity and a set of user assigned
12359     identities. The type 'None' will remove any identities from the virtual machine. Possible
12360     values include: "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned", "None".
12361    :type type: str or ~azure.mgmt.network.v2020_04_01.models.ResourceIdentityType
12362    :param user_assigned_identities: The list of user identities associated with resource. The user
12363     identity dictionary key references will be ARM resource ids in the form:
12364     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
12365    :type user_assigned_identities: dict[str,
12366     ~azure.mgmt.network.v2020_04_01.models.Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties]
12367    """
12368
12369    _validation = {
12370        'principal_id': {'readonly': True},
12371        'tenant_id': {'readonly': True},
12372    }
12373
12374    _attribute_map = {
12375        'principal_id': {'key': 'principalId', 'type': 'str'},
12376        'tenant_id': {'key': 'tenantId', 'type': 'str'},
12377        'type': {'key': 'type', 'type': 'str'},
12378        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties}'},
12379    }
12380
12381    def __init__(
12382        self,
12383        *,
12384        type: Optional[Union[str, "ResourceIdentityType"]] = None,
12385        user_assigned_identities: Optional[Dict[str, "Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None,
12386        **kwargs
12387    ):
12388        super(ManagedServiceIdentity, self).__init__(**kwargs)
12389        self.principal_id = None
12390        self.tenant_id = None
12391        self.type = type
12392        self.user_assigned_identities = user_assigned_identities
12393
12394
12395class MatchCondition(msrest.serialization.Model):
12396    """Define match conditions.
12397
12398    All required parameters must be populated in order to send to Azure.
12399
12400    :param match_variables: Required. List of match variables.
12401    :type match_variables: list[~azure.mgmt.network.v2020_04_01.models.MatchVariable]
12402    :param operator: Required. The operator to be matched. Possible values include: "IPMatch",
12403     "Equal", "Contains", "LessThan", "GreaterThan", "LessThanOrEqual", "GreaterThanOrEqual",
12404     "BeginsWith", "EndsWith", "Regex", "GeoMatch".
12405    :type operator: str or ~azure.mgmt.network.v2020_04_01.models.WebApplicationFirewallOperator
12406    :param negation_conditon: Whether this is negate condition or not.
12407    :type negation_conditon: bool
12408    :param match_values: Required. Match value.
12409    :type match_values: list[str]
12410    :param transforms: List of transforms.
12411    :type transforms: list[str or
12412     ~azure.mgmt.network.v2020_04_01.models.WebApplicationFirewallTransform]
12413    """
12414
12415    _validation = {
12416        'match_variables': {'required': True},
12417        'operator': {'required': True},
12418        'match_values': {'required': True},
12419    }
12420
12421    _attribute_map = {
12422        'match_variables': {'key': 'matchVariables', 'type': '[MatchVariable]'},
12423        'operator': {'key': 'operator', 'type': 'str'},
12424        'negation_conditon': {'key': 'negationConditon', 'type': 'bool'},
12425        'match_values': {'key': 'matchValues', 'type': '[str]'},
12426        'transforms': {'key': 'transforms', 'type': '[str]'},
12427    }
12428
12429    def __init__(
12430        self,
12431        *,
12432        match_variables: List["MatchVariable"],
12433        operator: Union[str, "WebApplicationFirewallOperator"],
12434        match_values: List[str],
12435        negation_conditon: Optional[bool] = None,
12436        transforms: Optional[List[Union[str, "WebApplicationFirewallTransform"]]] = None,
12437        **kwargs
12438    ):
12439        super(MatchCondition, self).__init__(**kwargs)
12440        self.match_variables = match_variables
12441        self.operator = operator
12442        self.negation_conditon = negation_conditon
12443        self.match_values = match_values
12444        self.transforms = transforms
12445
12446
12447class MatchedRule(msrest.serialization.Model):
12448    """Matched rule.
12449
12450    :param rule_name: Name of the matched network security rule.
12451    :type rule_name: str
12452    :param action: The network traffic is allowed or denied. Possible values are 'Allow' and
12453     'Deny'.
12454    :type action: str
12455    """
12456
12457    _attribute_map = {
12458        'rule_name': {'key': 'ruleName', 'type': 'str'},
12459        'action': {'key': 'action', 'type': 'str'},
12460    }
12461
12462    def __init__(
12463        self,
12464        *,
12465        rule_name: Optional[str] = None,
12466        action: Optional[str] = None,
12467        **kwargs
12468    ):
12469        super(MatchedRule, self).__init__(**kwargs)
12470        self.rule_name = rule_name
12471        self.action = action
12472
12473
12474class MatchVariable(msrest.serialization.Model):
12475    """Define match variables.
12476
12477    All required parameters must be populated in order to send to Azure.
12478
12479    :param variable_name: Required. Match Variable. Possible values include: "RemoteAddr",
12480     "RequestMethod", "QueryString", "PostArgs", "RequestUri", "RequestHeaders", "RequestBody",
12481     "RequestCookies".
12482    :type variable_name: str or
12483     ~azure.mgmt.network.v2020_04_01.models.WebApplicationFirewallMatchVariable
12484    :param selector: The selector of match variable.
12485    :type selector: str
12486    """
12487
12488    _validation = {
12489        'variable_name': {'required': True},
12490    }
12491
12492    _attribute_map = {
12493        'variable_name': {'key': 'variableName', 'type': 'str'},
12494        'selector': {'key': 'selector', 'type': 'str'},
12495    }
12496
12497    def __init__(
12498        self,
12499        *,
12500        variable_name: Union[str, "WebApplicationFirewallMatchVariable"],
12501        selector: Optional[str] = None,
12502        **kwargs
12503    ):
12504        super(MatchVariable, self).__init__(**kwargs)
12505        self.variable_name = variable_name
12506        self.selector = selector
12507
12508
12509class MetricSpecification(msrest.serialization.Model):
12510    """Description of metrics specification.
12511
12512    :param name: The name of the metric.
12513    :type name: str
12514    :param display_name: The display name of the metric.
12515    :type display_name: str
12516    :param display_description: The description of the metric.
12517    :type display_description: str
12518    :param unit: Units the metric to be displayed in.
12519    :type unit: str
12520    :param aggregation_type: The aggregation type.
12521    :type aggregation_type: str
12522    :param availabilities: List of availability.
12523    :type availabilities: list[~azure.mgmt.network.v2020_04_01.models.Availability]
12524    :param enable_regional_mdm_account: Whether regional MDM account enabled.
12525    :type enable_regional_mdm_account: bool
12526    :param fill_gap_with_zero: Whether gaps would be filled with zeros.
12527    :type fill_gap_with_zero: bool
12528    :param metric_filter_pattern: Pattern for the filter of the metric.
12529    :type metric_filter_pattern: str
12530    :param dimensions: List of dimensions.
12531    :type dimensions: list[~azure.mgmt.network.v2020_04_01.models.Dimension]
12532    :param is_internal: Whether the metric is internal.
12533    :type is_internal: bool
12534    :param source_mdm_account: The source MDM account.
12535    :type source_mdm_account: str
12536    :param source_mdm_namespace: The source MDM namespace.
12537    :type source_mdm_namespace: str
12538    :param resource_id_dimension_name_override: The resource Id dimension name override.
12539    :type resource_id_dimension_name_override: str
12540    """
12541
12542    _attribute_map = {
12543        'name': {'key': 'name', 'type': 'str'},
12544        'display_name': {'key': 'displayName', 'type': 'str'},
12545        'display_description': {'key': 'displayDescription', 'type': 'str'},
12546        'unit': {'key': 'unit', 'type': 'str'},
12547        'aggregation_type': {'key': 'aggregationType', 'type': 'str'},
12548        'availabilities': {'key': 'availabilities', 'type': '[Availability]'},
12549        'enable_regional_mdm_account': {'key': 'enableRegionalMdmAccount', 'type': 'bool'},
12550        'fill_gap_with_zero': {'key': 'fillGapWithZero', 'type': 'bool'},
12551        'metric_filter_pattern': {'key': 'metricFilterPattern', 'type': 'str'},
12552        'dimensions': {'key': 'dimensions', 'type': '[Dimension]'},
12553        'is_internal': {'key': 'isInternal', 'type': 'bool'},
12554        'source_mdm_account': {'key': 'sourceMdmAccount', 'type': 'str'},
12555        'source_mdm_namespace': {'key': 'sourceMdmNamespace', 'type': 'str'},
12556        'resource_id_dimension_name_override': {'key': 'resourceIdDimensionNameOverride', 'type': 'str'},
12557    }
12558
12559    def __init__(
12560        self,
12561        *,
12562        name: Optional[str] = None,
12563        display_name: Optional[str] = None,
12564        display_description: Optional[str] = None,
12565        unit: Optional[str] = None,
12566        aggregation_type: Optional[str] = None,
12567        availabilities: Optional[List["Availability"]] = None,
12568        enable_regional_mdm_account: Optional[bool] = None,
12569        fill_gap_with_zero: Optional[bool] = None,
12570        metric_filter_pattern: Optional[str] = None,
12571        dimensions: Optional[List["Dimension"]] = None,
12572        is_internal: Optional[bool] = None,
12573        source_mdm_account: Optional[str] = None,
12574        source_mdm_namespace: Optional[str] = None,
12575        resource_id_dimension_name_override: Optional[str] = None,
12576        **kwargs
12577    ):
12578        super(MetricSpecification, self).__init__(**kwargs)
12579        self.name = name
12580        self.display_name = display_name
12581        self.display_description = display_description
12582        self.unit = unit
12583        self.aggregation_type = aggregation_type
12584        self.availabilities = availabilities
12585        self.enable_regional_mdm_account = enable_regional_mdm_account
12586        self.fill_gap_with_zero = fill_gap_with_zero
12587        self.metric_filter_pattern = metric_filter_pattern
12588        self.dimensions = dimensions
12589        self.is_internal = is_internal
12590        self.source_mdm_account = source_mdm_account
12591        self.source_mdm_namespace = source_mdm_namespace
12592        self.resource_id_dimension_name_override = resource_id_dimension_name_override
12593
12594
12595class NatGateway(Resource):
12596    """Nat Gateway resource.
12597
12598    Variables are only populated by the server, and will be ignored when sending a request.
12599
12600    :param id: Resource ID.
12601    :type id: str
12602    :ivar name: Resource name.
12603    :vartype name: str
12604    :ivar type: Resource type.
12605    :vartype type: str
12606    :param location: Resource location.
12607    :type location: str
12608    :param tags: A set of tags. Resource tags.
12609    :type tags: dict[str, str]
12610    :param sku: The nat gateway SKU.
12611    :type sku: ~azure.mgmt.network.v2020_04_01.models.NatGatewaySku
12612    :param zones: A list of availability zones denoting the zone in which Nat Gateway should be
12613     deployed.
12614    :type zones: list[str]
12615    :ivar etag: A unique read-only string that changes whenever the resource is updated.
12616    :vartype etag: str
12617    :param idle_timeout_in_minutes: The idle timeout of the nat gateway.
12618    :type idle_timeout_in_minutes: int
12619    :param public_ip_addresses: An array of public ip addresses associated with the nat gateway
12620     resource.
12621    :type public_ip_addresses: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
12622    :param public_ip_prefixes: An array of public ip prefixes associated with the nat gateway
12623     resource.
12624    :type public_ip_prefixes: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
12625    :ivar subnets: An array of references to the subnets using this nat gateway resource.
12626    :vartype subnets: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
12627    :ivar resource_guid: The resource GUID property of the NAT gateway resource.
12628    :vartype resource_guid: str
12629    :ivar provisioning_state: The provisioning state of the NAT gateway resource. Possible values
12630     include: "Succeeded", "Updating", "Deleting", "Failed".
12631    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
12632    """
12633
12634    _validation = {
12635        'name': {'readonly': True},
12636        'type': {'readonly': True},
12637        'etag': {'readonly': True},
12638        'subnets': {'readonly': True},
12639        'resource_guid': {'readonly': True},
12640        'provisioning_state': {'readonly': True},
12641    }
12642
12643    _attribute_map = {
12644        'id': {'key': 'id', 'type': 'str'},
12645        'name': {'key': 'name', 'type': 'str'},
12646        'type': {'key': 'type', 'type': 'str'},
12647        'location': {'key': 'location', 'type': 'str'},
12648        'tags': {'key': 'tags', 'type': '{str}'},
12649        'sku': {'key': 'sku', 'type': 'NatGatewaySku'},
12650        'zones': {'key': 'zones', 'type': '[str]'},
12651        'etag': {'key': 'etag', 'type': 'str'},
12652        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
12653        'public_ip_addresses': {'key': 'properties.publicIpAddresses', 'type': '[SubResource]'},
12654        'public_ip_prefixes': {'key': 'properties.publicIpPrefixes', 'type': '[SubResource]'},
12655        'subnets': {'key': 'properties.subnets', 'type': '[SubResource]'},
12656        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
12657        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
12658    }
12659
12660    def __init__(
12661        self,
12662        *,
12663        id: Optional[str] = None,
12664        location: Optional[str] = None,
12665        tags: Optional[Dict[str, str]] = None,
12666        sku: Optional["NatGatewaySku"] = None,
12667        zones: Optional[List[str]] = None,
12668        idle_timeout_in_minutes: Optional[int] = None,
12669        public_ip_addresses: Optional[List["SubResource"]] = None,
12670        public_ip_prefixes: Optional[List["SubResource"]] = None,
12671        **kwargs
12672    ):
12673        super(NatGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
12674        self.sku = sku
12675        self.zones = zones
12676        self.etag = None
12677        self.idle_timeout_in_minutes = idle_timeout_in_minutes
12678        self.public_ip_addresses = public_ip_addresses
12679        self.public_ip_prefixes = public_ip_prefixes
12680        self.subnets = None
12681        self.resource_guid = None
12682        self.provisioning_state = None
12683
12684
12685class NatGatewayListResult(msrest.serialization.Model):
12686    """Response for ListNatGateways API service call.
12687
12688    :param value: A list of Nat Gateways that exists in a resource group.
12689    :type value: list[~azure.mgmt.network.v2020_04_01.models.NatGateway]
12690    :param next_link: The URL to get the next set of results.
12691    :type next_link: str
12692    """
12693
12694    _attribute_map = {
12695        'value': {'key': 'value', 'type': '[NatGateway]'},
12696        'next_link': {'key': 'nextLink', 'type': 'str'},
12697    }
12698
12699    def __init__(
12700        self,
12701        *,
12702        value: Optional[List["NatGateway"]] = None,
12703        next_link: Optional[str] = None,
12704        **kwargs
12705    ):
12706        super(NatGatewayListResult, self).__init__(**kwargs)
12707        self.value = value
12708        self.next_link = next_link
12709
12710
12711class NatGatewaySku(msrest.serialization.Model):
12712    """SKU of nat gateway.
12713
12714    :param name: Name of Nat Gateway SKU. Possible values include: "Standard".
12715    :type name: str or ~azure.mgmt.network.v2020_04_01.models.NatGatewaySkuName
12716    """
12717
12718    _attribute_map = {
12719        'name': {'key': 'name', 'type': 'str'},
12720    }
12721
12722    def __init__(
12723        self,
12724        *,
12725        name: Optional[Union[str, "NatGatewaySkuName"]] = None,
12726        **kwargs
12727    ):
12728        super(NatGatewaySku, self).__init__(**kwargs)
12729        self.name = name
12730
12731
12732class NatRuleCondition(FirewallPolicyRuleCondition):
12733    """Rule condition of type nat.
12734
12735    All required parameters must be populated in order to send to Azure.
12736
12737    :param name: Name of the rule condition.
12738    :type name: str
12739    :param description: Description of the rule condition.
12740    :type description: str
12741    :param rule_condition_type: Required. Rule Condition Type.Constant filled by server.  Possible
12742     values include: "ApplicationRuleCondition", "NetworkRuleCondition", "NatRuleCondition".
12743    :type rule_condition_type: str or
12744     ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleConditionType
12745    :param ip_protocols: Array of FirewallPolicyRuleConditionNetworkProtocols.
12746    :type ip_protocols: list[str or
12747     ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleConditionNetworkProtocol]
12748    :param source_addresses: List of source IP addresses for this rule.
12749    :type source_addresses: list[str]
12750    :param destination_addresses: List of destination IP addresses or Service Tags.
12751    :type destination_addresses: list[str]
12752    :param destination_ports: List of destination ports.
12753    :type destination_ports: list[str]
12754    :param source_ip_groups: List of source IpGroups for this rule.
12755    :type source_ip_groups: list[str]
12756    """
12757
12758    _validation = {
12759        'rule_condition_type': {'required': True},
12760    }
12761
12762    _attribute_map = {
12763        'name': {'key': 'name', 'type': 'str'},
12764        'description': {'key': 'description', 'type': 'str'},
12765        'rule_condition_type': {'key': 'ruleConditionType', 'type': 'str'},
12766        'ip_protocols': {'key': 'ipProtocols', 'type': '[str]'},
12767        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
12768        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
12769        'destination_ports': {'key': 'destinationPorts', 'type': '[str]'},
12770        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
12771    }
12772
12773    def __init__(
12774        self,
12775        *,
12776        name: Optional[str] = None,
12777        description: Optional[str] = None,
12778        ip_protocols: Optional[List[Union[str, "FirewallPolicyRuleConditionNetworkProtocol"]]] = None,
12779        source_addresses: Optional[List[str]] = None,
12780        destination_addresses: Optional[List[str]] = None,
12781        destination_ports: Optional[List[str]] = None,
12782        source_ip_groups: Optional[List[str]] = None,
12783        **kwargs
12784    ):
12785        super(NatRuleCondition, self).__init__(name=name, description=description, **kwargs)
12786        self.rule_condition_type = 'NatRuleCondition'  # type: str
12787        self.ip_protocols = ip_protocols
12788        self.source_addresses = source_addresses
12789        self.destination_addresses = destination_addresses
12790        self.destination_ports = destination_ports
12791        self.source_ip_groups = source_ip_groups
12792
12793
12794class NetworkConfigurationDiagnosticParameters(msrest.serialization.Model):
12795    """Parameters to get network configuration diagnostic.
12796
12797    All required parameters must be populated in order to send to Azure.
12798
12799    :param target_resource_id: Required. The ID of the target resource to perform network
12800     configuration diagnostic. Valid options are VM, NetworkInterface, VMSS/NetworkInterface and
12801     Application Gateway.
12802    :type target_resource_id: str
12803    :param verbosity_level: Verbosity level. Possible values include: "Normal", "Minimum", "Full".
12804    :type verbosity_level: str or ~azure.mgmt.network.v2020_04_01.models.VerbosityLevel
12805    :param profiles: Required. List of network configuration diagnostic profiles.
12806    :type profiles:
12807     list[~azure.mgmt.network.v2020_04_01.models.NetworkConfigurationDiagnosticProfile]
12808    """
12809
12810    _validation = {
12811        'target_resource_id': {'required': True},
12812        'profiles': {'required': True},
12813    }
12814
12815    _attribute_map = {
12816        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
12817        'verbosity_level': {'key': 'verbosityLevel', 'type': 'str'},
12818        'profiles': {'key': 'profiles', 'type': '[NetworkConfigurationDiagnosticProfile]'},
12819    }
12820
12821    def __init__(
12822        self,
12823        *,
12824        target_resource_id: str,
12825        profiles: List["NetworkConfigurationDiagnosticProfile"],
12826        verbosity_level: Optional[Union[str, "VerbosityLevel"]] = None,
12827        **kwargs
12828    ):
12829        super(NetworkConfigurationDiagnosticParameters, self).__init__(**kwargs)
12830        self.target_resource_id = target_resource_id
12831        self.verbosity_level = verbosity_level
12832        self.profiles = profiles
12833
12834
12835class NetworkConfigurationDiagnosticProfile(msrest.serialization.Model):
12836    """Parameters to compare with network configuration.
12837
12838    All required parameters must be populated in order to send to Azure.
12839
12840    :param direction: Required. The direction of the traffic. Possible values include: "Inbound",
12841     "Outbound".
12842    :type direction: str or ~azure.mgmt.network.v2020_04_01.models.Direction
12843    :param protocol: Required. Protocol to be verified on. Accepted values are '*', TCP, UDP.
12844    :type protocol: str
12845    :param source: Required. Traffic source. Accepted values are '*', IP Address/CIDR, Service Tag.
12846    :type source: str
12847    :param destination: Required. Traffic destination. Accepted values are: '*', IP Address/CIDR,
12848     Service Tag.
12849    :type destination: str
12850    :param destination_port: Required. Traffic destination port. Accepted values are '*' and a
12851     single port in the range (0 - 65535).
12852    :type destination_port: str
12853    """
12854
12855    _validation = {
12856        'direction': {'required': True},
12857        'protocol': {'required': True},
12858        'source': {'required': True},
12859        'destination': {'required': True},
12860        'destination_port': {'required': True},
12861    }
12862
12863    _attribute_map = {
12864        'direction': {'key': 'direction', 'type': 'str'},
12865        'protocol': {'key': 'protocol', 'type': 'str'},
12866        'source': {'key': 'source', 'type': 'str'},
12867        'destination': {'key': 'destination', 'type': 'str'},
12868        'destination_port': {'key': 'destinationPort', 'type': 'str'},
12869    }
12870
12871    def __init__(
12872        self,
12873        *,
12874        direction: Union[str, "Direction"],
12875        protocol: str,
12876        source: str,
12877        destination: str,
12878        destination_port: str,
12879        **kwargs
12880    ):
12881        super(NetworkConfigurationDiagnosticProfile, self).__init__(**kwargs)
12882        self.direction = direction
12883        self.protocol = protocol
12884        self.source = source
12885        self.destination = destination
12886        self.destination_port = destination_port
12887
12888
12889class NetworkConfigurationDiagnosticResponse(msrest.serialization.Model):
12890    """Results of network configuration diagnostic on the target resource.
12891
12892    Variables are only populated by the server, and will be ignored when sending a request.
12893
12894    :ivar results: List of network configuration diagnostic results.
12895    :vartype results:
12896     list[~azure.mgmt.network.v2020_04_01.models.NetworkConfigurationDiagnosticResult]
12897    """
12898
12899    _validation = {
12900        'results': {'readonly': True},
12901    }
12902
12903    _attribute_map = {
12904        'results': {'key': 'results', 'type': '[NetworkConfigurationDiagnosticResult]'},
12905    }
12906
12907    def __init__(
12908        self,
12909        **kwargs
12910    ):
12911        super(NetworkConfigurationDiagnosticResponse, self).__init__(**kwargs)
12912        self.results = None
12913
12914
12915class NetworkConfigurationDiagnosticResult(msrest.serialization.Model):
12916    """Network configuration diagnostic result corresponded to provided traffic query.
12917
12918    :param profile: Network configuration diagnostic profile.
12919    :type profile: ~azure.mgmt.network.v2020_04_01.models.NetworkConfigurationDiagnosticProfile
12920    :param network_security_group_result: Network security group result.
12921    :type network_security_group_result:
12922     ~azure.mgmt.network.v2020_04_01.models.NetworkSecurityGroupResult
12923    """
12924
12925    _attribute_map = {
12926        'profile': {'key': 'profile', 'type': 'NetworkConfigurationDiagnosticProfile'},
12927        'network_security_group_result': {'key': 'networkSecurityGroupResult', 'type': 'NetworkSecurityGroupResult'},
12928    }
12929
12930    def __init__(
12931        self,
12932        *,
12933        profile: Optional["NetworkConfigurationDiagnosticProfile"] = None,
12934        network_security_group_result: Optional["NetworkSecurityGroupResult"] = None,
12935        **kwargs
12936    ):
12937        super(NetworkConfigurationDiagnosticResult, self).__init__(**kwargs)
12938        self.profile = profile
12939        self.network_security_group_result = network_security_group_result
12940
12941
12942class NetworkIntentPolicy(Resource):
12943    """Network Intent Policy resource.
12944
12945    Variables are only populated by the server, and will be ignored when sending a request.
12946
12947    :param id: Resource ID.
12948    :type id: str
12949    :ivar name: Resource name.
12950    :vartype name: str
12951    :ivar type: Resource type.
12952    :vartype type: str
12953    :param location: Resource location.
12954    :type location: str
12955    :param tags: A set of tags. Resource tags.
12956    :type tags: dict[str, str]
12957    :ivar etag: A unique read-only string that changes whenever the resource is updated.
12958    :vartype etag: str
12959    """
12960
12961    _validation = {
12962        'name': {'readonly': True},
12963        'type': {'readonly': True},
12964        'etag': {'readonly': True},
12965    }
12966
12967    _attribute_map = {
12968        'id': {'key': 'id', 'type': 'str'},
12969        'name': {'key': 'name', 'type': 'str'},
12970        'type': {'key': 'type', 'type': 'str'},
12971        'location': {'key': 'location', 'type': 'str'},
12972        'tags': {'key': 'tags', 'type': '{str}'},
12973        'etag': {'key': 'etag', 'type': 'str'},
12974    }
12975
12976    def __init__(
12977        self,
12978        *,
12979        id: Optional[str] = None,
12980        location: Optional[str] = None,
12981        tags: Optional[Dict[str, str]] = None,
12982        **kwargs
12983    ):
12984        super(NetworkIntentPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs)
12985        self.etag = None
12986
12987
12988class NetworkIntentPolicyConfiguration(msrest.serialization.Model):
12989    """Details of NetworkIntentPolicyConfiguration for PrepareNetworkPoliciesRequest.
12990
12991    :param network_intent_policy_name: The name of the Network Intent Policy for storing in target
12992     subscription.
12993    :type network_intent_policy_name: str
12994    :param source_network_intent_policy: Source network intent policy.
12995    :type source_network_intent_policy: ~azure.mgmt.network.v2020_04_01.models.NetworkIntentPolicy
12996    """
12997
12998    _attribute_map = {
12999        'network_intent_policy_name': {'key': 'networkIntentPolicyName', 'type': 'str'},
13000        'source_network_intent_policy': {'key': 'sourceNetworkIntentPolicy', 'type': 'NetworkIntentPolicy'},
13001    }
13002
13003    def __init__(
13004        self,
13005        *,
13006        network_intent_policy_name: Optional[str] = None,
13007        source_network_intent_policy: Optional["NetworkIntentPolicy"] = None,
13008        **kwargs
13009    ):
13010        super(NetworkIntentPolicyConfiguration, self).__init__(**kwargs)
13011        self.network_intent_policy_name = network_intent_policy_name
13012        self.source_network_intent_policy = source_network_intent_policy
13013
13014
13015class NetworkInterface(Resource):
13016    """A network interface in a resource group.
13017
13018    Variables are only populated by the server, and will be ignored when sending a request.
13019
13020    :param id: Resource ID.
13021    :type id: str
13022    :ivar name: Resource name.
13023    :vartype name: str
13024    :ivar type: Resource type.
13025    :vartype type: str
13026    :param location: Resource location.
13027    :type location: str
13028    :param tags: A set of tags. Resource tags.
13029    :type tags: dict[str, str]
13030    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13031    :vartype etag: str
13032    :ivar virtual_machine: The reference to a virtual machine.
13033    :vartype virtual_machine: ~azure.mgmt.network.v2020_04_01.models.SubResource
13034    :param network_security_group: The reference to the NetworkSecurityGroup resource.
13035    :type network_security_group: ~azure.mgmt.network.v2020_04_01.models.NetworkSecurityGroup
13036    :ivar private_endpoint: A reference to the private endpoint to which the network interface is
13037     linked.
13038    :vartype private_endpoint: ~azure.mgmt.network.v2020_04_01.models.PrivateEndpoint
13039    :param ip_configurations: A list of IPConfigurations of the network interface.
13040    :type ip_configurations:
13041     list[~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceIPConfiguration]
13042    :ivar tap_configurations: A list of TapConfigurations of the network interface.
13043    :vartype tap_configurations:
13044     list[~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceTapConfiguration]
13045    :param dns_settings: The DNS settings in network interface.
13046    :type dns_settings: ~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceDnsSettings
13047    :ivar mac_address: The MAC address of the network interface.
13048    :vartype mac_address: str
13049    :ivar primary: Whether this is a primary network interface on a virtual machine.
13050    :vartype primary: bool
13051    :param enable_accelerated_networking: If the network interface is accelerated networking
13052     enabled.
13053    :type enable_accelerated_networking: bool
13054    :param enable_ip_forwarding: Indicates whether IP forwarding is enabled on this network
13055     interface.
13056    :type enable_ip_forwarding: bool
13057    :ivar hosted_workloads: A list of references to linked BareMetal resources.
13058    :vartype hosted_workloads: list[str]
13059    :ivar resource_guid: The resource GUID property of the network interface resource.
13060    :vartype resource_guid: str
13061    :ivar provisioning_state: The provisioning state of the network interface resource. Possible
13062     values include: "Succeeded", "Updating", "Deleting", "Failed".
13063    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
13064    """
13065
13066    _validation = {
13067        'name': {'readonly': True},
13068        'type': {'readonly': True},
13069        'etag': {'readonly': True},
13070        'virtual_machine': {'readonly': True},
13071        'private_endpoint': {'readonly': True},
13072        'tap_configurations': {'readonly': True},
13073        'mac_address': {'readonly': True},
13074        'primary': {'readonly': True},
13075        'hosted_workloads': {'readonly': True},
13076        'resource_guid': {'readonly': True},
13077        'provisioning_state': {'readonly': True},
13078    }
13079
13080    _attribute_map = {
13081        'id': {'key': 'id', 'type': 'str'},
13082        'name': {'key': 'name', 'type': 'str'},
13083        'type': {'key': 'type', 'type': 'str'},
13084        'location': {'key': 'location', 'type': 'str'},
13085        'tags': {'key': 'tags', 'type': '{str}'},
13086        'etag': {'key': 'etag', 'type': 'str'},
13087        'virtual_machine': {'key': 'properties.virtualMachine', 'type': 'SubResource'},
13088        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
13089        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpoint'},
13090        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
13091        'tap_configurations': {'key': 'properties.tapConfigurations', 'type': '[NetworkInterfaceTapConfiguration]'},
13092        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'NetworkInterfaceDnsSettings'},
13093        'mac_address': {'key': 'properties.macAddress', 'type': 'str'},
13094        'primary': {'key': 'properties.primary', 'type': 'bool'},
13095        'enable_accelerated_networking': {'key': 'properties.enableAcceleratedNetworking', 'type': 'bool'},
13096        'enable_ip_forwarding': {'key': 'properties.enableIPForwarding', 'type': 'bool'},
13097        'hosted_workloads': {'key': 'properties.hostedWorkloads', 'type': '[str]'},
13098        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
13099        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13100    }
13101
13102    def __init__(
13103        self,
13104        *,
13105        id: Optional[str] = None,
13106        location: Optional[str] = None,
13107        tags: Optional[Dict[str, str]] = None,
13108        network_security_group: Optional["NetworkSecurityGroup"] = None,
13109        ip_configurations: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
13110        dns_settings: Optional["NetworkInterfaceDnsSettings"] = None,
13111        enable_accelerated_networking: Optional[bool] = None,
13112        enable_ip_forwarding: Optional[bool] = None,
13113        **kwargs
13114    ):
13115        super(NetworkInterface, self).__init__(id=id, location=location, tags=tags, **kwargs)
13116        self.etag = None
13117        self.virtual_machine = None
13118        self.network_security_group = network_security_group
13119        self.private_endpoint = None
13120        self.ip_configurations = ip_configurations
13121        self.tap_configurations = None
13122        self.dns_settings = dns_settings
13123        self.mac_address = None
13124        self.primary = None
13125        self.enable_accelerated_networking = enable_accelerated_networking
13126        self.enable_ip_forwarding = enable_ip_forwarding
13127        self.hosted_workloads = None
13128        self.resource_guid = None
13129        self.provisioning_state = None
13130
13131
13132class NetworkInterfaceAssociation(msrest.serialization.Model):
13133    """Network interface and its custom security rules.
13134
13135    Variables are only populated by the server, and will be ignored when sending a request.
13136
13137    :ivar id: Network interface ID.
13138    :vartype id: str
13139    :param security_rules: Collection of custom security rules.
13140    :type security_rules: list[~azure.mgmt.network.v2020_04_01.models.SecurityRule]
13141    """
13142
13143    _validation = {
13144        'id': {'readonly': True},
13145    }
13146
13147    _attribute_map = {
13148        'id': {'key': 'id', 'type': 'str'},
13149        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
13150    }
13151
13152    def __init__(
13153        self,
13154        *,
13155        security_rules: Optional[List["SecurityRule"]] = None,
13156        **kwargs
13157    ):
13158        super(NetworkInterfaceAssociation, self).__init__(**kwargs)
13159        self.id = None
13160        self.security_rules = security_rules
13161
13162
13163class NetworkInterfaceDnsSettings(msrest.serialization.Model):
13164    """DNS settings of a network interface.
13165
13166    Variables are only populated by the server, and will be ignored when sending a request.
13167
13168    :param dns_servers: List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure
13169     provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it must be
13170     the only value in dnsServers collection.
13171    :type dns_servers: list[str]
13172    :ivar applied_dns_servers: If the VM that uses this NIC is part of an Availability Set, then
13173     this list will have the union of all DNS servers from all NICs that are part of the
13174     Availability Set. This property is what is configured on each of those VMs.
13175    :vartype applied_dns_servers: list[str]
13176    :param internal_dns_name_label: Relative DNS name for this NIC used for internal communications
13177     between VMs in the same virtual network.
13178    :type internal_dns_name_label: str
13179    :ivar internal_fqdn: Fully qualified DNS name supporting internal communications between VMs in
13180     the same virtual network.
13181    :vartype internal_fqdn: str
13182    :ivar internal_domain_name_suffix: Even if internalDnsNameLabel is not specified, a DNS entry
13183     is created for the primary NIC of the VM. This DNS name can be constructed by concatenating the
13184     VM name with the value of internalDomainNameSuffix.
13185    :vartype internal_domain_name_suffix: str
13186    """
13187
13188    _validation = {
13189        'applied_dns_servers': {'readonly': True},
13190        'internal_fqdn': {'readonly': True},
13191        'internal_domain_name_suffix': {'readonly': True},
13192    }
13193
13194    _attribute_map = {
13195        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
13196        'applied_dns_servers': {'key': 'appliedDnsServers', 'type': '[str]'},
13197        'internal_dns_name_label': {'key': 'internalDnsNameLabel', 'type': 'str'},
13198        'internal_fqdn': {'key': 'internalFqdn', 'type': 'str'},
13199        'internal_domain_name_suffix': {'key': 'internalDomainNameSuffix', 'type': 'str'},
13200    }
13201
13202    def __init__(
13203        self,
13204        *,
13205        dns_servers: Optional[List[str]] = None,
13206        internal_dns_name_label: Optional[str] = None,
13207        **kwargs
13208    ):
13209        super(NetworkInterfaceDnsSettings, self).__init__(**kwargs)
13210        self.dns_servers = dns_servers
13211        self.applied_dns_servers = None
13212        self.internal_dns_name_label = internal_dns_name_label
13213        self.internal_fqdn = None
13214        self.internal_domain_name_suffix = None
13215
13216
13217class NetworkInterfaceIPConfiguration(SubResource):
13218    """IPConfiguration in a network interface.
13219
13220    Variables are only populated by the server, and will be ignored when sending a request.
13221
13222    :param id: Resource ID.
13223    :type id: str
13224    :param name: The name of the resource that is unique within a resource group. This name can be
13225     used to access the resource.
13226    :type name: str
13227    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13228    :vartype etag: str
13229    :param virtual_network_taps: The reference to Virtual Network Taps.
13230    :type virtual_network_taps: list[~azure.mgmt.network.v2020_04_01.models.VirtualNetworkTap]
13231    :param application_gateway_backend_address_pools: The reference to
13232     ApplicationGatewayBackendAddressPool resource.
13233    :type application_gateway_backend_address_pools:
13234     list[~azure.mgmt.network.v2020_04_01.models.ApplicationGatewayBackendAddressPool]
13235    :param load_balancer_backend_address_pools: The reference to LoadBalancerBackendAddressPool
13236     resource.
13237    :type load_balancer_backend_address_pools:
13238     list[~azure.mgmt.network.v2020_04_01.models.BackendAddressPool]
13239    :param load_balancer_inbound_nat_rules: A list of references of LoadBalancerInboundNatRules.
13240    :type load_balancer_inbound_nat_rules:
13241     list[~azure.mgmt.network.v2020_04_01.models.InboundNatRule]
13242    :param private_ip_address: Private IP address of the IP configuration.
13243    :type private_ip_address: str
13244    :param private_ip_allocation_method: The private IP address allocation method. Possible values
13245     include: "Static", "Dynamic".
13246    :type private_ip_allocation_method: str or
13247     ~azure.mgmt.network.v2020_04_01.models.IPAllocationMethod
13248    :param private_ip_address_version: Whether the specific IP configuration is IPv4 or IPv6.
13249     Default is IPv4. Possible values include: "IPv4", "IPv6".
13250    :type private_ip_address_version: str or ~azure.mgmt.network.v2020_04_01.models.IPVersion
13251    :param subnet: Subnet bound to the IP configuration.
13252    :type subnet: ~azure.mgmt.network.v2020_04_01.models.Subnet
13253    :param primary: Whether this is a primary customer address on the network interface.
13254    :type primary: bool
13255    :param public_ip_address: Public IP address bound to the IP configuration.
13256    :type public_ip_address: ~azure.mgmt.network.v2020_04_01.models.PublicIPAddress
13257    :param application_security_groups: Application security groups in which the IP configuration
13258     is included.
13259    :type application_security_groups:
13260     list[~azure.mgmt.network.v2020_04_01.models.ApplicationSecurityGroup]
13261    :ivar provisioning_state: The provisioning state of the network interface IP configuration.
13262     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
13263    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
13264    :ivar private_link_connection_properties: PrivateLinkConnection properties for the network
13265     interface.
13266    :vartype private_link_connection_properties:
13267     ~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties
13268    """
13269
13270    _validation = {
13271        'etag': {'readonly': True},
13272        'provisioning_state': {'readonly': True},
13273        'private_link_connection_properties': {'readonly': True},
13274    }
13275
13276    _attribute_map = {
13277        'id': {'key': 'id', 'type': 'str'},
13278        'name': {'key': 'name', 'type': 'str'},
13279        'etag': {'key': 'etag', 'type': 'str'},
13280        'virtual_network_taps': {'key': 'properties.virtualNetworkTaps', 'type': '[VirtualNetworkTap]'},
13281        'application_gateway_backend_address_pools': {'key': 'properties.applicationGatewayBackendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
13282        'load_balancer_backend_address_pools': {'key': 'properties.loadBalancerBackendAddressPools', 'type': '[BackendAddressPool]'},
13283        'load_balancer_inbound_nat_rules': {'key': 'properties.loadBalancerInboundNatRules', 'type': '[InboundNatRule]'},
13284        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
13285        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
13286        'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'},
13287        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
13288        'primary': {'key': 'properties.primary', 'type': 'bool'},
13289        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
13290        'application_security_groups': {'key': 'properties.applicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
13291        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13292        'private_link_connection_properties': {'key': 'properties.privateLinkConnectionProperties', 'type': 'NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties'},
13293    }
13294
13295    def __init__(
13296        self,
13297        *,
13298        id: Optional[str] = None,
13299        name: Optional[str] = None,
13300        virtual_network_taps: Optional[List["VirtualNetworkTap"]] = None,
13301        application_gateway_backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None,
13302        load_balancer_backend_address_pools: Optional[List["BackendAddressPool"]] = None,
13303        load_balancer_inbound_nat_rules: Optional[List["InboundNatRule"]] = None,
13304        private_ip_address: Optional[str] = None,
13305        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
13306        private_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
13307        subnet: Optional["Subnet"] = None,
13308        primary: Optional[bool] = None,
13309        public_ip_address: Optional["PublicIPAddress"] = None,
13310        application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
13311        **kwargs
13312    ):
13313        super(NetworkInterfaceIPConfiguration, self).__init__(id=id, **kwargs)
13314        self.name = name
13315        self.etag = None
13316        self.virtual_network_taps = virtual_network_taps
13317        self.application_gateway_backend_address_pools = application_gateway_backend_address_pools
13318        self.load_balancer_backend_address_pools = load_balancer_backend_address_pools
13319        self.load_balancer_inbound_nat_rules = load_balancer_inbound_nat_rules
13320        self.private_ip_address = private_ip_address
13321        self.private_ip_allocation_method = private_ip_allocation_method
13322        self.private_ip_address_version = private_ip_address_version
13323        self.subnet = subnet
13324        self.primary = primary
13325        self.public_ip_address = public_ip_address
13326        self.application_security_groups = application_security_groups
13327        self.provisioning_state = None
13328        self.private_link_connection_properties = None
13329
13330
13331class NetworkInterfaceIPConfigurationListResult(msrest.serialization.Model):
13332    """Response for list ip configurations API service call.
13333
13334    Variables are only populated by the server, and will be ignored when sending a request.
13335
13336    :param value: A list of ip configurations.
13337    :type value: list[~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceIPConfiguration]
13338    :ivar next_link: The URL to get the next set of results.
13339    :vartype next_link: str
13340    """
13341
13342    _validation = {
13343        'next_link': {'readonly': True},
13344    }
13345
13346    _attribute_map = {
13347        'value': {'key': 'value', 'type': '[NetworkInterfaceIPConfiguration]'},
13348        'next_link': {'key': 'nextLink', 'type': 'str'},
13349    }
13350
13351    def __init__(
13352        self,
13353        *,
13354        value: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
13355        **kwargs
13356    ):
13357        super(NetworkInterfaceIPConfigurationListResult, self).__init__(**kwargs)
13358        self.value = value
13359        self.next_link = None
13360
13361
13362class NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties(msrest.serialization.Model):
13363    """PrivateLinkConnection properties for the network interface.
13364
13365    Variables are only populated by the server, and will be ignored when sending a request.
13366
13367    :ivar group_id: The group ID for current private link connection.
13368    :vartype group_id: str
13369    :ivar required_member_name: The required member name for current private link connection.
13370    :vartype required_member_name: str
13371    :ivar fqdns: List of FQDNs for current private link connection.
13372    :vartype fqdns: list[str]
13373    """
13374
13375    _validation = {
13376        'group_id': {'readonly': True},
13377        'required_member_name': {'readonly': True},
13378        'fqdns': {'readonly': True},
13379    }
13380
13381    _attribute_map = {
13382        'group_id': {'key': 'groupId', 'type': 'str'},
13383        'required_member_name': {'key': 'requiredMemberName', 'type': 'str'},
13384        'fqdns': {'key': 'fqdns', 'type': '[str]'},
13385    }
13386
13387    def __init__(
13388        self,
13389        **kwargs
13390    ):
13391        super(NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties, self).__init__(**kwargs)
13392        self.group_id = None
13393        self.required_member_name = None
13394        self.fqdns = None
13395
13396
13397class NetworkInterfaceListResult(msrest.serialization.Model):
13398    """Response for the ListNetworkInterface API service call.
13399
13400    Variables are only populated by the server, and will be ignored when sending a request.
13401
13402    :param value: A list of network interfaces in a resource group.
13403    :type value: list[~azure.mgmt.network.v2020_04_01.models.NetworkInterface]
13404    :ivar next_link: The URL to get the next set of results.
13405    :vartype next_link: str
13406    """
13407
13408    _validation = {
13409        'next_link': {'readonly': True},
13410    }
13411
13412    _attribute_map = {
13413        'value': {'key': 'value', 'type': '[NetworkInterface]'},
13414        'next_link': {'key': 'nextLink', 'type': 'str'},
13415    }
13416
13417    def __init__(
13418        self,
13419        *,
13420        value: Optional[List["NetworkInterface"]] = None,
13421        **kwargs
13422    ):
13423        super(NetworkInterfaceListResult, self).__init__(**kwargs)
13424        self.value = value
13425        self.next_link = None
13426
13427
13428class NetworkInterfaceLoadBalancerListResult(msrest.serialization.Model):
13429    """Response for list ip configurations API service call.
13430
13431    Variables are only populated by the server, and will be ignored when sending a request.
13432
13433    :param value: A list of load balancers.
13434    :type value: list[~azure.mgmt.network.v2020_04_01.models.LoadBalancer]
13435    :ivar next_link: The URL to get the next set of results.
13436    :vartype next_link: str
13437    """
13438
13439    _validation = {
13440        'next_link': {'readonly': True},
13441    }
13442
13443    _attribute_map = {
13444        'value': {'key': 'value', 'type': '[LoadBalancer]'},
13445        'next_link': {'key': 'nextLink', 'type': 'str'},
13446    }
13447
13448    def __init__(
13449        self,
13450        *,
13451        value: Optional[List["LoadBalancer"]] = None,
13452        **kwargs
13453    ):
13454        super(NetworkInterfaceLoadBalancerListResult, self).__init__(**kwargs)
13455        self.value = value
13456        self.next_link = None
13457
13458
13459class NetworkInterfaceTapConfiguration(SubResource):
13460    """Tap configuration in a Network Interface.
13461
13462    Variables are only populated by the server, and will be ignored when sending a request.
13463
13464    :param id: Resource ID.
13465    :type id: str
13466    :param name: The name of the resource that is unique within a resource group. This name can be
13467     used to access the resource.
13468    :type name: str
13469    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13470    :vartype etag: str
13471    :ivar type: Sub Resource type.
13472    :vartype type: str
13473    :param virtual_network_tap: The reference to the Virtual Network Tap resource.
13474    :type virtual_network_tap: ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkTap
13475    :ivar provisioning_state: The provisioning state of the network interface tap configuration
13476     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
13477    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
13478    """
13479
13480    _validation = {
13481        'etag': {'readonly': True},
13482        'type': {'readonly': True},
13483        'provisioning_state': {'readonly': True},
13484    }
13485
13486    _attribute_map = {
13487        'id': {'key': 'id', 'type': 'str'},
13488        'name': {'key': 'name', 'type': 'str'},
13489        'etag': {'key': 'etag', 'type': 'str'},
13490        'type': {'key': 'type', 'type': 'str'},
13491        'virtual_network_tap': {'key': 'properties.virtualNetworkTap', 'type': 'VirtualNetworkTap'},
13492        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13493    }
13494
13495    def __init__(
13496        self,
13497        *,
13498        id: Optional[str] = None,
13499        name: Optional[str] = None,
13500        virtual_network_tap: Optional["VirtualNetworkTap"] = None,
13501        **kwargs
13502    ):
13503        super(NetworkInterfaceTapConfiguration, self).__init__(id=id, **kwargs)
13504        self.name = name
13505        self.etag = None
13506        self.type = None
13507        self.virtual_network_tap = virtual_network_tap
13508        self.provisioning_state = None
13509
13510
13511class NetworkInterfaceTapConfigurationListResult(msrest.serialization.Model):
13512    """Response for list tap configurations API service call.
13513
13514    Variables are only populated by the server, and will be ignored when sending a request.
13515
13516    :param value: A list of tap configurations.
13517    :type value: list[~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceTapConfiguration]
13518    :ivar next_link: The URL to get the next set of results.
13519    :vartype next_link: str
13520    """
13521
13522    _validation = {
13523        'next_link': {'readonly': True},
13524    }
13525
13526    _attribute_map = {
13527        'value': {'key': 'value', 'type': '[NetworkInterfaceTapConfiguration]'},
13528        'next_link': {'key': 'nextLink', 'type': 'str'},
13529    }
13530
13531    def __init__(
13532        self,
13533        *,
13534        value: Optional[List["NetworkInterfaceTapConfiguration"]] = None,
13535        **kwargs
13536    ):
13537        super(NetworkInterfaceTapConfigurationListResult, self).__init__(**kwargs)
13538        self.value = value
13539        self.next_link = None
13540
13541
13542class NetworkProfile(Resource):
13543    """Network profile resource.
13544
13545    Variables are only populated by the server, and will be ignored when sending a request.
13546
13547    :param id: Resource ID.
13548    :type id: str
13549    :ivar name: Resource name.
13550    :vartype name: str
13551    :ivar type: Resource type.
13552    :vartype type: str
13553    :param location: Resource location.
13554    :type location: str
13555    :param tags: A set of tags. Resource tags.
13556    :type tags: dict[str, str]
13557    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13558    :vartype etag: str
13559    :ivar container_network_interfaces: List of child container network interfaces.
13560    :vartype container_network_interfaces:
13561     list[~azure.mgmt.network.v2020_04_01.models.ContainerNetworkInterface]
13562    :param container_network_interface_configurations: List of chid container network interface
13563     configurations.
13564    :type container_network_interface_configurations:
13565     list[~azure.mgmt.network.v2020_04_01.models.ContainerNetworkInterfaceConfiguration]
13566    :ivar resource_guid: The resource GUID property of the network profile resource.
13567    :vartype resource_guid: str
13568    :ivar provisioning_state: The provisioning state of the network profile resource. Possible
13569     values include: "Succeeded", "Updating", "Deleting", "Failed".
13570    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
13571    """
13572
13573    _validation = {
13574        'name': {'readonly': True},
13575        'type': {'readonly': True},
13576        'etag': {'readonly': True},
13577        'container_network_interfaces': {'readonly': True},
13578        'resource_guid': {'readonly': True},
13579        'provisioning_state': {'readonly': True},
13580    }
13581
13582    _attribute_map = {
13583        'id': {'key': 'id', 'type': 'str'},
13584        'name': {'key': 'name', 'type': 'str'},
13585        'type': {'key': 'type', 'type': 'str'},
13586        'location': {'key': 'location', 'type': 'str'},
13587        'tags': {'key': 'tags', 'type': '{str}'},
13588        'etag': {'key': 'etag', 'type': 'str'},
13589        'container_network_interfaces': {'key': 'properties.containerNetworkInterfaces', 'type': '[ContainerNetworkInterface]'},
13590        'container_network_interface_configurations': {'key': 'properties.containerNetworkInterfaceConfigurations', 'type': '[ContainerNetworkInterfaceConfiguration]'},
13591        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
13592        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13593    }
13594
13595    def __init__(
13596        self,
13597        *,
13598        id: Optional[str] = None,
13599        location: Optional[str] = None,
13600        tags: Optional[Dict[str, str]] = None,
13601        container_network_interface_configurations: Optional[List["ContainerNetworkInterfaceConfiguration"]] = None,
13602        **kwargs
13603    ):
13604        super(NetworkProfile, self).__init__(id=id, location=location, tags=tags, **kwargs)
13605        self.etag = None
13606        self.container_network_interfaces = None
13607        self.container_network_interface_configurations = container_network_interface_configurations
13608        self.resource_guid = None
13609        self.provisioning_state = None
13610
13611
13612class NetworkProfileListResult(msrest.serialization.Model):
13613    """Response for ListNetworkProfiles API service call.
13614
13615    :param value: A list of network profiles that exist in a resource group.
13616    :type value: list[~azure.mgmt.network.v2020_04_01.models.NetworkProfile]
13617    :param next_link: The URL to get the next set of results.
13618    :type next_link: str
13619    """
13620
13621    _attribute_map = {
13622        'value': {'key': 'value', 'type': '[NetworkProfile]'},
13623        'next_link': {'key': 'nextLink', 'type': 'str'},
13624    }
13625
13626    def __init__(
13627        self,
13628        *,
13629        value: Optional[List["NetworkProfile"]] = None,
13630        next_link: Optional[str] = None,
13631        **kwargs
13632    ):
13633        super(NetworkProfileListResult, self).__init__(**kwargs)
13634        self.value = value
13635        self.next_link = next_link
13636
13637
13638class NetworkRuleCondition(FirewallPolicyRuleCondition):
13639    """Rule condition of type network.
13640
13641    All required parameters must be populated in order to send to Azure.
13642
13643    :param name: Name of the rule condition.
13644    :type name: str
13645    :param description: Description of the rule condition.
13646    :type description: str
13647    :param rule_condition_type: Required. Rule Condition Type.Constant filled by server.  Possible
13648     values include: "ApplicationRuleCondition", "NetworkRuleCondition", "NatRuleCondition".
13649    :type rule_condition_type: str or
13650     ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleConditionType
13651    :param ip_protocols: Array of FirewallPolicyRuleConditionNetworkProtocols.
13652    :type ip_protocols: list[str or
13653     ~azure.mgmt.network.v2020_04_01.models.FirewallPolicyRuleConditionNetworkProtocol]
13654    :param source_addresses: List of source IP addresses for this rule.
13655    :type source_addresses: list[str]
13656    :param destination_addresses: List of destination IP addresses or Service Tags.
13657    :type destination_addresses: list[str]
13658    :param destination_ports: List of destination ports.
13659    :type destination_ports: list[str]
13660    :param source_ip_groups: List of source IpGroups for this rule.
13661    :type source_ip_groups: list[str]
13662    :param destination_ip_groups: List of destination IpGroups for this rule.
13663    :type destination_ip_groups: list[str]
13664    """
13665
13666    _validation = {
13667        'rule_condition_type': {'required': True},
13668    }
13669
13670    _attribute_map = {
13671        'name': {'key': 'name', 'type': 'str'},
13672        'description': {'key': 'description', 'type': 'str'},
13673        'rule_condition_type': {'key': 'ruleConditionType', 'type': 'str'},
13674        'ip_protocols': {'key': 'ipProtocols', 'type': '[str]'},
13675        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
13676        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
13677        'destination_ports': {'key': 'destinationPorts', 'type': '[str]'},
13678        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
13679        'destination_ip_groups': {'key': 'destinationIpGroups', 'type': '[str]'},
13680    }
13681
13682    def __init__(
13683        self,
13684        *,
13685        name: Optional[str] = None,
13686        description: Optional[str] = None,
13687        ip_protocols: Optional[List[Union[str, "FirewallPolicyRuleConditionNetworkProtocol"]]] = None,
13688        source_addresses: Optional[List[str]] = None,
13689        destination_addresses: Optional[List[str]] = None,
13690        destination_ports: Optional[List[str]] = None,
13691        source_ip_groups: Optional[List[str]] = None,
13692        destination_ip_groups: Optional[List[str]] = None,
13693        **kwargs
13694    ):
13695        super(NetworkRuleCondition, self).__init__(name=name, description=description, **kwargs)
13696        self.rule_condition_type = 'NetworkRuleCondition'  # type: str
13697        self.ip_protocols = ip_protocols
13698        self.source_addresses = source_addresses
13699        self.destination_addresses = destination_addresses
13700        self.destination_ports = destination_ports
13701        self.source_ip_groups = source_ip_groups
13702        self.destination_ip_groups = destination_ip_groups
13703
13704
13705class NetworkSecurityGroup(Resource):
13706    """NetworkSecurityGroup resource.
13707
13708    Variables are only populated by the server, and will be ignored when sending a request.
13709
13710    :param id: Resource ID.
13711    :type id: str
13712    :ivar name: Resource name.
13713    :vartype name: str
13714    :ivar type: Resource type.
13715    :vartype type: str
13716    :param location: Resource location.
13717    :type location: str
13718    :param tags: A set of tags. Resource tags.
13719    :type tags: dict[str, str]
13720    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13721    :vartype etag: str
13722    :param security_rules: A collection of security rules of the network security group.
13723    :type security_rules: list[~azure.mgmt.network.v2020_04_01.models.SecurityRule]
13724    :ivar default_security_rules: The default security rules of network security group.
13725    :vartype default_security_rules: list[~azure.mgmt.network.v2020_04_01.models.SecurityRule]
13726    :ivar network_interfaces: A collection of references to network interfaces.
13727    :vartype network_interfaces: list[~azure.mgmt.network.v2020_04_01.models.NetworkInterface]
13728    :ivar subnets: A collection of references to subnets.
13729    :vartype subnets: list[~azure.mgmt.network.v2020_04_01.models.Subnet]
13730    :ivar flow_logs: A collection of references to flow log resources.
13731    :vartype flow_logs: list[~azure.mgmt.network.v2020_04_01.models.FlowLog]
13732    :ivar resource_guid: The resource GUID property of the network security group resource.
13733    :vartype resource_guid: str
13734    :ivar provisioning_state: The provisioning state of the network security group resource.
13735     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
13736    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
13737    """
13738
13739    _validation = {
13740        'name': {'readonly': True},
13741        'type': {'readonly': True},
13742        'etag': {'readonly': True},
13743        'default_security_rules': {'readonly': True},
13744        'network_interfaces': {'readonly': True},
13745        'subnets': {'readonly': True},
13746        'flow_logs': {'readonly': True},
13747        'resource_guid': {'readonly': True},
13748        'provisioning_state': {'readonly': True},
13749    }
13750
13751    _attribute_map = {
13752        'id': {'key': 'id', 'type': 'str'},
13753        'name': {'key': 'name', 'type': 'str'},
13754        'type': {'key': 'type', 'type': 'str'},
13755        'location': {'key': 'location', 'type': 'str'},
13756        'tags': {'key': 'tags', 'type': '{str}'},
13757        'etag': {'key': 'etag', 'type': 'str'},
13758        'security_rules': {'key': 'properties.securityRules', 'type': '[SecurityRule]'},
13759        'default_security_rules': {'key': 'properties.defaultSecurityRules', 'type': '[SecurityRule]'},
13760        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
13761        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
13762        'flow_logs': {'key': 'properties.flowLogs', 'type': '[FlowLog]'},
13763        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
13764        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13765    }
13766
13767    def __init__(
13768        self,
13769        *,
13770        id: Optional[str] = None,
13771        location: Optional[str] = None,
13772        tags: Optional[Dict[str, str]] = None,
13773        security_rules: Optional[List["SecurityRule"]] = None,
13774        **kwargs
13775    ):
13776        super(NetworkSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
13777        self.etag = None
13778        self.security_rules = security_rules
13779        self.default_security_rules = None
13780        self.network_interfaces = None
13781        self.subnets = None
13782        self.flow_logs = None
13783        self.resource_guid = None
13784        self.provisioning_state = None
13785
13786
13787class NetworkSecurityGroupListResult(msrest.serialization.Model):
13788    """Response for ListNetworkSecurityGroups API service call.
13789
13790    :param value: A list of NetworkSecurityGroup resources.
13791    :type value: list[~azure.mgmt.network.v2020_04_01.models.NetworkSecurityGroup]
13792    :param next_link: The URL to get the next set of results.
13793    :type next_link: str
13794    """
13795
13796    _attribute_map = {
13797        'value': {'key': 'value', 'type': '[NetworkSecurityGroup]'},
13798        'next_link': {'key': 'nextLink', 'type': 'str'},
13799    }
13800
13801    def __init__(
13802        self,
13803        *,
13804        value: Optional[List["NetworkSecurityGroup"]] = None,
13805        next_link: Optional[str] = None,
13806        **kwargs
13807    ):
13808        super(NetworkSecurityGroupListResult, self).__init__(**kwargs)
13809        self.value = value
13810        self.next_link = next_link
13811
13812
13813class NetworkSecurityGroupResult(msrest.serialization.Model):
13814    """Network configuration diagnostic result corresponded provided traffic query.
13815
13816    Variables are only populated by the server, and will be ignored when sending a request.
13817
13818    :param security_rule_access_result: The network traffic is allowed or denied. Possible values
13819     include: "Allow", "Deny".
13820    :type security_rule_access_result: str or
13821     ~azure.mgmt.network.v2020_04_01.models.SecurityRuleAccess
13822    :ivar evaluated_network_security_groups: List of results network security groups diagnostic.
13823    :vartype evaluated_network_security_groups:
13824     list[~azure.mgmt.network.v2020_04_01.models.EvaluatedNetworkSecurityGroup]
13825    """
13826
13827    _validation = {
13828        'evaluated_network_security_groups': {'readonly': True},
13829    }
13830
13831    _attribute_map = {
13832        'security_rule_access_result': {'key': 'securityRuleAccessResult', 'type': 'str'},
13833        'evaluated_network_security_groups': {'key': 'evaluatedNetworkSecurityGroups', 'type': '[EvaluatedNetworkSecurityGroup]'},
13834    }
13835
13836    def __init__(
13837        self,
13838        *,
13839        security_rule_access_result: Optional[Union[str, "SecurityRuleAccess"]] = None,
13840        **kwargs
13841    ):
13842        super(NetworkSecurityGroupResult, self).__init__(**kwargs)
13843        self.security_rule_access_result = security_rule_access_result
13844        self.evaluated_network_security_groups = None
13845
13846
13847class NetworkSecurityRulesEvaluationResult(msrest.serialization.Model):
13848    """Network security rules evaluation result.
13849
13850    :param name: Name of the network security rule.
13851    :type name: str
13852    :param protocol_matched: Value indicating whether protocol is matched.
13853    :type protocol_matched: bool
13854    :param source_matched: Value indicating whether source is matched.
13855    :type source_matched: bool
13856    :param source_port_matched: Value indicating whether source port is matched.
13857    :type source_port_matched: bool
13858    :param destination_matched: Value indicating whether destination is matched.
13859    :type destination_matched: bool
13860    :param destination_port_matched: Value indicating whether destination port is matched.
13861    :type destination_port_matched: bool
13862    """
13863
13864    _attribute_map = {
13865        'name': {'key': 'name', 'type': 'str'},
13866        'protocol_matched': {'key': 'protocolMatched', 'type': 'bool'},
13867        'source_matched': {'key': 'sourceMatched', 'type': 'bool'},
13868        'source_port_matched': {'key': 'sourcePortMatched', 'type': 'bool'},
13869        'destination_matched': {'key': 'destinationMatched', 'type': 'bool'},
13870        'destination_port_matched': {'key': 'destinationPortMatched', 'type': 'bool'},
13871    }
13872
13873    def __init__(
13874        self,
13875        *,
13876        name: Optional[str] = None,
13877        protocol_matched: Optional[bool] = None,
13878        source_matched: Optional[bool] = None,
13879        source_port_matched: Optional[bool] = None,
13880        destination_matched: Optional[bool] = None,
13881        destination_port_matched: Optional[bool] = None,
13882        **kwargs
13883    ):
13884        super(NetworkSecurityRulesEvaluationResult, self).__init__(**kwargs)
13885        self.name = name
13886        self.protocol_matched = protocol_matched
13887        self.source_matched = source_matched
13888        self.source_port_matched = source_port_matched
13889        self.destination_matched = destination_matched
13890        self.destination_port_matched = destination_port_matched
13891
13892
13893class NetworkVirtualAppliance(Resource):
13894    """NetworkVirtualAppliance Resource.
13895
13896    Variables are only populated by the server, and will be ignored when sending a request.
13897
13898    :param id: Resource ID.
13899    :type id: str
13900    :ivar name: Resource name.
13901    :vartype name: str
13902    :ivar type: Resource type.
13903    :vartype type: str
13904    :param location: Resource location.
13905    :type location: str
13906    :param tags: A set of tags. Resource tags.
13907    :type tags: dict[str, str]
13908    :param identity: The service principal that has read access to cloud-init and config blob.
13909    :type identity: ~azure.mgmt.network.v2020_04_01.models.ManagedServiceIdentity
13910    :param sku: Network Virtual Appliance SKU.
13911    :type sku: ~azure.mgmt.network.v2020_04_01.models.VirtualApplianceSkuProperties
13912    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13913    :vartype etag: str
13914    :param boot_strap_configuration_blob: BootStrapConfigurationBlob storage URLs.
13915    :type boot_strap_configuration_blob: list[str]
13916    :param virtual_hub: The Virtual Hub where Network Virtual Appliance is being deployed.
13917    :type virtual_hub: ~azure.mgmt.network.v2020_04_01.models.SubResource
13918    :param cloud_init_configuration_blob: CloudInitConfigurationBlob storage URLs.
13919    :type cloud_init_configuration_blob: list[str]
13920    :param virtual_appliance_asn: VirtualAppliance ASN.
13921    :type virtual_appliance_asn: long
13922    :ivar virtual_appliance_nics: List of Virtual Appliance Network Interfaces.
13923    :vartype virtual_appliance_nics:
13924     list[~azure.mgmt.network.v2020_04_01.models.VirtualApplianceNicProperties]
13925    :ivar provisioning_state: The provisioning state of the resource. Possible values include:
13926     "Succeeded", "Updating", "Deleting", "Failed".
13927    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
13928    """
13929
13930    _validation = {
13931        'name': {'readonly': True},
13932        'type': {'readonly': True},
13933        'etag': {'readonly': True},
13934        'virtual_appliance_asn': {'maximum': 4294967295, 'minimum': 0},
13935        'virtual_appliance_nics': {'readonly': True},
13936        'provisioning_state': {'readonly': True},
13937    }
13938
13939    _attribute_map = {
13940        'id': {'key': 'id', 'type': 'str'},
13941        'name': {'key': 'name', 'type': 'str'},
13942        'type': {'key': 'type', 'type': 'str'},
13943        'location': {'key': 'location', 'type': 'str'},
13944        'tags': {'key': 'tags', 'type': '{str}'},
13945        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
13946        'sku': {'key': 'sku', 'type': 'VirtualApplianceSkuProperties'},
13947        'etag': {'key': 'etag', 'type': 'str'},
13948        'boot_strap_configuration_blob': {'key': 'properties.bootStrapConfigurationBlob', 'type': '[str]'},
13949        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
13950        'cloud_init_configuration_blob': {'key': 'properties.cloudInitConfigurationBlob', 'type': '[str]'},
13951        'virtual_appliance_asn': {'key': 'properties.virtualApplianceAsn', 'type': 'long'},
13952        'virtual_appliance_nics': {'key': 'properties.virtualApplianceNics', 'type': '[VirtualApplianceNicProperties]'},
13953        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13954    }
13955
13956    def __init__(
13957        self,
13958        *,
13959        id: Optional[str] = None,
13960        location: Optional[str] = None,
13961        tags: Optional[Dict[str, str]] = None,
13962        identity: Optional["ManagedServiceIdentity"] = None,
13963        sku: Optional["VirtualApplianceSkuProperties"] = None,
13964        boot_strap_configuration_blob: Optional[List[str]] = None,
13965        virtual_hub: Optional["SubResource"] = None,
13966        cloud_init_configuration_blob: Optional[List[str]] = None,
13967        virtual_appliance_asn: Optional[int] = None,
13968        **kwargs
13969    ):
13970        super(NetworkVirtualAppliance, self).__init__(id=id, location=location, tags=tags, **kwargs)
13971        self.identity = identity
13972        self.sku = sku
13973        self.etag = None
13974        self.boot_strap_configuration_blob = boot_strap_configuration_blob
13975        self.virtual_hub = virtual_hub
13976        self.cloud_init_configuration_blob = cloud_init_configuration_blob
13977        self.virtual_appliance_asn = virtual_appliance_asn
13978        self.virtual_appliance_nics = None
13979        self.provisioning_state = None
13980
13981
13982class NetworkVirtualApplianceListResult(msrest.serialization.Model):
13983    """Response for ListNetworkVirtualAppliances API service call.
13984
13985    :param value: List of Network Virtual Appliances.
13986    :type value: list[~azure.mgmt.network.v2020_04_01.models.NetworkVirtualAppliance]
13987    :param next_link: URL to get the next set of results.
13988    :type next_link: str
13989    """
13990
13991    _attribute_map = {
13992        'value': {'key': 'value', 'type': '[NetworkVirtualAppliance]'},
13993        'next_link': {'key': 'nextLink', 'type': 'str'},
13994    }
13995
13996    def __init__(
13997        self,
13998        *,
13999        value: Optional[List["NetworkVirtualAppliance"]] = None,
14000        next_link: Optional[str] = None,
14001        **kwargs
14002    ):
14003        super(NetworkVirtualApplianceListResult, self).__init__(**kwargs)
14004        self.value = value
14005        self.next_link = next_link
14006
14007
14008class NetworkWatcher(Resource):
14009    """Network watcher in a resource group.
14010
14011    Variables are only populated by the server, and will be ignored when sending a request.
14012
14013    :param id: Resource ID.
14014    :type id: str
14015    :ivar name: Resource name.
14016    :vartype name: str
14017    :ivar type: Resource type.
14018    :vartype type: str
14019    :param location: Resource location.
14020    :type location: str
14021    :param tags: A set of tags. Resource tags.
14022    :type tags: dict[str, str]
14023    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14024    :vartype etag: str
14025    :ivar provisioning_state: The provisioning state of the network watcher resource. Possible
14026     values include: "Succeeded", "Updating", "Deleting", "Failed".
14027    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
14028    """
14029
14030    _validation = {
14031        'name': {'readonly': True},
14032        'type': {'readonly': True},
14033        'etag': {'readonly': True},
14034        'provisioning_state': {'readonly': True},
14035    }
14036
14037    _attribute_map = {
14038        'id': {'key': 'id', 'type': 'str'},
14039        'name': {'key': 'name', 'type': 'str'},
14040        'type': {'key': 'type', 'type': 'str'},
14041        'location': {'key': 'location', 'type': 'str'},
14042        'tags': {'key': 'tags', 'type': '{str}'},
14043        'etag': {'key': 'etag', 'type': 'str'},
14044        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14045    }
14046
14047    def __init__(
14048        self,
14049        *,
14050        id: Optional[str] = None,
14051        location: Optional[str] = None,
14052        tags: Optional[Dict[str, str]] = None,
14053        **kwargs
14054    ):
14055        super(NetworkWatcher, self).__init__(id=id, location=location, tags=tags, **kwargs)
14056        self.etag = None
14057        self.provisioning_state = None
14058
14059
14060class NetworkWatcherListResult(msrest.serialization.Model):
14061    """Response for ListNetworkWatchers API service call.
14062
14063    :param value: List of network watcher resources.
14064    :type value: list[~azure.mgmt.network.v2020_04_01.models.NetworkWatcher]
14065    """
14066
14067    _attribute_map = {
14068        'value': {'key': 'value', 'type': '[NetworkWatcher]'},
14069    }
14070
14071    def __init__(
14072        self,
14073        *,
14074        value: Optional[List["NetworkWatcher"]] = None,
14075        **kwargs
14076    ):
14077        super(NetworkWatcherListResult, self).__init__(**kwargs)
14078        self.value = value
14079
14080
14081class NextHopParameters(msrest.serialization.Model):
14082    """Parameters that define the source and destination endpoint.
14083
14084    All required parameters must be populated in order to send to Azure.
14085
14086    :param target_resource_id: Required. The resource identifier of the target resource against
14087     which the action is to be performed.
14088    :type target_resource_id: str
14089    :param source_ip_address: Required. The source IP address.
14090    :type source_ip_address: str
14091    :param destination_ip_address: Required. The destination IP address.
14092    :type destination_ip_address: str
14093    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
14094     enabled on any of the nics, then this parameter must be specified. Otherwise optional).
14095    :type target_nic_resource_id: str
14096    """
14097
14098    _validation = {
14099        'target_resource_id': {'required': True},
14100        'source_ip_address': {'required': True},
14101        'destination_ip_address': {'required': True},
14102    }
14103
14104    _attribute_map = {
14105        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
14106        'source_ip_address': {'key': 'sourceIPAddress', 'type': 'str'},
14107        'destination_ip_address': {'key': 'destinationIPAddress', 'type': 'str'},
14108        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
14109    }
14110
14111    def __init__(
14112        self,
14113        *,
14114        target_resource_id: str,
14115        source_ip_address: str,
14116        destination_ip_address: str,
14117        target_nic_resource_id: Optional[str] = None,
14118        **kwargs
14119    ):
14120        super(NextHopParameters, self).__init__(**kwargs)
14121        self.target_resource_id = target_resource_id
14122        self.source_ip_address = source_ip_address
14123        self.destination_ip_address = destination_ip_address
14124        self.target_nic_resource_id = target_nic_resource_id
14125
14126
14127class NextHopResult(msrest.serialization.Model):
14128    """The information about next hop from the specified VM.
14129
14130    :param next_hop_type: Next hop type. Possible values include: "Internet", "VirtualAppliance",
14131     "VirtualNetworkGateway", "VnetLocal", "HyperNetGateway", "None".
14132    :type next_hop_type: str or ~azure.mgmt.network.v2020_04_01.models.NextHopType
14133    :param next_hop_ip_address: Next hop IP Address.
14134    :type next_hop_ip_address: str
14135    :param route_table_id: The resource identifier for the route table associated with the route
14136     being returned. If the route being returned does not correspond to any user created routes then
14137     this field will be the string 'System Route'.
14138    :type route_table_id: str
14139    """
14140
14141    _attribute_map = {
14142        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
14143        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'},
14144        'route_table_id': {'key': 'routeTableId', 'type': 'str'},
14145    }
14146
14147    def __init__(
14148        self,
14149        *,
14150        next_hop_type: Optional[Union[str, "NextHopType"]] = None,
14151        next_hop_ip_address: Optional[str] = None,
14152        route_table_id: Optional[str] = None,
14153        **kwargs
14154    ):
14155        super(NextHopResult, self).__init__(**kwargs)
14156        self.next_hop_type = next_hop_type
14157        self.next_hop_ip_address = next_hop_ip_address
14158        self.route_table_id = route_table_id
14159
14160
14161class Operation(msrest.serialization.Model):
14162    """Network REST API operation definition.
14163
14164    :param name: Operation name: {provider}/{resource}/{operation}.
14165    :type name: str
14166    :param display: Display metadata associated with the operation.
14167    :type display: ~azure.mgmt.network.v2020_04_01.models.OperationDisplay
14168    :param origin: Origin of the operation.
14169    :type origin: str
14170    :param service_specification: Specification of the service.
14171    :type service_specification:
14172     ~azure.mgmt.network.v2020_04_01.models.OperationPropertiesFormatServiceSpecification
14173    """
14174
14175    _attribute_map = {
14176        'name': {'key': 'name', 'type': 'str'},
14177        'display': {'key': 'display', 'type': 'OperationDisplay'},
14178        'origin': {'key': 'origin', 'type': 'str'},
14179        'service_specification': {'key': 'properties.serviceSpecification', 'type': 'OperationPropertiesFormatServiceSpecification'},
14180    }
14181
14182    def __init__(
14183        self,
14184        *,
14185        name: Optional[str] = None,
14186        display: Optional["OperationDisplay"] = None,
14187        origin: Optional[str] = None,
14188        service_specification: Optional["OperationPropertiesFormatServiceSpecification"] = None,
14189        **kwargs
14190    ):
14191        super(Operation, self).__init__(**kwargs)
14192        self.name = name
14193        self.display = display
14194        self.origin = origin
14195        self.service_specification = service_specification
14196
14197
14198class OperationDisplay(msrest.serialization.Model):
14199    """Display metadata associated with the operation.
14200
14201    :param provider: Service provider: Microsoft Network.
14202    :type provider: str
14203    :param resource: Resource on which the operation is performed.
14204    :type resource: str
14205    :param operation: Type of the operation: get, read, delete, etc.
14206    :type operation: str
14207    :param description: Description of the operation.
14208    :type description: str
14209    """
14210
14211    _attribute_map = {
14212        'provider': {'key': 'provider', 'type': 'str'},
14213        'resource': {'key': 'resource', 'type': 'str'},
14214        'operation': {'key': 'operation', 'type': 'str'},
14215        'description': {'key': 'description', 'type': 'str'},
14216    }
14217
14218    def __init__(
14219        self,
14220        *,
14221        provider: Optional[str] = None,
14222        resource: Optional[str] = None,
14223        operation: Optional[str] = None,
14224        description: Optional[str] = None,
14225        **kwargs
14226    ):
14227        super(OperationDisplay, self).__init__(**kwargs)
14228        self.provider = provider
14229        self.resource = resource
14230        self.operation = operation
14231        self.description = description
14232
14233
14234class OperationListResult(msrest.serialization.Model):
14235    """Result of the request to list Network operations. It contains a list of operations and a URL link to get the next set of results.
14236
14237    :param value: List of Network operations supported by the Network resource provider.
14238    :type value: list[~azure.mgmt.network.v2020_04_01.models.Operation]
14239    :param next_link: URL to get the next set of operation list results if there are any.
14240    :type next_link: str
14241    """
14242
14243    _attribute_map = {
14244        'value': {'key': 'value', 'type': '[Operation]'},
14245        'next_link': {'key': 'nextLink', 'type': 'str'},
14246    }
14247
14248    def __init__(
14249        self,
14250        *,
14251        value: Optional[List["Operation"]] = None,
14252        next_link: Optional[str] = None,
14253        **kwargs
14254    ):
14255        super(OperationListResult, self).__init__(**kwargs)
14256        self.value = value
14257        self.next_link = next_link
14258
14259
14260class OperationPropertiesFormatServiceSpecification(msrest.serialization.Model):
14261    """Specification of the service.
14262
14263    :param metric_specifications: Operation service specification.
14264    :type metric_specifications: list[~azure.mgmt.network.v2020_04_01.models.MetricSpecification]
14265    :param log_specifications: Operation log specification.
14266    :type log_specifications: list[~azure.mgmt.network.v2020_04_01.models.LogSpecification]
14267    """
14268
14269    _attribute_map = {
14270        'metric_specifications': {'key': 'metricSpecifications', 'type': '[MetricSpecification]'},
14271        'log_specifications': {'key': 'logSpecifications', 'type': '[LogSpecification]'},
14272    }
14273
14274    def __init__(
14275        self,
14276        *,
14277        metric_specifications: Optional[List["MetricSpecification"]] = None,
14278        log_specifications: Optional[List["LogSpecification"]] = None,
14279        **kwargs
14280    ):
14281        super(OperationPropertiesFormatServiceSpecification, self).__init__(**kwargs)
14282        self.metric_specifications = metric_specifications
14283        self.log_specifications = log_specifications
14284
14285
14286class OutboundRule(SubResource):
14287    """Outbound rule of the load balancer.
14288
14289    Variables are only populated by the server, and will be ignored when sending a request.
14290
14291    :param id: Resource ID.
14292    :type id: str
14293    :param name: The name of the resource that is unique within the set of outbound rules used by
14294     the load balancer. This name can be used to access the resource.
14295    :type name: str
14296    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14297    :vartype etag: str
14298    :ivar type: Type of the resource.
14299    :vartype type: str
14300    :param allocated_outbound_ports: The number of outbound ports to be used for NAT.
14301    :type allocated_outbound_ports: int
14302    :param frontend_ip_configurations: The Frontend IP addresses of the load balancer.
14303    :type frontend_ip_configurations: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
14304    :param backend_address_pool: A reference to a pool of DIPs. Outbound traffic is randomly load
14305     balanced across IPs in the backend IPs.
14306    :type backend_address_pool: ~azure.mgmt.network.v2020_04_01.models.SubResource
14307    :ivar provisioning_state: The provisioning state of the outbound rule resource. Possible values
14308     include: "Succeeded", "Updating", "Deleting", "Failed".
14309    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
14310    :param protocol: The protocol for the outbound rule in load balancer. Possible values include:
14311     "Tcp", "Udp", "All".
14312    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.LoadBalancerOutboundRuleProtocol
14313    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
14314     connection termination. This element is only used when the protocol is set to TCP.
14315    :type enable_tcp_reset: bool
14316    :param idle_timeout_in_minutes: The timeout for the TCP idle connection.
14317    :type idle_timeout_in_minutes: int
14318    """
14319
14320    _validation = {
14321        'etag': {'readonly': True},
14322        'type': {'readonly': True},
14323        'provisioning_state': {'readonly': True},
14324    }
14325
14326    _attribute_map = {
14327        'id': {'key': 'id', 'type': 'str'},
14328        'name': {'key': 'name', 'type': 'str'},
14329        'etag': {'key': 'etag', 'type': 'str'},
14330        'type': {'key': 'type', 'type': 'str'},
14331        'allocated_outbound_ports': {'key': 'properties.allocatedOutboundPorts', 'type': 'int'},
14332        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[SubResource]'},
14333        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
14334        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14335        'protocol': {'key': 'properties.protocol', 'type': 'str'},
14336        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
14337        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
14338    }
14339
14340    def __init__(
14341        self,
14342        *,
14343        id: Optional[str] = None,
14344        name: Optional[str] = None,
14345        allocated_outbound_ports: Optional[int] = None,
14346        frontend_ip_configurations: Optional[List["SubResource"]] = None,
14347        backend_address_pool: Optional["SubResource"] = None,
14348        protocol: Optional[Union[str, "LoadBalancerOutboundRuleProtocol"]] = None,
14349        enable_tcp_reset: Optional[bool] = None,
14350        idle_timeout_in_minutes: Optional[int] = None,
14351        **kwargs
14352    ):
14353        super(OutboundRule, self).__init__(id=id, **kwargs)
14354        self.name = name
14355        self.etag = None
14356        self.type = None
14357        self.allocated_outbound_ports = allocated_outbound_ports
14358        self.frontend_ip_configurations = frontend_ip_configurations
14359        self.backend_address_pool = backend_address_pool
14360        self.provisioning_state = None
14361        self.protocol = protocol
14362        self.enable_tcp_reset = enable_tcp_reset
14363        self.idle_timeout_in_minutes = idle_timeout_in_minutes
14364
14365
14366class OwaspCrsExclusionEntry(msrest.serialization.Model):
14367    """Allow to exclude some variable satisfy the condition for the WAF check.
14368
14369    All required parameters must be populated in order to send to Azure.
14370
14371    :param match_variable: Required. The variable to be excluded. Possible values include:
14372     "RequestHeaderNames", "RequestCookieNames", "RequestArgNames".
14373    :type match_variable: str or
14374     ~azure.mgmt.network.v2020_04_01.models.OwaspCrsExclusionEntryMatchVariable
14375    :param selector_match_operator: Required. When matchVariable is a collection, operate on the
14376     selector to specify which elements in the collection this exclusion applies to. Possible values
14377     include: "Equals", "Contains", "StartsWith", "EndsWith", "EqualsAny".
14378    :type selector_match_operator: str or
14379     ~azure.mgmt.network.v2020_04_01.models.OwaspCrsExclusionEntrySelectorMatchOperator
14380    :param selector: Required. When matchVariable is a collection, operator used to specify which
14381     elements in the collection this exclusion applies to.
14382    :type selector: str
14383    """
14384
14385    _validation = {
14386        'match_variable': {'required': True},
14387        'selector_match_operator': {'required': True},
14388        'selector': {'required': True},
14389    }
14390
14391    _attribute_map = {
14392        'match_variable': {'key': 'matchVariable', 'type': 'str'},
14393        'selector_match_operator': {'key': 'selectorMatchOperator', 'type': 'str'},
14394        'selector': {'key': 'selector', 'type': 'str'},
14395    }
14396
14397    def __init__(
14398        self,
14399        *,
14400        match_variable: Union[str, "OwaspCrsExclusionEntryMatchVariable"],
14401        selector_match_operator: Union[str, "OwaspCrsExclusionEntrySelectorMatchOperator"],
14402        selector: str,
14403        **kwargs
14404    ):
14405        super(OwaspCrsExclusionEntry, self).__init__(**kwargs)
14406        self.match_variable = match_variable
14407        self.selector_match_operator = selector_match_operator
14408        self.selector = selector
14409
14410
14411class P2SConnectionConfiguration(SubResource):
14412    """P2SConnectionConfiguration Resource.
14413
14414    Variables are only populated by the server, and will be ignored when sending a request.
14415
14416    :param id: Resource ID.
14417    :type id: str
14418    :param name: The name of the resource that is unique within a resource group. This name can be
14419     used to access the resource.
14420    :type name: str
14421    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14422    :vartype etag: str
14423    :param vpn_client_address_pool: The reference to the address space resource which represents
14424     Address space for P2S VpnClient.
14425    :type vpn_client_address_pool: ~azure.mgmt.network.v2020_04_01.models.AddressSpace
14426    :param routing_configuration: The Routing Configuration indicating the associated and
14427     propagated route tables on this connection.
14428    :type routing_configuration: ~azure.mgmt.network.v2020_04_01.models.RoutingConfiguration
14429    :ivar provisioning_state: The provisioning state of the P2SConnectionConfiguration resource.
14430     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
14431    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
14432    """
14433
14434    _validation = {
14435        'etag': {'readonly': True},
14436        'provisioning_state': {'readonly': True},
14437    }
14438
14439    _attribute_map = {
14440        'id': {'key': 'id', 'type': 'str'},
14441        'name': {'key': 'name', 'type': 'str'},
14442        'etag': {'key': 'etag', 'type': 'str'},
14443        'vpn_client_address_pool': {'key': 'properties.vpnClientAddressPool', 'type': 'AddressSpace'},
14444        'routing_configuration': {'key': 'properties.routingConfiguration', 'type': 'RoutingConfiguration'},
14445        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14446    }
14447
14448    def __init__(
14449        self,
14450        *,
14451        id: Optional[str] = None,
14452        name: Optional[str] = None,
14453        vpn_client_address_pool: Optional["AddressSpace"] = None,
14454        routing_configuration: Optional["RoutingConfiguration"] = None,
14455        **kwargs
14456    ):
14457        super(P2SConnectionConfiguration, self).__init__(id=id, **kwargs)
14458        self.name = name
14459        self.etag = None
14460        self.vpn_client_address_pool = vpn_client_address_pool
14461        self.routing_configuration = routing_configuration
14462        self.provisioning_state = None
14463
14464
14465class P2SVpnConnectionHealth(msrest.serialization.Model):
14466    """P2S Vpn connection detailed health written to sas url.
14467
14468    :param sas_url: Returned sas url of the blob to which the p2s vpn connection detailed health
14469     will be written.
14470    :type sas_url: str
14471    """
14472
14473    _attribute_map = {
14474        'sas_url': {'key': 'sasUrl', 'type': 'str'},
14475    }
14476
14477    def __init__(
14478        self,
14479        *,
14480        sas_url: Optional[str] = None,
14481        **kwargs
14482    ):
14483        super(P2SVpnConnectionHealth, self).__init__(**kwargs)
14484        self.sas_url = sas_url
14485
14486
14487class P2SVpnConnectionHealthRequest(msrest.serialization.Model):
14488    """List of P2S Vpn connection health request.
14489
14490    :param vpn_user_names_filter: The list of p2s vpn user names whose p2s vpn connection detailed
14491     health to retrieve for.
14492    :type vpn_user_names_filter: list[str]
14493    :param output_blob_sas_url: The sas-url to download the P2S Vpn connection health detail.
14494    :type output_blob_sas_url: str
14495    """
14496
14497    _attribute_map = {
14498        'vpn_user_names_filter': {'key': 'vpnUserNamesFilter', 'type': '[str]'},
14499        'output_blob_sas_url': {'key': 'outputBlobSasUrl', 'type': 'str'},
14500    }
14501
14502    def __init__(
14503        self,
14504        *,
14505        vpn_user_names_filter: Optional[List[str]] = None,
14506        output_blob_sas_url: Optional[str] = None,
14507        **kwargs
14508    ):
14509        super(P2SVpnConnectionHealthRequest, self).__init__(**kwargs)
14510        self.vpn_user_names_filter = vpn_user_names_filter
14511        self.output_blob_sas_url = output_blob_sas_url
14512
14513
14514class P2SVpnConnectionRequest(msrest.serialization.Model):
14515    """List of p2s vpn connections to be disconnected.
14516
14517    :param vpn_connection_ids: List of p2s vpn connection Ids.
14518    :type vpn_connection_ids: list[str]
14519    """
14520
14521    _attribute_map = {
14522        'vpn_connection_ids': {'key': 'vpnConnectionIds', 'type': '[str]'},
14523    }
14524
14525    def __init__(
14526        self,
14527        *,
14528        vpn_connection_ids: Optional[List[str]] = None,
14529        **kwargs
14530    ):
14531        super(P2SVpnConnectionRequest, self).__init__(**kwargs)
14532        self.vpn_connection_ids = vpn_connection_ids
14533
14534
14535class P2SVpnGateway(Resource):
14536    """P2SVpnGateway Resource.
14537
14538    Variables are only populated by the server, and will be ignored when sending a request.
14539
14540    :param id: Resource ID.
14541    :type id: str
14542    :ivar name: Resource name.
14543    :vartype name: str
14544    :ivar type: Resource type.
14545    :vartype type: str
14546    :param location: Resource location.
14547    :type location: str
14548    :param tags: A set of tags. Resource tags.
14549    :type tags: dict[str, str]
14550    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14551    :vartype etag: str
14552    :param virtual_hub: The VirtualHub to which the gateway belongs.
14553    :type virtual_hub: ~azure.mgmt.network.v2020_04_01.models.SubResource
14554    :param p2_s_connection_configurations: List of all p2s connection configurations of the
14555     gateway.
14556    :type p2_s_connection_configurations:
14557     list[~azure.mgmt.network.v2020_04_01.models.P2SConnectionConfiguration]
14558    :ivar provisioning_state: The provisioning state of the P2S VPN gateway resource. Possible
14559     values include: "Succeeded", "Updating", "Deleting", "Failed".
14560    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
14561    :param vpn_gateway_scale_unit: The scale unit for this p2s vpn gateway.
14562    :type vpn_gateway_scale_unit: int
14563    :param vpn_server_configuration: The VpnServerConfiguration to which the p2sVpnGateway is
14564     attached to.
14565    :type vpn_server_configuration: ~azure.mgmt.network.v2020_04_01.models.SubResource
14566    :ivar vpn_client_connection_health: All P2S VPN clients' connection health status.
14567    :vartype vpn_client_connection_health:
14568     ~azure.mgmt.network.v2020_04_01.models.VpnClientConnectionHealth
14569    """
14570
14571    _validation = {
14572        'name': {'readonly': True},
14573        'type': {'readonly': True},
14574        'etag': {'readonly': True},
14575        'provisioning_state': {'readonly': True},
14576        'vpn_client_connection_health': {'readonly': True},
14577    }
14578
14579    _attribute_map = {
14580        'id': {'key': 'id', 'type': 'str'},
14581        'name': {'key': 'name', 'type': 'str'},
14582        'type': {'key': 'type', 'type': 'str'},
14583        'location': {'key': 'location', 'type': 'str'},
14584        'tags': {'key': 'tags', 'type': '{str}'},
14585        'etag': {'key': 'etag', 'type': 'str'},
14586        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
14587        'p2_s_connection_configurations': {'key': 'properties.p2SConnectionConfigurations', 'type': '[P2SConnectionConfiguration]'},
14588        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14589        'vpn_gateway_scale_unit': {'key': 'properties.vpnGatewayScaleUnit', 'type': 'int'},
14590        'vpn_server_configuration': {'key': 'properties.vpnServerConfiguration', 'type': 'SubResource'},
14591        'vpn_client_connection_health': {'key': 'properties.vpnClientConnectionHealth', 'type': 'VpnClientConnectionHealth'},
14592    }
14593
14594    def __init__(
14595        self,
14596        *,
14597        id: Optional[str] = None,
14598        location: Optional[str] = None,
14599        tags: Optional[Dict[str, str]] = None,
14600        virtual_hub: Optional["SubResource"] = None,
14601        p2_s_connection_configurations: Optional[List["P2SConnectionConfiguration"]] = None,
14602        vpn_gateway_scale_unit: Optional[int] = None,
14603        vpn_server_configuration: Optional["SubResource"] = None,
14604        **kwargs
14605    ):
14606        super(P2SVpnGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
14607        self.etag = None
14608        self.virtual_hub = virtual_hub
14609        self.p2_s_connection_configurations = p2_s_connection_configurations
14610        self.provisioning_state = None
14611        self.vpn_gateway_scale_unit = vpn_gateway_scale_unit
14612        self.vpn_server_configuration = vpn_server_configuration
14613        self.vpn_client_connection_health = None
14614
14615
14616class P2SVpnProfileParameters(msrest.serialization.Model):
14617    """Vpn Client Parameters for package generation.
14618
14619    :param authentication_method: VPN client authentication method. Possible values include:
14620     "EAPTLS", "EAPMSCHAPv2".
14621    :type authentication_method: str or ~azure.mgmt.network.v2020_04_01.models.AuthenticationMethod
14622    """
14623
14624    _attribute_map = {
14625        'authentication_method': {'key': 'authenticationMethod', 'type': 'str'},
14626    }
14627
14628    def __init__(
14629        self,
14630        *,
14631        authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None,
14632        **kwargs
14633    ):
14634        super(P2SVpnProfileParameters, self).__init__(**kwargs)
14635        self.authentication_method = authentication_method
14636
14637
14638class PacketCapture(msrest.serialization.Model):
14639    """Parameters that define the create packet capture operation.
14640
14641    All required parameters must be populated in order to send to Azure.
14642
14643    :param target: Required. The ID of the targeted resource, only VM is currently supported.
14644    :type target: str
14645    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
14646     are truncated.
14647    :type bytes_to_capture_per_packet: int
14648    :param total_bytes_per_session: Maximum size of the capture output.
14649    :type total_bytes_per_session: int
14650    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
14651    :type time_limit_in_seconds: int
14652    :param storage_location: Required. The storage location for a packet capture session.
14653    :type storage_location: ~azure.mgmt.network.v2020_04_01.models.PacketCaptureStorageLocation
14654    :param filters: A list of packet capture filters.
14655    :type filters: list[~azure.mgmt.network.v2020_04_01.models.PacketCaptureFilter]
14656    """
14657
14658    _validation = {
14659        'target': {'required': True},
14660        'storage_location': {'required': True},
14661    }
14662
14663    _attribute_map = {
14664        'target': {'key': 'properties.target', 'type': 'str'},
14665        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
14666        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
14667        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
14668        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
14669        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
14670    }
14671
14672    def __init__(
14673        self,
14674        *,
14675        target: str,
14676        storage_location: "PacketCaptureStorageLocation",
14677        bytes_to_capture_per_packet: Optional[int] = 0,
14678        total_bytes_per_session: Optional[int] = 1073741824,
14679        time_limit_in_seconds: Optional[int] = 18000,
14680        filters: Optional[List["PacketCaptureFilter"]] = None,
14681        **kwargs
14682    ):
14683        super(PacketCapture, self).__init__(**kwargs)
14684        self.target = target
14685        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
14686        self.total_bytes_per_session = total_bytes_per_session
14687        self.time_limit_in_seconds = time_limit_in_seconds
14688        self.storage_location = storage_location
14689        self.filters = filters
14690
14691
14692class PacketCaptureFilter(msrest.serialization.Model):
14693    """Filter that is applied to packet capture request. Multiple filters can be applied.
14694
14695    :param protocol: Protocol to be filtered on. Possible values include: "TCP", "UDP", "Any".
14696     Default value: "Any".
14697    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.PcProtocol
14698    :param local_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
14699     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple entries.
14700     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
14701     supported. Default = null.
14702    :type local_ip_address: str
14703    :param remote_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
14704     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple entries.
14705     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
14706     supported. Default = null.
14707    :type remote_ip_address: str
14708    :param local_port: Local port to be filtered on. Notation: "80" for single port entry."80-85"
14709     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
14710     ranges with multiple entries not currently supported. Default = null.
14711    :type local_port: str
14712    :param remote_port: Remote port to be filtered on. Notation: "80" for single port entry."80-85"
14713     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
14714     ranges with multiple entries not currently supported. Default = null.
14715    :type remote_port: str
14716    """
14717
14718    _attribute_map = {
14719        'protocol': {'key': 'protocol', 'type': 'str'},
14720        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
14721        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
14722        'local_port': {'key': 'localPort', 'type': 'str'},
14723        'remote_port': {'key': 'remotePort', 'type': 'str'},
14724    }
14725
14726    def __init__(
14727        self,
14728        *,
14729        protocol: Optional[Union[str, "PcProtocol"]] = "Any",
14730        local_ip_address: Optional[str] = None,
14731        remote_ip_address: Optional[str] = None,
14732        local_port: Optional[str] = None,
14733        remote_port: Optional[str] = None,
14734        **kwargs
14735    ):
14736        super(PacketCaptureFilter, self).__init__(**kwargs)
14737        self.protocol = protocol
14738        self.local_ip_address = local_ip_address
14739        self.remote_ip_address = remote_ip_address
14740        self.local_port = local_port
14741        self.remote_port = remote_port
14742
14743
14744class PacketCaptureListResult(msrest.serialization.Model):
14745    """List of packet capture sessions.
14746
14747    :param value: Information about packet capture sessions.
14748    :type value: list[~azure.mgmt.network.v2020_04_01.models.PacketCaptureResult]
14749    """
14750
14751    _attribute_map = {
14752        'value': {'key': 'value', 'type': '[PacketCaptureResult]'},
14753    }
14754
14755    def __init__(
14756        self,
14757        *,
14758        value: Optional[List["PacketCaptureResult"]] = None,
14759        **kwargs
14760    ):
14761        super(PacketCaptureListResult, self).__init__(**kwargs)
14762        self.value = value
14763
14764
14765class PacketCaptureParameters(msrest.serialization.Model):
14766    """Parameters that define the create packet capture operation.
14767
14768    All required parameters must be populated in order to send to Azure.
14769
14770    :param target: Required. The ID of the targeted resource, only VM is currently supported.
14771    :type target: str
14772    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
14773     are truncated.
14774    :type bytes_to_capture_per_packet: int
14775    :param total_bytes_per_session: Maximum size of the capture output.
14776    :type total_bytes_per_session: int
14777    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
14778    :type time_limit_in_seconds: int
14779    :param storage_location: Required. The storage location for a packet capture session.
14780    :type storage_location: ~azure.mgmt.network.v2020_04_01.models.PacketCaptureStorageLocation
14781    :param filters: A list of packet capture filters.
14782    :type filters: list[~azure.mgmt.network.v2020_04_01.models.PacketCaptureFilter]
14783    """
14784
14785    _validation = {
14786        'target': {'required': True},
14787        'storage_location': {'required': True},
14788    }
14789
14790    _attribute_map = {
14791        'target': {'key': 'target', 'type': 'str'},
14792        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
14793        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
14794        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
14795        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
14796        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
14797    }
14798
14799    def __init__(
14800        self,
14801        *,
14802        target: str,
14803        storage_location: "PacketCaptureStorageLocation",
14804        bytes_to_capture_per_packet: Optional[int] = 0,
14805        total_bytes_per_session: Optional[int] = 1073741824,
14806        time_limit_in_seconds: Optional[int] = 18000,
14807        filters: Optional[List["PacketCaptureFilter"]] = None,
14808        **kwargs
14809    ):
14810        super(PacketCaptureParameters, self).__init__(**kwargs)
14811        self.target = target
14812        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
14813        self.total_bytes_per_session = total_bytes_per_session
14814        self.time_limit_in_seconds = time_limit_in_seconds
14815        self.storage_location = storage_location
14816        self.filters = filters
14817
14818
14819class PacketCaptureQueryStatusResult(msrest.serialization.Model):
14820    """Status of packet capture session.
14821
14822    :param name: The name of the packet capture resource.
14823    :type name: str
14824    :param id: The ID of the packet capture resource.
14825    :type id: str
14826    :param capture_start_time: The start time of the packet capture session.
14827    :type capture_start_time: ~datetime.datetime
14828    :param packet_capture_status: The status of the packet capture session. Possible values
14829     include: "NotStarted", "Running", "Stopped", "Error", "Unknown".
14830    :type packet_capture_status: str or ~azure.mgmt.network.v2020_04_01.models.PcStatus
14831    :param stop_reason: The reason the current packet capture session was stopped.
14832    :type stop_reason: str
14833    :param packet_capture_error: List of errors of packet capture session.
14834    :type packet_capture_error: list[str or ~azure.mgmt.network.v2020_04_01.models.PcError]
14835    """
14836
14837    _attribute_map = {
14838        'name': {'key': 'name', 'type': 'str'},
14839        'id': {'key': 'id', 'type': 'str'},
14840        'capture_start_time': {'key': 'captureStartTime', 'type': 'iso-8601'},
14841        'packet_capture_status': {'key': 'packetCaptureStatus', 'type': 'str'},
14842        'stop_reason': {'key': 'stopReason', 'type': 'str'},
14843        'packet_capture_error': {'key': 'packetCaptureError', 'type': '[str]'},
14844    }
14845
14846    def __init__(
14847        self,
14848        *,
14849        name: Optional[str] = None,
14850        id: Optional[str] = None,
14851        capture_start_time: Optional[datetime.datetime] = None,
14852        packet_capture_status: Optional[Union[str, "PcStatus"]] = None,
14853        stop_reason: Optional[str] = None,
14854        packet_capture_error: Optional[List[Union[str, "PcError"]]] = None,
14855        **kwargs
14856    ):
14857        super(PacketCaptureQueryStatusResult, self).__init__(**kwargs)
14858        self.name = name
14859        self.id = id
14860        self.capture_start_time = capture_start_time
14861        self.packet_capture_status = packet_capture_status
14862        self.stop_reason = stop_reason
14863        self.packet_capture_error = packet_capture_error
14864
14865
14866class PacketCaptureResult(msrest.serialization.Model):
14867    """Information about packet capture session.
14868
14869    Variables are only populated by the server, and will be ignored when sending a request.
14870
14871    :ivar name: Name of the packet capture session.
14872    :vartype name: str
14873    :ivar id: ID of the packet capture operation.
14874    :vartype id: str
14875    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14876    :vartype etag: str
14877    :param target: The ID of the targeted resource, only VM is currently supported.
14878    :type target: str
14879    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
14880     are truncated.
14881    :type bytes_to_capture_per_packet: int
14882    :param total_bytes_per_session: Maximum size of the capture output.
14883    :type total_bytes_per_session: int
14884    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
14885    :type time_limit_in_seconds: int
14886    :param storage_location: The storage location for a packet capture session.
14887    :type storage_location: ~azure.mgmt.network.v2020_04_01.models.PacketCaptureStorageLocation
14888    :param filters: A list of packet capture filters.
14889    :type filters: list[~azure.mgmt.network.v2020_04_01.models.PacketCaptureFilter]
14890    :ivar provisioning_state: The provisioning state of the packet capture session. Possible values
14891     include: "Succeeded", "Updating", "Deleting", "Failed".
14892    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
14893    """
14894
14895    _validation = {
14896        'name': {'readonly': True},
14897        'id': {'readonly': True},
14898        'etag': {'readonly': True},
14899        'provisioning_state': {'readonly': True},
14900    }
14901
14902    _attribute_map = {
14903        'name': {'key': 'name', 'type': 'str'},
14904        'id': {'key': 'id', 'type': 'str'},
14905        'etag': {'key': 'etag', 'type': 'str'},
14906        'target': {'key': 'properties.target', 'type': 'str'},
14907        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
14908        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
14909        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
14910        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
14911        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
14912        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14913    }
14914
14915    def __init__(
14916        self,
14917        *,
14918        target: Optional[str] = None,
14919        bytes_to_capture_per_packet: Optional[int] = 0,
14920        total_bytes_per_session: Optional[int] = 1073741824,
14921        time_limit_in_seconds: Optional[int] = 18000,
14922        storage_location: Optional["PacketCaptureStorageLocation"] = None,
14923        filters: Optional[List["PacketCaptureFilter"]] = None,
14924        **kwargs
14925    ):
14926        super(PacketCaptureResult, self).__init__(**kwargs)
14927        self.name = None
14928        self.id = None
14929        self.etag = None
14930        self.target = target
14931        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
14932        self.total_bytes_per_session = total_bytes_per_session
14933        self.time_limit_in_seconds = time_limit_in_seconds
14934        self.storage_location = storage_location
14935        self.filters = filters
14936        self.provisioning_state = None
14937
14938
14939class PacketCaptureResultProperties(PacketCaptureParameters):
14940    """The properties of a packet capture session.
14941
14942    Variables are only populated by the server, and will be ignored when sending a request.
14943
14944    All required parameters must be populated in order to send to Azure.
14945
14946    :param target: Required. The ID of the targeted resource, only VM is currently supported.
14947    :type target: str
14948    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
14949     are truncated.
14950    :type bytes_to_capture_per_packet: int
14951    :param total_bytes_per_session: Maximum size of the capture output.
14952    :type total_bytes_per_session: int
14953    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
14954    :type time_limit_in_seconds: int
14955    :param storage_location: Required. The storage location for a packet capture session.
14956    :type storage_location: ~azure.mgmt.network.v2020_04_01.models.PacketCaptureStorageLocation
14957    :param filters: A list of packet capture filters.
14958    :type filters: list[~azure.mgmt.network.v2020_04_01.models.PacketCaptureFilter]
14959    :ivar provisioning_state: The provisioning state of the packet capture session. Possible values
14960     include: "Succeeded", "Updating", "Deleting", "Failed".
14961    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
14962    """
14963
14964    _validation = {
14965        'target': {'required': True},
14966        'storage_location': {'required': True},
14967        'provisioning_state': {'readonly': True},
14968    }
14969
14970    _attribute_map = {
14971        'target': {'key': 'target', 'type': 'str'},
14972        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
14973        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
14974        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
14975        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
14976        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
14977        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
14978    }
14979
14980    def __init__(
14981        self,
14982        *,
14983        target: str,
14984        storage_location: "PacketCaptureStorageLocation",
14985        bytes_to_capture_per_packet: Optional[int] = 0,
14986        total_bytes_per_session: Optional[int] = 1073741824,
14987        time_limit_in_seconds: Optional[int] = 18000,
14988        filters: Optional[List["PacketCaptureFilter"]] = None,
14989        **kwargs
14990    ):
14991        super(PacketCaptureResultProperties, self).__init__(target=target, bytes_to_capture_per_packet=bytes_to_capture_per_packet, total_bytes_per_session=total_bytes_per_session, time_limit_in_seconds=time_limit_in_seconds, storage_location=storage_location, filters=filters, **kwargs)
14992        self.provisioning_state = None
14993
14994
14995class PacketCaptureStorageLocation(msrest.serialization.Model):
14996    """The storage location for a packet capture session.
14997
14998    :param storage_id: The ID of the storage account to save the packet capture session. Required
14999     if no local file path is provided.
15000    :type storage_id: str
15001    :param storage_path: The URI of the storage path to save the packet capture. Must be a
15002     well-formed URI describing the location to save the packet capture.
15003    :type storage_path: str
15004    :param file_path: A valid local path on the targeting VM. Must include the name of the capture
15005     file (*.cap). For linux virtual machine it must start with /var/captures. Required if no
15006     storage ID is provided, otherwise optional.
15007    :type file_path: str
15008    """
15009
15010    _attribute_map = {
15011        'storage_id': {'key': 'storageId', 'type': 'str'},
15012        'storage_path': {'key': 'storagePath', 'type': 'str'},
15013        'file_path': {'key': 'filePath', 'type': 'str'},
15014    }
15015
15016    def __init__(
15017        self,
15018        *,
15019        storage_id: Optional[str] = None,
15020        storage_path: Optional[str] = None,
15021        file_path: Optional[str] = None,
15022        **kwargs
15023    ):
15024        super(PacketCaptureStorageLocation, self).__init__(**kwargs)
15025        self.storage_id = storage_id
15026        self.storage_path = storage_path
15027        self.file_path = file_path
15028
15029
15030class PatchRouteFilter(SubResource):
15031    """Route Filter Resource.
15032
15033    Variables are only populated by the server, and will be ignored when sending a request.
15034
15035    :param id: Resource ID.
15036    :type id: str
15037    :ivar name: The name of the resource that is unique within a resource group. This name can be
15038     used to access the resource.
15039    :vartype name: str
15040    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15041    :vartype etag: str
15042    :ivar type: Resource type.
15043    :vartype type: str
15044    :param tags: A set of tags. Resource tags.
15045    :type tags: dict[str, str]
15046    :param rules: Collection of RouteFilterRules contained within a route filter.
15047    :type rules: list[~azure.mgmt.network.v2020_04_01.models.RouteFilterRule]
15048    :ivar peerings: A collection of references to express route circuit peerings.
15049    :vartype peerings: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeering]
15050    :ivar ipv6_peerings: A collection of references to express route circuit ipv6 peerings.
15051    :vartype ipv6_peerings: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeering]
15052    :ivar provisioning_state: The provisioning state of the route filter resource. Possible values
15053     include: "Succeeded", "Updating", "Deleting", "Failed".
15054    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
15055    """
15056
15057    _validation = {
15058        'name': {'readonly': True},
15059        'etag': {'readonly': True},
15060        'type': {'readonly': True},
15061        'peerings': {'readonly': True},
15062        'ipv6_peerings': {'readonly': True},
15063        'provisioning_state': {'readonly': True},
15064    }
15065
15066    _attribute_map = {
15067        'id': {'key': 'id', 'type': 'str'},
15068        'name': {'key': 'name', 'type': 'str'},
15069        'etag': {'key': 'etag', 'type': 'str'},
15070        'type': {'key': 'type', 'type': 'str'},
15071        'tags': {'key': 'tags', 'type': '{str}'},
15072        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
15073        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
15074        'ipv6_peerings': {'key': 'properties.ipv6Peerings', 'type': '[ExpressRouteCircuitPeering]'},
15075        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15076    }
15077
15078    def __init__(
15079        self,
15080        *,
15081        id: Optional[str] = None,
15082        tags: Optional[Dict[str, str]] = None,
15083        rules: Optional[List["RouteFilterRule"]] = None,
15084        **kwargs
15085    ):
15086        super(PatchRouteFilter, self).__init__(id=id, **kwargs)
15087        self.name = None
15088        self.etag = None
15089        self.type = None
15090        self.tags = tags
15091        self.rules = rules
15092        self.peerings = None
15093        self.ipv6_peerings = None
15094        self.provisioning_state = None
15095
15096
15097class PatchRouteFilterRule(SubResource):
15098    """Route Filter Rule Resource.
15099
15100    Variables are only populated by the server, and will be ignored when sending a request.
15101
15102    :param id: Resource ID.
15103    :type id: str
15104    :ivar name: The name of the resource that is unique within a resource group. This name can be
15105     used to access the resource.
15106    :vartype name: str
15107    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15108    :vartype etag: str
15109    :param access: The access type of the rule. Possible values include: "Allow", "Deny".
15110    :type access: str or ~azure.mgmt.network.v2020_04_01.models.Access
15111    :param route_filter_rule_type: The rule type of the rule. Possible values include: "Community".
15112    :type route_filter_rule_type: str or ~azure.mgmt.network.v2020_04_01.models.RouteFilterRuleType
15113    :param communities: The collection for bgp community values to filter on. e.g.
15114     ['12076:5010','12076:5020'].
15115    :type communities: list[str]
15116    :ivar provisioning_state: The provisioning state of the route filter rule resource. Possible
15117     values include: "Succeeded", "Updating", "Deleting", "Failed".
15118    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
15119    """
15120
15121    _validation = {
15122        'name': {'readonly': True},
15123        'etag': {'readonly': True},
15124        'provisioning_state': {'readonly': True},
15125    }
15126
15127    _attribute_map = {
15128        'id': {'key': 'id', 'type': 'str'},
15129        'name': {'key': 'name', 'type': 'str'},
15130        'etag': {'key': 'etag', 'type': 'str'},
15131        'access': {'key': 'properties.access', 'type': 'str'},
15132        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
15133        'communities': {'key': 'properties.communities', 'type': '[str]'},
15134        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15135    }
15136
15137    def __init__(
15138        self,
15139        *,
15140        id: Optional[str] = None,
15141        access: Optional[Union[str, "Access"]] = None,
15142        route_filter_rule_type: Optional[Union[str, "RouteFilterRuleType"]] = None,
15143        communities: Optional[List[str]] = None,
15144        **kwargs
15145    ):
15146        super(PatchRouteFilterRule, self).__init__(id=id, **kwargs)
15147        self.name = None
15148        self.etag = None
15149        self.access = access
15150        self.route_filter_rule_type = route_filter_rule_type
15151        self.communities = communities
15152        self.provisioning_state = None
15153
15154
15155class PeerExpressRouteCircuitConnection(SubResource):
15156    """Peer Express Route Circuit Connection in an ExpressRouteCircuitPeering resource.
15157
15158    Variables are only populated by the server, and will be ignored when sending a request.
15159
15160    :param id: Resource ID.
15161    :type id: str
15162    :param name: The name of the resource that is unique within a resource group. This name can be
15163     used to access the resource.
15164    :type name: str
15165    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15166    :vartype etag: str
15167    :ivar type: Type of the resource.
15168    :vartype type: str
15169    :param express_route_circuit_peering: Reference to Express Route Circuit Private Peering
15170     Resource of the circuit.
15171    :type express_route_circuit_peering: ~azure.mgmt.network.v2020_04_01.models.SubResource
15172    :param peer_express_route_circuit_peering: Reference to Express Route Circuit Private Peering
15173     Resource of the peered circuit.
15174    :type peer_express_route_circuit_peering: ~azure.mgmt.network.v2020_04_01.models.SubResource
15175    :param address_prefix: /29 IP address space to carve out Customer addresses for tunnels.
15176    :type address_prefix: str
15177    :ivar circuit_connection_status: Express Route Circuit connection state. Possible values
15178     include: "Connected", "Connecting", "Disconnected".
15179    :vartype circuit_connection_status: str or
15180     ~azure.mgmt.network.v2020_04_01.models.CircuitConnectionStatus
15181    :param connection_name: The name of the express route circuit connection resource.
15182    :type connection_name: str
15183    :param auth_resource_guid: The resource guid of the authorization used for the express route
15184     circuit connection.
15185    :type auth_resource_guid: str
15186    :ivar provisioning_state: The provisioning state of the peer express route circuit connection
15187     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
15188    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
15189    """
15190
15191    _validation = {
15192        'etag': {'readonly': True},
15193        'type': {'readonly': True},
15194        'circuit_connection_status': {'readonly': True},
15195        'provisioning_state': {'readonly': True},
15196    }
15197
15198    _attribute_map = {
15199        'id': {'key': 'id', 'type': 'str'},
15200        'name': {'key': 'name', 'type': 'str'},
15201        'etag': {'key': 'etag', 'type': 'str'},
15202        'type': {'key': 'type', 'type': 'str'},
15203        'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'SubResource'},
15204        'peer_express_route_circuit_peering': {'key': 'properties.peerExpressRouteCircuitPeering', 'type': 'SubResource'},
15205        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
15206        'circuit_connection_status': {'key': 'properties.circuitConnectionStatus', 'type': 'str'},
15207        'connection_name': {'key': 'properties.connectionName', 'type': 'str'},
15208        'auth_resource_guid': {'key': 'properties.authResourceGuid', 'type': 'str'},
15209        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15210    }
15211
15212    def __init__(
15213        self,
15214        *,
15215        id: Optional[str] = None,
15216        name: Optional[str] = None,
15217        express_route_circuit_peering: Optional["SubResource"] = None,
15218        peer_express_route_circuit_peering: Optional["SubResource"] = None,
15219        address_prefix: Optional[str] = None,
15220        connection_name: Optional[str] = None,
15221        auth_resource_guid: Optional[str] = None,
15222        **kwargs
15223    ):
15224        super(PeerExpressRouteCircuitConnection, self).__init__(id=id, **kwargs)
15225        self.name = name
15226        self.etag = None
15227        self.type = None
15228        self.express_route_circuit_peering = express_route_circuit_peering
15229        self.peer_express_route_circuit_peering = peer_express_route_circuit_peering
15230        self.address_prefix = address_prefix
15231        self.circuit_connection_status = None
15232        self.connection_name = connection_name
15233        self.auth_resource_guid = auth_resource_guid
15234        self.provisioning_state = None
15235
15236
15237class PeerExpressRouteCircuitConnectionListResult(msrest.serialization.Model):
15238    """Response for ListPeeredConnections API service call retrieves all global reach peer circuit connections that belongs to a Private Peering for an ExpressRouteCircuit.
15239
15240    :param value: The global reach peer circuit connection associated with Private Peering in an
15241     ExpressRoute Circuit.
15242    :type value: list[~azure.mgmt.network.v2020_04_01.models.PeerExpressRouteCircuitConnection]
15243    :param next_link: The URL to get the next set of results.
15244    :type next_link: str
15245    """
15246
15247    _attribute_map = {
15248        'value': {'key': 'value', 'type': '[PeerExpressRouteCircuitConnection]'},
15249        'next_link': {'key': 'nextLink', 'type': 'str'},
15250    }
15251
15252    def __init__(
15253        self,
15254        *,
15255        value: Optional[List["PeerExpressRouteCircuitConnection"]] = None,
15256        next_link: Optional[str] = None,
15257        **kwargs
15258    ):
15259        super(PeerExpressRouteCircuitConnectionListResult, self).__init__(**kwargs)
15260        self.value = value
15261        self.next_link = next_link
15262
15263
15264class PolicySettings(msrest.serialization.Model):
15265    """Defines contents of a web application firewall global configuration.
15266
15267    :param state: The state of the policy. Possible values include: "Disabled", "Enabled".
15268    :type state: str or ~azure.mgmt.network.v2020_04_01.models.WebApplicationFirewallEnabledState
15269    :param mode: The mode of the policy. Possible values include: "Prevention", "Detection".
15270    :type mode: str or ~azure.mgmt.network.v2020_04_01.models.WebApplicationFirewallMode
15271    :param request_body_check: Whether to allow WAF to check request Body.
15272    :type request_body_check: bool
15273    :param max_request_body_size_in_kb: Maximum request body size in Kb for WAF.
15274    :type max_request_body_size_in_kb: int
15275    :param file_upload_limit_in_mb: Maximum file upload size in Mb for WAF.
15276    :type file_upload_limit_in_mb: int
15277    """
15278
15279    _validation = {
15280        'max_request_body_size_in_kb': {'maximum': 128, 'minimum': 8},
15281        'file_upload_limit_in_mb': {'minimum': 0},
15282    }
15283
15284    _attribute_map = {
15285        'state': {'key': 'state', 'type': 'str'},
15286        'mode': {'key': 'mode', 'type': 'str'},
15287        'request_body_check': {'key': 'requestBodyCheck', 'type': 'bool'},
15288        'max_request_body_size_in_kb': {'key': 'maxRequestBodySizeInKb', 'type': 'int'},
15289        'file_upload_limit_in_mb': {'key': 'fileUploadLimitInMb', 'type': 'int'},
15290    }
15291
15292    def __init__(
15293        self,
15294        *,
15295        state: Optional[Union[str, "WebApplicationFirewallEnabledState"]] = None,
15296        mode: Optional[Union[str, "WebApplicationFirewallMode"]] = None,
15297        request_body_check: Optional[bool] = None,
15298        max_request_body_size_in_kb: Optional[int] = None,
15299        file_upload_limit_in_mb: Optional[int] = None,
15300        **kwargs
15301    ):
15302        super(PolicySettings, self).__init__(**kwargs)
15303        self.state = state
15304        self.mode = mode
15305        self.request_body_check = request_body_check
15306        self.max_request_body_size_in_kb = max_request_body_size_in_kb
15307        self.file_upload_limit_in_mb = file_upload_limit_in_mb
15308
15309
15310class PrepareNetworkPoliciesRequest(msrest.serialization.Model):
15311    """Details of PrepareNetworkPolicies for Subnet.
15312
15313    :param service_name: The name of the service for which subnet is being prepared for.
15314    :type service_name: str
15315    :param network_intent_policy_configurations: A list of NetworkIntentPolicyConfiguration.
15316    :type network_intent_policy_configurations:
15317     list[~azure.mgmt.network.v2020_04_01.models.NetworkIntentPolicyConfiguration]
15318    """
15319
15320    _attribute_map = {
15321        'service_name': {'key': 'serviceName', 'type': 'str'},
15322        'network_intent_policy_configurations': {'key': 'networkIntentPolicyConfigurations', 'type': '[NetworkIntentPolicyConfiguration]'},
15323    }
15324
15325    def __init__(
15326        self,
15327        *,
15328        service_name: Optional[str] = None,
15329        network_intent_policy_configurations: Optional[List["NetworkIntentPolicyConfiguration"]] = None,
15330        **kwargs
15331    ):
15332        super(PrepareNetworkPoliciesRequest, self).__init__(**kwargs)
15333        self.service_name = service_name
15334        self.network_intent_policy_configurations = network_intent_policy_configurations
15335
15336
15337class PrivateDnsZoneConfig(msrest.serialization.Model):
15338    """PrivateDnsZoneConfig resource.
15339
15340    Variables are only populated by the server, and will be ignored when sending a request.
15341
15342    :param name: Name of the resource that is unique within a resource group. This name can be used
15343     to access the resource.
15344    :type name: str
15345    :param private_dns_zone_id: The resource id of the private dns zone.
15346    :type private_dns_zone_id: str
15347    :ivar record_sets: A collection of information regarding a recordSet, holding information to
15348     identify private resources.
15349    :vartype record_sets: list[~azure.mgmt.network.v2020_04_01.models.RecordSet]
15350    """
15351
15352    _validation = {
15353        'record_sets': {'readonly': True},
15354    }
15355
15356    _attribute_map = {
15357        'name': {'key': 'name', 'type': 'str'},
15358        'private_dns_zone_id': {'key': 'properties.privateDnsZoneId', 'type': 'str'},
15359        'record_sets': {'key': 'properties.recordSets', 'type': '[RecordSet]'},
15360    }
15361
15362    def __init__(
15363        self,
15364        *,
15365        name: Optional[str] = None,
15366        private_dns_zone_id: Optional[str] = None,
15367        **kwargs
15368    ):
15369        super(PrivateDnsZoneConfig, self).__init__(**kwargs)
15370        self.name = name
15371        self.private_dns_zone_id = private_dns_zone_id
15372        self.record_sets = None
15373
15374
15375class PrivateDnsZoneGroup(SubResource):
15376    """Private dns zone group resource.
15377
15378    Variables are only populated by the server, and will be ignored when sending a request.
15379
15380    :param id: Resource ID.
15381    :type id: str
15382    :param name: Name of the resource that is unique within a resource group. This name can be used
15383     to access the resource.
15384    :type name: str
15385    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15386    :vartype etag: str
15387    :ivar provisioning_state: The provisioning state of the private dns zone group resource.
15388     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
15389    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
15390    :param private_dns_zone_configs: A collection of private dns zone configurations of the private
15391     dns zone group.
15392    :type private_dns_zone_configs:
15393     list[~azure.mgmt.network.v2020_04_01.models.PrivateDnsZoneConfig]
15394    """
15395
15396    _validation = {
15397        'etag': {'readonly': True},
15398        'provisioning_state': {'readonly': True},
15399    }
15400
15401    _attribute_map = {
15402        'id': {'key': 'id', 'type': 'str'},
15403        'name': {'key': 'name', 'type': 'str'},
15404        'etag': {'key': 'etag', 'type': 'str'},
15405        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15406        'private_dns_zone_configs': {'key': 'properties.privateDnsZoneConfigs', 'type': '[PrivateDnsZoneConfig]'},
15407    }
15408
15409    def __init__(
15410        self,
15411        *,
15412        id: Optional[str] = None,
15413        name: Optional[str] = None,
15414        private_dns_zone_configs: Optional[List["PrivateDnsZoneConfig"]] = None,
15415        **kwargs
15416    ):
15417        super(PrivateDnsZoneGroup, self).__init__(id=id, **kwargs)
15418        self.name = name
15419        self.etag = None
15420        self.provisioning_state = None
15421        self.private_dns_zone_configs = private_dns_zone_configs
15422
15423
15424class PrivateDnsZoneGroupListResult(msrest.serialization.Model):
15425    """Response for the ListPrivateDnsZoneGroups API service call.
15426
15427    Variables are only populated by the server, and will be ignored when sending a request.
15428
15429    :param value: A list of private dns zone group resources in a private endpoint.
15430    :type value: list[~azure.mgmt.network.v2020_04_01.models.PrivateDnsZoneGroup]
15431    :ivar next_link: The URL to get the next set of results.
15432    :vartype next_link: str
15433    """
15434
15435    _validation = {
15436        'next_link': {'readonly': True},
15437    }
15438
15439    _attribute_map = {
15440        'value': {'key': 'value', 'type': '[PrivateDnsZoneGroup]'},
15441        'next_link': {'key': 'nextLink', 'type': 'str'},
15442    }
15443
15444    def __init__(
15445        self,
15446        *,
15447        value: Optional[List["PrivateDnsZoneGroup"]] = None,
15448        **kwargs
15449    ):
15450        super(PrivateDnsZoneGroupListResult, self).__init__(**kwargs)
15451        self.value = value
15452        self.next_link = None
15453
15454
15455class PrivateEndpoint(Resource):
15456    """Private endpoint resource.
15457
15458    Variables are only populated by the server, and will be ignored when sending a request.
15459
15460    :param id: Resource ID.
15461    :type id: str
15462    :ivar name: Resource name.
15463    :vartype name: str
15464    :ivar type: Resource type.
15465    :vartype type: str
15466    :param location: Resource location.
15467    :type location: str
15468    :param tags: A set of tags. Resource tags.
15469    :type tags: dict[str, str]
15470    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15471    :vartype etag: str
15472    :param subnet: The ID of the subnet from which the private IP will be allocated.
15473    :type subnet: ~azure.mgmt.network.v2020_04_01.models.Subnet
15474    :ivar network_interfaces: An array of references to the network interfaces created for this
15475     private endpoint.
15476    :vartype network_interfaces: list[~azure.mgmt.network.v2020_04_01.models.NetworkInterface]
15477    :ivar provisioning_state: The provisioning state of the private endpoint resource. Possible
15478     values include: "Succeeded", "Updating", "Deleting", "Failed".
15479    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
15480    :param private_link_service_connections: A grouping of information about the connection to the
15481     remote resource.
15482    :type private_link_service_connections:
15483     list[~azure.mgmt.network.v2020_04_01.models.PrivateLinkServiceConnection]
15484    :param manual_private_link_service_connections: A grouping of information about the connection
15485     to the remote resource. Used when the network admin does not have access to approve connections
15486     to the remote resource.
15487    :type manual_private_link_service_connections:
15488     list[~azure.mgmt.network.v2020_04_01.models.PrivateLinkServiceConnection]
15489    :param custom_dns_configs: An array of custom dns configurations.
15490    :type custom_dns_configs:
15491     list[~azure.mgmt.network.v2020_04_01.models.CustomDnsConfigPropertiesFormat]
15492    """
15493
15494    _validation = {
15495        'name': {'readonly': True},
15496        'type': {'readonly': True},
15497        'etag': {'readonly': True},
15498        'network_interfaces': {'readonly': True},
15499        'provisioning_state': {'readonly': True},
15500    }
15501
15502    _attribute_map = {
15503        'id': {'key': 'id', 'type': 'str'},
15504        'name': {'key': 'name', 'type': 'str'},
15505        'type': {'key': 'type', 'type': 'str'},
15506        'location': {'key': 'location', 'type': 'str'},
15507        'tags': {'key': 'tags', 'type': '{str}'},
15508        'etag': {'key': 'etag', 'type': 'str'},
15509        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
15510        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
15511        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15512        'private_link_service_connections': {'key': 'properties.privateLinkServiceConnections', 'type': '[PrivateLinkServiceConnection]'},
15513        'manual_private_link_service_connections': {'key': 'properties.manualPrivateLinkServiceConnections', 'type': '[PrivateLinkServiceConnection]'},
15514        'custom_dns_configs': {'key': 'properties.customDnsConfigs', 'type': '[CustomDnsConfigPropertiesFormat]'},
15515    }
15516
15517    def __init__(
15518        self,
15519        *,
15520        id: Optional[str] = None,
15521        location: Optional[str] = None,
15522        tags: Optional[Dict[str, str]] = None,
15523        subnet: Optional["Subnet"] = None,
15524        private_link_service_connections: Optional[List["PrivateLinkServiceConnection"]] = None,
15525        manual_private_link_service_connections: Optional[List["PrivateLinkServiceConnection"]] = None,
15526        custom_dns_configs: Optional[List["CustomDnsConfigPropertiesFormat"]] = None,
15527        **kwargs
15528    ):
15529        super(PrivateEndpoint, self).__init__(id=id, location=location, tags=tags, **kwargs)
15530        self.etag = None
15531        self.subnet = subnet
15532        self.network_interfaces = None
15533        self.provisioning_state = None
15534        self.private_link_service_connections = private_link_service_connections
15535        self.manual_private_link_service_connections = manual_private_link_service_connections
15536        self.custom_dns_configs = custom_dns_configs
15537
15538
15539class PrivateEndpointConnection(SubResource):
15540    """PrivateEndpointConnection resource.
15541
15542    Variables are only populated by the server, and will be ignored when sending a request.
15543
15544    :param id: Resource ID.
15545    :type id: str
15546    :param name: The name of the resource that is unique within a resource group. This name can be
15547     used to access the resource.
15548    :type name: str
15549    :ivar type: The resource type.
15550    :vartype type: str
15551    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15552    :vartype etag: str
15553    :ivar private_endpoint: The resource of private end point.
15554    :vartype private_endpoint: ~azure.mgmt.network.v2020_04_01.models.PrivateEndpoint
15555    :param private_link_service_connection_state: A collection of information about the state of
15556     the connection between service consumer and provider.
15557    :type private_link_service_connection_state:
15558     ~azure.mgmt.network.v2020_04_01.models.PrivateLinkServiceConnectionState
15559    :ivar provisioning_state: The provisioning state of the private endpoint connection resource.
15560     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
15561    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
15562    :ivar link_identifier: The consumer link id.
15563    :vartype link_identifier: str
15564    """
15565
15566    _validation = {
15567        'type': {'readonly': True},
15568        'etag': {'readonly': True},
15569        'private_endpoint': {'readonly': True},
15570        'provisioning_state': {'readonly': True},
15571        'link_identifier': {'readonly': True},
15572    }
15573
15574    _attribute_map = {
15575        'id': {'key': 'id', 'type': 'str'},
15576        'name': {'key': 'name', 'type': 'str'},
15577        'type': {'key': 'type', 'type': 'str'},
15578        'etag': {'key': 'etag', 'type': 'str'},
15579        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpoint'},
15580        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'},
15581        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15582        'link_identifier': {'key': 'properties.linkIdentifier', 'type': 'str'},
15583    }
15584
15585    def __init__(
15586        self,
15587        *,
15588        id: Optional[str] = None,
15589        name: Optional[str] = None,
15590        private_link_service_connection_state: Optional["PrivateLinkServiceConnectionState"] = None,
15591        **kwargs
15592    ):
15593        super(PrivateEndpointConnection, self).__init__(id=id, **kwargs)
15594        self.name = name
15595        self.type = None
15596        self.etag = None
15597        self.private_endpoint = None
15598        self.private_link_service_connection_state = private_link_service_connection_state
15599        self.provisioning_state = None
15600        self.link_identifier = None
15601
15602
15603class PrivateEndpointConnectionListResult(msrest.serialization.Model):
15604    """Response for the ListPrivateEndpointConnection API service call.
15605
15606    Variables are only populated by the server, and will be ignored when sending a request.
15607
15608    :param value: A list of PrivateEndpointConnection resources for a specific private link
15609     service.
15610    :type value: list[~azure.mgmt.network.v2020_04_01.models.PrivateEndpointConnection]
15611    :ivar next_link: The URL to get the next set of results.
15612    :vartype next_link: str
15613    """
15614
15615    _validation = {
15616        'next_link': {'readonly': True},
15617    }
15618
15619    _attribute_map = {
15620        'value': {'key': 'value', 'type': '[PrivateEndpointConnection]'},
15621        'next_link': {'key': 'nextLink', 'type': 'str'},
15622    }
15623
15624    def __init__(
15625        self,
15626        *,
15627        value: Optional[List["PrivateEndpointConnection"]] = None,
15628        **kwargs
15629    ):
15630        super(PrivateEndpointConnectionListResult, self).__init__(**kwargs)
15631        self.value = value
15632        self.next_link = None
15633
15634
15635class PrivateEndpointListResult(msrest.serialization.Model):
15636    """Response for the ListPrivateEndpoints API service call.
15637
15638    Variables are only populated by the server, and will be ignored when sending a request.
15639
15640    :param value: A list of private endpoint resources in a resource group.
15641    :type value: list[~azure.mgmt.network.v2020_04_01.models.PrivateEndpoint]
15642    :ivar next_link: The URL to get the next set of results.
15643    :vartype next_link: str
15644    """
15645
15646    _validation = {
15647        'next_link': {'readonly': True},
15648    }
15649
15650    _attribute_map = {
15651        'value': {'key': 'value', 'type': '[PrivateEndpoint]'},
15652        'next_link': {'key': 'nextLink', 'type': 'str'},
15653    }
15654
15655    def __init__(
15656        self,
15657        *,
15658        value: Optional[List["PrivateEndpoint"]] = None,
15659        **kwargs
15660    ):
15661        super(PrivateEndpointListResult, self).__init__(**kwargs)
15662        self.value = value
15663        self.next_link = None
15664
15665
15666class PrivateLinkService(Resource):
15667    """Private link service resource.
15668
15669    Variables are only populated by the server, and will be ignored when sending a request.
15670
15671    :param id: Resource ID.
15672    :type id: str
15673    :ivar name: Resource name.
15674    :vartype name: str
15675    :ivar type: Resource type.
15676    :vartype type: str
15677    :param location: Resource location.
15678    :type location: str
15679    :param tags: A set of tags. Resource tags.
15680    :type tags: dict[str, str]
15681    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15682    :vartype etag: str
15683    :param load_balancer_frontend_ip_configurations: An array of references to the load balancer IP
15684     configurations.
15685    :type load_balancer_frontend_ip_configurations:
15686     list[~azure.mgmt.network.v2020_04_01.models.FrontendIPConfiguration]
15687    :param ip_configurations: An array of private link service IP configurations.
15688    :type ip_configurations:
15689     list[~azure.mgmt.network.v2020_04_01.models.PrivateLinkServiceIpConfiguration]
15690    :ivar network_interfaces: An array of references to the network interfaces created for this
15691     private link service.
15692    :vartype network_interfaces: list[~azure.mgmt.network.v2020_04_01.models.NetworkInterface]
15693    :ivar provisioning_state: The provisioning state of the private link service resource. Possible
15694     values include: "Succeeded", "Updating", "Deleting", "Failed".
15695    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
15696    :ivar private_endpoint_connections: An array of list about connections to the private endpoint.
15697    :vartype private_endpoint_connections:
15698     list[~azure.mgmt.network.v2020_04_01.models.PrivateEndpointConnection]
15699    :param visibility: The visibility list of the private link service.
15700    :type visibility: ~azure.mgmt.network.v2020_04_01.models.PrivateLinkServicePropertiesVisibility
15701    :param auto_approval: The auto-approval list of the private link service.
15702    :type auto_approval:
15703     ~azure.mgmt.network.v2020_04_01.models.PrivateLinkServicePropertiesAutoApproval
15704    :param fqdns: The list of Fqdn.
15705    :type fqdns: list[str]
15706    :ivar alias: The alias of the private link service.
15707    :vartype alias: str
15708    :param enable_proxy_protocol: Whether the private link service is enabled for proxy protocol or
15709     not.
15710    :type enable_proxy_protocol: bool
15711    """
15712
15713    _validation = {
15714        'name': {'readonly': True},
15715        'type': {'readonly': True},
15716        'etag': {'readonly': True},
15717        'network_interfaces': {'readonly': True},
15718        'provisioning_state': {'readonly': True},
15719        'private_endpoint_connections': {'readonly': True},
15720        'alias': {'readonly': True},
15721    }
15722
15723    _attribute_map = {
15724        'id': {'key': 'id', 'type': 'str'},
15725        'name': {'key': 'name', 'type': 'str'},
15726        'type': {'key': 'type', 'type': 'str'},
15727        'location': {'key': 'location', 'type': 'str'},
15728        'tags': {'key': 'tags', 'type': '{str}'},
15729        'etag': {'key': 'etag', 'type': 'str'},
15730        'load_balancer_frontend_ip_configurations': {'key': 'properties.loadBalancerFrontendIpConfigurations', 'type': '[FrontendIPConfiguration]'},
15731        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[PrivateLinkServiceIpConfiguration]'},
15732        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
15733        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15734        'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[PrivateEndpointConnection]'},
15735        'visibility': {'key': 'properties.visibility', 'type': 'PrivateLinkServicePropertiesVisibility'},
15736        'auto_approval': {'key': 'properties.autoApproval', 'type': 'PrivateLinkServicePropertiesAutoApproval'},
15737        'fqdns': {'key': 'properties.fqdns', 'type': '[str]'},
15738        'alias': {'key': 'properties.alias', 'type': 'str'},
15739        'enable_proxy_protocol': {'key': 'properties.enableProxyProtocol', 'type': 'bool'},
15740    }
15741
15742    def __init__(
15743        self,
15744        *,
15745        id: Optional[str] = None,
15746        location: Optional[str] = None,
15747        tags: Optional[Dict[str, str]] = None,
15748        load_balancer_frontend_ip_configurations: Optional[List["FrontendIPConfiguration"]] = None,
15749        ip_configurations: Optional[List["PrivateLinkServiceIpConfiguration"]] = None,
15750        visibility: Optional["PrivateLinkServicePropertiesVisibility"] = None,
15751        auto_approval: Optional["PrivateLinkServicePropertiesAutoApproval"] = None,
15752        fqdns: Optional[List[str]] = None,
15753        enable_proxy_protocol: Optional[bool] = None,
15754        **kwargs
15755    ):
15756        super(PrivateLinkService, self).__init__(id=id, location=location, tags=tags, **kwargs)
15757        self.etag = None
15758        self.load_balancer_frontend_ip_configurations = load_balancer_frontend_ip_configurations
15759        self.ip_configurations = ip_configurations
15760        self.network_interfaces = None
15761        self.provisioning_state = None
15762        self.private_endpoint_connections = None
15763        self.visibility = visibility
15764        self.auto_approval = auto_approval
15765        self.fqdns = fqdns
15766        self.alias = None
15767        self.enable_proxy_protocol = enable_proxy_protocol
15768
15769
15770class PrivateLinkServiceConnection(SubResource):
15771    """PrivateLinkServiceConnection resource.
15772
15773    Variables are only populated by the server, and will be ignored when sending a request.
15774
15775    :param id: Resource ID.
15776    :type id: str
15777    :param name: The name of the resource that is unique within a resource group. This name can be
15778     used to access the resource.
15779    :type name: str
15780    :ivar type: The resource type.
15781    :vartype type: str
15782    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15783    :vartype etag: str
15784    :ivar provisioning_state: The provisioning state of the private link service connection
15785     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
15786    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
15787    :param private_link_service_id: The resource id of private link service.
15788    :type private_link_service_id: str
15789    :param group_ids: The ID(s) of the group(s) obtained from the remote resource that this private
15790     endpoint should connect to.
15791    :type group_ids: list[str]
15792    :param request_message: A message passed to the owner of the remote resource with this
15793     connection request. Restricted to 140 chars.
15794    :type request_message: str
15795    :param private_link_service_connection_state: A collection of read-only information about the
15796     state of the connection to the remote resource.
15797    :type private_link_service_connection_state:
15798     ~azure.mgmt.network.v2020_04_01.models.PrivateLinkServiceConnectionState
15799    """
15800
15801    _validation = {
15802        'type': {'readonly': True},
15803        'etag': {'readonly': True},
15804        'provisioning_state': {'readonly': True},
15805    }
15806
15807    _attribute_map = {
15808        'id': {'key': 'id', 'type': 'str'},
15809        'name': {'key': 'name', 'type': 'str'},
15810        'type': {'key': 'type', 'type': 'str'},
15811        'etag': {'key': 'etag', 'type': 'str'},
15812        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15813        'private_link_service_id': {'key': 'properties.privateLinkServiceId', 'type': 'str'},
15814        'group_ids': {'key': 'properties.groupIds', 'type': '[str]'},
15815        'request_message': {'key': 'properties.requestMessage', 'type': 'str'},
15816        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'},
15817    }
15818
15819    def __init__(
15820        self,
15821        *,
15822        id: Optional[str] = None,
15823        name: Optional[str] = None,
15824        private_link_service_id: Optional[str] = None,
15825        group_ids: Optional[List[str]] = None,
15826        request_message: Optional[str] = None,
15827        private_link_service_connection_state: Optional["PrivateLinkServiceConnectionState"] = None,
15828        **kwargs
15829    ):
15830        super(PrivateLinkServiceConnection, self).__init__(id=id, **kwargs)
15831        self.name = name
15832        self.type = None
15833        self.etag = None
15834        self.provisioning_state = None
15835        self.private_link_service_id = private_link_service_id
15836        self.group_ids = group_ids
15837        self.request_message = request_message
15838        self.private_link_service_connection_state = private_link_service_connection_state
15839
15840
15841class PrivateLinkServiceConnectionState(msrest.serialization.Model):
15842    """A collection of information about the state of the connection between service consumer and provider.
15843
15844    :param status: Indicates whether the connection has been Approved/Rejected/Removed by the owner
15845     of the service.
15846    :type status: str
15847    :param description: The reason for approval/rejection of the connection.
15848    :type description: str
15849    :param actions_required: A message indicating if changes on the service provider require any
15850     updates on the consumer.
15851    :type actions_required: str
15852    """
15853
15854    _attribute_map = {
15855        'status': {'key': 'status', 'type': 'str'},
15856        'description': {'key': 'description', 'type': 'str'},
15857        'actions_required': {'key': 'actionsRequired', 'type': 'str'},
15858    }
15859
15860    def __init__(
15861        self,
15862        *,
15863        status: Optional[str] = None,
15864        description: Optional[str] = None,
15865        actions_required: Optional[str] = None,
15866        **kwargs
15867    ):
15868        super(PrivateLinkServiceConnectionState, self).__init__(**kwargs)
15869        self.status = status
15870        self.description = description
15871        self.actions_required = actions_required
15872
15873
15874class PrivateLinkServiceIpConfiguration(SubResource):
15875    """The private link service ip configuration.
15876
15877    Variables are only populated by the server, and will be ignored when sending a request.
15878
15879    :param id: Resource ID.
15880    :type id: str
15881    :param name: The name of private link service ip configuration.
15882    :type name: str
15883    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15884    :vartype etag: str
15885    :ivar type: The resource type.
15886    :vartype type: str
15887    :param private_ip_address: The private IP address of the IP configuration.
15888    :type private_ip_address: str
15889    :param private_ip_allocation_method: The private IP address allocation method. Possible values
15890     include: "Static", "Dynamic".
15891    :type private_ip_allocation_method: str or
15892     ~azure.mgmt.network.v2020_04_01.models.IPAllocationMethod
15893    :param subnet: The reference to the subnet resource.
15894    :type subnet: ~azure.mgmt.network.v2020_04_01.models.Subnet
15895    :param primary: Whether the ip configuration is primary or not.
15896    :type primary: bool
15897    :ivar provisioning_state: The provisioning state of the private link service IP configuration
15898     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
15899    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
15900    :param private_ip_address_version: Whether the specific IP configuration is IPv4 or IPv6.
15901     Default is IPv4. Possible values include: "IPv4", "IPv6".
15902    :type private_ip_address_version: str or ~azure.mgmt.network.v2020_04_01.models.IPVersion
15903    """
15904
15905    _validation = {
15906        'etag': {'readonly': True},
15907        'type': {'readonly': True},
15908        'provisioning_state': {'readonly': True},
15909    }
15910
15911    _attribute_map = {
15912        'id': {'key': 'id', 'type': 'str'},
15913        'name': {'key': 'name', 'type': 'str'},
15914        'etag': {'key': 'etag', 'type': 'str'},
15915        'type': {'key': 'type', 'type': 'str'},
15916        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
15917        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
15918        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
15919        'primary': {'key': 'properties.primary', 'type': 'bool'},
15920        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15921        'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'},
15922    }
15923
15924    def __init__(
15925        self,
15926        *,
15927        id: Optional[str] = None,
15928        name: Optional[str] = None,
15929        private_ip_address: Optional[str] = None,
15930        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
15931        subnet: Optional["Subnet"] = None,
15932        primary: Optional[bool] = None,
15933        private_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
15934        **kwargs
15935    ):
15936        super(PrivateLinkServiceIpConfiguration, self).__init__(id=id, **kwargs)
15937        self.name = name
15938        self.etag = None
15939        self.type = None
15940        self.private_ip_address = private_ip_address
15941        self.private_ip_allocation_method = private_ip_allocation_method
15942        self.subnet = subnet
15943        self.primary = primary
15944        self.provisioning_state = None
15945        self.private_ip_address_version = private_ip_address_version
15946
15947
15948class PrivateLinkServiceListResult(msrest.serialization.Model):
15949    """Response for the ListPrivateLinkService API service call.
15950
15951    Variables are only populated by the server, and will be ignored when sending a request.
15952
15953    :param value: A list of PrivateLinkService resources in a resource group.
15954    :type value: list[~azure.mgmt.network.v2020_04_01.models.PrivateLinkService]
15955    :ivar next_link: The URL to get the next set of results.
15956    :vartype next_link: str
15957    """
15958
15959    _validation = {
15960        'next_link': {'readonly': True},
15961    }
15962
15963    _attribute_map = {
15964        'value': {'key': 'value', 'type': '[PrivateLinkService]'},
15965        'next_link': {'key': 'nextLink', 'type': 'str'},
15966    }
15967
15968    def __init__(
15969        self,
15970        *,
15971        value: Optional[List["PrivateLinkService"]] = None,
15972        **kwargs
15973    ):
15974        super(PrivateLinkServiceListResult, self).__init__(**kwargs)
15975        self.value = value
15976        self.next_link = None
15977
15978
15979class ResourceSet(msrest.serialization.Model):
15980    """The base resource set for visibility and auto-approval.
15981
15982    :param subscriptions: The list of subscriptions.
15983    :type subscriptions: list[str]
15984    """
15985
15986    _attribute_map = {
15987        'subscriptions': {'key': 'subscriptions', 'type': '[str]'},
15988    }
15989
15990    def __init__(
15991        self,
15992        *,
15993        subscriptions: Optional[List[str]] = None,
15994        **kwargs
15995    ):
15996        super(ResourceSet, self).__init__(**kwargs)
15997        self.subscriptions = subscriptions
15998
15999
16000class PrivateLinkServicePropertiesAutoApproval(ResourceSet):
16001    """The auto-approval list of the private link service.
16002
16003    :param subscriptions: The list of subscriptions.
16004    :type subscriptions: list[str]
16005    """
16006
16007    _attribute_map = {
16008        'subscriptions': {'key': 'subscriptions', 'type': '[str]'},
16009    }
16010
16011    def __init__(
16012        self,
16013        *,
16014        subscriptions: Optional[List[str]] = None,
16015        **kwargs
16016    ):
16017        super(PrivateLinkServicePropertiesAutoApproval, self).__init__(subscriptions=subscriptions, **kwargs)
16018
16019
16020class PrivateLinkServicePropertiesVisibility(ResourceSet):
16021    """The visibility list of the private link service.
16022
16023    :param subscriptions: The list of subscriptions.
16024    :type subscriptions: list[str]
16025    """
16026
16027    _attribute_map = {
16028        'subscriptions': {'key': 'subscriptions', 'type': '[str]'},
16029    }
16030
16031    def __init__(
16032        self,
16033        *,
16034        subscriptions: Optional[List[str]] = None,
16035        **kwargs
16036    ):
16037        super(PrivateLinkServicePropertiesVisibility, self).__init__(subscriptions=subscriptions, **kwargs)
16038
16039
16040class PrivateLinkServiceVisibility(msrest.serialization.Model):
16041    """Response for the CheckPrivateLinkServiceVisibility API service call.
16042
16043    :param visible: Private Link Service Visibility (True/False).
16044    :type visible: bool
16045    """
16046
16047    _attribute_map = {
16048        'visible': {'key': 'visible', 'type': 'bool'},
16049    }
16050
16051    def __init__(
16052        self,
16053        *,
16054        visible: Optional[bool] = None,
16055        **kwargs
16056    ):
16057        super(PrivateLinkServiceVisibility, self).__init__(**kwargs)
16058        self.visible = visible
16059
16060
16061class Probe(SubResource):
16062    """A load balancer probe.
16063
16064    Variables are only populated by the server, and will be ignored when sending a request.
16065
16066    :param id: Resource ID.
16067    :type id: str
16068    :param name: The name of the resource that is unique within the set of probes used by the load
16069     balancer. This name can be used to access the resource.
16070    :type name: str
16071    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16072    :vartype etag: str
16073    :ivar type: Type of the resource.
16074    :vartype type: str
16075    :ivar load_balancing_rules: The load balancer rules that use this probe.
16076    :vartype load_balancing_rules: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
16077    :param protocol: The protocol of the end point. If 'Tcp' is specified, a received ACK is
16078     required for the probe to be successful. If 'Http' or 'Https' is specified, a 200 OK response
16079     from the specifies URI is required for the probe to be successful. Possible values include:
16080     "Http", "Tcp", "Https".
16081    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.ProbeProtocol
16082    :param port: The port for communicating the probe. Possible values range from 1 to 65535,
16083     inclusive.
16084    :type port: int
16085    :param interval_in_seconds: The interval, in seconds, for how frequently to probe the endpoint
16086     for health status. Typically, the interval is slightly less than half the allocated timeout
16087     period (in seconds) which allows two full probes before taking the instance out of rotation.
16088     The default value is 15, the minimum value is 5.
16089    :type interval_in_seconds: int
16090    :param number_of_probes: The number of probes where if no response, will result in stopping
16091     further traffic from being delivered to the endpoint. This values allows endpoints to be taken
16092     out of rotation faster or slower than the typical times used in Azure.
16093    :type number_of_probes: int
16094    :param request_path: The URI used for requesting health status from the VM. Path is required if
16095     a protocol is set to http. Otherwise, it is not allowed. There is no default value.
16096    :type request_path: str
16097    :ivar provisioning_state: The provisioning state of the probe resource. Possible values
16098     include: "Succeeded", "Updating", "Deleting", "Failed".
16099    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
16100    """
16101
16102    _validation = {
16103        'etag': {'readonly': True},
16104        'type': {'readonly': True},
16105        'load_balancing_rules': {'readonly': True},
16106        'provisioning_state': {'readonly': True},
16107    }
16108
16109    _attribute_map = {
16110        'id': {'key': 'id', 'type': 'str'},
16111        'name': {'key': 'name', 'type': 'str'},
16112        'etag': {'key': 'etag', 'type': 'str'},
16113        'type': {'key': 'type', 'type': 'str'},
16114        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
16115        'protocol': {'key': 'properties.protocol', 'type': 'str'},
16116        'port': {'key': 'properties.port', 'type': 'int'},
16117        'interval_in_seconds': {'key': 'properties.intervalInSeconds', 'type': 'int'},
16118        'number_of_probes': {'key': 'properties.numberOfProbes', 'type': 'int'},
16119        'request_path': {'key': 'properties.requestPath', 'type': 'str'},
16120        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16121    }
16122
16123    def __init__(
16124        self,
16125        *,
16126        id: Optional[str] = None,
16127        name: Optional[str] = None,
16128        protocol: Optional[Union[str, "ProbeProtocol"]] = None,
16129        port: Optional[int] = None,
16130        interval_in_seconds: Optional[int] = None,
16131        number_of_probes: Optional[int] = None,
16132        request_path: Optional[str] = None,
16133        **kwargs
16134    ):
16135        super(Probe, self).__init__(id=id, **kwargs)
16136        self.name = name
16137        self.etag = None
16138        self.type = None
16139        self.load_balancing_rules = None
16140        self.protocol = protocol
16141        self.port = port
16142        self.interval_in_seconds = interval_in_seconds
16143        self.number_of_probes = number_of_probes
16144        self.request_path = request_path
16145        self.provisioning_state = None
16146
16147
16148class PropagatedRouteTable(msrest.serialization.Model):
16149    """The list of RouteTables to advertise the routes to.
16150
16151    :param labels: The list of labels.
16152    :type labels: list[str]
16153    :param ids: The list of resource ids of all the RouteTables.
16154    :type ids: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
16155    """
16156
16157    _attribute_map = {
16158        'labels': {'key': 'labels', 'type': '[str]'},
16159        'ids': {'key': 'ids', 'type': '[SubResource]'},
16160    }
16161
16162    def __init__(
16163        self,
16164        *,
16165        labels: Optional[List[str]] = None,
16166        ids: Optional[List["SubResource"]] = None,
16167        **kwargs
16168    ):
16169        super(PropagatedRouteTable, self).__init__(**kwargs)
16170        self.labels = labels
16171        self.ids = ids
16172
16173
16174class ProtocolConfiguration(msrest.serialization.Model):
16175    """Configuration of the protocol.
16176
16177    :param http_configuration: HTTP configuration of the connectivity check.
16178    :type http_configuration: ~azure.mgmt.network.v2020_04_01.models.HTTPConfiguration
16179    """
16180
16181    _attribute_map = {
16182        'http_configuration': {'key': 'HTTPConfiguration', 'type': 'HTTPConfiguration'},
16183    }
16184
16185    def __init__(
16186        self,
16187        *,
16188        http_configuration: Optional["HTTPConfiguration"] = None,
16189        **kwargs
16190    ):
16191        super(ProtocolConfiguration, self).__init__(**kwargs)
16192        self.http_configuration = http_configuration
16193
16194
16195class ProtocolCustomSettingsFormat(msrest.serialization.Model):
16196    """DDoS custom policy properties.
16197
16198    :param protocol: The protocol for which the DDoS protection policy is being customized.
16199     Possible values include: "Tcp", "Udp", "Syn".
16200    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.DdosCustomPolicyProtocol
16201    :param trigger_rate_override: The customized DDoS protection trigger rate.
16202    :type trigger_rate_override: str
16203    :param source_rate_override: The customized DDoS protection source rate.
16204    :type source_rate_override: str
16205    :param trigger_sensitivity_override: The customized DDoS protection trigger rate sensitivity
16206     degrees. High: Trigger rate set with most sensitivity w.r.t. normal traffic. Default: Trigger
16207     rate set with moderate sensitivity w.r.t. normal traffic. Low: Trigger rate set with less
16208     sensitivity w.r.t. normal traffic. Relaxed: Trigger rate set with least sensitivity w.r.t.
16209     normal traffic. Possible values include: "Relaxed", "Low", "Default", "High".
16210    :type trigger_sensitivity_override: str or
16211     ~azure.mgmt.network.v2020_04_01.models.DdosCustomPolicyTriggerSensitivityOverride
16212    """
16213
16214    _attribute_map = {
16215        'protocol': {'key': 'protocol', 'type': 'str'},
16216        'trigger_rate_override': {'key': 'triggerRateOverride', 'type': 'str'},
16217        'source_rate_override': {'key': 'sourceRateOverride', 'type': 'str'},
16218        'trigger_sensitivity_override': {'key': 'triggerSensitivityOverride', 'type': 'str'},
16219    }
16220
16221    def __init__(
16222        self,
16223        *,
16224        protocol: Optional[Union[str, "DdosCustomPolicyProtocol"]] = None,
16225        trigger_rate_override: Optional[str] = None,
16226        source_rate_override: Optional[str] = None,
16227        trigger_sensitivity_override: Optional[Union[str, "DdosCustomPolicyTriggerSensitivityOverride"]] = None,
16228        **kwargs
16229    ):
16230        super(ProtocolCustomSettingsFormat, self).__init__(**kwargs)
16231        self.protocol = protocol
16232        self.trigger_rate_override = trigger_rate_override
16233        self.source_rate_override = source_rate_override
16234        self.trigger_sensitivity_override = trigger_sensitivity_override
16235
16236
16237class PublicIPAddress(Resource):
16238    """Public IP address resource.
16239
16240    Variables are only populated by the server, and will be ignored when sending a request.
16241
16242    :param id: Resource ID.
16243    :type id: str
16244    :ivar name: Resource name.
16245    :vartype name: str
16246    :ivar type: Resource type.
16247    :vartype type: str
16248    :param location: Resource location.
16249    :type location: str
16250    :param tags: A set of tags. Resource tags.
16251    :type tags: dict[str, str]
16252    :param sku: The public IP address SKU.
16253    :type sku: ~azure.mgmt.network.v2020_04_01.models.PublicIPAddressSku
16254    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16255    :vartype etag: str
16256    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
16257     come from.
16258    :type zones: list[str]
16259    :param public_ip_allocation_method: The public IP address allocation method. Possible values
16260     include: "Static", "Dynamic".
16261    :type public_ip_allocation_method: str or
16262     ~azure.mgmt.network.v2020_04_01.models.IPAllocationMethod
16263    :param public_ip_address_version: The public IP address version. Possible values include:
16264     "IPv4", "IPv6".
16265    :type public_ip_address_version: str or ~azure.mgmt.network.v2020_04_01.models.IPVersion
16266    :ivar ip_configuration: The IP configuration associated with the public IP address.
16267    :vartype ip_configuration: ~azure.mgmt.network.v2020_04_01.models.IPConfiguration
16268    :param dns_settings: The FQDN of the DNS record associated with the public IP address.
16269    :type dns_settings: ~azure.mgmt.network.v2020_04_01.models.PublicIPAddressDnsSettings
16270    :param ddos_settings: The DDoS protection custom policy associated with the public IP address.
16271    :type ddos_settings: ~azure.mgmt.network.v2020_04_01.models.DdosSettings
16272    :param ip_tags: The list of tags associated with the public IP address.
16273    :type ip_tags: list[~azure.mgmt.network.v2020_04_01.models.IpTag]
16274    :param ip_address: The IP address associated with the public IP address resource.
16275    :type ip_address: str
16276    :param public_ip_prefix: The Public IP Prefix this Public IP Address should be allocated from.
16277    :type public_ip_prefix: ~azure.mgmt.network.v2020_04_01.models.SubResource
16278    :param idle_timeout_in_minutes: The idle timeout of the public IP address.
16279    :type idle_timeout_in_minutes: int
16280    :ivar resource_guid: The resource GUID property of the public IP address resource.
16281    :vartype resource_guid: str
16282    :ivar provisioning_state: The provisioning state of the public IP address resource. Possible
16283     values include: "Succeeded", "Updating", "Deleting", "Failed".
16284    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
16285    """
16286
16287    _validation = {
16288        'name': {'readonly': True},
16289        'type': {'readonly': True},
16290        'etag': {'readonly': True},
16291        'ip_configuration': {'readonly': True},
16292        'resource_guid': {'readonly': True},
16293        'provisioning_state': {'readonly': True},
16294    }
16295
16296    _attribute_map = {
16297        'id': {'key': 'id', 'type': 'str'},
16298        'name': {'key': 'name', 'type': 'str'},
16299        'type': {'key': 'type', 'type': 'str'},
16300        'location': {'key': 'location', 'type': 'str'},
16301        'tags': {'key': 'tags', 'type': '{str}'},
16302        'sku': {'key': 'sku', 'type': 'PublicIPAddressSku'},
16303        'etag': {'key': 'etag', 'type': 'str'},
16304        'zones': {'key': 'zones', 'type': '[str]'},
16305        'public_ip_allocation_method': {'key': 'properties.publicIPAllocationMethod', 'type': 'str'},
16306        'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'},
16307        'ip_configuration': {'key': 'properties.ipConfiguration', 'type': 'IPConfiguration'},
16308        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'PublicIPAddressDnsSettings'},
16309        'ddos_settings': {'key': 'properties.ddosSettings', 'type': 'DdosSettings'},
16310        'ip_tags': {'key': 'properties.ipTags', 'type': '[IpTag]'},
16311        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
16312        'public_ip_prefix': {'key': 'properties.publicIPPrefix', 'type': 'SubResource'},
16313        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
16314        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
16315        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16316    }
16317
16318    def __init__(
16319        self,
16320        *,
16321        id: Optional[str] = None,
16322        location: Optional[str] = None,
16323        tags: Optional[Dict[str, str]] = None,
16324        sku: Optional["PublicIPAddressSku"] = None,
16325        zones: Optional[List[str]] = None,
16326        public_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
16327        public_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
16328        dns_settings: Optional["PublicIPAddressDnsSettings"] = None,
16329        ddos_settings: Optional["DdosSettings"] = None,
16330        ip_tags: Optional[List["IpTag"]] = None,
16331        ip_address: Optional[str] = None,
16332        public_ip_prefix: Optional["SubResource"] = None,
16333        idle_timeout_in_minutes: Optional[int] = None,
16334        **kwargs
16335    ):
16336        super(PublicIPAddress, self).__init__(id=id, location=location, tags=tags, **kwargs)
16337        self.sku = sku
16338        self.etag = None
16339        self.zones = zones
16340        self.public_ip_allocation_method = public_ip_allocation_method
16341        self.public_ip_address_version = public_ip_address_version
16342        self.ip_configuration = None
16343        self.dns_settings = dns_settings
16344        self.ddos_settings = ddos_settings
16345        self.ip_tags = ip_tags
16346        self.ip_address = ip_address
16347        self.public_ip_prefix = public_ip_prefix
16348        self.idle_timeout_in_minutes = idle_timeout_in_minutes
16349        self.resource_guid = None
16350        self.provisioning_state = None
16351
16352
16353class PublicIPAddressDnsSettings(msrest.serialization.Model):
16354    """Contains FQDN of the DNS record associated with the public IP address.
16355
16356    :param domain_name_label: The domain name label. The concatenation of the domain name label and
16357     the regionalized DNS zone make up the fully qualified domain name associated with the public IP
16358     address. If a domain name label is specified, an A DNS record is created for the public IP in
16359     the Microsoft Azure DNS system.
16360    :type domain_name_label: str
16361    :param fqdn: The Fully Qualified Domain Name of the A DNS record associated with the public IP.
16362     This is the concatenation of the domainNameLabel and the regionalized DNS zone.
16363    :type fqdn: str
16364    :param reverse_fqdn: The reverse FQDN. A user-visible, fully qualified domain name that
16365     resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record is
16366     created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN.
16367    :type reverse_fqdn: str
16368    """
16369
16370    _attribute_map = {
16371        'domain_name_label': {'key': 'domainNameLabel', 'type': 'str'},
16372        'fqdn': {'key': 'fqdn', 'type': 'str'},
16373        'reverse_fqdn': {'key': 'reverseFqdn', 'type': 'str'},
16374    }
16375
16376    def __init__(
16377        self,
16378        *,
16379        domain_name_label: Optional[str] = None,
16380        fqdn: Optional[str] = None,
16381        reverse_fqdn: Optional[str] = None,
16382        **kwargs
16383    ):
16384        super(PublicIPAddressDnsSettings, self).__init__(**kwargs)
16385        self.domain_name_label = domain_name_label
16386        self.fqdn = fqdn
16387        self.reverse_fqdn = reverse_fqdn
16388
16389
16390class PublicIPAddressListResult(msrest.serialization.Model):
16391    """Response for ListPublicIpAddresses API service call.
16392
16393    :param value: A list of public IP addresses that exists in a resource group.
16394    :type value: list[~azure.mgmt.network.v2020_04_01.models.PublicIPAddress]
16395    :param next_link: The URL to get the next set of results.
16396    :type next_link: str
16397    """
16398
16399    _attribute_map = {
16400        'value': {'key': 'value', 'type': '[PublicIPAddress]'},
16401        'next_link': {'key': 'nextLink', 'type': 'str'},
16402    }
16403
16404    def __init__(
16405        self,
16406        *,
16407        value: Optional[List["PublicIPAddress"]] = None,
16408        next_link: Optional[str] = None,
16409        **kwargs
16410    ):
16411        super(PublicIPAddressListResult, self).__init__(**kwargs)
16412        self.value = value
16413        self.next_link = next_link
16414
16415
16416class PublicIPAddressSku(msrest.serialization.Model):
16417    """SKU of a public IP address.
16418
16419    :param name: Name of a public IP address SKU. Possible values include: "Basic", "Standard".
16420    :type name: str or ~azure.mgmt.network.v2020_04_01.models.PublicIPAddressSkuName
16421    """
16422
16423    _attribute_map = {
16424        'name': {'key': 'name', 'type': 'str'},
16425    }
16426
16427    def __init__(
16428        self,
16429        *,
16430        name: Optional[Union[str, "PublicIPAddressSkuName"]] = None,
16431        **kwargs
16432    ):
16433        super(PublicIPAddressSku, self).__init__(**kwargs)
16434        self.name = name
16435
16436
16437class PublicIPPrefix(Resource):
16438    """Public IP prefix resource.
16439
16440    Variables are only populated by the server, and will be ignored when sending a request.
16441
16442    :param id: Resource ID.
16443    :type id: str
16444    :ivar name: Resource name.
16445    :vartype name: str
16446    :ivar type: Resource type.
16447    :vartype type: str
16448    :param location: Resource location.
16449    :type location: str
16450    :param tags: A set of tags. Resource tags.
16451    :type tags: dict[str, str]
16452    :param sku: The public IP prefix SKU.
16453    :type sku: ~azure.mgmt.network.v2020_04_01.models.PublicIPPrefixSku
16454    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16455    :vartype etag: str
16456    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
16457     come from.
16458    :type zones: list[str]
16459    :param public_ip_address_version: The public IP address version. Possible values include:
16460     "IPv4", "IPv6".
16461    :type public_ip_address_version: str or ~azure.mgmt.network.v2020_04_01.models.IPVersion
16462    :param ip_tags: The list of tags associated with the public IP prefix.
16463    :type ip_tags: list[~azure.mgmt.network.v2020_04_01.models.IpTag]
16464    :param prefix_length: The Length of the Public IP Prefix.
16465    :type prefix_length: int
16466    :ivar ip_prefix: The allocated Prefix.
16467    :vartype ip_prefix: str
16468    :ivar public_ip_addresses: The list of all referenced PublicIPAddresses.
16469    :vartype public_ip_addresses:
16470     list[~azure.mgmt.network.v2020_04_01.models.ReferencedPublicIpAddress]
16471    :ivar load_balancer_frontend_ip_configuration: The reference to load balancer frontend IP
16472     configuration associated with the public IP prefix.
16473    :vartype load_balancer_frontend_ip_configuration:
16474     ~azure.mgmt.network.v2020_04_01.models.SubResource
16475    :ivar resource_guid: The resource GUID property of the public IP prefix resource.
16476    :vartype resource_guid: str
16477    :ivar provisioning_state: The provisioning state of the public IP prefix resource. Possible
16478     values include: "Succeeded", "Updating", "Deleting", "Failed".
16479    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
16480    """
16481
16482    _validation = {
16483        'name': {'readonly': True},
16484        'type': {'readonly': True},
16485        'etag': {'readonly': True},
16486        'ip_prefix': {'readonly': True},
16487        'public_ip_addresses': {'readonly': True},
16488        'load_balancer_frontend_ip_configuration': {'readonly': True},
16489        'resource_guid': {'readonly': True},
16490        'provisioning_state': {'readonly': True},
16491    }
16492
16493    _attribute_map = {
16494        'id': {'key': 'id', 'type': 'str'},
16495        'name': {'key': 'name', 'type': 'str'},
16496        'type': {'key': 'type', 'type': 'str'},
16497        'location': {'key': 'location', 'type': 'str'},
16498        'tags': {'key': 'tags', 'type': '{str}'},
16499        'sku': {'key': 'sku', 'type': 'PublicIPPrefixSku'},
16500        'etag': {'key': 'etag', 'type': 'str'},
16501        'zones': {'key': 'zones', 'type': '[str]'},
16502        'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'},
16503        'ip_tags': {'key': 'properties.ipTags', 'type': '[IpTag]'},
16504        'prefix_length': {'key': 'properties.prefixLength', 'type': 'int'},
16505        'ip_prefix': {'key': 'properties.ipPrefix', 'type': 'str'},
16506        'public_ip_addresses': {'key': 'properties.publicIPAddresses', 'type': '[ReferencedPublicIpAddress]'},
16507        'load_balancer_frontend_ip_configuration': {'key': 'properties.loadBalancerFrontendIpConfiguration', 'type': 'SubResource'},
16508        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
16509        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16510    }
16511
16512    def __init__(
16513        self,
16514        *,
16515        id: Optional[str] = None,
16516        location: Optional[str] = None,
16517        tags: Optional[Dict[str, str]] = None,
16518        sku: Optional["PublicIPPrefixSku"] = None,
16519        zones: Optional[List[str]] = None,
16520        public_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
16521        ip_tags: Optional[List["IpTag"]] = None,
16522        prefix_length: Optional[int] = None,
16523        **kwargs
16524    ):
16525        super(PublicIPPrefix, self).__init__(id=id, location=location, tags=tags, **kwargs)
16526        self.sku = sku
16527        self.etag = None
16528        self.zones = zones
16529        self.public_ip_address_version = public_ip_address_version
16530        self.ip_tags = ip_tags
16531        self.prefix_length = prefix_length
16532        self.ip_prefix = None
16533        self.public_ip_addresses = None
16534        self.load_balancer_frontend_ip_configuration = None
16535        self.resource_guid = None
16536        self.provisioning_state = None
16537
16538
16539class PublicIPPrefixListResult(msrest.serialization.Model):
16540    """Response for ListPublicIpPrefixes API service call.
16541
16542    :param value: A list of public IP prefixes that exists in a resource group.
16543    :type value: list[~azure.mgmt.network.v2020_04_01.models.PublicIPPrefix]
16544    :param next_link: The URL to get the next set of results.
16545    :type next_link: str
16546    """
16547
16548    _attribute_map = {
16549        'value': {'key': 'value', 'type': '[PublicIPPrefix]'},
16550        'next_link': {'key': 'nextLink', 'type': 'str'},
16551    }
16552
16553    def __init__(
16554        self,
16555        *,
16556        value: Optional[List["PublicIPPrefix"]] = None,
16557        next_link: Optional[str] = None,
16558        **kwargs
16559    ):
16560        super(PublicIPPrefixListResult, self).__init__(**kwargs)
16561        self.value = value
16562        self.next_link = next_link
16563
16564
16565class PublicIPPrefixSku(msrest.serialization.Model):
16566    """SKU of a public IP prefix.
16567
16568    :param name: Name of a public IP prefix SKU. Possible values include: "Standard".
16569    :type name: str or ~azure.mgmt.network.v2020_04_01.models.PublicIPPrefixSkuName
16570    """
16571
16572    _attribute_map = {
16573        'name': {'key': 'name', 'type': 'str'},
16574    }
16575
16576    def __init__(
16577        self,
16578        *,
16579        name: Optional[Union[str, "PublicIPPrefixSkuName"]] = None,
16580        **kwargs
16581    ):
16582        super(PublicIPPrefixSku, self).__init__(**kwargs)
16583        self.name = name
16584
16585
16586class QueryTroubleshootingParameters(msrest.serialization.Model):
16587    """Parameters that define the resource to query the troubleshooting result.
16588
16589    All required parameters must be populated in order to send to Azure.
16590
16591    :param target_resource_id: Required. The target resource ID to query the troubleshooting
16592     result.
16593    :type target_resource_id: str
16594    """
16595
16596    _validation = {
16597        'target_resource_id': {'required': True},
16598    }
16599
16600    _attribute_map = {
16601        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
16602    }
16603
16604    def __init__(
16605        self,
16606        *,
16607        target_resource_id: str,
16608        **kwargs
16609    ):
16610        super(QueryTroubleshootingParameters, self).__init__(**kwargs)
16611        self.target_resource_id = target_resource_id
16612
16613
16614class RadiusServer(msrest.serialization.Model):
16615    """Radius Server Settings.
16616
16617    All required parameters must be populated in order to send to Azure.
16618
16619    :param radius_server_address: Required. The address of this radius server.
16620    :type radius_server_address: str
16621    :param radius_server_score: The initial score assigned to this radius server.
16622    :type radius_server_score: long
16623    :param radius_server_secret: The secret used for this radius server.
16624    :type radius_server_secret: str
16625    """
16626
16627    _validation = {
16628        'radius_server_address': {'required': True},
16629    }
16630
16631    _attribute_map = {
16632        'radius_server_address': {'key': 'radiusServerAddress', 'type': 'str'},
16633        'radius_server_score': {'key': 'radiusServerScore', 'type': 'long'},
16634        'radius_server_secret': {'key': 'radiusServerSecret', 'type': 'str'},
16635    }
16636
16637    def __init__(
16638        self,
16639        *,
16640        radius_server_address: str,
16641        radius_server_score: Optional[int] = None,
16642        radius_server_secret: Optional[str] = None,
16643        **kwargs
16644    ):
16645        super(RadiusServer, self).__init__(**kwargs)
16646        self.radius_server_address = radius_server_address
16647        self.radius_server_score = radius_server_score
16648        self.radius_server_secret = radius_server_secret
16649
16650
16651class RecordSet(msrest.serialization.Model):
16652    """A collective group of information about the record set information.
16653
16654    Variables are only populated by the server, and will be ignored when sending a request.
16655
16656    :param record_type: Resource record type.
16657    :type record_type: str
16658    :param record_set_name: Recordset name.
16659    :type record_set_name: str
16660    :param fqdn: Fqdn that resolves to private endpoint ip address.
16661    :type fqdn: str
16662    :ivar provisioning_state: The provisioning state of the recordset. Possible values include:
16663     "Succeeded", "Updating", "Deleting", "Failed".
16664    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
16665    :param ttl: Recordset time to live.
16666    :type ttl: int
16667    :param ip_addresses: The private ip address of the private endpoint.
16668    :type ip_addresses: list[str]
16669    """
16670
16671    _validation = {
16672        'provisioning_state': {'readonly': True},
16673    }
16674
16675    _attribute_map = {
16676        'record_type': {'key': 'recordType', 'type': 'str'},
16677        'record_set_name': {'key': 'recordSetName', 'type': 'str'},
16678        'fqdn': {'key': 'fqdn', 'type': 'str'},
16679        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
16680        'ttl': {'key': 'ttl', 'type': 'int'},
16681        'ip_addresses': {'key': 'ipAddresses', 'type': '[str]'},
16682    }
16683
16684    def __init__(
16685        self,
16686        *,
16687        record_type: Optional[str] = None,
16688        record_set_name: Optional[str] = None,
16689        fqdn: Optional[str] = None,
16690        ttl: Optional[int] = None,
16691        ip_addresses: Optional[List[str]] = None,
16692        **kwargs
16693    ):
16694        super(RecordSet, self).__init__(**kwargs)
16695        self.record_type = record_type
16696        self.record_set_name = record_set_name
16697        self.fqdn = fqdn
16698        self.provisioning_state = None
16699        self.ttl = ttl
16700        self.ip_addresses = ip_addresses
16701
16702
16703class ReferencedPublicIpAddress(msrest.serialization.Model):
16704    """Reference to a public IP address.
16705
16706    :param id: The PublicIPAddress Reference.
16707    :type id: str
16708    """
16709
16710    _attribute_map = {
16711        'id': {'key': 'id', 'type': 'str'},
16712    }
16713
16714    def __init__(
16715        self,
16716        *,
16717        id: Optional[str] = None,
16718        **kwargs
16719    ):
16720        super(ReferencedPublicIpAddress, self).__init__(**kwargs)
16721        self.id = id
16722
16723
16724class ResourceNavigationLink(SubResource):
16725    """ResourceNavigationLink resource.
16726
16727    Variables are only populated by the server, and will be ignored when sending a request.
16728
16729    :param id: Resource ID.
16730    :type id: str
16731    :param name: Name of the resource that is unique within a resource group. This name can be used
16732     to access the resource.
16733    :type name: str
16734    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16735    :vartype etag: str
16736    :ivar type: Resource type.
16737    :vartype type: str
16738    :param linked_resource_type: Resource type of the linked resource.
16739    :type linked_resource_type: str
16740    :param link: Link to the external resource.
16741    :type link: str
16742    :ivar provisioning_state: The provisioning state of the resource navigation link resource.
16743     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
16744    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
16745    """
16746
16747    _validation = {
16748        'etag': {'readonly': True},
16749        'type': {'readonly': True},
16750        'provisioning_state': {'readonly': True},
16751    }
16752
16753    _attribute_map = {
16754        'id': {'key': 'id', 'type': 'str'},
16755        'name': {'key': 'name', 'type': 'str'},
16756        'etag': {'key': 'etag', 'type': 'str'},
16757        'type': {'key': 'type', 'type': 'str'},
16758        'linked_resource_type': {'key': 'properties.linkedResourceType', 'type': 'str'},
16759        'link': {'key': 'properties.link', 'type': 'str'},
16760        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16761    }
16762
16763    def __init__(
16764        self,
16765        *,
16766        id: Optional[str] = None,
16767        name: Optional[str] = None,
16768        linked_resource_type: Optional[str] = None,
16769        link: Optional[str] = None,
16770        **kwargs
16771    ):
16772        super(ResourceNavigationLink, self).__init__(id=id, **kwargs)
16773        self.name = name
16774        self.etag = None
16775        self.type = None
16776        self.linked_resource_type = linked_resource_type
16777        self.link = link
16778        self.provisioning_state = None
16779
16780
16781class ResourceNavigationLinksListResult(msrest.serialization.Model):
16782    """Response for ResourceNavigationLinks_List operation.
16783
16784    Variables are only populated by the server, and will be ignored when sending a request.
16785
16786    :param value: The resource navigation links in a subnet.
16787    :type value: list[~azure.mgmt.network.v2020_04_01.models.ResourceNavigationLink]
16788    :ivar next_link: The URL to get the next set of results.
16789    :vartype next_link: str
16790    """
16791
16792    _validation = {
16793        'next_link': {'readonly': True},
16794    }
16795
16796    _attribute_map = {
16797        'value': {'key': 'value', 'type': '[ResourceNavigationLink]'},
16798        'next_link': {'key': 'nextLink', 'type': 'str'},
16799    }
16800
16801    def __init__(
16802        self,
16803        *,
16804        value: Optional[List["ResourceNavigationLink"]] = None,
16805        **kwargs
16806    ):
16807        super(ResourceNavigationLinksListResult, self).__init__(**kwargs)
16808        self.value = value
16809        self.next_link = None
16810
16811
16812class RetentionPolicyParameters(msrest.serialization.Model):
16813    """Parameters that define the retention policy for flow log.
16814
16815    :param days: Number of days to retain flow log records.
16816    :type days: int
16817    :param enabled: Flag to enable/disable retention.
16818    :type enabled: bool
16819    """
16820
16821    _attribute_map = {
16822        'days': {'key': 'days', 'type': 'int'},
16823        'enabled': {'key': 'enabled', 'type': 'bool'},
16824    }
16825
16826    def __init__(
16827        self,
16828        *,
16829        days: Optional[int] = 0,
16830        enabled: Optional[bool] = False,
16831        **kwargs
16832    ):
16833        super(RetentionPolicyParameters, self).__init__(**kwargs)
16834        self.days = days
16835        self.enabled = enabled
16836
16837
16838class Route(SubResource):
16839    """Route resource.
16840
16841    Variables are only populated by the server, and will be ignored when sending a request.
16842
16843    :param id: Resource ID.
16844    :type id: str
16845    :param name: The name of the resource that is unique within a resource group. This name can be
16846     used to access the resource.
16847    :type name: str
16848    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16849    :vartype etag: str
16850    :param address_prefix: The destination CIDR to which the route applies.
16851    :type address_prefix: str
16852    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values
16853     include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
16854    :type next_hop_type: str or ~azure.mgmt.network.v2020_04_01.models.RouteNextHopType
16855    :param next_hop_ip_address: The IP address packets should be forwarded to. Next hop values are
16856     only allowed in routes where the next hop type is VirtualAppliance.
16857    :type next_hop_ip_address: str
16858    :ivar provisioning_state: The provisioning state of the route resource. Possible values
16859     include: "Succeeded", "Updating", "Deleting", "Failed".
16860    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
16861    """
16862
16863    _validation = {
16864        'etag': {'readonly': True},
16865        'provisioning_state': {'readonly': True},
16866    }
16867
16868    _attribute_map = {
16869        'id': {'key': 'id', 'type': 'str'},
16870        'name': {'key': 'name', 'type': 'str'},
16871        'etag': {'key': 'etag', 'type': 'str'},
16872        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
16873        'next_hop_type': {'key': 'properties.nextHopType', 'type': 'str'},
16874        'next_hop_ip_address': {'key': 'properties.nextHopIpAddress', 'type': 'str'},
16875        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16876    }
16877
16878    def __init__(
16879        self,
16880        *,
16881        id: Optional[str] = None,
16882        name: Optional[str] = None,
16883        address_prefix: Optional[str] = None,
16884        next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None,
16885        next_hop_ip_address: Optional[str] = None,
16886        **kwargs
16887    ):
16888        super(Route, self).__init__(id=id, **kwargs)
16889        self.name = name
16890        self.etag = None
16891        self.address_prefix = address_prefix
16892        self.next_hop_type = next_hop_type
16893        self.next_hop_ip_address = next_hop_ip_address
16894        self.provisioning_state = None
16895
16896
16897class RouteFilter(Resource):
16898    """Route Filter Resource.
16899
16900    Variables are only populated by the server, and will be ignored when sending a request.
16901
16902    :param id: Resource ID.
16903    :type id: str
16904    :ivar name: Resource name.
16905    :vartype name: str
16906    :ivar type: Resource type.
16907    :vartype type: str
16908    :param location: Resource location.
16909    :type location: str
16910    :param tags: A set of tags. Resource tags.
16911    :type tags: dict[str, str]
16912    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16913    :vartype etag: str
16914    :param rules: Collection of RouteFilterRules contained within a route filter.
16915    :type rules: list[~azure.mgmt.network.v2020_04_01.models.RouteFilterRule]
16916    :ivar peerings: A collection of references to express route circuit peerings.
16917    :vartype peerings: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeering]
16918    :ivar ipv6_peerings: A collection of references to express route circuit ipv6 peerings.
16919    :vartype ipv6_peerings: list[~azure.mgmt.network.v2020_04_01.models.ExpressRouteCircuitPeering]
16920    :ivar provisioning_state: The provisioning state of the route filter resource. Possible values
16921     include: "Succeeded", "Updating", "Deleting", "Failed".
16922    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
16923    """
16924
16925    _validation = {
16926        'name': {'readonly': True},
16927        'type': {'readonly': True},
16928        'etag': {'readonly': True},
16929        'peerings': {'readonly': True},
16930        'ipv6_peerings': {'readonly': True},
16931        'provisioning_state': {'readonly': True},
16932    }
16933
16934    _attribute_map = {
16935        'id': {'key': 'id', 'type': 'str'},
16936        'name': {'key': 'name', 'type': 'str'},
16937        'type': {'key': 'type', 'type': 'str'},
16938        'location': {'key': 'location', 'type': 'str'},
16939        'tags': {'key': 'tags', 'type': '{str}'},
16940        'etag': {'key': 'etag', 'type': 'str'},
16941        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
16942        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
16943        'ipv6_peerings': {'key': 'properties.ipv6Peerings', 'type': '[ExpressRouteCircuitPeering]'},
16944        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16945    }
16946
16947    def __init__(
16948        self,
16949        *,
16950        id: Optional[str] = None,
16951        location: Optional[str] = None,
16952        tags: Optional[Dict[str, str]] = None,
16953        rules: Optional[List["RouteFilterRule"]] = None,
16954        **kwargs
16955    ):
16956        super(RouteFilter, self).__init__(id=id, location=location, tags=tags, **kwargs)
16957        self.etag = None
16958        self.rules = rules
16959        self.peerings = None
16960        self.ipv6_peerings = None
16961        self.provisioning_state = None
16962
16963
16964class RouteFilterListResult(msrest.serialization.Model):
16965    """Response for the ListRouteFilters API service call.
16966
16967    :param value: A list of route filters in a resource group.
16968    :type value: list[~azure.mgmt.network.v2020_04_01.models.RouteFilter]
16969    :param next_link: The URL to get the next set of results.
16970    :type next_link: str
16971    """
16972
16973    _attribute_map = {
16974        'value': {'key': 'value', 'type': '[RouteFilter]'},
16975        'next_link': {'key': 'nextLink', 'type': 'str'},
16976    }
16977
16978    def __init__(
16979        self,
16980        *,
16981        value: Optional[List["RouteFilter"]] = None,
16982        next_link: Optional[str] = None,
16983        **kwargs
16984    ):
16985        super(RouteFilterListResult, self).__init__(**kwargs)
16986        self.value = value
16987        self.next_link = next_link
16988
16989
16990class RouteFilterRule(SubResource):
16991    """Route Filter Rule Resource.
16992
16993    Variables are only populated by the server, and will be ignored when sending a request.
16994
16995    :param id: Resource ID.
16996    :type id: str
16997    :param name: The name of the resource that is unique within a resource group. This name can be
16998     used to access the resource.
16999    :type name: str
17000    :param location: Resource location.
17001    :type location: str
17002    :ivar etag: A unique read-only string that changes whenever the resource is updated.
17003    :vartype etag: str
17004    :param access: The access type of the rule. Possible values include: "Allow", "Deny".
17005    :type access: str or ~azure.mgmt.network.v2020_04_01.models.Access
17006    :param route_filter_rule_type: The rule type of the rule. Possible values include: "Community".
17007    :type route_filter_rule_type: str or ~azure.mgmt.network.v2020_04_01.models.RouteFilterRuleType
17008    :param communities: The collection for bgp community values to filter on. e.g.
17009     ['12076:5010','12076:5020'].
17010    :type communities: list[str]
17011    :ivar provisioning_state: The provisioning state of the route filter rule resource. Possible
17012     values include: "Succeeded", "Updating", "Deleting", "Failed".
17013    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
17014    """
17015
17016    _validation = {
17017        'etag': {'readonly': True},
17018        'provisioning_state': {'readonly': True},
17019    }
17020
17021    _attribute_map = {
17022        'id': {'key': 'id', 'type': 'str'},
17023        'name': {'key': 'name', 'type': 'str'},
17024        'location': {'key': 'location', 'type': 'str'},
17025        'etag': {'key': 'etag', 'type': 'str'},
17026        'access': {'key': 'properties.access', 'type': 'str'},
17027        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
17028        'communities': {'key': 'properties.communities', 'type': '[str]'},
17029        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
17030    }
17031
17032    def __init__(
17033        self,
17034        *,
17035        id: Optional[str] = None,
17036        name: Optional[str] = None,
17037        location: Optional[str] = None,
17038        access: Optional[Union[str, "Access"]] = None,
17039        route_filter_rule_type: Optional[Union[str, "RouteFilterRuleType"]] = None,
17040        communities: Optional[List[str]] = None,
17041        **kwargs
17042    ):
17043        super(RouteFilterRule, self).__init__(id=id, **kwargs)
17044        self.name = name
17045        self.location = location
17046        self.etag = None
17047        self.access = access
17048        self.route_filter_rule_type = route_filter_rule_type
17049        self.communities = communities
17050        self.provisioning_state = None
17051
17052
17053class RouteFilterRuleListResult(msrest.serialization.Model):
17054    """Response for the ListRouteFilterRules API service call.
17055
17056    :param value: A list of RouteFilterRules in a resource group.
17057    :type value: list[~azure.mgmt.network.v2020_04_01.models.RouteFilterRule]
17058    :param next_link: The URL to get the next set of results.
17059    :type next_link: str
17060    """
17061
17062    _attribute_map = {
17063        'value': {'key': 'value', 'type': '[RouteFilterRule]'},
17064        'next_link': {'key': 'nextLink', 'type': 'str'},
17065    }
17066
17067    def __init__(
17068        self,
17069        *,
17070        value: Optional[List["RouteFilterRule"]] = None,
17071        next_link: Optional[str] = None,
17072        **kwargs
17073    ):
17074        super(RouteFilterRuleListResult, self).__init__(**kwargs)
17075        self.value = value
17076        self.next_link = next_link
17077
17078
17079class RouteListResult(msrest.serialization.Model):
17080    """Response for the ListRoute API service call.
17081
17082    :param value: A list of routes in a resource group.
17083    :type value: list[~azure.mgmt.network.v2020_04_01.models.Route]
17084    :param next_link: The URL to get the next set of results.
17085    :type next_link: str
17086    """
17087
17088    _attribute_map = {
17089        'value': {'key': 'value', 'type': '[Route]'},
17090        'next_link': {'key': 'nextLink', 'type': 'str'},
17091    }
17092
17093    def __init__(
17094        self,
17095        *,
17096        value: Optional[List["Route"]] = None,
17097        next_link: Optional[str] = None,
17098        **kwargs
17099    ):
17100        super(RouteListResult, self).__init__(**kwargs)
17101        self.value = value
17102        self.next_link = next_link
17103
17104
17105class RouteTable(Resource):
17106    """Route table resource.
17107
17108    Variables are only populated by the server, and will be ignored when sending a request.
17109
17110    :param id: Resource ID.
17111    :type id: str
17112    :ivar name: Resource name.
17113    :vartype name: str
17114    :ivar type: Resource type.
17115    :vartype type: str
17116    :param location: Resource location.
17117    :type location: str
17118    :param tags: A set of tags. Resource tags.
17119    :type tags: dict[str, str]
17120    :ivar etag: A unique read-only string that changes whenever the resource is updated.
17121    :vartype etag: str
17122    :param routes: Collection of routes contained within a route table.
17123    :type routes: list[~azure.mgmt.network.v2020_04_01.models.Route]
17124    :ivar subnets: A collection of references to subnets.
17125    :vartype subnets: list[~azure.mgmt.network.v2020_04_01.models.Subnet]
17126    :param disable_bgp_route_propagation: Whether to disable the routes learned by BGP on that
17127     route table. True means disable.
17128    :type disable_bgp_route_propagation: bool
17129    :ivar provisioning_state: The provisioning state of the route table resource. Possible values
17130     include: "Succeeded", "Updating", "Deleting", "Failed".
17131    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
17132    """
17133
17134    _validation = {
17135        'name': {'readonly': True},
17136        'type': {'readonly': True},
17137        'etag': {'readonly': True},
17138        'subnets': {'readonly': True},
17139        'provisioning_state': {'readonly': True},
17140    }
17141
17142    _attribute_map = {
17143        'id': {'key': 'id', 'type': 'str'},
17144        'name': {'key': 'name', 'type': 'str'},
17145        'type': {'key': 'type', 'type': 'str'},
17146        'location': {'key': 'location', 'type': 'str'},
17147        'tags': {'key': 'tags', 'type': '{str}'},
17148        'etag': {'key': 'etag', 'type': 'str'},
17149        'routes': {'key': 'properties.routes', 'type': '[Route]'},
17150        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
17151        'disable_bgp_route_propagation': {'key': 'properties.disableBgpRoutePropagation', 'type': 'bool'},
17152        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
17153    }
17154
17155    def __init__(
17156        self,
17157        *,
17158        id: Optional[str] = None,
17159        location: Optional[str] = None,
17160        tags: Optional[Dict[str, str]] = None,
17161        routes: Optional[List["Route"]] = None,
17162        disable_bgp_route_propagation: Optional[bool] = None,
17163        **kwargs
17164    ):
17165        super(RouteTable, self).__init__(id=id, location=location, tags=tags, **kwargs)
17166        self.etag = None
17167        self.routes = routes
17168        self.subnets = None
17169        self.disable_bgp_route_propagation = disable_bgp_route_propagation
17170        self.provisioning_state = None
17171
17172
17173class RouteTableListResult(msrest.serialization.Model):
17174    """Response for the ListRouteTable API service call.
17175
17176    :param value: A list of route tables in a resource group.
17177    :type value: list[~azure.mgmt.network.v2020_04_01.models.RouteTable]
17178    :param next_link: The URL to get the next set of results.
17179    :type next_link: str
17180    """
17181
17182    _attribute_map = {
17183        'value': {'key': 'value', 'type': '[RouteTable]'},
17184        'next_link': {'key': 'nextLink', 'type': 'str'},
17185    }
17186
17187    def __init__(
17188        self,
17189        *,
17190        value: Optional[List["RouteTable"]] = None,
17191        next_link: Optional[str] = None,
17192        **kwargs
17193    ):
17194        super(RouteTableListResult, self).__init__(**kwargs)
17195        self.value = value
17196        self.next_link = next_link
17197
17198
17199class RoutingConfiguration(msrest.serialization.Model):
17200    """Routing Configuration indicating the associated and propagated route tables for this connection.
17201
17202    :param associated_route_table: The resource id RouteTable associated with this
17203     RoutingConfiguration.
17204    :type associated_route_table: ~azure.mgmt.network.v2020_04_01.models.SubResource
17205    :param propagated_route_tables: The list of RouteTables to advertise the routes to.
17206    :type propagated_route_tables: ~azure.mgmt.network.v2020_04_01.models.PropagatedRouteTable
17207    :param vnet_routes: List of routes that control routing from VirtualHub into a virtual network
17208     connection.
17209    :type vnet_routes: ~azure.mgmt.network.v2020_04_01.models.VnetRoute
17210    """
17211
17212    _attribute_map = {
17213        'associated_route_table': {'key': 'associatedRouteTable', 'type': 'SubResource'},
17214        'propagated_route_tables': {'key': 'propagatedRouteTables', 'type': 'PropagatedRouteTable'},
17215        'vnet_routes': {'key': 'vnetRoutes', 'type': 'VnetRoute'},
17216    }
17217
17218    def __init__(
17219        self,
17220        *,
17221        associated_route_table: Optional["SubResource"] = None,
17222        propagated_route_tables: Optional["PropagatedRouteTable"] = None,
17223        vnet_routes: Optional["VnetRoute"] = None,
17224        **kwargs
17225    ):
17226        super(RoutingConfiguration, self).__init__(**kwargs)
17227        self.associated_route_table = associated_route_table
17228        self.propagated_route_tables = propagated_route_tables
17229        self.vnet_routes = vnet_routes
17230
17231
17232class SecurityGroupNetworkInterface(msrest.serialization.Model):
17233    """Network interface and all its associated security rules.
17234
17235    :param id: ID of the network interface.
17236    :type id: str
17237    :param security_rule_associations: All security rules associated with the network interface.
17238    :type security_rule_associations:
17239     ~azure.mgmt.network.v2020_04_01.models.SecurityRuleAssociations
17240    """
17241
17242    _attribute_map = {
17243        'id': {'key': 'id', 'type': 'str'},
17244        'security_rule_associations': {'key': 'securityRuleAssociations', 'type': 'SecurityRuleAssociations'},
17245    }
17246
17247    def __init__(
17248        self,
17249        *,
17250        id: Optional[str] = None,
17251        security_rule_associations: Optional["SecurityRuleAssociations"] = None,
17252        **kwargs
17253    ):
17254        super(SecurityGroupNetworkInterface, self).__init__(**kwargs)
17255        self.id = id
17256        self.security_rule_associations = security_rule_associations
17257
17258
17259class SecurityGroupViewParameters(msrest.serialization.Model):
17260    """Parameters that define the VM to check security groups for.
17261
17262    All required parameters must be populated in order to send to Azure.
17263
17264    :param target_resource_id: Required. ID of the target VM.
17265    :type target_resource_id: str
17266    """
17267
17268    _validation = {
17269        'target_resource_id': {'required': True},
17270    }
17271
17272    _attribute_map = {
17273        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
17274    }
17275
17276    def __init__(
17277        self,
17278        *,
17279        target_resource_id: str,
17280        **kwargs
17281    ):
17282        super(SecurityGroupViewParameters, self).__init__(**kwargs)
17283        self.target_resource_id = target_resource_id
17284
17285
17286class SecurityGroupViewResult(msrest.serialization.Model):
17287    """The information about security rules applied to the specified VM.
17288
17289    :param network_interfaces: List of network interfaces on the specified VM.
17290    :type network_interfaces:
17291     list[~azure.mgmt.network.v2020_04_01.models.SecurityGroupNetworkInterface]
17292    """
17293
17294    _attribute_map = {
17295        'network_interfaces': {'key': 'networkInterfaces', 'type': '[SecurityGroupNetworkInterface]'},
17296    }
17297
17298    def __init__(
17299        self,
17300        *,
17301        network_interfaces: Optional[List["SecurityGroupNetworkInterface"]] = None,
17302        **kwargs
17303    ):
17304        super(SecurityGroupViewResult, self).__init__(**kwargs)
17305        self.network_interfaces = network_interfaces
17306
17307
17308class SecurityPartnerProvider(Resource):
17309    """Security Partner Provider resource.
17310
17311    Variables are only populated by the server, and will be ignored when sending a request.
17312
17313    :param id: Resource ID.
17314    :type id: str
17315    :ivar name: Resource name.
17316    :vartype name: str
17317    :ivar type: Resource type.
17318    :vartype type: str
17319    :param location: Resource location.
17320    :type location: str
17321    :param tags: A set of tags. Resource tags.
17322    :type tags: dict[str, str]
17323    :ivar etag: A unique read-only string that changes whenever the resource is updated.
17324    :vartype etag: str
17325    :ivar provisioning_state: The provisioning state of the Security Partner Provider resource.
17326     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
17327    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
17328    :param security_provider_name: The security provider name. Possible values include: "ZScaler",
17329     "IBoss", "Checkpoint".
17330    :type security_provider_name: str or
17331     ~azure.mgmt.network.v2020_04_01.models.SecurityProviderName
17332    :ivar connection_status: The connection status with the Security Partner Provider. Possible
17333     values include: "Unknown", "PartiallyConnected", "Connected", "NotConnected".
17334    :vartype connection_status: str or
17335     ~azure.mgmt.network.v2020_04_01.models.SecurityPartnerProviderConnectionStatus
17336    :param virtual_hub: The virtualHub to which the Security Partner Provider belongs.
17337    :type virtual_hub: ~azure.mgmt.network.v2020_04_01.models.SubResource
17338    """
17339
17340    _validation = {
17341        'name': {'readonly': True},
17342        'type': {'readonly': True},
17343        'etag': {'readonly': True},
17344        'provisioning_state': {'readonly': True},
17345        'connection_status': {'readonly': True},
17346    }
17347
17348    _attribute_map = {
17349        'id': {'key': 'id', 'type': 'str'},
17350        'name': {'key': 'name', 'type': 'str'},
17351        'type': {'key': 'type', 'type': 'str'},
17352        'location': {'key': 'location', 'type': 'str'},
17353        'tags': {'key': 'tags', 'type': '{str}'},
17354        'etag': {'key': 'etag', 'type': 'str'},
17355        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
17356        'security_provider_name': {'key': 'properties.securityProviderName', 'type': 'str'},
17357        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
17358        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
17359    }
17360
17361    def __init__(
17362        self,
17363        *,
17364        id: Optional[str] = None,
17365        location: Optional[str] = None,
17366        tags: Optional[Dict[str, str]] = None,
17367        security_provider_name: Optional[Union[str, "SecurityProviderName"]] = None,
17368        virtual_hub: Optional["SubResource"] = None,
17369        **kwargs
17370    ):
17371        super(SecurityPartnerProvider, self).__init__(id=id, location=location, tags=tags, **kwargs)
17372        self.etag = None
17373        self.provisioning_state = None
17374        self.security_provider_name = security_provider_name
17375        self.connection_status = None
17376        self.virtual_hub = virtual_hub
17377
17378
17379class SecurityPartnerProviderListResult(msrest.serialization.Model):
17380    """Response for ListSecurityPartnerProviders API service call.
17381
17382    :param value: List of Security Partner Providers in a resource group.
17383    :type value: list[~azure.mgmt.network.v2020_04_01.models.SecurityPartnerProvider]
17384    :param next_link: URL to get the next set of results.
17385    :type next_link: str
17386    """
17387
17388    _attribute_map = {
17389        'value': {'key': 'value', 'type': '[SecurityPartnerProvider]'},
17390        'next_link': {'key': 'nextLink', 'type': 'str'},
17391    }
17392
17393    def __init__(
17394        self,
17395        *,
17396        value: Optional[List["SecurityPartnerProvider"]] = None,
17397        next_link: Optional[str] = None,
17398        **kwargs
17399    ):
17400        super(SecurityPartnerProviderListResult, self).__init__(**kwargs)
17401        self.value = value
17402        self.next_link = next_link
17403
17404
17405class SecurityRule(SubResource):
17406    """Network security rule.
17407
17408    Variables are only populated by the server, and will be ignored when sending a request.
17409
17410    :param id: Resource ID.
17411    :type id: str
17412    :param name: The name of the resource that is unique within a resource group. This name can be
17413     used to access the resource.
17414    :type name: str
17415    :ivar etag: A unique read-only string that changes whenever the resource is updated.
17416    :vartype etag: str
17417    :param description: A description for this rule. Restricted to 140 chars.
17418    :type description: str
17419    :param protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp",
17420     "Icmp", "Esp", "*", "Ah".
17421    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.SecurityRuleProtocol
17422    :param source_port_range: The source port or range. Integer or range between 0 and 65535.
17423     Asterisk '*' can also be used to match all ports.
17424    :type source_port_range: str
17425    :param destination_port_range: The destination port or range. Integer or range between 0 and
17426     65535. Asterisk '*' can also be used to match all ports.
17427    :type destination_port_range: str
17428    :param source_address_prefix: The CIDR or source IP range. Asterisk '*' can also be used to
17429     match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet'
17430     can also be used. If this is an ingress rule, specifies where network traffic originates from.
17431    :type source_address_prefix: str
17432    :param source_address_prefixes: The CIDR or source IP ranges.
17433    :type source_address_prefixes: list[str]
17434    :param source_application_security_groups: The application security group specified as source.
17435    :type source_application_security_groups:
17436     list[~azure.mgmt.network.v2020_04_01.models.ApplicationSecurityGroup]
17437    :param destination_address_prefix: The destination address prefix. CIDR or destination IP
17438     range. Asterisk '*' can also be used to match all source IPs. Default tags such as
17439     'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
17440    :type destination_address_prefix: str
17441    :param destination_address_prefixes: The destination address prefixes. CIDR or destination IP
17442     ranges.
17443    :type destination_address_prefixes: list[str]
17444    :param destination_application_security_groups: The application security group specified as
17445     destination.
17446    :type destination_application_security_groups:
17447     list[~azure.mgmt.network.v2020_04_01.models.ApplicationSecurityGroup]
17448    :param source_port_ranges: The source port ranges.
17449    :type source_port_ranges: list[str]
17450    :param destination_port_ranges: The destination port ranges.
17451    :type destination_port_ranges: list[str]
17452    :param access: The network traffic is allowed or denied. Possible values include: "Allow",
17453     "Deny".
17454    :type access: str or ~azure.mgmt.network.v2020_04_01.models.SecurityRuleAccess
17455    :param priority: The priority of the rule. The value can be between 100 and 4096. The priority
17456     number must be unique for each rule in the collection. The lower the priority number, the
17457     higher the priority of the rule.
17458    :type priority: int
17459    :param direction: The direction of the rule. The direction specifies if rule will be evaluated
17460     on incoming or outgoing traffic. Possible values include: "Inbound", "Outbound".
17461    :type direction: str or ~azure.mgmt.network.v2020_04_01.models.SecurityRuleDirection
17462    :ivar provisioning_state: The provisioning state of the security rule resource. Possible values
17463     include: "Succeeded", "Updating", "Deleting", "Failed".
17464    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
17465    """
17466
17467    _validation = {
17468        'etag': {'readonly': True},
17469        'provisioning_state': {'readonly': True},
17470    }
17471
17472    _attribute_map = {
17473        'id': {'key': 'id', 'type': 'str'},
17474        'name': {'key': 'name', 'type': 'str'},
17475        'etag': {'key': 'etag', 'type': 'str'},
17476        'description': {'key': 'properties.description', 'type': 'str'},
17477        'protocol': {'key': 'properties.protocol', 'type': 'str'},
17478        'source_port_range': {'key': 'properties.sourcePortRange', 'type': 'str'},
17479        'destination_port_range': {'key': 'properties.destinationPortRange', 'type': 'str'},
17480        'source_address_prefix': {'key': 'properties.sourceAddressPrefix', 'type': 'str'},
17481        'source_address_prefixes': {'key': 'properties.sourceAddressPrefixes', 'type': '[str]'},
17482        'source_application_security_groups': {'key': 'properties.sourceApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
17483        'destination_address_prefix': {'key': 'properties.destinationAddressPrefix', 'type': 'str'},
17484        'destination_address_prefixes': {'key': 'properties.destinationAddressPrefixes', 'type': '[str]'},
17485        'destination_application_security_groups': {'key': 'properties.destinationApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
17486        'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'},
17487        'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'},
17488        'access': {'key': 'properties.access', 'type': 'str'},
17489        'priority': {'key': 'properties.priority', 'type': 'int'},
17490        'direction': {'key': 'properties.direction', 'type': 'str'},
17491        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
17492    }
17493
17494    def __init__(
17495        self,
17496        *,
17497        id: Optional[str] = None,
17498        name: Optional[str] = None,
17499        description: Optional[str] = None,
17500        protocol: Optional[Union[str, "SecurityRuleProtocol"]] = None,
17501        source_port_range: Optional[str] = None,
17502        destination_port_range: Optional[str] = None,
17503        source_address_prefix: Optional[str] = None,
17504        source_address_prefixes: Optional[List[str]] = None,
17505        source_application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
17506        destination_address_prefix: Optional[str] = None,
17507        destination_address_prefixes: Optional[List[str]] = None,
17508        destination_application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
17509        source_port_ranges: Optional[List[str]] = None,
17510        destination_port_ranges: Optional[List[str]] = None,
17511        access: Optional[Union[str, "SecurityRuleAccess"]] = None,
17512        priority: Optional[int] = None,
17513        direction: Optional[Union[str, "SecurityRuleDirection"]] = None,
17514        **kwargs
17515    ):
17516        super(SecurityRule, self).__init__(id=id, **kwargs)
17517        self.name = name
17518        self.etag = None
17519        self.description = description
17520        self.protocol = protocol
17521        self.source_port_range = source_port_range
17522        self.destination_port_range = destination_port_range
17523        self.source_address_prefix = source_address_prefix
17524        self.source_address_prefixes = source_address_prefixes
17525        self.source_application_security_groups = source_application_security_groups
17526        self.destination_address_prefix = destination_address_prefix
17527        self.destination_address_prefixes = destination_address_prefixes
17528        self.destination_application_security_groups = destination_application_security_groups
17529        self.source_port_ranges = source_port_ranges
17530        self.destination_port_ranges = destination_port_ranges
17531        self.access = access
17532        self.priority = priority
17533        self.direction = direction
17534        self.provisioning_state = None
17535
17536
17537class SecurityRuleAssociations(msrest.serialization.Model):
17538    """All security rules associated with the network interface.
17539
17540    :param network_interface_association: Network interface and it's custom security rules.
17541    :type network_interface_association:
17542     ~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceAssociation
17543    :param subnet_association: Subnet and it's custom security rules.
17544    :type subnet_association: ~azure.mgmt.network.v2020_04_01.models.SubnetAssociation
17545    :param default_security_rules: Collection of default security rules of the network security
17546     group.
17547    :type default_security_rules: list[~azure.mgmt.network.v2020_04_01.models.SecurityRule]
17548    :param effective_security_rules: Collection of effective security rules.
17549    :type effective_security_rules:
17550     list[~azure.mgmt.network.v2020_04_01.models.EffectiveNetworkSecurityRule]
17551    """
17552
17553    _attribute_map = {
17554        'network_interface_association': {'key': 'networkInterfaceAssociation', 'type': 'NetworkInterfaceAssociation'},
17555        'subnet_association': {'key': 'subnetAssociation', 'type': 'SubnetAssociation'},
17556        'default_security_rules': {'key': 'defaultSecurityRules', 'type': '[SecurityRule]'},
17557        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
17558    }
17559
17560    def __init__(
17561        self,
17562        *,
17563        network_interface_association: Optional["NetworkInterfaceAssociation"] = None,
17564        subnet_association: Optional["SubnetAssociation"] = None,
17565        default_security_rules: Optional[List["SecurityRule"]] = None,
17566        effective_security_rules: Optional[List["EffectiveNetworkSecurityRule"]] = None,
17567        **kwargs
17568    ):
17569        super(SecurityRuleAssociations, self).__init__(**kwargs)
17570        self.network_interface_association = network_interface_association
17571        self.subnet_association = subnet_association
17572        self.default_security_rules = default_security_rules
17573        self.effective_security_rules = effective_security_rules
17574
17575
17576class SecurityRuleListResult(msrest.serialization.Model):
17577    """Response for ListSecurityRule API service call. Retrieves all security rules that belongs to a network security group.
17578
17579    :param value: The security rules in a network security group.
17580    :type value: list[~azure.mgmt.network.v2020_04_01.models.SecurityRule]
17581    :param next_link: The URL to get the next set of results.
17582    :type next_link: str
17583    """
17584
17585    _attribute_map = {
17586        'value': {'key': 'value', 'type': '[SecurityRule]'},
17587        'next_link': {'key': 'nextLink', 'type': 'str'},
17588    }
17589
17590    def __init__(
17591        self,
17592        *,
17593        value: Optional[List["SecurityRule"]] = None,
17594        next_link: Optional[str] = None,
17595        **kwargs
17596    ):
17597        super(SecurityRuleListResult, self).__init__(**kwargs)
17598        self.value = value
17599        self.next_link = next_link
17600
17601
17602class ServiceAssociationLink(SubResource):
17603    """ServiceAssociationLink resource.
17604
17605    Variables are only populated by the server, and will be ignored when sending a request.
17606
17607    :param id: Resource ID.
17608    :type id: str
17609    :param name: Name of the resource that is unique within a resource group. This name can be used
17610     to access the resource.
17611    :type name: str
17612    :ivar etag: A unique read-only string that changes whenever the resource is updated.
17613    :vartype etag: str
17614    :ivar type: Resource type.
17615    :vartype type: str
17616    :param linked_resource_type: Resource type of the linked resource.
17617    :type linked_resource_type: str
17618    :param link: Link to the external resource.
17619    :type link: str
17620    :ivar provisioning_state: The provisioning state of the service association link resource.
17621     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
17622    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
17623    :param allow_delete: If true, the resource can be deleted.
17624    :type allow_delete: bool
17625    :param locations: A list of locations.
17626    :type locations: list[str]
17627    """
17628
17629    _validation = {
17630        'etag': {'readonly': True},
17631        'type': {'readonly': True},
17632        'provisioning_state': {'readonly': True},
17633    }
17634
17635    _attribute_map = {
17636        'id': {'key': 'id', 'type': 'str'},
17637        'name': {'key': 'name', 'type': 'str'},
17638        'etag': {'key': 'etag', 'type': 'str'},
17639        'type': {'key': 'type', 'type': 'str'},
17640        'linked_resource_type': {'key': 'properties.linkedResourceType', 'type': 'str'},
17641        'link': {'key': 'properties.link', 'type': 'str'},
17642        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
17643        'allow_delete': {'key': 'properties.allowDelete', 'type': 'bool'},
17644        'locations': {'key': 'properties.locations', 'type': '[str]'},
17645    }
17646
17647    def __init__(
17648        self,
17649        *,
17650        id: Optional[str] = None,
17651        name: Optional[str] = None,
17652        linked_resource_type: Optional[str] = None,
17653        link: Optional[str] = None,
17654        allow_delete: Optional[bool] = None,
17655        locations: Optional[List[str]] = None,
17656        **kwargs
17657    ):
17658        super(ServiceAssociationLink, self).__init__(id=id, **kwargs)
17659        self.name = name
17660        self.etag = None
17661        self.type = None
17662        self.linked_resource_type = linked_resource_type
17663        self.link = link
17664        self.provisioning_state = None
17665        self.allow_delete = allow_delete
17666        self.locations = locations
17667
17668
17669class ServiceAssociationLinksListResult(msrest.serialization.Model):
17670    """Response for ServiceAssociationLinks_List operation.
17671
17672    Variables are only populated by the server, and will be ignored when sending a request.
17673
17674    :param value: The service association links in a subnet.
17675    :type value: list[~azure.mgmt.network.v2020_04_01.models.ServiceAssociationLink]
17676    :ivar next_link: The URL to get the next set of results.
17677    :vartype next_link: str
17678    """
17679
17680    _validation = {
17681        'next_link': {'readonly': True},
17682    }
17683
17684    _attribute_map = {
17685        'value': {'key': 'value', 'type': '[ServiceAssociationLink]'},
17686        'next_link': {'key': 'nextLink', 'type': 'str'},
17687    }
17688
17689    def __init__(
17690        self,
17691        *,
17692        value: Optional[List["ServiceAssociationLink"]] = None,
17693        **kwargs
17694    ):
17695        super(ServiceAssociationLinksListResult, self).__init__(**kwargs)
17696        self.value = value
17697        self.next_link = None
17698
17699
17700class ServiceEndpointPolicy(Resource):
17701    """Service End point policy resource.
17702
17703    Variables are only populated by the server, and will be ignored when sending a request.
17704
17705    :param id: Resource ID.
17706    :type id: str
17707    :ivar name: Resource name.
17708    :vartype name: str
17709    :ivar type: Resource type.
17710    :vartype type: str
17711    :param location: Resource location.
17712    :type location: str
17713    :param tags: A set of tags. Resource tags.
17714    :type tags: dict[str, str]
17715    :ivar etag: A unique read-only string that changes whenever the resource is updated.
17716    :vartype etag: str
17717    :param service_endpoint_policy_definitions: A collection of service endpoint policy definitions
17718     of the service endpoint policy.
17719    :type service_endpoint_policy_definitions:
17720     list[~azure.mgmt.network.v2020_04_01.models.ServiceEndpointPolicyDefinition]
17721    :ivar subnets: A collection of references to subnets.
17722    :vartype subnets: list[~azure.mgmt.network.v2020_04_01.models.Subnet]
17723    :ivar resource_guid: The resource GUID property of the service endpoint policy resource.
17724    :vartype resource_guid: str
17725    :ivar provisioning_state: The provisioning state of the service endpoint policy resource.
17726     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
17727    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
17728    """
17729
17730    _validation = {
17731        'name': {'readonly': True},
17732        'type': {'readonly': True},
17733        'etag': {'readonly': True},
17734        'subnets': {'readonly': True},
17735        'resource_guid': {'readonly': True},
17736        'provisioning_state': {'readonly': True},
17737    }
17738
17739    _attribute_map = {
17740        'id': {'key': 'id', 'type': 'str'},
17741        'name': {'key': 'name', 'type': 'str'},
17742        'type': {'key': 'type', 'type': 'str'},
17743        'location': {'key': 'location', 'type': 'str'},
17744        'tags': {'key': 'tags', 'type': '{str}'},
17745        'etag': {'key': 'etag', 'type': 'str'},
17746        'service_endpoint_policy_definitions': {'key': 'properties.serviceEndpointPolicyDefinitions', 'type': '[ServiceEndpointPolicyDefinition]'},
17747        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
17748        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
17749        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
17750    }
17751
17752    def __init__(
17753        self,
17754        *,
17755        id: Optional[str] = None,
17756        location: Optional[str] = None,
17757        tags: Optional[Dict[str, str]] = None,
17758        service_endpoint_policy_definitions: Optional[List["ServiceEndpointPolicyDefinition"]] = None,
17759        **kwargs
17760    ):
17761        super(ServiceEndpointPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs)
17762        self.etag = None
17763        self.service_endpoint_policy_definitions = service_endpoint_policy_definitions
17764        self.subnets = None
17765        self.resource_guid = None
17766        self.provisioning_state = None
17767
17768
17769class ServiceEndpointPolicyDefinition(SubResource):
17770    """Service Endpoint policy definitions.
17771
17772    Variables are only populated by the server, and will be ignored when sending a request.
17773
17774    :param id: Resource ID.
17775    :type id: str
17776    :param name: The name of the resource that is unique within a resource group. This name can be
17777     used to access the resource.
17778    :type name: str
17779    :ivar etag: A unique read-only string that changes whenever the resource is updated.
17780    :vartype etag: str
17781    :param description: A description for this rule. Restricted to 140 chars.
17782    :type description: str
17783    :param service: Service endpoint name.
17784    :type service: str
17785    :param service_resources: A list of service resources.
17786    :type service_resources: list[str]
17787    :ivar provisioning_state: The provisioning state of the service endpoint policy definition
17788     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
17789    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
17790    """
17791
17792    _validation = {
17793        'etag': {'readonly': True},
17794        'provisioning_state': {'readonly': True},
17795    }
17796
17797    _attribute_map = {
17798        'id': {'key': 'id', 'type': 'str'},
17799        'name': {'key': 'name', 'type': 'str'},
17800        'etag': {'key': 'etag', 'type': 'str'},
17801        'description': {'key': 'properties.description', 'type': 'str'},
17802        'service': {'key': 'properties.service', 'type': 'str'},
17803        'service_resources': {'key': 'properties.serviceResources', 'type': '[str]'},
17804        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
17805    }
17806
17807    def __init__(
17808        self,
17809        *,
17810        id: Optional[str] = None,
17811        name: Optional[str] = None,
17812        description: Optional[str] = None,
17813        service: Optional[str] = None,
17814        service_resources: Optional[List[str]] = None,
17815        **kwargs
17816    ):
17817        super(ServiceEndpointPolicyDefinition, self).__init__(id=id, **kwargs)
17818        self.name = name
17819        self.etag = None
17820        self.description = description
17821        self.service = service
17822        self.service_resources = service_resources
17823        self.provisioning_state = None
17824
17825
17826class ServiceEndpointPolicyDefinitionListResult(msrest.serialization.Model):
17827    """Response for ListServiceEndpointPolicyDefinition API service call. Retrieves all service endpoint policy definition that belongs to a service endpoint policy.
17828
17829    :param value: The service endpoint policy definition in a service endpoint policy.
17830    :type value: list[~azure.mgmt.network.v2020_04_01.models.ServiceEndpointPolicyDefinition]
17831    :param next_link: The URL to get the next set of results.
17832    :type next_link: str
17833    """
17834
17835    _attribute_map = {
17836        'value': {'key': 'value', 'type': '[ServiceEndpointPolicyDefinition]'},
17837        'next_link': {'key': 'nextLink', 'type': 'str'},
17838    }
17839
17840    def __init__(
17841        self,
17842        *,
17843        value: Optional[List["ServiceEndpointPolicyDefinition"]] = None,
17844        next_link: Optional[str] = None,
17845        **kwargs
17846    ):
17847        super(ServiceEndpointPolicyDefinitionListResult, self).__init__(**kwargs)
17848        self.value = value
17849        self.next_link = next_link
17850
17851
17852class ServiceEndpointPolicyListResult(msrest.serialization.Model):
17853    """Response for ListServiceEndpointPolicies API service call.
17854
17855    Variables are only populated by the server, and will be ignored when sending a request.
17856
17857    :param value: A list of ServiceEndpointPolicy resources.
17858    :type value: list[~azure.mgmt.network.v2020_04_01.models.ServiceEndpointPolicy]
17859    :ivar next_link: The URL to get the next set of results.
17860    :vartype next_link: str
17861    """
17862
17863    _validation = {
17864        'next_link': {'readonly': True},
17865    }
17866
17867    _attribute_map = {
17868        'value': {'key': 'value', 'type': '[ServiceEndpointPolicy]'},
17869        'next_link': {'key': 'nextLink', 'type': 'str'},
17870    }
17871
17872    def __init__(
17873        self,
17874        *,
17875        value: Optional[List["ServiceEndpointPolicy"]] = None,
17876        **kwargs
17877    ):
17878        super(ServiceEndpointPolicyListResult, self).__init__(**kwargs)
17879        self.value = value
17880        self.next_link = None
17881
17882
17883class ServiceEndpointPropertiesFormat(msrest.serialization.Model):
17884    """The service endpoint properties.
17885
17886    Variables are only populated by the server, and will be ignored when sending a request.
17887
17888    :param service: The type of the endpoint service.
17889    :type service: str
17890    :param locations: A list of locations.
17891    :type locations: list[str]
17892    :ivar provisioning_state: The provisioning state of the service endpoint resource. Possible
17893     values include: "Succeeded", "Updating", "Deleting", "Failed".
17894    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
17895    """
17896
17897    _validation = {
17898        'provisioning_state': {'readonly': True},
17899    }
17900
17901    _attribute_map = {
17902        'service': {'key': 'service', 'type': 'str'},
17903        'locations': {'key': 'locations', 'type': '[str]'},
17904        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
17905    }
17906
17907    def __init__(
17908        self,
17909        *,
17910        service: Optional[str] = None,
17911        locations: Optional[List[str]] = None,
17912        **kwargs
17913    ):
17914        super(ServiceEndpointPropertiesFormat, self).__init__(**kwargs)
17915        self.service = service
17916        self.locations = locations
17917        self.provisioning_state = None
17918
17919
17920class ServiceTagInformation(msrest.serialization.Model):
17921    """The service tag information.
17922
17923    Variables are only populated by the server, and will be ignored when sending a request.
17924
17925    :ivar properties: Properties of the service tag information.
17926    :vartype properties:
17927     ~azure.mgmt.network.v2020_04_01.models.ServiceTagInformationPropertiesFormat
17928    :ivar name: The name of service tag.
17929    :vartype name: str
17930    :ivar id: The ID of service tag.
17931    :vartype id: str
17932    """
17933
17934    _validation = {
17935        'properties': {'readonly': True},
17936        'name': {'readonly': True},
17937        'id': {'readonly': True},
17938    }
17939
17940    _attribute_map = {
17941        'properties': {'key': 'properties', 'type': 'ServiceTagInformationPropertiesFormat'},
17942        'name': {'key': 'name', 'type': 'str'},
17943        'id': {'key': 'id', 'type': 'str'},
17944    }
17945
17946    def __init__(
17947        self,
17948        **kwargs
17949    ):
17950        super(ServiceTagInformation, self).__init__(**kwargs)
17951        self.properties = None
17952        self.name = None
17953        self.id = None
17954
17955
17956class ServiceTagInformationPropertiesFormat(msrest.serialization.Model):
17957    """Properties of the service tag information.
17958
17959    Variables are only populated by the server, and will be ignored when sending a request.
17960
17961    :ivar change_number: The iteration number of service tag.
17962    :vartype change_number: str
17963    :ivar region: The region of service tag.
17964    :vartype region: str
17965    :ivar system_service: The name of system service.
17966    :vartype system_service: str
17967    :ivar address_prefixes: The list of IP address prefixes.
17968    :vartype address_prefixes: list[str]
17969    """
17970
17971    _validation = {
17972        'change_number': {'readonly': True},
17973        'region': {'readonly': True},
17974        'system_service': {'readonly': True},
17975        'address_prefixes': {'readonly': True},
17976    }
17977
17978    _attribute_map = {
17979        'change_number': {'key': 'changeNumber', 'type': 'str'},
17980        'region': {'key': 'region', 'type': 'str'},
17981        'system_service': {'key': 'systemService', 'type': 'str'},
17982        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
17983    }
17984
17985    def __init__(
17986        self,
17987        **kwargs
17988    ):
17989        super(ServiceTagInformationPropertiesFormat, self).__init__(**kwargs)
17990        self.change_number = None
17991        self.region = None
17992        self.system_service = None
17993        self.address_prefixes = None
17994
17995
17996class ServiceTagsListResult(msrest.serialization.Model):
17997    """Response for the ListServiceTags API service call.
17998
17999    Variables are only populated by the server, and will be ignored when sending a request.
18000
18001    :ivar name: The name of the cloud.
18002    :vartype name: str
18003    :ivar id: The ID of the cloud.
18004    :vartype id: str
18005    :ivar type: The azure resource type.
18006    :vartype type: str
18007    :ivar change_number: The iteration number.
18008    :vartype change_number: str
18009    :ivar cloud: The name of the cloud.
18010    :vartype cloud: str
18011    :ivar values: The list of service tag information resources.
18012    :vartype values: list[~azure.mgmt.network.v2020_04_01.models.ServiceTagInformation]
18013    """
18014
18015    _validation = {
18016        'name': {'readonly': True},
18017        'id': {'readonly': True},
18018        'type': {'readonly': True},
18019        'change_number': {'readonly': True},
18020        'cloud': {'readonly': True},
18021        'values': {'readonly': True},
18022    }
18023
18024    _attribute_map = {
18025        'name': {'key': 'name', 'type': 'str'},
18026        'id': {'key': 'id', 'type': 'str'},
18027        'type': {'key': 'type', 'type': 'str'},
18028        'change_number': {'key': 'changeNumber', 'type': 'str'},
18029        'cloud': {'key': 'cloud', 'type': 'str'},
18030        'values': {'key': 'values', 'type': '[ServiceTagInformation]'},
18031    }
18032
18033    def __init__(
18034        self,
18035        **kwargs
18036    ):
18037        super(ServiceTagsListResult, self).__init__(**kwargs)
18038        self.name = None
18039        self.id = None
18040        self.type = None
18041        self.change_number = None
18042        self.cloud = None
18043        self.values = None
18044
18045
18046class SessionIds(msrest.serialization.Model):
18047    """List of session IDs.
18048
18049    :param session_ids: List of session IDs.
18050    :type session_ids: list[str]
18051    """
18052
18053    _attribute_map = {
18054        'session_ids': {'key': 'sessionIds', 'type': '[str]'},
18055    }
18056
18057    def __init__(
18058        self,
18059        *,
18060        session_ids: Optional[List[str]] = None,
18061        **kwargs
18062    ):
18063        super(SessionIds, self).__init__(**kwargs)
18064        self.session_ids = session_ids
18065
18066
18067class StaticRoute(msrest.serialization.Model):
18068    """List of all Static Routes.
18069
18070    :param name: The name of the StaticRoute that is unique within a VnetRoute.
18071    :type name: str
18072    :param address_prefixes: List of all address prefixes.
18073    :type address_prefixes: list[str]
18074    :param next_hop_ip_address: The ip address of the next hop.
18075    :type next_hop_ip_address: str
18076    """
18077
18078    _attribute_map = {
18079        'name': {'key': 'name', 'type': 'str'},
18080        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
18081        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'},
18082    }
18083
18084    def __init__(
18085        self,
18086        *,
18087        name: Optional[str] = None,
18088        address_prefixes: Optional[List[str]] = None,
18089        next_hop_ip_address: Optional[str] = None,
18090        **kwargs
18091    ):
18092        super(StaticRoute, self).__init__(**kwargs)
18093        self.name = name
18094        self.address_prefixes = address_prefixes
18095        self.next_hop_ip_address = next_hop_ip_address
18096
18097
18098class Subnet(SubResource):
18099    """Subnet in a virtual network resource.
18100
18101    Variables are only populated by the server, and will be ignored when sending a request.
18102
18103    :param id: Resource ID.
18104    :type id: str
18105    :param name: The name of the resource that is unique within a resource group. This name can be
18106     used to access the resource.
18107    :type name: str
18108    :ivar etag: A unique read-only string that changes whenever the resource is updated.
18109    :vartype etag: str
18110    :param address_prefix: The address prefix for the subnet.
18111    :type address_prefix: str
18112    :param address_prefixes: List of address prefixes for the subnet.
18113    :type address_prefixes: list[str]
18114    :param network_security_group: The reference to the NetworkSecurityGroup resource.
18115    :type network_security_group: ~azure.mgmt.network.v2020_04_01.models.NetworkSecurityGroup
18116    :param route_table: The reference to the RouteTable resource.
18117    :type route_table: ~azure.mgmt.network.v2020_04_01.models.RouteTable
18118    :param nat_gateway: Nat gateway associated with this subnet.
18119    :type nat_gateway: ~azure.mgmt.network.v2020_04_01.models.SubResource
18120    :param service_endpoints: An array of service endpoints.
18121    :type service_endpoints:
18122     list[~azure.mgmt.network.v2020_04_01.models.ServiceEndpointPropertiesFormat]
18123    :param service_endpoint_policies: An array of service endpoint policies.
18124    :type service_endpoint_policies:
18125     list[~azure.mgmt.network.v2020_04_01.models.ServiceEndpointPolicy]
18126    :ivar private_endpoints: An array of references to private endpoints.
18127    :vartype private_endpoints: list[~azure.mgmt.network.v2020_04_01.models.PrivateEndpoint]
18128    :ivar ip_configurations: An array of references to the network interface IP configurations
18129     using subnet.
18130    :vartype ip_configurations: list[~azure.mgmt.network.v2020_04_01.models.IPConfiguration]
18131    :ivar ip_configuration_profiles: Array of IP configuration profiles which reference this
18132     subnet.
18133    :vartype ip_configuration_profiles:
18134     list[~azure.mgmt.network.v2020_04_01.models.IPConfigurationProfile]
18135    :param ip_allocations: Array of IpAllocation which reference this subnet.
18136    :type ip_allocations: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
18137    :ivar resource_navigation_links: An array of references to the external resources using subnet.
18138    :vartype resource_navigation_links:
18139     list[~azure.mgmt.network.v2020_04_01.models.ResourceNavigationLink]
18140    :ivar service_association_links: An array of references to services injecting into this subnet.
18141    :vartype service_association_links:
18142     list[~azure.mgmt.network.v2020_04_01.models.ServiceAssociationLink]
18143    :param delegations: An array of references to the delegations on the subnet.
18144    :type delegations: list[~azure.mgmt.network.v2020_04_01.models.Delegation]
18145    :ivar purpose: A read-only string identifying the intention of use for this subnet based on
18146     delegations and other user-defined properties.
18147    :vartype purpose: str
18148    :ivar provisioning_state: The provisioning state of the subnet resource. Possible values
18149     include: "Succeeded", "Updating", "Deleting", "Failed".
18150    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
18151    :param private_endpoint_network_policies: Enable or Disable apply network policies on private
18152     end point in the subnet.
18153    :type private_endpoint_network_policies: str
18154    :param private_link_service_network_policies: Enable or Disable apply network policies on
18155     private link service in the subnet.
18156    :type private_link_service_network_policies: str
18157    """
18158
18159    _validation = {
18160        'etag': {'readonly': True},
18161        'private_endpoints': {'readonly': True},
18162        'ip_configurations': {'readonly': True},
18163        'ip_configuration_profiles': {'readonly': True},
18164        'resource_navigation_links': {'readonly': True},
18165        'service_association_links': {'readonly': True},
18166        'purpose': {'readonly': True},
18167        'provisioning_state': {'readonly': True},
18168    }
18169
18170    _attribute_map = {
18171        'id': {'key': 'id', 'type': 'str'},
18172        'name': {'key': 'name', 'type': 'str'},
18173        'etag': {'key': 'etag', 'type': 'str'},
18174        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
18175        'address_prefixes': {'key': 'properties.addressPrefixes', 'type': '[str]'},
18176        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
18177        'route_table': {'key': 'properties.routeTable', 'type': 'RouteTable'},
18178        'nat_gateway': {'key': 'properties.natGateway', 'type': 'SubResource'},
18179        'service_endpoints': {'key': 'properties.serviceEndpoints', 'type': '[ServiceEndpointPropertiesFormat]'},
18180        'service_endpoint_policies': {'key': 'properties.serviceEndpointPolicies', 'type': '[ServiceEndpointPolicy]'},
18181        'private_endpoints': {'key': 'properties.privateEndpoints', 'type': '[PrivateEndpoint]'},
18182        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfiguration]'},
18183        'ip_configuration_profiles': {'key': 'properties.ipConfigurationProfiles', 'type': '[IPConfigurationProfile]'},
18184        'ip_allocations': {'key': 'properties.ipAllocations', 'type': '[SubResource]'},
18185        'resource_navigation_links': {'key': 'properties.resourceNavigationLinks', 'type': '[ResourceNavigationLink]'},
18186        'service_association_links': {'key': 'properties.serviceAssociationLinks', 'type': '[ServiceAssociationLink]'},
18187        'delegations': {'key': 'properties.delegations', 'type': '[Delegation]'},
18188        'purpose': {'key': 'properties.purpose', 'type': 'str'},
18189        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
18190        'private_endpoint_network_policies': {'key': 'properties.privateEndpointNetworkPolicies', 'type': 'str'},
18191        'private_link_service_network_policies': {'key': 'properties.privateLinkServiceNetworkPolicies', 'type': 'str'},
18192    }
18193
18194    def __init__(
18195        self,
18196        *,
18197        id: Optional[str] = None,
18198        name: Optional[str] = None,
18199        address_prefix: Optional[str] = None,
18200        address_prefixes: Optional[List[str]] = None,
18201        network_security_group: Optional["NetworkSecurityGroup"] = None,
18202        route_table: Optional["RouteTable"] = None,
18203        nat_gateway: Optional["SubResource"] = None,
18204        service_endpoints: Optional[List["ServiceEndpointPropertiesFormat"]] = None,
18205        service_endpoint_policies: Optional[List["ServiceEndpointPolicy"]] = None,
18206        ip_allocations: Optional[List["SubResource"]] = None,
18207        delegations: Optional[List["Delegation"]] = None,
18208        private_endpoint_network_policies: Optional[str] = None,
18209        private_link_service_network_policies: Optional[str] = None,
18210        **kwargs
18211    ):
18212        super(Subnet, self).__init__(id=id, **kwargs)
18213        self.name = name
18214        self.etag = None
18215        self.address_prefix = address_prefix
18216        self.address_prefixes = address_prefixes
18217        self.network_security_group = network_security_group
18218        self.route_table = route_table
18219        self.nat_gateway = nat_gateway
18220        self.service_endpoints = service_endpoints
18221        self.service_endpoint_policies = service_endpoint_policies
18222        self.private_endpoints = None
18223        self.ip_configurations = None
18224        self.ip_configuration_profiles = None
18225        self.ip_allocations = ip_allocations
18226        self.resource_navigation_links = None
18227        self.service_association_links = None
18228        self.delegations = delegations
18229        self.purpose = None
18230        self.provisioning_state = None
18231        self.private_endpoint_network_policies = private_endpoint_network_policies
18232        self.private_link_service_network_policies = private_link_service_network_policies
18233
18234
18235class SubnetAssociation(msrest.serialization.Model):
18236    """Subnet and it's custom security rules.
18237
18238    Variables are only populated by the server, and will be ignored when sending a request.
18239
18240    :ivar id: Subnet ID.
18241    :vartype id: str
18242    :param security_rules: Collection of custom security rules.
18243    :type security_rules: list[~azure.mgmt.network.v2020_04_01.models.SecurityRule]
18244    """
18245
18246    _validation = {
18247        'id': {'readonly': True},
18248    }
18249
18250    _attribute_map = {
18251        'id': {'key': 'id', 'type': 'str'},
18252        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
18253    }
18254
18255    def __init__(
18256        self,
18257        *,
18258        security_rules: Optional[List["SecurityRule"]] = None,
18259        **kwargs
18260    ):
18261        super(SubnetAssociation, self).__init__(**kwargs)
18262        self.id = None
18263        self.security_rules = security_rules
18264
18265
18266class SubnetListResult(msrest.serialization.Model):
18267    """Response for ListSubnets API service callRetrieves all subnet that belongs to a virtual network.
18268
18269    :param value: The subnets in a virtual network.
18270    :type value: list[~azure.mgmt.network.v2020_04_01.models.Subnet]
18271    :param next_link: The URL to get the next set of results.
18272    :type next_link: str
18273    """
18274
18275    _attribute_map = {
18276        'value': {'key': 'value', 'type': '[Subnet]'},
18277        'next_link': {'key': 'nextLink', 'type': 'str'},
18278    }
18279
18280    def __init__(
18281        self,
18282        *,
18283        value: Optional[List["Subnet"]] = None,
18284        next_link: Optional[str] = None,
18285        **kwargs
18286    ):
18287        super(SubnetListResult, self).__init__(**kwargs)
18288        self.value = value
18289        self.next_link = next_link
18290
18291
18292class TagsObject(msrest.serialization.Model):
18293    """Tags object for patch operations.
18294
18295    :param tags: A set of tags. Resource tags.
18296    :type tags: dict[str, str]
18297    """
18298
18299    _attribute_map = {
18300        'tags': {'key': 'tags', 'type': '{str}'},
18301    }
18302
18303    def __init__(
18304        self,
18305        *,
18306        tags: Optional[Dict[str, str]] = None,
18307        **kwargs
18308    ):
18309        super(TagsObject, self).__init__(**kwargs)
18310        self.tags = tags
18311
18312
18313class Topology(msrest.serialization.Model):
18314    """Topology of the specified resource group.
18315
18316    Variables are only populated by the server, and will be ignored when sending a request.
18317
18318    :ivar id: GUID representing the operation id.
18319    :vartype id: str
18320    :ivar created_date_time: The datetime when the topology was initially created for the resource
18321     group.
18322    :vartype created_date_time: ~datetime.datetime
18323    :ivar last_modified: The datetime when the topology was last modified.
18324    :vartype last_modified: ~datetime.datetime
18325    :param resources: A list of topology resources.
18326    :type resources: list[~azure.mgmt.network.v2020_04_01.models.TopologyResource]
18327    """
18328
18329    _validation = {
18330        'id': {'readonly': True},
18331        'created_date_time': {'readonly': True},
18332        'last_modified': {'readonly': True},
18333    }
18334
18335    _attribute_map = {
18336        'id': {'key': 'id', 'type': 'str'},
18337        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
18338        'last_modified': {'key': 'lastModified', 'type': 'iso-8601'},
18339        'resources': {'key': 'resources', 'type': '[TopologyResource]'},
18340    }
18341
18342    def __init__(
18343        self,
18344        *,
18345        resources: Optional[List["TopologyResource"]] = None,
18346        **kwargs
18347    ):
18348        super(Topology, self).__init__(**kwargs)
18349        self.id = None
18350        self.created_date_time = None
18351        self.last_modified = None
18352        self.resources = resources
18353
18354
18355class TopologyAssociation(msrest.serialization.Model):
18356    """Resources that have an association with the parent resource.
18357
18358    :param name: The name of the resource that is associated with the parent resource.
18359    :type name: str
18360    :param resource_id: The ID of the resource that is associated with the parent resource.
18361    :type resource_id: str
18362    :param association_type: The association type of the child resource to the parent resource.
18363     Possible values include: "Associated", "Contains".
18364    :type association_type: str or ~azure.mgmt.network.v2020_04_01.models.AssociationType
18365    """
18366
18367    _attribute_map = {
18368        'name': {'key': 'name', 'type': 'str'},
18369        'resource_id': {'key': 'resourceId', 'type': 'str'},
18370        'association_type': {'key': 'associationType', 'type': 'str'},
18371    }
18372
18373    def __init__(
18374        self,
18375        *,
18376        name: Optional[str] = None,
18377        resource_id: Optional[str] = None,
18378        association_type: Optional[Union[str, "AssociationType"]] = None,
18379        **kwargs
18380    ):
18381        super(TopologyAssociation, self).__init__(**kwargs)
18382        self.name = name
18383        self.resource_id = resource_id
18384        self.association_type = association_type
18385
18386
18387class TopologyParameters(msrest.serialization.Model):
18388    """Parameters that define the representation of topology.
18389
18390    :param target_resource_group_name: The name of the target resource group to perform topology
18391     on.
18392    :type target_resource_group_name: str
18393    :param target_virtual_network: The reference to the Virtual Network resource.
18394    :type target_virtual_network: ~azure.mgmt.network.v2020_04_01.models.SubResource
18395    :param target_subnet: The reference to the Subnet resource.
18396    :type target_subnet: ~azure.mgmt.network.v2020_04_01.models.SubResource
18397    """
18398
18399    _attribute_map = {
18400        'target_resource_group_name': {'key': 'targetResourceGroupName', 'type': 'str'},
18401        'target_virtual_network': {'key': 'targetVirtualNetwork', 'type': 'SubResource'},
18402        'target_subnet': {'key': 'targetSubnet', 'type': 'SubResource'},
18403    }
18404
18405    def __init__(
18406        self,
18407        *,
18408        target_resource_group_name: Optional[str] = None,
18409        target_virtual_network: Optional["SubResource"] = None,
18410        target_subnet: Optional["SubResource"] = None,
18411        **kwargs
18412    ):
18413        super(TopologyParameters, self).__init__(**kwargs)
18414        self.target_resource_group_name = target_resource_group_name
18415        self.target_virtual_network = target_virtual_network
18416        self.target_subnet = target_subnet
18417
18418
18419class TopologyResource(msrest.serialization.Model):
18420    """The network resource topology information for the given resource group.
18421
18422    :param name: Name of the resource.
18423    :type name: str
18424    :param id: ID of the resource.
18425    :type id: str
18426    :param location: Resource location.
18427    :type location: str
18428    :param associations: Holds the associations the resource has with other resources in the
18429     resource group.
18430    :type associations: list[~azure.mgmt.network.v2020_04_01.models.TopologyAssociation]
18431    """
18432
18433    _attribute_map = {
18434        'name': {'key': 'name', 'type': 'str'},
18435        'id': {'key': 'id', 'type': 'str'},
18436        'location': {'key': 'location', 'type': 'str'},
18437        'associations': {'key': 'associations', 'type': '[TopologyAssociation]'},
18438    }
18439
18440    def __init__(
18441        self,
18442        *,
18443        name: Optional[str] = None,
18444        id: Optional[str] = None,
18445        location: Optional[str] = None,
18446        associations: Optional[List["TopologyAssociation"]] = None,
18447        **kwargs
18448    ):
18449        super(TopologyResource, self).__init__(**kwargs)
18450        self.name = name
18451        self.id = id
18452        self.location = location
18453        self.associations = associations
18454
18455
18456class TrafficAnalyticsConfigurationProperties(msrest.serialization.Model):
18457    """Parameters that define the configuration of traffic analytics.
18458
18459    :param enabled: Flag to enable/disable traffic analytics.
18460    :type enabled: bool
18461    :param workspace_id: The resource guid of the attached workspace.
18462    :type workspace_id: str
18463    :param workspace_region: The location of the attached workspace.
18464    :type workspace_region: str
18465    :param workspace_resource_id: Resource Id of the attached workspace.
18466    :type workspace_resource_id: str
18467    :param traffic_analytics_interval: The interval in minutes which would decide how frequently TA
18468     service should do flow analytics.
18469    :type traffic_analytics_interval: int
18470    """
18471
18472    _attribute_map = {
18473        'enabled': {'key': 'enabled', 'type': 'bool'},
18474        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
18475        'workspace_region': {'key': 'workspaceRegion', 'type': 'str'},
18476        'workspace_resource_id': {'key': 'workspaceResourceId', 'type': 'str'},
18477        'traffic_analytics_interval': {'key': 'trafficAnalyticsInterval', 'type': 'int'},
18478    }
18479
18480    def __init__(
18481        self,
18482        *,
18483        enabled: Optional[bool] = None,
18484        workspace_id: Optional[str] = None,
18485        workspace_region: Optional[str] = None,
18486        workspace_resource_id: Optional[str] = None,
18487        traffic_analytics_interval: Optional[int] = None,
18488        **kwargs
18489    ):
18490        super(TrafficAnalyticsConfigurationProperties, self).__init__(**kwargs)
18491        self.enabled = enabled
18492        self.workspace_id = workspace_id
18493        self.workspace_region = workspace_region
18494        self.workspace_resource_id = workspace_resource_id
18495        self.traffic_analytics_interval = traffic_analytics_interval
18496
18497
18498class TrafficAnalyticsProperties(msrest.serialization.Model):
18499    """Parameters that define the configuration of traffic analytics.
18500
18501    :param network_watcher_flow_analytics_configuration: Parameters that define the configuration
18502     of traffic analytics.
18503    :type network_watcher_flow_analytics_configuration:
18504     ~azure.mgmt.network.v2020_04_01.models.TrafficAnalyticsConfigurationProperties
18505    """
18506
18507    _attribute_map = {
18508        'network_watcher_flow_analytics_configuration': {'key': 'networkWatcherFlowAnalyticsConfiguration', 'type': 'TrafficAnalyticsConfigurationProperties'},
18509    }
18510
18511    def __init__(
18512        self,
18513        *,
18514        network_watcher_flow_analytics_configuration: Optional["TrafficAnalyticsConfigurationProperties"] = None,
18515        **kwargs
18516    ):
18517        super(TrafficAnalyticsProperties, self).__init__(**kwargs)
18518        self.network_watcher_flow_analytics_configuration = network_watcher_flow_analytics_configuration
18519
18520
18521class TrafficSelectorPolicy(msrest.serialization.Model):
18522    """An traffic selector policy for a virtual network gateway connection.
18523
18524    All required parameters must be populated in order to send to Azure.
18525
18526    :param local_address_ranges: Required. A collection of local address spaces in CIDR format.
18527    :type local_address_ranges: list[str]
18528    :param remote_address_ranges: Required. A collection of remote address spaces in CIDR format.
18529    :type remote_address_ranges: list[str]
18530    """
18531
18532    _validation = {
18533        'local_address_ranges': {'required': True},
18534        'remote_address_ranges': {'required': True},
18535    }
18536
18537    _attribute_map = {
18538        'local_address_ranges': {'key': 'localAddressRanges', 'type': '[str]'},
18539        'remote_address_ranges': {'key': 'remoteAddressRanges', 'type': '[str]'},
18540    }
18541
18542    def __init__(
18543        self,
18544        *,
18545        local_address_ranges: List[str],
18546        remote_address_ranges: List[str],
18547        **kwargs
18548    ):
18549        super(TrafficSelectorPolicy, self).__init__(**kwargs)
18550        self.local_address_ranges = local_address_ranges
18551        self.remote_address_ranges = remote_address_ranges
18552
18553
18554class TroubleshootingDetails(msrest.serialization.Model):
18555    """Information gained from troubleshooting of specified resource.
18556
18557    :param id: The id of the get troubleshoot operation.
18558    :type id: str
18559    :param reason_type: Reason type of failure.
18560    :type reason_type: str
18561    :param summary: A summary of troubleshooting.
18562    :type summary: str
18563    :param detail: Details on troubleshooting results.
18564    :type detail: str
18565    :param recommended_actions: List of recommended actions.
18566    :type recommended_actions:
18567     list[~azure.mgmt.network.v2020_04_01.models.TroubleshootingRecommendedActions]
18568    """
18569
18570    _attribute_map = {
18571        'id': {'key': 'id', 'type': 'str'},
18572        'reason_type': {'key': 'reasonType', 'type': 'str'},
18573        'summary': {'key': 'summary', 'type': 'str'},
18574        'detail': {'key': 'detail', 'type': 'str'},
18575        'recommended_actions': {'key': 'recommendedActions', 'type': '[TroubleshootingRecommendedActions]'},
18576    }
18577
18578    def __init__(
18579        self,
18580        *,
18581        id: Optional[str] = None,
18582        reason_type: Optional[str] = None,
18583        summary: Optional[str] = None,
18584        detail: Optional[str] = None,
18585        recommended_actions: Optional[List["TroubleshootingRecommendedActions"]] = None,
18586        **kwargs
18587    ):
18588        super(TroubleshootingDetails, self).__init__(**kwargs)
18589        self.id = id
18590        self.reason_type = reason_type
18591        self.summary = summary
18592        self.detail = detail
18593        self.recommended_actions = recommended_actions
18594
18595
18596class TroubleshootingParameters(msrest.serialization.Model):
18597    """Parameters that define the resource to troubleshoot.
18598
18599    All required parameters must be populated in order to send to Azure.
18600
18601    :param target_resource_id: Required. The target resource to troubleshoot.
18602    :type target_resource_id: str
18603    :param storage_id: Required. The ID for the storage account to save the troubleshoot result.
18604    :type storage_id: str
18605    :param storage_path: Required. The path to the blob to save the troubleshoot result in.
18606    :type storage_path: str
18607    """
18608
18609    _validation = {
18610        'target_resource_id': {'required': True},
18611        'storage_id': {'required': True},
18612        'storage_path': {'required': True},
18613    }
18614
18615    _attribute_map = {
18616        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
18617        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
18618        'storage_path': {'key': 'properties.storagePath', 'type': 'str'},
18619    }
18620
18621    def __init__(
18622        self,
18623        *,
18624        target_resource_id: str,
18625        storage_id: str,
18626        storage_path: str,
18627        **kwargs
18628    ):
18629        super(TroubleshootingParameters, self).__init__(**kwargs)
18630        self.target_resource_id = target_resource_id
18631        self.storage_id = storage_id
18632        self.storage_path = storage_path
18633
18634
18635class TroubleshootingRecommendedActions(msrest.serialization.Model):
18636    """Recommended actions based on discovered issues.
18637
18638    :param action_id: ID of the recommended action.
18639    :type action_id: str
18640    :param action_text: Description of recommended actions.
18641    :type action_text: str
18642    :param action_uri: The uri linking to a documentation for the recommended troubleshooting
18643     actions.
18644    :type action_uri: str
18645    :param action_uri_text: The information from the URI for the recommended troubleshooting
18646     actions.
18647    :type action_uri_text: str
18648    """
18649
18650    _attribute_map = {
18651        'action_id': {'key': 'actionId', 'type': 'str'},
18652        'action_text': {'key': 'actionText', 'type': 'str'},
18653        'action_uri': {'key': 'actionUri', 'type': 'str'},
18654        'action_uri_text': {'key': 'actionUriText', 'type': 'str'},
18655    }
18656
18657    def __init__(
18658        self,
18659        *,
18660        action_id: Optional[str] = None,
18661        action_text: Optional[str] = None,
18662        action_uri: Optional[str] = None,
18663        action_uri_text: Optional[str] = None,
18664        **kwargs
18665    ):
18666        super(TroubleshootingRecommendedActions, self).__init__(**kwargs)
18667        self.action_id = action_id
18668        self.action_text = action_text
18669        self.action_uri = action_uri
18670        self.action_uri_text = action_uri_text
18671
18672
18673class TroubleshootingResult(msrest.serialization.Model):
18674    """Troubleshooting information gained from specified resource.
18675
18676    :param start_time: The start time of the troubleshooting.
18677    :type start_time: ~datetime.datetime
18678    :param end_time: The end time of the troubleshooting.
18679    :type end_time: ~datetime.datetime
18680    :param code: The result code of the troubleshooting.
18681    :type code: str
18682    :param results: Information from troubleshooting.
18683    :type results: list[~azure.mgmt.network.v2020_04_01.models.TroubleshootingDetails]
18684    """
18685
18686    _attribute_map = {
18687        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
18688        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
18689        'code': {'key': 'code', 'type': 'str'},
18690        'results': {'key': 'results', 'type': '[TroubleshootingDetails]'},
18691    }
18692
18693    def __init__(
18694        self,
18695        *,
18696        start_time: Optional[datetime.datetime] = None,
18697        end_time: Optional[datetime.datetime] = None,
18698        code: Optional[str] = None,
18699        results: Optional[List["TroubleshootingDetails"]] = None,
18700        **kwargs
18701    ):
18702        super(TroubleshootingResult, self).__init__(**kwargs)
18703        self.start_time = start_time
18704        self.end_time = end_time
18705        self.code = code
18706        self.results = results
18707
18708
18709class TunnelConnectionHealth(msrest.serialization.Model):
18710    """VirtualNetworkGatewayConnection properties.
18711
18712    Variables are only populated by the server, and will be ignored when sending a request.
18713
18714    :ivar tunnel: Tunnel name.
18715    :vartype tunnel: str
18716    :ivar connection_status: Virtual Network Gateway connection status. Possible values include:
18717     "Unknown", "Connecting", "Connected", "NotConnected".
18718    :vartype connection_status: str or
18719     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnectionStatus
18720    :ivar ingress_bytes_transferred: The Ingress Bytes Transferred in this connection.
18721    :vartype ingress_bytes_transferred: long
18722    :ivar egress_bytes_transferred: The Egress Bytes Transferred in this connection.
18723    :vartype egress_bytes_transferred: long
18724    :ivar last_connection_established_utc_time: The time at which connection was established in Utc
18725     format.
18726    :vartype last_connection_established_utc_time: str
18727    """
18728
18729    _validation = {
18730        'tunnel': {'readonly': True},
18731        'connection_status': {'readonly': True},
18732        'ingress_bytes_transferred': {'readonly': True},
18733        'egress_bytes_transferred': {'readonly': True},
18734        'last_connection_established_utc_time': {'readonly': True},
18735    }
18736
18737    _attribute_map = {
18738        'tunnel': {'key': 'tunnel', 'type': 'str'},
18739        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
18740        'ingress_bytes_transferred': {'key': 'ingressBytesTransferred', 'type': 'long'},
18741        'egress_bytes_transferred': {'key': 'egressBytesTransferred', 'type': 'long'},
18742        'last_connection_established_utc_time': {'key': 'lastConnectionEstablishedUtcTime', 'type': 'str'},
18743    }
18744
18745    def __init__(
18746        self,
18747        **kwargs
18748    ):
18749        super(TunnelConnectionHealth, self).__init__(**kwargs)
18750        self.tunnel = None
18751        self.connection_status = None
18752        self.ingress_bytes_transferred = None
18753        self.egress_bytes_transferred = None
18754        self.last_connection_established_utc_time = None
18755
18756
18757class UnprepareNetworkPoliciesRequest(msrest.serialization.Model):
18758    """Details of UnprepareNetworkPolicies for Subnet.
18759
18760    :param service_name: The name of the service for which subnet is being unprepared for.
18761    :type service_name: str
18762    """
18763
18764    _attribute_map = {
18765        'service_name': {'key': 'serviceName', 'type': 'str'},
18766    }
18767
18768    def __init__(
18769        self,
18770        *,
18771        service_name: Optional[str] = None,
18772        **kwargs
18773    ):
18774        super(UnprepareNetworkPoliciesRequest, self).__init__(**kwargs)
18775        self.service_name = service_name
18776
18777
18778class Usage(msrest.serialization.Model):
18779    """The network resource usage.
18780
18781    Variables are only populated by the server, and will be ignored when sending a request.
18782
18783    All required parameters must be populated in order to send to Azure.
18784
18785    :ivar id: Resource identifier.
18786    :vartype id: str
18787    :param unit: Required. An enum describing the unit of measurement. Possible values include:
18788     "Count".
18789    :type unit: str or ~azure.mgmt.network.v2020_04_01.models.UsageUnit
18790    :param current_value: Required. The current value of the usage.
18791    :type current_value: long
18792    :param limit: Required. The limit of usage.
18793    :type limit: long
18794    :param name: Required. The name of the type of usage.
18795    :type name: ~azure.mgmt.network.v2020_04_01.models.UsageName
18796    """
18797
18798    _validation = {
18799        'id': {'readonly': True},
18800        'unit': {'required': True},
18801        'current_value': {'required': True},
18802        'limit': {'required': True},
18803        'name': {'required': True},
18804    }
18805
18806    _attribute_map = {
18807        'id': {'key': 'id', 'type': 'str'},
18808        'unit': {'key': 'unit', 'type': 'str'},
18809        'current_value': {'key': 'currentValue', 'type': 'long'},
18810        'limit': {'key': 'limit', 'type': 'long'},
18811        'name': {'key': 'name', 'type': 'UsageName'},
18812    }
18813
18814    def __init__(
18815        self,
18816        *,
18817        unit: Union[str, "UsageUnit"],
18818        current_value: int,
18819        limit: int,
18820        name: "UsageName",
18821        **kwargs
18822    ):
18823        super(Usage, self).__init__(**kwargs)
18824        self.id = None
18825        self.unit = unit
18826        self.current_value = current_value
18827        self.limit = limit
18828        self.name = name
18829
18830
18831class UsageName(msrest.serialization.Model):
18832    """The usage names.
18833
18834    :param value: A string describing the resource name.
18835    :type value: str
18836    :param localized_value: A localized string describing the resource name.
18837    :type localized_value: str
18838    """
18839
18840    _attribute_map = {
18841        'value': {'key': 'value', 'type': 'str'},
18842        'localized_value': {'key': 'localizedValue', 'type': 'str'},
18843    }
18844
18845    def __init__(
18846        self,
18847        *,
18848        value: Optional[str] = None,
18849        localized_value: Optional[str] = None,
18850        **kwargs
18851    ):
18852        super(UsageName, self).__init__(**kwargs)
18853        self.value = value
18854        self.localized_value = localized_value
18855
18856
18857class UsagesListResult(msrest.serialization.Model):
18858    """The list usages operation response.
18859
18860    :param value: The list network resource usages.
18861    :type value: list[~azure.mgmt.network.v2020_04_01.models.Usage]
18862    :param next_link: URL to get the next set of results.
18863    :type next_link: str
18864    """
18865
18866    _attribute_map = {
18867        'value': {'key': 'value', 'type': '[Usage]'},
18868        'next_link': {'key': 'nextLink', 'type': 'str'},
18869    }
18870
18871    def __init__(
18872        self,
18873        *,
18874        value: Optional[List["Usage"]] = None,
18875        next_link: Optional[str] = None,
18876        **kwargs
18877    ):
18878        super(UsagesListResult, self).__init__(**kwargs)
18879        self.value = value
18880        self.next_link = next_link
18881
18882
18883class VerificationIPFlowParameters(msrest.serialization.Model):
18884    """Parameters that define the IP flow to be verified.
18885
18886    All required parameters must be populated in order to send to Azure.
18887
18888    :param target_resource_id: Required. The ID of the target resource to perform next-hop on.
18889    :type target_resource_id: str
18890    :param direction: Required. The direction of the packet represented as a 5-tuple. Possible
18891     values include: "Inbound", "Outbound".
18892    :type direction: str or ~azure.mgmt.network.v2020_04_01.models.Direction
18893    :param protocol: Required. Protocol to be verified on. Possible values include: "TCP", "UDP".
18894    :type protocol: str or ~azure.mgmt.network.v2020_04_01.models.IpFlowProtocol
18895    :param local_port: Required. The local port. Acceptable values are a single integer in the
18896     range (0-65535). Support for * for the source port, which depends on the direction.
18897    :type local_port: str
18898    :param remote_port: Required. The remote port. Acceptable values are a single integer in the
18899     range (0-65535). Support for * for the source port, which depends on the direction.
18900    :type remote_port: str
18901    :param local_ip_address: Required. The local IP address. Acceptable values are valid IPv4
18902     addresses.
18903    :type local_ip_address: str
18904    :param remote_ip_address: Required. The remote IP address. Acceptable values are valid IPv4
18905     addresses.
18906    :type remote_ip_address: str
18907    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
18908     enabled on any of them, then this parameter must be specified. Otherwise optional).
18909    :type target_nic_resource_id: str
18910    """
18911
18912    _validation = {
18913        'target_resource_id': {'required': True},
18914        'direction': {'required': True},
18915        'protocol': {'required': True},
18916        'local_port': {'required': True},
18917        'remote_port': {'required': True},
18918        'local_ip_address': {'required': True},
18919        'remote_ip_address': {'required': True},
18920    }
18921
18922    _attribute_map = {
18923        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
18924        'direction': {'key': 'direction', 'type': 'str'},
18925        'protocol': {'key': 'protocol', 'type': 'str'},
18926        'local_port': {'key': 'localPort', 'type': 'str'},
18927        'remote_port': {'key': 'remotePort', 'type': 'str'},
18928        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
18929        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
18930        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
18931    }
18932
18933    def __init__(
18934        self,
18935        *,
18936        target_resource_id: str,
18937        direction: Union[str, "Direction"],
18938        protocol: Union[str, "IpFlowProtocol"],
18939        local_port: str,
18940        remote_port: str,
18941        local_ip_address: str,
18942        remote_ip_address: str,
18943        target_nic_resource_id: Optional[str] = None,
18944        **kwargs
18945    ):
18946        super(VerificationIPFlowParameters, self).__init__(**kwargs)
18947        self.target_resource_id = target_resource_id
18948        self.direction = direction
18949        self.protocol = protocol
18950        self.local_port = local_port
18951        self.remote_port = remote_port
18952        self.local_ip_address = local_ip_address
18953        self.remote_ip_address = remote_ip_address
18954        self.target_nic_resource_id = target_nic_resource_id
18955
18956
18957class VerificationIPFlowResult(msrest.serialization.Model):
18958    """Results of IP flow verification on the target resource.
18959
18960    :param access: Indicates whether the traffic is allowed or denied. Possible values include:
18961     "Allow", "Deny".
18962    :type access: str or ~azure.mgmt.network.v2020_04_01.models.Access
18963    :param rule_name: Name of the rule. If input is not matched against any security rule, it is
18964     not displayed.
18965    :type rule_name: str
18966    """
18967
18968    _attribute_map = {
18969        'access': {'key': 'access', 'type': 'str'},
18970        'rule_name': {'key': 'ruleName', 'type': 'str'},
18971    }
18972
18973    def __init__(
18974        self,
18975        *,
18976        access: Optional[Union[str, "Access"]] = None,
18977        rule_name: Optional[str] = None,
18978        **kwargs
18979    ):
18980        super(VerificationIPFlowResult, self).__init__(**kwargs)
18981        self.access = access
18982        self.rule_name = rule_name
18983
18984
18985class VirtualApplianceNicProperties(msrest.serialization.Model):
18986    """Network Virtual Appliance NIC properties.
18987
18988    Variables are only populated by the server, and will be ignored when sending a request.
18989
18990    :ivar name: NIC name.
18991    :vartype name: str
18992    :ivar public_ip_address: Public IP address.
18993    :vartype public_ip_address: str
18994    :ivar private_ip_address: Private IP address.
18995    :vartype private_ip_address: str
18996    """
18997
18998    _validation = {
18999        'name': {'readonly': True},
19000        'public_ip_address': {'readonly': True},
19001        'private_ip_address': {'readonly': True},
19002    }
19003
19004    _attribute_map = {
19005        'name': {'key': 'name', 'type': 'str'},
19006        'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'},
19007        'private_ip_address': {'key': 'privateIpAddress', 'type': 'str'},
19008    }
19009
19010    def __init__(
19011        self,
19012        **kwargs
19013    ):
19014        super(VirtualApplianceNicProperties, self).__init__(**kwargs)
19015        self.name = None
19016        self.public_ip_address = None
19017        self.private_ip_address = None
19018
19019
19020class VirtualApplianceSkuProperties(msrest.serialization.Model):
19021    """Network Virtual Appliance Sku Properties.
19022
19023    :param vendor: Virtual Appliance Vendor.
19024    :type vendor: str
19025    :param bundled_scale_unit: Virtual Appliance Scale Unit.
19026    :type bundled_scale_unit: str
19027    :param market_place_version: Virtual Appliance Version.
19028    :type market_place_version: str
19029    """
19030
19031    _attribute_map = {
19032        'vendor': {'key': 'vendor', 'type': 'str'},
19033        'bundled_scale_unit': {'key': 'bundledScaleUnit', 'type': 'str'},
19034        'market_place_version': {'key': 'marketPlaceVersion', 'type': 'str'},
19035    }
19036
19037    def __init__(
19038        self,
19039        *,
19040        vendor: Optional[str] = None,
19041        bundled_scale_unit: Optional[str] = None,
19042        market_place_version: Optional[str] = None,
19043        **kwargs
19044    ):
19045        super(VirtualApplianceSkuProperties, self).__init__(**kwargs)
19046        self.vendor = vendor
19047        self.bundled_scale_unit = bundled_scale_unit
19048        self.market_place_version = market_place_version
19049
19050
19051class VirtualHub(Resource):
19052    """VirtualHub Resource.
19053
19054    Variables are only populated by the server, and will be ignored when sending a request.
19055
19056    :param id: Resource ID.
19057    :type id: str
19058    :ivar name: Resource name.
19059    :vartype name: str
19060    :ivar type: Resource type.
19061    :vartype type: str
19062    :param location: Resource location.
19063    :type location: str
19064    :param tags: A set of tags. Resource tags.
19065    :type tags: dict[str, str]
19066    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19067    :vartype etag: str
19068    :param virtual_wan: The VirtualWAN to which the VirtualHub belongs.
19069    :type virtual_wan: ~azure.mgmt.network.v2020_04_01.models.SubResource
19070    :param vpn_gateway: The VpnGateway associated with this VirtualHub.
19071    :type vpn_gateway: ~azure.mgmt.network.v2020_04_01.models.SubResource
19072    :param p2_s_vpn_gateway: The P2SVpnGateway associated with this VirtualHub.
19073    :type p2_s_vpn_gateway: ~azure.mgmt.network.v2020_04_01.models.SubResource
19074    :param express_route_gateway: The expressRouteGateway associated with this VirtualHub.
19075    :type express_route_gateway: ~azure.mgmt.network.v2020_04_01.models.SubResource
19076    :param azure_firewall: The azureFirewall associated with this VirtualHub.
19077    :type azure_firewall: ~azure.mgmt.network.v2020_04_01.models.SubResource
19078    :param security_partner_provider: The securityPartnerProvider associated with this VirtualHub.
19079    :type security_partner_provider: ~azure.mgmt.network.v2020_04_01.models.SubResource
19080    :param virtual_network_connections: List of all vnet connections with this VirtualHub.
19081    :type virtual_network_connections:
19082     list[~azure.mgmt.network.v2020_04_01.models.HubVirtualNetworkConnection]
19083    :param address_prefix: Address-prefix for this VirtualHub.
19084    :type address_prefix: str
19085    :param route_table: The routeTable associated with this virtual hub.
19086    :type route_table: ~azure.mgmt.network.v2020_04_01.models.VirtualHubRouteTable
19087    :ivar provisioning_state: The provisioning state of the virtual hub resource. Possible values
19088     include: "Succeeded", "Updating", "Deleting", "Failed".
19089    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
19090    :param security_provider_name: The Security Provider name.
19091    :type security_provider_name: str
19092    :param virtual_hub_route_table_v2_s: List of all virtual hub route table v2s associated with
19093     this VirtualHub.
19094    :type virtual_hub_route_table_v2_s:
19095     list[~azure.mgmt.network.v2020_04_01.models.VirtualHubRouteTableV2]
19096    :param sku: The sku of this VirtualHub.
19097    :type sku: str
19098    """
19099
19100    _validation = {
19101        'name': {'readonly': True},
19102        'type': {'readonly': True},
19103        'etag': {'readonly': True},
19104        'provisioning_state': {'readonly': True},
19105    }
19106
19107    _attribute_map = {
19108        'id': {'key': 'id', 'type': 'str'},
19109        'name': {'key': 'name', 'type': 'str'},
19110        'type': {'key': 'type', 'type': 'str'},
19111        'location': {'key': 'location', 'type': 'str'},
19112        'tags': {'key': 'tags', 'type': '{str}'},
19113        'etag': {'key': 'etag', 'type': 'str'},
19114        'virtual_wan': {'key': 'properties.virtualWan', 'type': 'SubResource'},
19115        'vpn_gateway': {'key': 'properties.vpnGateway', 'type': 'SubResource'},
19116        'p2_s_vpn_gateway': {'key': 'properties.p2SVpnGateway', 'type': 'SubResource'},
19117        'express_route_gateway': {'key': 'properties.expressRouteGateway', 'type': 'SubResource'},
19118        'azure_firewall': {'key': 'properties.azureFirewall', 'type': 'SubResource'},
19119        'security_partner_provider': {'key': 'properties.securityPartnerProvider', 'type': 'SubResource'},
19120        'virtual_network_connections': {'key': 'properties.virtualNetworkConnections', 'type': '[HubVirtualNetworkConnection]'},
19121        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
19122        'route_table': {'key': 'properties.routeTable', 'type': 'VirtualHubRouteTable'},
19123        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19124        'security_provider_name': {'key': 'properties.securityProviderName', 'type': 'str'},
19125        'virtual_hub_route_table_v2_s': {'key': 'properties.virtualHubRouteTableV2s', 'type': '[VirtualHubRouteTableV2]'},
19126        'sku': {'key': 'properties.sku', 'type': 'str'},
19127    }
19128
19129    def __init__(
19130        self,
19131        *,
19132        id: Optional[str] = None,
19133        location: Optional[str] = None,
19134        tags: Optional[Dict[str, str]] = None,
19135        virtual_wan: Optional["SubResource"] = None,
19136        vpn_gateway: Optional["SubResource"] = None,
19137        p2_s_vpn_gateway: Optional["SubResource"] = None,
19138        express_route_gateway: Optional["SubResource"] = None,
19139        azure_firewall: Optional["SubResource"] = None,
19140        security_partner_provider: Optional["SubResource"] = None,
19141        virtual_network_connections: Optional[List["HubVirtualNetworkConnection"]] = None,
19142        address_prefix: Optional[str] = None,
19143        route_table: Optional["VirtualHubRouteTable"] = None,
19144        security_provider_name: Optional[str] = None,
19145        virtual_hub_route_table_v2_s: Optional[List["VirtualHubRouteTableV2"]] = None,
19146        sku: Optional[str] = None,
19147        **kwargs
19148    ):
19149        super(VirtualHub, self).__init__(id=id, location=location, tags=tags, **kwargs)
19150        self.etag = None
19151        self.virtual_wan = virtual_wan
19152        self.vpn_gateway = vpn_gateway
19153        self.p2_s_vpn_gateway = p2_s_vpn_gateway
19154        self.express_route_gateway = express_route_gateway
19155        self.azure_firewall = azure_firewall
19156        self.security_partner_provider = security_partner_provider
19157        self.virtual_network_connections = virtual_network_connections
19158        self.address_prefix = address_prefix
19159        self.route_table = route_table
19160        self.provisioning_state = None
19161        self.security_provider_name = security_provider_name
19162        self.virtual_hub_route_table_v2_s = virtual_hub_route_table_v2_s
19163        self.sku = sku
19164
19165
19166class VirtualHubId(msrest.serialization.Model):
19167    """Virtual Hub identifier.
19168
19169    :param id: The resource URI for the Virtual Hub where the ExpressRoute gateway is or will be
19170     deployed. The Virtual Hub resource and the ExpressRoute gateway resource reside in the same
19171     subscription.
19172    :type id: str
19173    """
19174
19175    _attribute_map = {
19176        'id': {'key': 'id', 'type': 'str'},
19177    }
19178
19179    def __init__(
19180        self,
19181        *,
19182        id: Optional[str] = None,
19183        **kwargs
19184    ):
19185        super(VirtualHubId, self).__init__(**kwargs)
19186        self.id = id
19187
19188
19189class VirtualHubRoute(msrest.serialization.Model):
19190    """VirtualHub route.
19191
19192    :param address_prefixes: List of all addressPrefixes.
19193    :type address_prefixes: list[str]
19194    :param next_hop_ip_address: NextHop ip address.
19195    :type next_hop_ip_address: str
19196    """
19197
19198    _attribute_map = {
19199        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
19200        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'},
19201    }
19202
19203    def __init__(
19204        self,
19205        *,
19206        address_prefixes: Optional[List[str]] = None,
19207        next_hop_ip_address: Optional[str] = None,
19208        **kwargs
19209    ):
19210        super(VirtualHubRoute, self).__init__(**kwargs)
19211        self.address_prefixes = address_prefixes
19212        self.next_hop_ip_address = next_hop_ip_address
19213
19214
19215class VirtualHubRouteTable(msrest.serialization.Model):
19216    """VirtualHub route table.
19217
19218    :param routes: List of all routes.
19219    :type routes: list[~azure.mgmt.network.v2020_04_01.models.VirtualHubRoute]
19220    """
19221
19222    _attribute_map = {
19223        'routes': {'key': 'routes', 'type': '[VirtualHubRoute]'},
19224    }
19225
19226    def __init__(
19227        self,
19228        *,
19229        routes: Optional[List["VirtualHubRoute"]] = None,
19230        **kwargs
19231    ):
19232        super(VirtualHubRouteTable, self).__init__(**kwargs)
19233        self.routes = routes
19234
19235
19236class VirtualHubRouteTableV2(SubResource):
19237    """VirtualHubRouteTableV2 Resource.
19238
19239    Variables are only populated by the server, and will be ignored when sending a request.
19240
19241    :param id: Resource ID.
19242    :type id: str
19243    :param name: The name of the resource that is unique within a resource group. This name can be
19244     used to access the resource.
19245    :type name: str
19246    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19247    :vartype etag: str
19248    :param routes: List of all routes.
19249    :type routes: list[~azure.mgmt.network.v2020_04_01.models.VirtualHubRouteV2]
19250    :param attached_connections: List of all connections attached to this route table v2.
19251    :type attached_connections: list[str]
19252    :ivar provisioning_state: The provisioning state of the virtual hub route table v2 resource.
19253     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
19254    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
19255    """
19256
19257    _validation = {
19258        'etag': {'readonly': True},
19259        'provisioning_state': {'readonly': True},
19260    }
19261
19262    _attribute_map = {
19263        'id': {'key': 'id', 'type': 'str'},
19264        'name': {'key': 'name', 'type': 'str'},
19265        'etag': {'key': 'etag', 'type': 'str'},
19266        'routes': {'key': 'properties.routes', 'type': '[VirtualHubRouteV2]'},
19267        'attached_connections': {'key': 'properties.attachedConnections', 'type': '[str]'},
19268        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19269    }
19270
19271    def __init__(
19272        self,
19273        *,
19274        id: Optional[str] = None,
19275        name: Optional[str] = None,
19276        routes: Optional[List["VirtualHubRouteV2"]] = None,
19277        attached_connections: Optional[List[str]] = None,
19278        **kwargs
19279    ):
19280        super(VirtualHubRouteTableV2, self).__init__(id=id, **kwargs)
19281        self.name = name
19282        self.etag = None
19283        self.routes = routes
19284        self.attached_connections = attached_connections
19285        self.provisioning_state = None
19286
19287
19288class VirtualHubRouteV2(msrest.serialization.Model):
19289    """VirtualHubRouteTableV2 route.
19290
19291    :param destination_type: The type of destinations.
19292    :type destination_type: str
19293    :param destinations: List of all destinations.
19294    :type destinations: list[str]
19295    :param next_hop_type: The type of next hops.
19296    :type next_hop_type: str
19297    :param next_hops: NextHops ip address.
19298    :type next_hops: list[str]
19299    """
19300
19301    _attribute_map = {
19302        'destination_type': {'key': 'destinationType', 'type': 'str'},
19303        'destinations': {'key': 'destinations', 'type': '[str]'},
19304        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
19305        'next_hops': {'key': 'nextHops', 'type': '[str]'},
19306    }
19307
19308    def __init__(
19309        self,
19310        *,
19311        destination_type: Optional[str] = None,
19312        destinations: Optional[List[str]] = None,
19313        next_hop_type: Optional[str] = None,
19314        next_hops: Optional[List[str]] = None,
19315        **kwargs
19316    ):
19317        super(VirtualHubRouteV2, self).__init__(**kwargs)
19318        self.destination_type = destination_type
19319        self.destinations = destinations
19320        self.next_hop_type = next_hop_type
19321        self.next_hops = next_hops
19322
19323
19324class VirtualNetwork(Resource):
19325    """Virtual Network resource.
19326
19327    Variables are only populated by the server, and will be ignored when sending a request.
19328
19329    :param id: Resource ID.
19330    :type id: str
19331    :ivar name: Resource name.
19332    :vartype name: str
19333    :ivar type: Resource type.
19334    :vartype type: str
19335    :param location: Resource location.
19336    :type location: str
19337    :param tags: A set of tags. Resource tags.
19338    :type tags: dict[str, str]
19339    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19340    :vartype etag: str
19341    :param address_space: The AddressSpace that contains an array of IP address ranges that can be
19342     used by subnets.
19343    :type address_space: ~azure.mgmt.network.v2020_04_01.models.AddressSpace
19344    :param dhcp_options: The dhcpOptions that contains an array of DNS servers available to VMs
19345     deployed in the virtual network.
19346    :type dhcp_options: ~azure.mgmt.network.v2020_04_01.models.DhcpOptions
19347    :param subnets: A list of subnets in a Virtual Network.
19348    :type subnets: list[~azure.mgmt.network.v2020_04_01.models.Subnet]
19349    :param virtual_network_peerings: A list of peerings in a Virtual Network.
19350    :type virtual_network_peerings:
19351     list[~azure.mgmt.network.v2020_04_01.models.VirtualNetworkPeering]
19352    :ivar resource_guid: The resourceGuid property of the Virtual Network resource.
19353    :vartype resource_guid: str
19354    :ivar provisioning_state: The provisioning state of the virtual network resource. Possible
19355     values include: "Succeeded", "Updating", "Deleting", "Failed".
19356    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
19357    :param enable_ddos_protection: Indicates if DDoS protection is enabled for all the protected
19358     resources in the virtual network. It requires a DDoS protection plan associated with the
19359     resource.
19360    :type enable_ddos_protection: bool
19361    :param enable_vm_protection: Indicates if VM protection is enabled for all the subnets in the
19362     virtual network.
19363    :type enable_vm_protection: bool
19364    :param ddos_protection_plan: The DDoS protection plan associated with the virtual network.
19365    :type ddos_protection_plan: ~azure.mgmt.network.v2020_04_01.models.SubResource
19366    :param bgp_communities: Bgp Communities sent over ExpressRoute with each route corresponding to
19367     a prefix in this VNET.
19368    :type bgp_communities: ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkBgpCommunities
19369    :param ip_allocations: Array of IpAllocation which reference this VNET.
19370    :type ip_allocations: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
19371    """
19372
19373    _validation = {
19374        'name': {'readonly': True},
19375        'type': {'readonly': True},
19376        'etag': {'readonly': True},
19377        'resource_guid': {'readonly': True},
19378        'provisioning_state': {'readonly': True},
19379    }
19380
19381    _attribute_map = {
19382        'id': {'key': 'id', 'type': 'str'},
19383        'name': {'key': 'name', 'type': 'str'},
19384        'type': {'key': 'type', 'type': 'str'},
19385        'location': {'key': 'location', 'type': 'str'},
19386        'tags': {'key': 'tags', 'type': '{str}'},
19387        'etag': {'key': 'etag', 'type': 'str'},
19388        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
19389        'dhcp_options': {'key': 'properties.dhcpOptions', 'type': 'DhcpOptions'},
19390        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
19391        'virtual_network_peerings': {'key': 'properties.virtualNetworkPeerings', 'type': '[VirtualNetworkPeering]'},
19392        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
19393        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19394        'enable_ddos_protection': {'key': 'properties.enableDdosProtection', 'type': 'bool'},
19395        'enable_vm_protection': {'key': 'properties.enableVmProtection', 'type': 'bool'},
19396        'ddos_protection_plan': {'key': 'properties.ddosProtectionPlan', 'type': 'SubResource'},
19397        'bgp_communities': {'key': 'properties.bgpCommunities', 'type': 'VirtualNetworkBgpCommunities'},
19398        'ip_allocations': {'key': 'properties.ipAllocations', 'type': '[SubResource]'},
19399    }
19400
19401    def __init__(
19402        self,
19403        *,
19404        id: Optional[str] = None,
19405        location: Optional[str] = None,
19406        tags: Optional[Dict[str, str]] = None,
19407        address_space: Optional["AddressSpace"] = None,
19408        dhcp_options: Optional["DhcpOptions"] = None,
19409        subnets: Optional[List["Subnet"]] = None,
19410        virtual_network_peerings: Optional[List["VirtualNetworkPeering"]] = None,
19411        enable_ddos_protection: Optional[bool] = False,
19412        enable_vm_protection: Optional[bool] = False,
19413        ddos_protection_plan: Optional["SubResource"] = None,
19414        bgp_communities: Optional["VirtualNetworkBgpCommunities"] = None,
19415        ip_allocations: Optional[List["SubResource"]] = None,
19416        **kwargs
19417    ):
19418        super(VirtualNetwork, self).__init__(id=id, location=location, tags=tags, **kwargs)
19419        self.etag = None
19420        self.address_space = address_space
19421        self.dhcp_options = dhcp_options
19422        self.subnets = subnets
19423        self.virtual_network_peerings = virtual_network_peerings
19424        self.resource_guid = None
19425        self.provisioning_state = None
19426        self.enable_ddos_protection = enable_ddos_protection
19427        self.enable_vm_protection = enable_vm_protection
19428        self.ddos_protection_plan = ddos_protection_plan
19429        self.bgp_communities = bgp_communities
19430        self.ip_allocations = ip_allocations
19431
19432
19433class VirtualNetworkBgpCommunities(msrest.serialization.Model):
19434    """Bgp Communities sent over ExpressRoute with each route corresponding to a prefix in this VNET.
19435
19436    Variables are only populated by the server, and will be ignored when sending a request.
19437
19438    All required parameters must be populated in order to send to Azure.
19439
19440    :param virtual_network_community: Required. The BGP community associated with the virtual
19441     network.
19442    :type virtual_network_community: str
19443    :ivar regional_community: The BGP community associated with the region of the virtual network.
19444    :vartype regional_community: str
19445    """
19446
19447    _validation = {
19448        'virtual_network_community': {'required': True},
19449        'regional_community': {'readonly': True},
19450    }
19451
19452    _attribute_map = {
19453        'virtual_network_community': {'key': 'virtualNetworkCommunity', 'type': 'str'},
19454        'regional_community': {'key': 'regionalCommunity', 'type': 'str'},
19455    }
19456
19457    def __init__(
19458        self,
19459        *,
19460        virtual_network_community: str,
19461        **kwargs
19462    ):
19463        super(VirtualNetworkBgpCommunities, self).__init__(**kwargs)
19464        self.virtual_network_community = virtual_network_community
19465        self.regional_community = None
19466
19467
19468class VirtualNetworkConnectionGatewayReference(msrest.serialization.Model):
19469    """A reference to VirtualNetworkGateway or LocalNetworkGateway resource.
19470
19471    All required parameters must be populated in order to send to Azure.
19472
19473    :param id: Required. The ID of VirtualNetworkGateway or LocalNetworkGateway resource.
19474    :type id: str
19475    """
19476
19477    _validation = {
19478        'id': {'required': True},
19479    }
19480
19481    _attribute_map = {
19482        'id': {'key': 'id', 'type': 'str'},
19483    }
19484
19485    def __init__(
19486        self,
19487        *,
19488        id: str,
19489        **kwargs
19490    ):
19491        super(VirtualNetworkConnectionGatewayReference, self).__init__(**kwargs)
19492        self.id = id
19493
19494
19495class VirtualNetworkGateway(Resource):
19496    """A common class for general resource information.
19497
19498    Variables are only populated by the server, and will be ignored when sending a request.
19499
19500    :param id: Resource ID.
19501    :type id: str
19502    :ivar name: Resource name.
19503    :vartype name: str
19504    :ivar type: Resource type.
19505    :vartype type: str
19506    :param location: Resource location.
19507    :type location: str
19508    :param tags: A set of tags. Resource tags.
19509    :type tags: dict[str, str]
19510    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19511    :vartype etag: str
19512    :param ip_configurations: IP configurations for virtual network gateway.
19513    :type ip_configurations:
19514     list[~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayIPConfiguration]
19515    :param gateway_type: The type of this virtual network gateway. Possible values include: "Vpn",
19516     "ExpressRoute".
19517    :type gateway_type: str or ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayType
19518    :param vpn_type: The type of this virtual network gateway. Possible values include:
19519     "PolicyBased", "RouteBased".
19520    :type vpn_type: str or ~azure.mgmt.network.v2020_04_01.models.VpnType
19521    :param vpn_gateway_generation: The generation for this VirtualNetworkGateway. Must be None if
19522     gatewayType is not VPN. Possible values include: "None", "Generation1", "Generation2".
19523    :type vpn_gateway_generation: str or
19524     ~azure.mgmt.network.v2020_04_01.models.VpnGatewayGeneration
19525    :param enable_bgp: Whether BGP is enabled for this virtual network gateway or not.
19526    :type enable_bgp: bool
19527    :param enable_private_ip_address: Whether private IP needs to be enabled on this gateway for
19528     connections or not.
19529    :type enable_private_ip_address: bool
19530    :param active: ActiveActive flag.
19531    :type active: bool
19532    :param gateway_default_site: The reference to the LocalNetworkGateway resource which represents
19533     local network site having default routes. Assign Null value in case of removing existing
19534     default site setting.
19535    :type gateway_default_site: ~azure.mgmt.network.v2020_04_01.models.SubResource
19536    :param sku: The reference to the VirtualNetworkGatewaySku resource which represents the SKU
19537     selected for Virtual network gateway.
19538    :type sku: ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewaySku
19539    :param vpn_client_configuration: The reference to the VpnClientConfiguration resource which
19540     represents the P2S VpnClient configurations.
19541    :type vpn_client_configuration: ~azure.mgmt.network.v2020_04_01.models.VpnClientConfiguration
19542    :param bgp_settings: Virtual network gateway's BGP speaker settings.
19543    :type bgp_settings: ~azure.mgmt.network.v2020_04_01.models.BgpSettings
19544    :param custom_routes: The reference to the address space resource which represents the custom
19545     routes address space specified by the customer for virtual network gateway and VpnClient.
19546    :type custom_routes: ~azure.mgmt.network.v2020_04_01.models.AddressSpace
19547    :ivar resource_guid: The resource GUID property of the virtual network gateway resource.
19548    :vartype resource_guid: str
19549    :ivar provisioning_state: The provisioning state of the virtual network gateway resource.
19550     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
19551    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
19552    :param enable_dns_forwarding: Whether dns forwarding is enabled or not.
19553    :type enable_dns_forwarding: bool
19554    :ivar inbound_dns_forwarding_endpoint: The IP address allocated by the gateway to which dns
19555     requests can be sent.
19556    :vartype inbound_dns_forwarding_endpoint: str
19557    """
19558
19559    _validation = {
19560        'name': {'readonly': True},
19561        'type': {'readonly': True},
19562        'etag': {'readonly': True},
19563        'resource_guid': {'readonly': True},
19564        'provisioning_state': {'readonly': True},
19565        'inbound_dns_forwarding_endpoint': {'readonly': True},
19566    }
19567
19568    _attribute_map = {
19569        'id': {'key': 'id', 'type': 'str'},
19570        'name': {'key': 'name', 'type': 'str'},
19571        'type': {'key': 'type', 'type': 'str'},
19572        'location': {'key': 'location', 'type': 'str'},
19573        'tags': {'key': 'tags', 'type': '{str}'},
19574        'etag': {'key': 'etag', 'type': 'str'},
19575        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[VirtualNetworkGatewayIPConfiguration]'},
19576        'gateway_type': {'key': 'properties.gatewayType', 'type': 'str'},
19577        'vpn_type': {'key': 'properties.vpnType', 'type': 'str'},
19578        'vpn_gateway_generation': {'key': 'properties.vpnGatewayGeneration', 'type': 'str'},
19579        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
19580        'enable_private_ip_address': {'key': 'properties.enablePrivateIpAddress', 'type': 'bool'},
19581        'active': {'key': 'properties.activeActive', 'type': 'bool'},
19582        'gateway_default_site': {'key': 'properties.gatewayDefaultSite', 'type': 'SubResource'},
19583        'sku': {'key': 'properties.sku', 'type': 'VirtualNetworkGatewaySku'},
19584        'vpn_client_configuration': {'key': 'properties.vpnClientConfiguration', 'type': 'VpnClientConfiguration'},
19585        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
19586        'custom_routes': {'key': 'properties.customRoutes', 'type': 'AddressSpace'},
19587        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
19588        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19589        'enable_dns_forwarding': {'key': 'properties.enableDnsForwarding', 'type': 'bool'},
19590        'inbound_dns_forwarding_endpoint': {'key': 'properties.inboundDnsForwardingEndpoint', 'type': 'str'},
19591    }
19592
19593    def __init__(
19594        self,
19595        *,
19596        id: Optional[str] = None,
19597        location: Optional[str] = None,
19598        tags: Optional[Dict[str, str]] = None,
19599        ip_configurations: Optional[List["VirtualNetworkGatewayIPConfiguration"]] = None,
19600        gateway_type: Optional[Union[str, "VirtualNetworkGatewayType"]] = None,
19601        vpn_type: Optional[Union[str, "VpnType"]] = None,
19602        vpn_gateway_generation: Optional[Union[str, "VpnGatewayGeneration"]] = None,
19603        enable_bgp: Optional[bool] = None,
19604        enable_private_ip_address: Optional[bool] = None,
19605        active: Optional[bool] = None,
19606        gateway_default_site: Optional["SubResource"] = None,
19607        sku: Optional["VirtualNetworkGatewaySku"] = None,
19608        vpn_client_configuration: Optional["VpnClientConfiguration"] = None,
19609        bgp_settings: Optional["BgpSettings"] = None,
19610        custom_routes: Optional["AddressSpace"] = None,
19611        enable_dns_forwarding: Optional[bool] = None,
19612        **kwargs
19613    ):
19614        super(VirtualNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
19615        self.etag = None
19616        self.ip_configurations = ip_configurations
19617        self.gateway_type = gateway_type
19618        self.vpn_type = vpn_type
19619        self.vpn_gateway_generation = vpn_gateway_generation
19620        self.enable_bgp = enable_bgp
19621        self.enable_private_ip_address = enable_private_ip_address
19622        self.active = active
19623        self.gateway_default_site = gateway_default_site
19624        self.sku = sku
19625        self.vpn_client_configuration = vpn_client_configuration
19626        self.bgp_settings = bgp_settings
19627        self.custom_routes = custom_routes
19628        self.resource_guid = None
19629        self.provisioning_state = None
19630        self.enable_dns_forwarding = enable_dns_forwarding
19631        self.inbound_dns_forwarding_endpoint = None
19632
19633
19634class VirtualNetworkGatewayConnection(Resource):
19635    """A common class for general resource information.
19636
19637    Variables are only populated by the server, and will be ignored when sending a request.
19638
19639    All required parameters must be populated in order to send to Azure.
19640
19641    :param id: Resource ID.
19642    :type id: str
19643    :ivar name: Resource name.
19644    :vartype name: str
19645    :ivar type: Resource type.
19646    :vartype type: str
19647    :param location: Resource location.
19648    :type location: str
19649    :param tags: A set of tags. Resource tags.
19650    :type tags: dict[str, str]
19651    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19652    :vartype etag: str
19653    :param authorization_key: The authorizationKey.
19654    :type authorization_key: str
19655    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
19656    :type virtual_network_gateway1: ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGateway
19657    :param virtual_network_gateway2: The reference to virtual network gateway resource.
19658    :type virtual_network_gateway2: ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGateway
19659    :param local_network_gateway2: The reference to local network gateway resource.
19660    :type local_network_gateway2: ~azure.mgmt.network.v2020_04_01.models.LocalNetworkGateway
19661    :param connection_type: Required. Gateway connection type. Possible values include: "IPsec",
19662     "Vnet2Vnet", "ExpressRoute", "VPNClient".
19663    :type connection_type: str or
19664     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnectionType
19665    :param connection_protocol: Connection protocol used for this connection. Possible values
19666     include: "IKEv2", "IKEv1".
19667    :type connection_protocol: str or
19668     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnectionProtocol
19669    :param routing_weight: The routing weight.
19670    :type routing_weight: int
19671    :param dpd_timeout_seconds: The dead peer detection timeout of this connection in seconds.
19672    :type dpd_timeout_seconds: int
19673    :param shared_key: The IPSec shared key.
19674    :type shared_key: str
19675    :ivar connection_status: Virtual Network Gateway connection status. Possible values include:
19676     "Unknown", "Connecting", "Connected", "NotConnected".
19677    :vartype connection_status: str or
19678     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnectionStatus
19679    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
19680    :vartype tunnel_connection_status:
19681     list[~azure.mgmt.network.v2020_04_01.models.TunnelConnectionHealth]
19682    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
19683    :vartype egress_bytes_transferred: long
19684    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
19685    :vartype ingress_bytes_transferred: long
19686    :param peer: The reference to peerings resource.
19687    :type peer: ~azure.mgmt.network.v2020_04_01.models.SubResource
19688    :param enable_bgp: EnableBgp flag.
19689    :type enable_bgp: bool
19690    :param use_local_azure_ip_address: Use private local Azure IP for the connection.
19691    :type use_local_azure_ip_address: bool
19692    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
19693    :type use_policy_based_traffic_selectors: bool
19694    :param ipsec_policies: The IPSec Policies to be considered by this connection.
19695    :type ipsec_policies: list[~azure.mgmt.network.v2020_04_01.models.IpsecPolicy]
19696    :param traffic_selector_policies: The Traffic Selector Policies to be considered by this
19697     connection.
19698    :type traffic_selector_policies:
19699     list[~azure.mgmt.network.v2020_04_01.models.TrafficSelectorPolicy]
19700    :ivar resource_guid: The resource GUID property of the virtual network gateway connection
19701     resource.
19702    :vartype resource_guid: str
19703    :ivar provisioning_state: The provisioning state of the virtual network gateway connection
19704     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
19705    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
19706    :param express_route_gateway_bypass: Bypass ExpressRoute Gateway for data forwarding.
19707    :type express_route_gateway_bypass: bool
19708    """
19709
19710    _validation = {
19711        'name': {'readonly': True},
19712        'type': {'readonly': True},
19713        'etag': {'readonly': True},
19714        'virtual_network_gateway1': {'required': True},
19715        'connection_type': {'required': True},
19716        'connection_status': {'readonly': True},
19717        'tunnel_connection_status': {'readonly': True},
19718        'egress_bytes_transferred': {'readonly': True},
19719        'ingress_bytes_transferred': {'readonly': True},
19720        'resource_guid': {'readonly': True},
19721        'provisioning_state': {'readonly': True},
19722    }
19723
19724    _attribute_map = {
19725        'id': {'key': 'id', 'type': 'str'},
19726        'name': {'key': 'name', 'type': 'str'},
19727        'type': {'key': 'type', 'type': 'str'},
19728        'location': {'key': 'location', 'type': 'str'},
19729        'tags': {'key': 'tags', 'type': '{str}'},
19730        'etag': {'key': 'etag', 'type': 'str'},
19731        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
19732        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkGateway'},
19733        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkGateway'},
19734        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'LocalNetworkGateway'},
19735        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
19736        'connection_protocol': {'key': 'properties.connectionProtocol', 'type': 'str'},
19737        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
19738        'dpd_timeout_seconds': {'key': 'properties.dpdTimeoutSeconds', 'type': 'int'},
19739        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
19740        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
19741        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
19742        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
19743        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
19744        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
19745        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
19746        'use_local_azure_ip_address': {'key': 'properties.useLocalAzureIpAddress', 'type': 'bool'},
19747        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
19748        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
19749        'traffic_selector_policies': {'key': 'properties.trafficSelectorPolicies', 'type': '[TrafficSelectorPolicy]'},
19750        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
19751        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19752        'express_route_gateway_bypass': {'key': 'properties.expressRouteGatewayBypass', 'type': 'bool'},
19753    }
19754
19755    def __init__(
19756        self,
19757        *,
19758        virtual_network_gateway1: "VirtualNetworkGateway",
19759        connection_type: Union[str, "VirtualNetworkGatewayConnectionType"],
19760        id: Optional[str] = None,
19761        location: Optional[str] = None,
19762        tags: Optional[Dict[str, str]] = None,
19763        authorization_key: Optional[str] = None,
19764        virtual_network_gateway2: Optional["VirtualNetworkGateway"] = None,
19765        local_network_gateway2: Optional["LocalNetworkGateway"] = None,
19766        connection_protocol: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None,
19767        routing_weight: Optional[int] = None,
19768        dpd_timeout_seconds: Optional[int] = None,
19769        shared_key: Optional[str] = None,
19770        peer: Optional["SubResource"] = None,
19771        enable_bgp: Optional[bool] = None,
19772        use_local_azure_ip_address: Optional[bool] = None,
19773        use_policy_based_traffic_selectors: Optional[bool] = None,
19774        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
19775        traffic_selector_policies: Optional[List["TrafficSelectorPolicy"]] = None,
19776        express_route_gateway_bypass: Optional[bool] = None,
19777        **kwargs
19778    ):
19779        super(VirtualNetworkGatewayConnection, self).__init__(id=id, location=location, tags=tags, **kwargs)
19780        self.etag = None
19781        self.authorization_key = authorization_key
19782        self.virtual_network_gateway1 = virtual_network_gateway1
19783        self.virtual_network_gateway2 = virtual_network_gateway2
19784        self.local_network_gateway2 = local_network_gateway2
19785        self.connection_type = connection_type
19786        self.connection_protocol = connection_protocol
19787        self.routing_weight = routing_weight
19788        self.dpd_timeout_seconds = dpd_timeout_seconds
19789        self.shared_key = shared_key
19790        self.connection_status = None
19791        self.tunnel_connection_status = None
19792        self.egress_bytes_transferred = None
19793        self.ingress_bytes_transferred = None
19794        self.peer = peer
19795        self.enable_bgp = enable_bgp
19796        self.use_local_azure_ip_address = use_local_azure_ip_address
19797        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
19798        self.ipsec_policies = ipsec_policies
19799        self.traffic_selector_policies = traffic_selector_policies
19800        self.resource_guid = None
19801        self.provisioning_state = None
19802        self.express_route_gateway_bypass = express_route_gateway_bypass
19803
19804
19805class VirtualNetworkGatewayConnectionListEntity(Resource):
19806    """A common class for general resource information.
19807
19808    Variables are only populated by the server, and will be ignored when sending a request.
19809
19810    All required parameters must be populated in order to send to Azure.
19811
19812    :param id: Resource ID.
19813    :type id: str
19814    :ivar name: Resource name.
19815    :vartype name: str
19816    :ivar type: Resource type.
19817    :vartype type: str
19818    :param location: Resource location.
19819    :type location: str
19820    :param tags: A set of tags. Resource tags.
19821    :type tags: dict[str, str]
19822    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19823    :vartype etag: str
19824    :param authorization_key: The authorizationKey.
19825    :type authorization_key: str
19826    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
19827    :type virtual_network_gateway1:
19828     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkConnectionGatewayReference
19829    :param virtual_network_gateway2: The reference to virtual network gateway resource.
19830    :type virtual_network_gateway2:
19831     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkConnectionGatewayReference
19832    :param local_network_gateway2: The reference to local network gateway resource.
19833    :type local_network_gateway2:
19834     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkConnectionGatewayReference
19835    :param connection_type: Required. Gateway connection type. Possible values include: "IPsec",
19836     "Vnet2Vnet", "ExpressRoute", "VPNClient".
19837    :type connection_type: str or
19838     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnectionType
19839    :param connection_protocol: Connection protocol used for this connection. Possible values
19840     include: "IKEv2", "IKEv1".
19841    :type connection_protocol: str or
19842     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnectionProtocol
19843    :param routing_weight: The routing weight.
19844    :type routing_weight: int
19845    :param shared_key: The IPSec shared key.
19846    :type shared_key: str
19847    :ivar connection_status: Virtual Network Gateway connection status. Possible values include:
19848     "Unknown", "Connecting", "Connected", "NotConnected".
19849    :vartype connection_status: str or
19850     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnectionStatus
19851    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
19852    :vartype tunnel_connection_status:
19853     list[~azure.mgmt.network.v2020_04_01.models.TunnelConnectionHealth]
19854    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
19855    :vartype egress_bytes_transferred: long
19856    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
19857    :vartype ingress_bytes_transferred: long
19858    :param peer: The reference to peerings resource.
19859    :type peer: ~azure.mgmt.network.v2020_04_01.models.SubResource
19860    :param enable_bgp: EnableBgp flag.
19861    :type enable_bgp: bool
19862    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
19863    :type use_policy_based_traffic_selectors: bool
19864    :param ipsec_policies: The IPSec Policies to be considered by this connection.
19865    :type ipsec_policies: list[~azure.mgmt.network.v2020_04_01.models.IpsecPolicy]
19866    :param traffic_selector_policies: The Traffic Selector Policies to be considered by this
19867     connection.
19868    :type traffic_selector_policies:
19869     list[~azure.mgmt.network.v2020_04_01.models.TrafficSelectorPolicy]
19870    :ivar resource_guid: The resource GUID property of the virtual network gateway connection
19871     resource.
19872    :vartype resource_guid: str
19873    :ivar provisioning_state: The provisioning state of the virtual network gateway connection
19874     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
19875    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
19876    :param express_route_gateway_bypass: Bypass ExpressRoute Gateway for data forwarding.
19877    :type express_route_gateway_bypass: bool
19878    """
19879
19880    _validation = {
19881        'name': {'readonly': True},
19882        'type': {'readonly': True},
19883        'etag': {'readonly': True},
19884        'virtual_network_gateway1': {'required': True},
19885        'connection_type': {'required': True},
19886        'connection_status': {'readonly': True},
19887        'tunnel_connection_status': {'readonly': True},
19888        'egress_bytes_transferred': {'readonly': True},
19889        'ingress_bytes_transferred': {'readonly': True},
19890        'resource_guid': {'readonly': True},
19891        'provisioning_state': {'readonly': True},
19892    }
19893
19894    _attribute_map = {
19895        'id': {'key': 'id', 'type': 'str'},
19896        'name': {'key': 'name', 'type': 'str'},
19897        'type': {'key': 'type', 'type': 'str'},
19898        'location': {'key': 'location', 'type': 'str'},
19899        'tags': {'key': 'tags', 'type': '{str}'},
19900        'etag': {'key': 'etag', 'type': 'str'},
19901        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
19902        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkConnectionGatewayReference'},
19903        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
19904        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
19905        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
19906        'connection_protocol': {'key': 'properties.connectionProtocol', 'type': 'str'},
19907        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
19908        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
19909        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
19910        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
19911        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
19912        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
19913        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
19914        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
19915        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
19916        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
19917        'traffic_selector_policies': {'key': 'properties.trafficSelectorPolicies', 'type': '[TrafficSelectorPolicy]'},
19918        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
19919        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19920        'express_route_gateway_bypass': {'key': 'properties.expressRouteGatewayBypass', 'type': 'bool'},
19921    }
19922
19923    def __init__(
19924        self,
19925        *,
19926        virtual_network_gateway1: "VirtualNetworkConnectionGatewayReference",
19927        connection_type: Union[str, "VirtualNetworkGatewayConnectionType"],
19928        id: Optional[str] = None,
19929        location: Optional[str] = None,
19930        tags: Optional[Dict[str, str]] = None,
19931        authorization_key: Optional[str] = None,
19932        virtual_network_gateway2: Optional["VirtualNetworkConnectionGatewayReference"] = None,
19933        local_network_gateway2: Optional["VirtualNetworkConnectionGatewayReference"] = None,
19934        connection_protocol: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None,
19935        routing_weight: Optional[int] = None,
19936        shared_key: Optional[str] = None,
19937        peer: Optional["SubResource"] = None,
19938        enable_bgp: Optional[bool] = None,
19939        use_policy_based_traffic_selectors: Optional[bool] = None,
19940        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
19941        traffic_selector_policies: Optional[List["TrafficSelectorPolicy"]] = None,
19942        express_route_gateway_bypass: Optional[bool] = None,
19943        **kwargs
19944    ):
19945        super(VirtualNetworkGatewayConnectionListEntity, self).__init__(id=id, location=location, tags=tags, **kwargs)
19946        self.etag = None
19947        self.authorization_key = authorization_key
19948        self.virtual_network_gateway1 = virtual_network_gateway1
19949        self.virtual_network_gateway2 = virtual_network_gateway2
19950        self.local_network_gateway2 = local_network_gateway2
19951        self.connection_type = connection_type
19952        self.connection_protocol = connection_protocol
19953        self.routing_weight = routing_weight
19954        self.shared_key = shared_key
19955        self.connection_status = None
19956        self.tunnel_connection_status = None
19957        self.egress_bytes_transferred = None
19958        self.ingress_bytes_transferred = None
19959        self.peer = peer
19960        self.enable_bgp = enable_bgp
19961        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
19962        self.ipsec_policies = ipsec_policies
19963        self.traffic_selector_policies = traffic_selector_policies
19964        self.resource_guid = None
19965        self.provisioning_state = None
19966        self.express_route_gateway_bypass = express_route_gateway_bypass
19967
19968
19969class VirtualNetworkGatewayConnectionListResult(msrest.serialization.Model):
19970    """Response for the ListVirtualNetworkGatewayConnections API service call.
19971
19972    Variables are only populated by the server, and will be ignored when sending a request.
19973
19974    :param value: A list of VirtualNetworkGatewayConnection resources that exists in a resource
19975     group.
19976    :type value: list[~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnection]
19977    :ivar next_link: The URL to get the next set of results.
19978    :vartype next_link: str
19979    """
19980
19981    _validation = {
19982        'next_link': {'readonly': True},
19983    }
19984
19985    _attribute_map = {
19986        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnection]'},
19987        'next_link': {'key': 'nextLink', 'type': 'str'},
19988    }
19989
19990    def __init__(
19991        self,
19992        *,
19993        value: Optional[List["VirtualNetworkGatewayConnection"]] = None,
19994        **kwargs
19995    ):
19996        super(VirtualNetworkGatewayConnectionListResult, self).__init__(**kwargs)
19997        self.value = value
19998        self.next_link = None
19999
20000
20001class VirtualNetworkGatewayIPConfiguration(SubResource):
20002    """IP configuration for virtual network gateway.
20003
20004    Variables are only populated by the server, and will be ignored when sending a request.
20005
20006    :param id: Resource ID.
20007    :type id: str
20008    :param name: The name of the resource that is unique within a resource group. This name can be
20009     used to access the resource.
20010    :type name: str
20011    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20012    :vartype etag: str
20013    :param private_ip_allocation_method: The private IP address allocation method. Possible values
20014     include: "Static", "Dynamic".
20015    :type private_ip_allocation_method: str or
20016     ~azure.mgmt.network.v2020_04_01.models.IPAllocationMethod
20017    :param subnet: The reference to the subnet resource.
20018    :type subnet: ~azure.mgmt.network.v2020_04_01.models.SubResource
20019    :param public_ip_address: The reference to the public IP resource.
20020    :type public_ip_address: ~azure.mgmt.network.v2020_04_01.models.SubResource
20021    :ivar private_ip_address: Private IP Address for this gateway.
20022    :vartype private_ip_address: str
20023    :ivar provisioning_state: The provisioning state of the virtual network gateway IP
20024     configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
20025    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
20026    """
20027
20028    _validation = {
20029        'etag': {'readonly': True},
20030        'private_ip_address': {'readonly': True},
20031        'provisioning_state': {'readonly': True},
20032    }
20033
20034    _attribute_map = {
20035        'id': {'key': 'id', 'type': 'str'},
20036        'name': {'key': 'name', 'type': 'str'},
20037        'etag': {'key': 'etag', 'type': 'str'},
20038        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
20039        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
20040        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
20041        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
20042        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
20043    }
20044
20045    def __init__(
20046        self,
20047        *,
20048        id: Optional[str] = None,
20049        name: Optional[str] = None,
20050        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
20051        subnet: Optional["SubResource"] = None,
20052        public_ip_address: Optional["SubResource"] = None,
20053        **kwargs
20054    ):
20055        super(VirtualNetworkGatewayIPConfiguration, self).__init__(id=id, **kwargs)
20056        self.name = name
20057        self.etag = None
20058        self.private_ip_allocation_method = private_ip_allocation_method
20059        self.subnet = subnet
20060        self.public_ip_address = public_ip_address
20061        self.private_ip_address = None
20062        self.provisioning_state = None
20063
20064
20065class VirtualNetworkGatewayListConnectionsResult(msrest.serialization.Model):
20066    """Response for the VirtualNetworkGatewayListConnections API service call.
20067
20068    Variables are only populated by the server, and will be ignored when sending a request.
20069
20070    :param value: A list of VirtualNetworkGatewayConnection resources that exists in a resource
20071     group.
20072    :type value:
20073     list[~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnectionListEntity]
20074    :ivar next_link: The URL to get the next set of results.
20075    :vartype next_link: str
20076    """
20077
20078    _validation = {
20079        'next_link': {'readonly': True},
20080    }
20081
20082    _attribute_map = {
20083        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnectionListEntity]'},
20084        'next_link': {'key': 'nextLink', 'type': 'str'},
20085    }
20086
20087    def __init__(
20088        self,
20089        *,
20090        value: Optional[List["VirtualNetworkGatewayConnectionListEntity"]] = None,
20091        **kwargs
20092    ):
20093        super(VirtualNetworkGatewayListConnectionsResult, self).__init__(**kwargs)
20094        self.value = value
20095        self.next_link = None
20096
20097
20098class VirtualNetworkGatewayListResult(msrest.serialization.Model):
20099    """Response for the ListVirtualNetworkGateways API service call.
20100
20101    Variables are only populated by the server, and will be ignored when sending a request.
20102
20103    :param value: A list of VirtualNetworkGateway resources that exists in a resource group.
20104    :type value: list[~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGateway]
20105    :ivar next_link: The URL to get the next set of results.
20106    :vartype next_link: str
20107    """
20108
20109    _validation = {
20110        'next_link': {'readonly': True},
20111    }
20112
20113    _attribute_map = {
20114        'value': {'key': 'value', 'type': '[VirtualNetworkGateway]'},
20115        'next_link': {'key': 'nextLink', 'type': 'str'},
20116    }
20117
20118    def __init__(
20119        self,
20120        *,
20121        value: Optional[List["VirtualNetworkGateway"]] = None,
20122        **kwargs
20123    ):
20124        super(VirtualNetworkGatewayListResult, self).__init__(**kwargs)
20125        self.value = value
20126        self.next_link = None
20127
20128
20129class VirtualNetworkGatewaySku(msrest.serialization.Model):
20130    """VirtualNetworkGatewaySku details.
20131
20132    Variables are only populated by the server, and will be ignored when sending a request.
20133
20134    :param name: Gateway SKU name. Possible values include: "Basic", "HighPerformance", "Standard",
20135     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw4", "VpnGw5", "VpnGw1AZ", "VpnGw2AZ",
20136     "VpnGw3AZ", "VpnGw4AZ", "VpnGw5AZ", "ErGw1AZ", "ErGw2AZ", "ErGw3AZ".
20137    :type name: str or ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewaySkuName
20138    :param tier: Gateway SKU tier. Possible values include: "Basic", "HighPerformance", "Standard",
20139     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw4", "VpnGw5", "VpnGw1AZ", "VpnGw2AZ",
20140     "VpnGw3AZ", "VpnGw4AZ", "VpnGw5AZ", "ErGw1AZ", "ErGw2AZ", "ErGw3AZ".
20141    :type tier: str or ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewaySkuTier
20142    :ivar capacity: The capacity.
20143    :vartype capacity: int
20144    """
20145
20146    _validation = {
20147        'capacity': {'readonly': True},
20148    }
20149
20150    _attribute_map = {
20151        'name': {'key': 'name', 'type': 'str'},
20152        'tier': {'key': 'tier', 'type': 'str'},
20153        'capacity': {'key': 'capacity', 'type': 'int'},
20154    }
20155
20156    def __init__(
20157        self,
20158        *,
20159        name: Optional[Union[str, "VirtualNetworkGatewaySkuName"]] = None,
20160        tier: Optional[Union[str, "VirtualNetworkGatewaySkuTier"]] = None,
20161        **kwargs
20162    ):
20163        super(VirtualNetworkGatewaySku, self).__init__(**kwargs)
20164        self.name = name
20165        self.tier = tier
20166        self.capacity = None
20167
20168
20169class VirtualNetworkListResult(msrest.serialization.Model):
20170    """Response for the ListVirtualNetworks API service call.
20171
20172    :param value: A list of VirtualNetwork resources in a resource group.
20173    :type value: list[~azure.mgmt.network.v2020_04_01.models.VirtualNetwork]
20174    :param next_link: The URL to get the next set of results.
20175    :type next_link: str
20176    """
20177
20178    _attribute_map = {
20179        'value': {'key': 'value', 'type': '[VirtualNetwork]'},
20180        'next_link': {'key': 'nextLink', 'type': 'str'},
20181    }
20182
20183    def __init__(
20184        self,
20185        *,
20186        value: Optional[List["VirtualNetwork"]] = None,
20187        next_link: Optional[str] = None,
20188        **kwargs
20189    ):
20190        super(VirtualNetworkListResult, self).__init__(**kwargs)
20191        self.value = value
20192        self.next_link = next_link
20193
20194
20195class VirtualNetworkListUsageResult(msrest.serialization.Model):
20196    """Response for the virtual networks GetUsage API service call.
20197
20198    Variables are only populated by the server, and will be ignored when sending a request.
20199
20200    :ivar value: VirtualNetwork usage stats.
20201    :vartype value: list[~azure.mgmt.network.v2020_04_01.models.VirtualNetworkUsage]
20202    :param next_link: The URL to get the next set of results.
20203    :type next_link: str
20204    """
20205
20206    _validation = {
20207        'value': {'readonly': True},
20208    }
20209
20210    _attribute_map = {
20211        'value': {'key': 'value', 'type': '[VirtualNetworkUsage]'},
20212        'next_link': {'key': 'nextLink', 'type': 'str'},
20213    }
20214
20215    def __init__(
20216        self,
20217        *,
20218        next_link: Optional[str] = None,
20219        **kwargs
20220    ):
20221        super(VirtualNetworkListUsageResult, self).__init__(**kwargs)
20222        self.value = None
20223        self.next_link = next_link
20224
20225
20226class VirtualNetworkPeering(SubResource):
20227    """Peerings in a virtual network resource.
20228
20229    Variables are only populated by the server, and will be ignored when sending a request.
20230
20231    :param id: Resource ID.
20232    :type id: str
20233    :param name: The name of the resource that is unique within a resource group. This name can be
20234     used to access the resource.
20235    :type name: str
20236    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20237    :vartype etag: str
20238    :param allow_virtual_network_access: Whether the VMs in the local virtual network space would
20239     be able to access the VMs in remote virtual network space.
20240    :type allow_virtual_network_access: bool
20241    :param allow_forwarded_traffic: Whether the forwarded traffic from the VMs in the local virtual
20242     network will be allowed/disallowed in remote virtual network.
20243    :type allow_forwarded_traffic: bool
20244    :param allow_gateway_transit: If gateway links can be used in remote virtual networking to link
20245     to this virtual network.
20246    :type allow_gateway_transit: bool
20247    :param use_remote_gateways: If remote gateways can be used on this virtual network. If the flag
20248     is set to true, and allowGatewayTransit on remote peering is also true, virtual network will
20249     use gateways of remote virtual network for transit. Only one peering can have this flag set to
20250     true. This flag cannot be set if virtual network already has a gateway.
20251    :type use_remote_gateways: bool
20252    :param remote_virtual_network: The reference to the remote virtual network. The remote virtual
20253     network can be in the same or different region (preview). See here to register for the preview
20254     and learn more
20255     (https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-create-peering).
20256    :type remote_virtual_network: ~azure.mgmt.network.v2020_04_01.models.SubResource
20257    :param remote_address_space: The reference to the remote virtual network address space.
20258    :type remote_address_space: ~azure.mgmt.network.v2020_04_01.models.AddressSpace
20259    :param peering_state: The status of the virtual network peering. Possible values include:
20260     "Initiated", "Connected", "Disconnected".
20261    :type peering_state: str or ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkPeeringState
20262    :ivar provisioning_state: The provisioning state of the virtual network peering resource.
20263     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
20264    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
20265    """
20266
20267    _validation = {
20268        'etag': {'readonly': True},
20269        'provisioning_state': {'readonly': True},
20270    }
20271
20272    _attribute_map = {
20273        'id': {'key': 'id', 'type': 'str'},
20274        'name': {'key': 'name', 'type': 'str'},
20275        'etag': {'key': 'etag', 'type': 'str'},
20276        'allow_virtual_network_access': {'key': 'properties.allowVirtualNetworkAccess', 'type': 'bool'},
20277        'allow_forwarded_traffic': {'key': 'properties.allowForwardedTraffic', 'type': 'bool'},
20278        'allow_gateway_transit': {'key': 'properties.allowGatewayTransit', 'type': 'bool'},
20279        'use_remote_gateways': {'key': 'properties.useRemoteGateways', 'type': 'bool'},
20280        'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'},
20281        'remote_address_space': {'key': 'properties.remoteAddressSpace', 'type': 'AddressSpace'},
20282        'peering_state': {'key': 'properties.peeringState', 'type': 'str'},
20283        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
20284    }
20285
20286    def __init__(
20287        self,
20288        *,
20289        id: Optional[str] = None,
20290        name: Optional[str] = None,
20291        allow_virtual_network_access: Optional[bool] = None,
20292        allow_forwarded_traffic: Optional[bool] = None,
20293        allow_gateway_transit: Optional[bool] = None,
20294        use_remote_gateways: Optional[bool] = None,
20295        remote_virtual_network: Optional["SubResource"] = None,
20296        remote_address_space: Optional["AddressSpace"] = None,
20297        peering_state: Optional[Union[str, "VirtualNetworkPeeringState"]] = None,
20298        **kwargs
20299    ):
20300        super(VirtualNetworkPeering, self).__init__(id=id, **kwargs)
20301        self.name = name
20302        self.etag = None
20303        self.allow_virtual_network_access = allow_virtual_network_access
20304        self.allow_forwarded_traffic = allow_forwarded_traffic
20305        self.allow_gateway_transit = allow_gateway_transit
20306        self.use_remote_gateways = use_remote_gateways
20307        self.remote_virtual_network = remote_virtual_network
20308        self.remote_address_space = remote_address_space
20309        self.peering_state = peering_state
20310        self.provisioning_state = None
20311
20312
20313class VirtualNetworkPeeringListResult(msrest.serialization.Model):
20314    """Response for ListSubnets API service call. Retrieves all subnets that belong to a virtual network.
20315
20316    :param value: The peerings in a virtual network.
20317    :type value: list[~azure.mgmt.network.v2020_04_01.models.VirtualNetworkPeering]
20318    :param next_link: The URL to get the next set of results.
20319    :type next_link: str
20320    """
20321
20322    _attribute_map = {
20323        'value': {'key': 'value', 'type': '[VirtualNetworkPeering]'},
20324        'next_link': {'key': 'nextLink', 'type': 'str'},
20325    }
20326
20327    def __init__(
20328        self,
20329        *,
20330        value: Optional[List["VirtualNetworkPeering"]] = None,
20331        next_link: Optional[str] = None,
20332        **kwargs
20333    ):
20334        super(VirtualNetworkPeeringListResult, self).__init__(**kwargs)
20335        self.value = value
20336        self.next_link = next_link
20337
20338
20339class VirtualNetworkTap(Resource):
20340    """Virtual Network Tap resource.
20341
20342    Variables are only populated by the server, and will be ignored when sending a request.
20343
20344    :param id: Resource ID.
20345    :type id: str
20346    :ivar name: Resource name.
20347    :vartype name: str
20348    :ivar type: Resource type.
20349    :vartype type: str
20350    :param location: Resource location.
20351    :type location: str
20352    :param tags: A set of tags. Resource tags.
20353    :type tags: dict[str, str]
20354    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20355    :vartype etag: str
20356    :ivar network_interface_tap_configurations: Specifies the list of resource IDs for the network
20357     interface IP configuration that needs to be tapped.
20358    :vartype network_interface_tap_configurations:
20359     list[~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceTapConfiguration]
20360    :ivar resource_guid: The resource GUID property of the virtual network tap resource.
20361    :vartype resource_guid: str
20362    :ivar provisioning_state: The provisioning state of the virtual network tap resource. Possible
20363     values include: "Succeeded", "Updating", "Deleting", "Failed".
20364    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
20365    :param destination_network_interface_ip_configuration: The reference to the private IP Address
20366     of the collector nic that will receive the tap.
20367    :type destination_network_interface_ip_configuration:
20368     ~azure.mgmt.network.v2020_04_01.models.NetworkInterfaceIPConfiguration
20369    :param destination_load_balancer_front_end_ip_configuration: The reference to the private IP
20370     address on the internal Load Balancer that will receive the tap.
20371    :type destination_load_balancer_front_end_ip_configuration:
20372     ~azure.mgmt.network.v2020_04_01.models.FrontendIPConfiguration
20373    :param destination_port: The VXLAN destination port that will receive the tapped traffic.
20374    :type destination_port: int
20375    """
20376
20377    _validation = {
20378        'name': {'readonly': True},
20379        'type': {'readonly': True},
20380        'etag': {'readonly': True},
20381        'network_interface_tap_configurations': {'readonly': True},
20382        'resource_guid': {'readonly': True},
20383        'provisioning_state': {'readonly': True},
20384    }
20385
20386    _attribute_map = {
20387        'id': {'key': 'id', 'type': 'str'},
20388        'name': {'key': 'name', 'type': 'str'},
20389        'type': {'key': 'type', 'type': 'str'},
20390        'location': {'key': 'location', 'type': 'str'},
20391        'tags': {'key': 'tags', 'type': '{str}'},
20392        'etag': {'key': 'etag', 'type': 'str'},
20393        'network_interface_tap_configurations': {'key': 'properties.networkInterfaceTapConfigurations', 'type': '[NetworkInterfaceTapConfiguration]'},
20394        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
20395        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
20396        'destination_network_interface_ip_configuration': {'key': 'properties.destinationNetworkInterfaceIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
20397        'destination_load_balancer_front_end_ip_configuration': {'key': 'properties.destinationLoadBalancerFrontEndIPConfiguration', 'type': 'FrontendIPConfiguration'},
20398        'destination_port': {'key': 'properties.destinationPort', 'type': 'int'},
20399    }
20400
20401    def __init__(
20402        self,
20403        *,
20404        id: Optional[str] = None,
20405        location: Optional[str] = None,
20406        tags: Optional[Dict[str, str]] = None,
20407        destination_network_interface_ip_configuration: Optional["NetworkInterfaceIPConfiguration"] = None,
20408        destination_load_balancer_front_end_ip_configuration: Optional["FrontendIPConfiguration"] = None,
20409        destination_port: Optional[int] = None,
20410        **kwargs
20411    ):
20412        super(VirtualNetworkTap, self).__init__(id=id, location=location, tags=tags, **kwargs)
20413        self.etag = None
20414        self.network_interface_tap_configurations = None
20415        self.resource_guid = None
20416        self.provisioning_state = None
20417        self.destination_network_interface_ip_configuration = destination_network_interface_ip_configuration
20418        self.destination_load_balancer_front_end_ip_configuration = destination_load_balancer_front_end_ip_configuration
20419        self.destination_port = destination_port
20420
20421
20422class VirtualNetworkTapListResult(msrest.serialization.Model):
20423    """Response for ListVirtualNetworkTap API service call.
20424
20425    :param value: A list of VirtualNetworkTaps in a resource group.
20426    :type value: list[~azure.mgmt.network.v2020_04_01.models.VirtualNetworkTap]
20427    :param next_link: The URL to get the next set of results.
20428    :type next_link: str
20429    """
20430
20431    _attribute_map = {
20432        'value': {'key': 'value', 'type': '[VirtualNetworkTap]'},
20433        'next_link': {'key': 'nextLink', 'type': 'str'},
20434    }
20435
20436    def __init__(
20437        self,
20438        *,
20439        value: Optional[List["VirtualNetworkTap"]] = None,
20440        next_link: Optional[str] = None,
20441        **kwargs
20442    ):
20443        super(VirtualNetworkTapListResult, self).__init__(**kwargs)
20444        self.value = value
20445        self.next_link = next_link
20446
20447
20448class VirtualNetworkUsage(msrest.serialization.Model):
20449    """Usage details for subnet.
20450
20451    Variables are only populated by the server, and will be ignored when sending a request.
20452
20453    :ivar current_value: Indicates number of IPs used from the Subnet.
20454    :vartype current_value: float
20455    :ivar id: Subnet identifier.
20456    :vartype id: str
20457    :ivar limit: Indicates the size of the subnet.
20458    :vartype limit: float
20459    :ivar name: The name containing common and localized value for usage.
20460    :vartype name: ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkUsageName
20461    :ivar unit: Usage units. Returns 'Count'.
20462    :vartype unit: str
20463    """
20464
20465    _validation = {
20466        'current_value': {'readonly': True},
20467        'id': {'readonly': True},
20468        'limit': {'readonly': True},
20469        'name': {'readonly': True},
20470        'unit': {'readonly': True},
20471    }
20472
20473    _attribute_map = {
20474        'current_value': {'key': 'currentValue', 'type': 'float'},
20475        'id': {'key': 'id', 'type': 'str'},
20476        'limit': {'key': 'limit', 'type': 'float'},
20477        'name': {'key': 'name', 'type': 'VirtualNetworkUsageName'},
20478        'unit': {'key': 'unit', 'type': 'str'},
20479    }
20480
20481    def __init__(
20482        self,
20483        **kwargs
20484    ):
20485        super(VirtualNetworkUsage, self).__init__(**kwargs)
20486        self.current_value = None
20487        self.id = None
20488        self.limit = None
20489        self.name = None
20490        self.unit = None
20491
20492
20493class VirtualNetworkUsageName(msrest.serialization.Model):
20494    """Usage strings container.
20495
20496    Variables are only populated by the server, and will be ignored when sending a request.
20497
20498    :ivar localized_value: Localized subnet size and usage string.
20499    :vartype localized_value: str
20500    :ivar value: Subnet size and usage string.
20501    :vartype value: str
20502    """
20503
20504    _validation = {
20505        'localized_value': {'readonly': True},
20506        'value': {'readonly': True},
20507    }
20508
20509    _attribute_map = {
20510        'localized_value': {'key': 'localizedValue', 'type': 'str'},
20511        'value': {'key': 'value', 'type': 'str'},
20512    }
20513
20514    def __init__(
20515        self,
20516        **kwargs
20517    ):
20518        super(VirtualNetworkUsageName, self).__init__(**kwargs)
20519        self.localized_value = None
20520        self.value = None
20521
20522
20523class VirtualRouter(Resource):
20524    """VirtualRouter Resource.
20525
20526    Variables are only populated by the server, and will be ignored when sending a request.
20527
20528    :param id: Resource ID.
20529    :type id: str
20530    :ivar name: Resource name.
20531    :vartype name: str
20532    :ivar type: Resource type.
20533    :vartype type: str
20534    :param location: Resource location.
20535    :type location: str
20536    :param tags: A set of tags. Resource tags.
20537    :type tags: dict[str, str]
20538    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20539    :vartype etag: str
20540    :param virtual_router_asn: VirtualRouter ASN.
20541    :type virtual_router_asn: long
20542    :param virtual_router_ips: VirtualRouter IPs.
20543    :type virtual_router_ips: list[str]
20544    :param hosted_subnet: The Subnet on which VirtualRouter is hosted.
20545    :type hosted_subnet: ~azure.mgmt.network.v2020_04_01.models.SubResource
20546    :param hosted_gateway: The Gateway on which VirtualRouter is hosted.
20547    :type hosted_gateway: ~azure.mgmt.network.v2020_04_01.models.SubResource
20548    :ivar peerings: List of references to VirtualRouterPeerings.
20549    :vartype peerings: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
20550    :ivar provisioning_state: The provisioning state of the resource. Possible values include:
20551     "Succeeded", "Updating", "Deleting", "Failed".
20552    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
20553    """
20554
20555    _validation = {
20556        'name': {'readonly': True},
20557        'type': {'readonly': True},
20558        'etag': {'readonly': True},
20559        'virtual_router_asn': {'maximum': 4294967295, 'minimum': 0},
20560        'peerings': {'readonly': True},
20561        'provisioning_state': {'readonly': True},
20562    }
20563
20564    _attribute_map = {
20565        'id': {'key': 'id', 'type': 'str'},
20566        'name': {'key': 'name', 'type': 'str'},
20567        'type': {'key': 'type', 'type': 'str'},
20568        'location': {'key': 'location', 'type': 'str'},
20569        'tags': {'key': 'tags', 'type': '{str}'},
20570        'etag': {'key': 'etag', 'type': 'str'},
20571        'virtual_router_asn': {'key': 'properties.virtualRouterAsn', 'type': 'long'},
20572        'virtual_router_ips': {'key': 'properties.virtualRouterIps', 'type': '[str]'},
20573        'hosted_subnet': {'key': 'properties.hostedSubnet', 'type': 'SubResource'},
20574        'hosted_gateway': {'key': 'properties.hostedGateway', 'type': 'SubResource'},
20575        'peerings': {'key': 'properties.peerings', 'type': '[SubResource]'},
20576        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
20577    }
20578
20579    def __init__(
20580        self,
20581        *,
20582        id: Optional[str] = None,
20583        location: Optional[str] = None,
20584        tags: Optional[Dict[str, str]] = None,
20585        virtual_router_asn: Optional[int] = None,
20586        virtual_router_ips: Optional[List[str]] = None,
20587        hosted_subnet: Optional["SubResource"] = None,
20588        hosted_gateway: Optional["SubResource"] = None,
20589        **kwargs
20590    ):
20591        super(VirtualRouter, self).__init__(id=id, location=location, tags=tags, **kwargs)
20592        self.etag = None
20593        self.virtual_router_asn = virtual_router_asn
20594        self.virtual_router_ips = virtual_router_ips
20595        self.hosted_subnet = hosted_subnet
20596        self.hosted_gateway = hosted_gateway
20597        self.peerings = None
20598        self.provisioning_state = None
20599
20600
20601class VirtualRouterListResult(msrest.serialization.Model):
20602    """Response for ListVirtualRouters API service call.
20603
20604    :param value: List of Virtual Routers.
20605    :type value: list[~azure.mgmt.network.v2020_04_01.models.VirtualRouter]
20606    :param next_link: URL to get the next set of results.
20607    :type next_link: str
20608    """
20609
20610    _attribute_map = {
20611        'value': {'key': 'value', 'type': '[VirtualRouter]'},
20612        'next_link': {'key': 'nextLink', 'type': 'str'},
20613    }
20614
20615    def __init__(
20616        self,
20617        *,
20618        value: Optional[List["VirtualRouter"]] = None,
20619        next_link: Optional[str] = None,
20620        **kwargs
20621    ):
20622        super(VirtualRouterListResult, self).__init__(**kwargs)
20623        self.value = value
20624        self.next_link = next_link
20625
20626
20627class VirtualRouterPeering(SubResource):
20628    """Virtual Router Peering resource.
20629
20630    Variables are only populated by the server, and will be ignored when sending a request.
20631
20632    :param id: Resource ID.
20633    :type id: str
20634    :param name: Name of the virtual router peering that is unique within a virtual router.
20635    :type name: str
20636    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20637    :vartype etag: str
20638    :ivar type: Peering type.
20639    :vartype type: str
20640    :param peer_asn: Peer ASN.
20641    :type peer_asn: long
20642    :param peer_ip: Peer IP.
20643    :type peer_ip: str
20644    :ivar provisioning_state: The provisioning state of the resource. Possible values include:
20645     "Succeeded", "Updating", "Deleting", "Failed".
20646    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
20647    """
20648
20649    _validation = {
20650        'etag': {'readonly': True},
20651        'type': {'readonly': True},
20652        'peer_asn': {'maximum': 4294967295, 'minimum': 0},
20653        'provisioning_state': {'readonly': True},
20654    }
20655
20656    _attribute_map = {
20657        'id': {'key': 'id', 'type': 'str'},
20658        'name': {'key': 'name', 'type': 'str'},
20659        'etag': {'key': 'etag', 'type': 'str'},
20660        'type': {'key': 'type', 'type': 'str'},
20661        'peer_asn': {'key': 'properties.peerAsn', 'type': 'long'},
20662        'peer_ip': {'key': 'properties.peerIp', 'type': 'str'},
20663        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
20664    }
20665
20666    def __init__(
20667        self,
20668        *,
20669        id: Optional[str] = None,
20670        name: Optional[str] = None,
20671        peer_asn: Optional[int] = None,
20672        peer_ip: Optional[str] = None,
20673        **kwargs
20674    ):
20675        super(VirtualRouterPeering, self).__init__(id=id, **kwargs)
20676        self.name = name
20677        self.etag = None
20678        self.type = None
20679        self.peer_asn = peer_asn
20680        self.peer_ip = peer_ip
20681        self.provisioning_state = None
20682
20683
20684class VirtualRouterPeeringListResult(msrest.serialization.Model):
20685    """Response for ListVirtualRouterPeerings API service call.
20686
20687    :param value: List of VirtualRouterPeerings in a VirtualRouter.
20688    :type value: list[~azure.mgmt.network.v2020_04_01.models.VirtualRouterPeering]
20689    :param next_link: URL to get the next set of results.
20690    :type next_link: str
20691    """
20692
20693    _attribute_map = {
20694        'value': {'key': 'value', 'type': '[VirtualRouterPeering]'},
20695        'next_link': {'key': 'nextLink', 'type': 'str'},
20696    }
20697
20698    def __init__(
20699        self,
20700        *,
20701        value: Optional[List["VirtualRouterPeering"]] = None,
20702        next_link: Optional[str] = None,
20703        **kwargs
20704    ):
20705        super(VirtualRouterPeeringListResult, self).__init__(**kwargs)
20706        self.value = value
20707        self.next_link = next_link
20708
20709
20710class VirtualWAN(Resource):
20711    """VirtualWAN Resource.
20712
20713    Variables are only populated by the server, and will be ignored when sending a request.
20714
20715    :param id: Resource ID.
20716    :type id: str
20717    :ivar name: Resource name.
20718    :vartype name: str
20719    :ivar type: Resource type.
20720    :vartype type: str
20721    :param location: Resource location.
20722    :type location: str
20723    :param tags: A set of tags. Resource tags.
20724    :type tags: dict[str, str]
20725    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20726    :vartype etag: str
20727    :param disable_vpn_encryption: Vpn encryption to be disabled or not.
20728    :type disable_vpn_encryption: bool
20729    :ivar virtual_hubs: List of VirtualHubs in the VirtualWAN.
20730    :vartype virtual_hubs: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
20731    :ivar vpn_sites: List of VpnSites in the VirtualWAN.
20732    :vartype vpn_sites: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
20733    :param allow_branch_to_branch_traffic: True if branch to branch traffic is allowed.
20734    :type allow_branch_to_branch_traffic: bool
20735    :param allow_vnet_to_vnet_traffic: True if Vnet to Vnet traffic is allowed.
20736    :type allow_vnet_to_vnet_traffic: bool
20737    :ivar office365_local_breakout_category: The office local breakout category. Possible values
20738     include: "Optimize", "OptimizeAndAllow", "All", "None".
20739    :vartype office365_local_breakout_category: str or
20740     ~azure.mgmt.network.v2020_04_01.models.OfficeTrafficCategory
20741    :ivar provisioning_state: The provisioning state of the virtual WAN resource. Possible values
20742     include: "Succeeded", "Updating", "Deleting", "Failed".
20743    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
20744    :param type_properties_type: The type of the VirtualWAN.
20745    :type type_properties_type: str
20746    """
20747
20748    _validation = {
20749        'name': {'readonly': True},
20750        'type': {'readonly': True},
20751        'etag': {'readonly': True},
20752        'virtual_hubs': {'readonly': True},
20753        'vpn_sites': {'readonly': True},
20754        'office365_local_breakout_category': {'readonly': True},
20755        'provisioning_state': {'readonly': True},
20756    }
20757
20758    _attribute_map = {
20759        'id': {'key': 'id', 'type': 'str'},
20760        'name': {'key': 'name', 'type': 'str'},
20761        'type': {'key': 'type', 'type': 'str'},
20762        'location': {'key': 'location', 'type': 'str'},
20763        'tags': {'key': 'tags', 'type': '{str}'},
20764        'etag': {'key': 'etag', 'type': 'str'},
20765        'disable_vpn_encryption': {'key': 'properties.disableVpnEncryption', 'type': 'bool'},
20766        'virtual_hubs': {'key': 'properties.virtualHubs', 'type': '[SubResource]'},
20767        'vpn_sites': {'key': 'properties.vpnSites', 'type': '[SubResource]'},
20768        'allow_branch_to_branch_traffic': {'key': 'properties.allowBranchToBranchTraffic', 'type': 'bool'},
20769        'allow_vnet_to_vnet_traffic': {'key': 'properties.allowVnetToVnetTraffic', 'type': 'bool'},
20770        'office365_local_breakout_category': {'key': 'properties.office365LocalBreakoutCategory', 'type': 'str'},
20771        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
20772        'type_properties_type': {'key': 'properties.type', 'type': 'str'},
20773    }
20774
20775    def __init__(
20776        self,
20777        *,
20778        id: Optional[str] = None,
20779        location: Optional[str] = None,
20780        tags: Optional[Dict[str, str]] = None,
20781        disable_vpn_encryption: Optional[bool] = None,
20782        allow_branch_to_branch_traffic: Optional[bool] = None,
20783        allow_vnet_to_vnet_traffic: Optional[bool] = None,
20784        type_properties_type: Optional[str] = None,
20785        **kwargs
20786    ):
20787        super(VirtualWAN, self).__init__(id=id, location=location, tags=tags, **kwargs)
20788        self.etag = None
20789        self.disable_vpn_encryption = disable_vpn_encryption
20790        self.virtual_hubs = None
20791        self.vpn_sites = None
20792        self.allow_branch_to_branch_traffic = allow_branch_to_branch_traffic
20793        self.allow_vnet_to_vnet_traffic = allow_vnet_to_vnet_traffic
20794        self.office365_local_breakout_category = None
20795        self.provisioning_state = None
20796        self.type_properties_type = type_properties_type
20797
20798
20799class VirtualWanSecurityProvider(msrest.serialization.Model):
20800    """Collection of SecurityProviders.
20801
20802    Variables are only populated by the server, and will be ignored when sending a request.
20803
20804    :param name: Name of the security provider.
20805    :type name: str
20806    :param url: Url of the security provider.
20807    :type url: str
20808    :ivar type: Name of the security provider. Possible values include: "External", "Native".
20809    :vartype type: str or ~azure.mgmt.network.v2020_04_01.models.VirtualWanSecurityProviderType
20810    """
20811
20812    _validation = {
20813        'type': {'readonly': True},
20814    }
20815
20816    _attribute_map = {
20817        'name': {'key': 'name', 'type': 'str'},
20818        'url': {'key': 'url', 'type': 'str'},
20819        'type': {'key': 'type', 'type': 'str'},
20820    }
20821
20822    def __init__(
20823        self,
20824        *,
20825        name: Optional[str] = None,
20826        url: Optional[str] = None,
20827        **kwargs
20828    ):
20829        super(VirtualWanSecurityProvider, self).__init__(**kwargs)
20830        self.name = name
20831        self.url = url
20832        self.type = None
20833
20834
20835class VirtualWanSecurityProviders(msrest.serialization.Model):
20836    """Collection of SecurityProviders.
20837
20838    :param supported_providers: List of VirtualWAN security providers.
20839    :type supported_providers:
20840     list[~azure.mgmt.network.v2020_04_01.models.VirtualWanSecurityProvider]
20841    """
20842
20843    _attribute_map = {
20844        'supported_providers': {'key': 'supportedProviders', 'type': '[VirtualWanSecurityProvider]'},
20845    }
20846
20847    def __init__(
20848        self,
20849        *,
20850        supported_providers: Optional[List["VirtualWanSecurityProvider"]] = None,
20851        **kwargs
20852    ):
20853        super(VirtualWanSecurityProviders, self).__init__(**kwargs)
20854        self.supported_providers = supported_providers
20855
20856
20857class VirtualWanVpnProfileParameters(msrest.serialization.Model):
20858    """Virtual Wan Vpn profile parameters Vpn profile generation.
20859
20860    :param vpn_server_configuration_resource_id: VpnServerConfiguration partial resource uri with
20861     which VirtualWan is associated to.
20862    :type vpn_server_configuration_resource_id: str
20863    :param authentication_method: VPN client authentication method. Possible values include:
20864     "EAPTLS", "EAPMSCHAPv2".
20865    :type authentication_method: str or ~azure.mgmt.network.v2020_04_01.models.AuthenticationMethod
20866    """
20867
20868    _attribute_map = {
20869        'vpn_server_configuration_resource_id': {'key': 'vpnServerConfigurationResourceId', 'type': 'str'},
20870        'authentication_method': {'key': 'authenticationMethod', 'type': 'str'},
20871    }
20872
20873    def __init__(
20874        self,
20875        *,
20876        vpn_server_configuration_resource_id: Optional[str] = None,
20877        authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None,
20878        **kwargs
20879    ):
20880        super(VirtualWanVpnProfileParameters, self).__init__(**kwargs)
20881        self.vpn_server_configuration_resource_id = vpn_server_configuration_resource_id
20882        self.authentication_method = authentication_method
20883
20884
20885class VM(Resource):
20886    """Describes a Virtual Machine.
20887
20888    Variables are only populated by the server, and will be ignored when sending a request.
20889
20890    :param id: Resource ID.
20891    :type id: str
20892    :ivar name: Resource name.
20893    :vartype name: str
20894    :ivar type: Resource type.
20895    :vartype type: str
20896    :param location: Resource location.
20897    :type location: str
20898    :param tags: A set of tags. Resource tags.
20899    :type tags: dict[str, str]
20900    """
20901
20902    _validation = {
20903        'name': {'readonly': True},
20904        'type': {'readonly': True},
20905    }
20906
20907    _attribute_map = {
20908        'id': {'key': 'id', 'type': 'str'},
20909        'name': {'key': 'name', 'type': 'str'},
20910        'type': {'key': 'type', 'type': 'str'},
20911        'location': {'key': 'location', 'type': 'str'},
20912        'tags': {'key': 'tags', 'type': '{str}'},
20913    }
20914
20915    def __init__(
20916        self,
20917        *,
20918        id: Optional[str] = None,
20919        location: Optional[str] = None,
20920        tags: Optional[Dict[str, str]] = None,
20921        **kwargs
20922    ):
20923        super(VM, self).__init__(id=id, location=location, tags=tags, **kwargs)
20924
20925
20926class VnetRoute(msrest.serialization.Model):
20927    """List of routes that control routing from VirtualHub into a virtual network connection.
20928
20929    :param static_routes: List of all Static Routes.
20930    :type static_routes: list[~azure.mgmt.network.v2020_04_01.models.StaticRoute]
20931    """
20932
20933    _attribute_map = {
20934        'static_routes': {'key': 'staticRoutes', 'type': '[StaticRoute]'},
20935    }
20936
20937    def __init__(
20938        self,
20939        *,
20940        static_routes: Optional[List["StaticRoute"]] = None,
20941        **kwargs
20942    ):
20943        super(VnetRoute, self).__init__(**kwargs)
20944        self.static_routes = static_routes
20945
20946
20947class VpnClientConfiguration(msrest.serialization.Model):
20948    """VpnClientConfiguration for P2S client.
20949
20950    :param vpn_client_address_pool: The reference to the address space resource which represents
20951     Address space for P2S VpnClient.
20952    :type vpn_client_address_pool: ~azure.mgmt.network.v2020_04_01.models.AddressSpace
20953    :param vpn_client_root_certificates: VpnClientRootCertificate for virtual network gateway.
20954    :type vpn_client_root_certificates:
20955     list[~azure.mgmt.network.v2020_04_01.models.VpnClientRootCertificate]
20956    :param vpn_client_revoked_certificates: VpnClientRevokedCertificate for Virtual network
20957     gateway.
20958    :type vpn_client_revoked_certificates:
20959     list[~azure.mgmt.network.v2020_04_01.models.VpnClientRevokedCertificate]
20960    :param vpn_client_protocols: VpnClientProtocols for Virtual network gateway.
20961    :type vpn_client_protocols: list[str or
20962     ~azure.mgmt.network.v2020_04_01.models.VpnClientProtocol]
20963    :param vpn_client_ipsec_policies: VpnClientIpsecPolicies for virtual network gateway P2S
20964     client.
20965    :type vpn_client_ipsec_policies: list[~azure.mgmt.network.v2020_04_01.models.IpsecPolicy]
20966    :param radius_server_address: The radius server address property of the VirtualNetworkGateway
20967     resource for vpn client connection.
20968    :type radius_server_address: str
20969    :param radius_server_secret: The radius secret property of the VirtualNetworkGateway resource
20970     for vpn client connection.
20971    :type radius_server_secret: str
20972    :param radius_servers: The radiusServers property for multiple radius server configuration.
20973    :type radius_servers: list[~azure.mgmt.network.v2020_04_01.models.RadiusServer]
20974    :param aad_tenant: The AADTenant property of the VirtualNetworkGateway resource for vpn client
20975     connection used for AAD authentication.
20976    :type aad_tenant: str
20977    :param aad_audience: The AADAudience property of the VirtualNetworkGateway resource for vpn
20978     client connection used for AAD authentication.
20979    :type aad_audience: str
20980    :param aad_issuer: The AADIssuer property of the VirtualNetworkGateway resource for vpn client
20981     connection used for AAD authentication.
20982    :type aad_issuer: str
20983    """
20984
20985    _attribute_map = {
20986        'vpn_client_address_pool': {'key': 'vpnClientAddressPool', 'type': 'AddressSpace'},
20987        'vpn_client_root_certificates': {'key': 'vpnClientRootCertificates', 'type': '[VpnClientRootCertificate]'},
20988        'vpn_client_revoked_certificates': {'key': 'vpnClientRevokedCertificates', 'type': '[VpnClientRevokedCertificate]'},
20989        'vpn_client_protocols': {'key': 'vpnClientProtocols', 'type': '[str]'},
20990        'vpn_client_ipsec_policies': {'key': 'vpnClientIpsecPolicies', 'type': '[IpsecPolicy]'},
20991        'radius_server_address': {'key': 'radiusServerAddress', 'type': 'str'},
20992        'radius_server_secret': {'key': 'radiusServerSecret', 'type': 'str'},
20993        'radius_servers': {'key': 'radiusServers', 'type': '[RadiusServer]'},
20994        'aad_tenant': {'key': 'aadTenant', 'type': 'str'},
20995        'aad_audience': {'key': 'aadAudience', 'type': 'str'},
20996        'aad_issuer': {'key': 'aadIssuer', 'type': 'str'},
20997    }
20998
20999    def __init__(
21000        self,
21001        *,
21002        vpn_client_address_pool: Optional["AddressSpace"] = None,
21003        vpn_client_root_certificates: Optional[List["VpnClientRootCertificate"]] = None,
21004        vpn_client_revoked_certificates: Optional[List["VpnClientRevokedCertificate"]] = None,
21005        vpn_client_protocols: Optional[List[Union[str, "VpnClientProtocol"]]] = None,
21006        vpn_client_ipsec_policies: Optional[List["IpsecPolicy"]] = None,
21007        radius_server_address: Optional[str] = None,
21008        radius_server_secret: Optional[str] = None,
21009        radius_servers: Optional[List["RadiusServer"]] = None,
21010        aad_tenant: Optional[str] = None,
21011        aad_audience: Optional[str] = None,
21012        aad_issuer: Optional[str] = None,
21013        **kwargs
21014    ):
21015        super(VpnClientConfiguration, self).__init__(**kwargs)
21016        self.vpn_client_address_pool = vpn_client_address_pool
21017        self.vpn_client_root_certificates = vpn_client_root_certificates
21018        self.vpn_client_revoked_certificates = vpn_client_revoked_certificates
21019        self.vpn_client_protocols = vpn_client_protocols
21020        self.vpn_client_ipsec_policies = vpn_client_ipsec_policies
21021        self.radius_server_address = radius_server_address
21022        self.radius_server_secret = radius_server_secret
21023        self.radius_servers = radius_servers
21024        self.aad_tenant = aad_tenant
21025        self.aad_audience = aad_audience
21026        self.aad_issuer = aad_issuer
21027
21028
21029class VpnClientConnectionHealth(msrest.serialization.Model):
21030    """VpnClientConnectionHealth properties.
21031
21032    Variables are only populated by the server, and will be ignored when sending a request.
21033
21034    :ivar total_ingress_bytes_transferred: Total of the Ingress Bytes Transferred in this P2S Vpn
21035     connection.
21036    :vartype total_ingress_bytes_transferred: long
21037    :ivar total_egress_bytes_transferred: Total of the Egress Bytes Transferred in this connection.
21038    :vartype total_egress_bytes_transferred: long
21039    :param vpn_client_connections_count: The total of p2s vpn clients connected at this time to
21040     this P2SVpnGateway.
21041    :type vpn_client_connections_count: int
21042    :param allocated_ip_addresses: List of allocated ip addresses to the connected p2s vpn clients.
21043    :type allocated_ip_addresses: list[str]
21044    """
21045
21046    _validation = {
21047        'total_ingress_bytes_transferred': {'readonly': True},
21048        'total_egress_bytes_transferred': {'readonly': True},
21049    }
21050
21051    _attribute_map = {
21052        'total_ingress_bytes_transferred': {'key': 'totalIngressBytesTransferred', 'type': 'long'},
21053        'total_egress_bytes_transferred': {'key': 'totalEgressBytesTransferred', 'type': 'long'},
21054        'vpn_client_connections_count': {'key': 'vpnClientConnectionsCount', 'type': 'int'},
21055        'allocated_ip_addresses': {'key': 'allocatedIpAddresses', 'type': '[str]'},
21056    }
21057
21058    def __init__(
21059        self,
21060        *,
21061        vpn_client_connections_count: Optional[int] = None,
21062        allocated_ip_addresses: Optional[List[str]] = None,
21063        **kwargs
21064    ):
21065        super(VpnClientConnectionHealth, self).__init__(**kwargs)
21066        self.total_ingress_bytes_transferred = None
21067        self.total_egress_bytes_transferred = None
21068        self.vpn_client_connections_count = vpn_client_connections_count
21069        self.allocated_ip_addresses = allocated_ip_addresses
21070
21071
21072class VpnClientConnectionHealthDetail(msrest.serialization.Model):
21073    """VPN client connection health detail.
21074
21075    Variables are only populated by the server, and will be ignored when sending a request.
21076
21077    :ivar vpn_connection_id: The vpn client Id.
21078    :vartype vpn_connection_id: str
21079    :ivar vpn_connection_duration: The duration time of a connected vpn client.
21080    :vartype vpn_connection_duration: long
21081    :ivar vpn_connection_time: The start time of a connected vpn client.
21082    :vartype vpn_connection_time: str
21083    :ivar public_ip_address: The public Ip of a connected vpn client.
21084    :vartype public_ip_address: str
21085    :ivar private_ip_address: The assigned private Ip of a connected vpn client.
21086    :vartype private_ip_address: str
21087    :ivar vpn_user_name: The user name of a connected vpn client.
21088    :vartype vpn_user_name: str
21089    :ivar max_bandwidth: The max band width.
21090    :vartype max_bandwidth: long
21091    :ivar egress_packets_transferred: The egress packets per second.
21092    :vartype egress_packets_transferred: long
21093    :ivar egress_bytes_transferred: The egress bytes per second.
21094    :vartype egress_bytes_transferred: long
21095    :ivar ingress_packets_transferred: The ingress packets per second.
21096    :vartype ingress_packets_transferred: long
21097    :ivar ingress_bytes_transferred: The ingress bytes per second.
21098    :vartype ingress_bytes_transferred: long
21099    :ivar max_packets_per_second: The max packets transferred per second.
21100    :vartype max_packets_per_second: long
21101    """
21102
21103    _validation = {
21104        'vpn_connection_id': {'readonly': True},
21105        'vpn_connection_duration': {'readonly': True},
21106        'vpn_connection_time': {'readonly': True},
21107        'public_ip_address': {'readonly': True},
21108        'private_ip_address': {'readonly': True},
21109        'vpn_user_name': {'readonly': True},
21110        'max_bandwidth': {'readonly': True},
21111        'egress_packets_transferred': {'readonly': True},
21112        'egress_bytes_transferred': {'readonly': True},
21113        'ingress_packets_transferred': {'readonly': True},
21114        'ingress_bytes_transferred': {'readonly': True},
21115        'max_packets_per_second': {'readonly': True},
21116    }
21117
21118    _attribute_map = {
21119        'vpn_connection_id': {'key': 'vpnConnectionId', 'type': 'str'},
21120        'vpn_connection_duration': {'key': 'vpnConnectionDuration', 'type': 'long'},
21121        'vpn_connection_time': {'key': 'vpnConnectionTime', 'type': 'str'},
21122        'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'},
21123        'private_ip_address': {'key': 'privateIpAddress', 'type': 'str'},
21124        'vpn_user_name': {'key': 'vpnUserName', 'type': 'str'},
21125        'max_bandwidth': {'key': 'maxBandwidth', 'type': 'long'},
21126        'egress_packets_transferred': {'key': 'egressPacketsTransferred', 'type': 'long'},
21127        'egress_bytes_transferred': {'key': 'egressBytesTransferred', 'type': 'long'},
21128        'ingress_packets_transferred': {'key': 'ingressPacketsTransferred', 'type': 'long'},
21129        'ingress_bytes_transferred': {'key': 'ingressBytesTransferred', 'type': 'long'},
21130        'max_packets_per_second': {'key': 'maxPacketsPerSecond', 'type': 'long'},
21131    }
21132
21133    def __init__(
21134        self,
21135        **kwargs
21136    ):
21137        super(VpnClientConnectionHealthDetail, self).__init__(**kwargs)
21138        self.vpn_connection_id = None
21139        self.vpn_connection_duration = None
21140        self.vpn_connection_time = None
21141        self.public_ip_address = None
21142        self.private_ip_address = None
21143        self.vpn_user_name = None
21144        self.max_bandwidth = None
21145        self.egress_packets_transferred = None
21146        self.egress_bytes_transferred = None
21147        self.ingress_packets_transferred = None
21148        self.ingress_bytes_transferred = None
21149        self.max_packets_per_second = None
21150
21151
21152class VpnClientConnectionHealthDetailListResult(msrest.serialization.Model):
21153    """List of virtual network gateway vpn client connection health.
21154
21155    :param value: List of vpn client connection health.
21156    :type value: list[~azure.mgmt.network.v2020_04_01.models.VpnClientConnectionHealthDetail]
21157    """
21158
21159    _attribute_map = {
21160        'value': {'key': 'value', 'type': '[VpnClientConnectionHealthDetail]'},
21161    }
21162
21163    def __init__(
21164        self,
21165        *,
21166        value: Optional[List["VpnClientConnectionHealthDetail"]] = None,
21167        **kwargs
21168    ):
21169        super(VpnClientConnectionHealthDetailListResult, self).__init__(**kwargs)
21170        self.value = value
21171
21172
21173class VpnClientIPsecParameters(msrest.serialization.Model):
21174    """An IPSec parameters for a virtual network gateway P2S connection.
21175
21176    All required parameters must be populated in order to send to Azure.
21177
21178    :param sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode
21179     or Phase 2 SA) lifetime in seconds for P2S client.
21180    :type sa_life_time_seconds: int
21181    :param sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode
21182     or Phase 2 SA) payload size in KB for P2S client..
21183    :type sa_data_size_kilobytes: int
21184    :param ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible
21185     values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192",
21186     "GCMAES256".
21187    :type ipsec_encryption: str or ~azure.mgmt.network.v2020_04_01.models.IpsecEncryption
21188    :param ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values
21189     include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256".
21190    :type ipsec_integrity: str or ~azure.mgmt.network.v2020_04_01.models.IpsecIntegrity
21191    :param ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values
21192     include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128".
21193    :type ike_encryption: str or ~azure.mgmt.network.v2020_04_01.models.IkeEncryption
21194    :param ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values
21195     include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128".
21196    :type ike_integrity: str or ~azure.mgmt.network.v2020_04_01.models.IkeIntegrity
21197    :param dh_group: Required. The DH Group used in IKE Phase 1 for initial SA. Possible values
21198     include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384",
21199     "DHGroup24".
21200    :type dh_group: str or ~azure.mgmt.network.v2020_04_01.models.DhGroup
21201    :param pfs_group: Required. The Pfs Group used in IKE Phase 2 for new child SA. Possible values
21202     include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14", "PFSMM".
21203    :type pfs_group: str or ~azure.mgmt.network.v2020_04_01.models.PfsGroup
21204    """
21205
21206    _validation = {
21207        'sa_life_time_seconds': {'required': True},
21208        'sa_data_size_kilobytes': {'required': True},
21209        'ipsec_encryption': {'required': True},
21210        'ipsec_integrity': {'required': True},
21211        'ike_encryption': {'required': True},
21212        'ike_integrity': {'required': True},
21213        'dh_group': {'required': True},
21214        'pfs_group': {'required': True},
21215    }
21216
21217    _attribute_map = {
21218        'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'},
21219        'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'},
21220        'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'},
21221        'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'},
21222        'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'},
21223        'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'},
21224        'dh_group': {'key': 'dhGroup', 'type': 'str'},
21225        'pfs_group': {'key': 'pfsGroup', 'type': 'str'},
21226    }
21227
21228    def __init__(
21229        self,
21230        *,
21231        sa_life_time_seconds: int,
21232        sa_data_size_kilobytes: int,
21233        ipsec_encryption: Union[str, "IpsecEncryption"],
21234        ipsec_integrity: Union[str, "IpsecIntegrity"],
21235        ike_encryption: Union[str, "IkeEncryption"],
21236        ike_integrity: Union[str, "IkeIntegrity"],
21237        dh_group: Union[str, "DhGroup"],
21238        pfs_group: Union[str, "PfsGroup"],
21239        **kwargs
21240    ):
21241        super(VpnClientIPsecParameters, self).__init__(**kwargs)
21242        self.sa_life_time_seconds = sa_life_time_seconds
21243        self.sa_data_size_kilobytes = sa_data_size_kilobytes
21244        self.ipsec_encryption = ipsec_encryption
21245        self.ipsec_integrity = ipsec_integrity
21246        self.ike_encryption = ike_encryption
21247        self.ike_integrity = ike_integrity
21248        self.dh_group = dh_group
21249        self.pfs_group = pfs_group
21250
21251
21252class VpnClientParameters(msrest.serialization.Model):
21253    """Vpn Client Parameters for package generation.
21254
21255    :param processor_architecture: VPN client Processor Architecture. Possible values include:
21256     "Amd64", "X86".
21257    :type processor_architecture: str or
21258     ~azure.mgmt.network.v2020_04_01.models.ProcessorArchitecture
21259    :param authentication_method: VPN client authentication method. Possible values include:
21260     "EAPTLS", "EAPMSCHAPv2".
21261    :type authentication_method: str or ~azure.mgmt.network.v2020_04_01.models.AuthenticationMethod
21262    :param radius_server_auth_certificate: The public certificate data for the radius server
21263     authentication certificate as a Base-64 encoded string. Required only if external radius
21264     authentication has been configured with EAPTLS authentication.
21265    :type radius_server_auth_certificate: str
21266    :param client_root_certificates: A list of client root certificates public certificate data
21267     encoded as Base-64 strings. Optional parameter for external radius based authentication with
21268     EAPTLS.
21269    :type client_root_certificates: list[str]
21270    """
21271
21272    _attribute_map = {
21273        'processor_architecture': {'key': 'processorArchitecture', 'type': 'str'},
21274        'authentication_method': {'key': 'authenticationMethod', 'type': 'str'},
21275        'radius_server_auth_certificate': {'key': 'radiusServerAuthCertificate', 'type': 'str'},
21276        'client_root_certificates': {'key': 'clientRootCertificates', 'type': '[str]'},
21277    }
21278
21279    def __init__(
21280        self,
21281        *,
21282        processor_architecture: Optional[Union[str, "ProcessorArchitecture"]] = None,
21283        authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None,
21284        radius_server_auth_certificate: Optional[str] = None,
21285        client_root_certificates: Optional[List[str]] = None,
21286        **kwargs
21287    ):
21288        super(VpnClientParameters, self).__init__(**kwargs)
21289        self.processor_architecture = processor_architecture
21290        self.authentication_method = authentication_method
21291        self.radius_server_auth_certificate = radius_server_auth_certificate
21292        self.client_root_certificates = client_root_certificates
21293
21294
21295class VpnClientRevokedCertificate(SubResource):
21296    """VPN client revoked certificate of virtual network gateway.
21297
21298    Variables are only populated by the server, and will be ignored when sending a request.
21299
21300    :param id: Resource ID.
21301    :type id: str
21302    :param name: The name of the resource that is unique within a resource group. This name can be
21303     used to access the resource.
21304    :type name: str
21305    :ivar etag: A unique read-only string that changes whenever the resource is updated.
21306    :vartype etag: str
21307    :param thumbprint: The revoked VPN client certificate thumbprint.
21308    :type thumbprint: str
21309    :ivar provisioning_state: The provisioning state of the VPN client revoked certificate
21310     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
21311    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
21312    """
21313
21314    _validation = {
21315        'etag': {'readonly': True},
21316        'provisioning_state': {'readonly': True},
21317    }
21318
21319    _attribute_map = {
21320        'id': {'key': 'id', 'type': 'str'},
21321        'name': {'key': 'name', 'type': 'str'},
21322        'etag': {'key': 'etag', 'type': 'str'},
21323        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
21324        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
21325    }
21326
21327    def __init__(
21328        self,
21329        *,
21330        id: Optional[str] = None,
21331        name: Optional[str] = None,
21332        thumbprint: Optional[str] = None,
21333        **kwargs
21334    ):
21335        super(VpnClientRevokedCertificate, self).__init__(id=id, **kwargs)
21336        self.name = name
21337        self.etag = None
21338        self.thumbprint = thumbprint
21339        self.provisioning_state = None
21340
21341
21342class VpnClientRootCertificate(SubResource):
21343    """VPN client root certificate of virtual network gateway.
21344
21345    Variables are only populated by the server, and will be ignored when sending a request.
21346
21347    All required parameters must be populated in order to send to Azure.
21348
21349    :param id: Resource ID.
21350    :type id: str
21351    :param name: The name of the resource that is unique within a resource group. This name can be
21352     used to access the resource.
21353    :type name: str
21354    :ivar etag: A unique read-only string that changes whenever the resource is updated.
21355    :vartype etag: str
21356    :param public_cert_data: Required. The certificate public data.
21357    :type public_cert_data: str
21358    :ivar provisioning_state: The provisioning state of the VPN client root certificate resource.
21359     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
21360    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
21361    """
21362
21363    _validation = {
21364        'etag': {'readonly': True},
21365        'public_cert_data': {'required': True},
21366        'provisioning_state': {'readonly': True},
21367    }
21368
21369    _attribute_map = {
21370        'id': {'key': 'id', 'type': 'str'},
21371        'name': {'key': 'name', 'type': 'str'},
21372        'etag': {'key': 'etag', 'type': 'str'},
21373        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
21374        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
21375    }
21376
21377    def __init__(
21378        self,
21379        *,
21380        public_cert_data: str,
21381        id: Optional[str] = None,
21382        name: Optional[str] = None,
21383        **kwargs
21384    ):
21385        super(VpnClientRootCertificate, self).__init__(id=id, **kwargs)
21386        self.name = name
21387        self.etag = None
21388        self.public_cert_data = public_cert_data
21389        self.provisioning_state = None
21390
21391
21392class VpnConnection(SubResource):
21393    """VpnConnection Resource.
21394
21395    Variables are only populated by the server, and will be ignored when sending a request.
21396
21397    :param id: Resource ID.
21398    :type id: str
21399    :param name: The name of the resource that is unique within a resource group. This name can be
21400     used to access the resource.
21401    :type name: str
21402    :ivar etag: A unique read-only string that changes whenever the resource is updated.
21403    :vartype etag: str
21404    :param remote_vpn_site: Id of the connected vpn site.
21405    :type remote_vpn_site: ~azure.mgmt.network.v2020_04_01.models.SubResource
21406    :param routing_weight: Routing weight for vpn connection.
21407    :type routing_weight: int
21408    :param dpd_timeout_seconds: The dead peer detection timeout for a vpn connection in seconds.
21409    :type dpd_timeout_seconds: int
21410    :ivar connection_status: The connection status. Possible values include: "Unknown",
21411     "Connecting", "Connected", "NotConnected".
21412    :vartype connection_status: str or ~azure.mgmt.network.v2020_04_01.models.VpnConnectionStatus
21413    :param vpn_connection_protocol_type: Connection protocol used for this connection. Possible
21414     values include: "IKEv2", "IKEv1".
21415    :type vpn_connection_protocol_type: str or
21416     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnectionProtocol
21417    :ivar ingress_bytes_transferred: Ingress bytes transferred.
21418    :vartype ingress_bytes_transferred: long
21419    :ivar egress_bytes_transferred: Egress bytes transferred.
21420    :vartype egress_bytes_transferred: long
21421    :param connection_bandwidth: Expected bandwidth in MBPS.
21422    :type connection_bandwidth: int
21423    :param shared_key: SharedKey for the vpn connection.
21424    :type shared_key: str
21425    :param enable_bgp: EnableBgp flag.
21426    :type enable_bgp: bool
21427    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
21428    :type use_policy_based_traffic_selectors: bool
21429    :param ipsec_policies: The IPSec Policies to be considered by this connection.
21430    :type ipsec_policies: list[~azure.mgmt.network.v2020_04_01.models.IpsecPolicy]
21431    :param enable_rate_limiting: EnableBgp flag.
21432    :type enable_rate_limiting: bool
21433    :param enable_internet_security: Enable internet security.
21434    :type enable_internet_security: bool
21435    :param use_local_azure_ip_address: Use local azure ip to initiate connection.
21436    :type use_local_azure_ip_address: bool
21437    :ivar provisioning_state: The provisioning state of the VPN connection resource. Possible
21438     values include: "Succeeded", "Updating", "Deleting", "Failed".
21439    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
21440    :param vpn_link_connections: List of all vpn site link connections to the gateway.
21441    :type vpn_link_connections: list[~azure.mgmt.network.v2020_04_01.models.VpnSiteLinkConnection]
21442    :param routing_configuration: The Routing Configuration indicating the associated and
21443     propagated route tables on this connection.
21444    :type routing_configuration: ~azure.mgmt.network.v2020_04_01.models.RoutingConfiguration
21445    """
21446
21447    _validation = {
21448        'etag': {'readonly': True},
21449        'connection_status': {'readonly': True},
21450        'ingress_bytes_transferred': {'readonly': True},
21451        'egress_bytes_transferred': {'readonly': True},
21452        'provisioning_state': {'readonly': True},
21453    }
21454
21455    _attribute_map = {
21456        'id': {'key': 'id', 'type': 'str'},
21457        'name': {'key': 'name', 'type': 'str'},
21458        'etag': {'key': 'etag', 'type': 'str'},
21459        'remote_vpn_site': {'key': 'properties.remoteVpnSite', 'type': 'SubResource'},
21460        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
21461        'dpd_timeout_seconds': {'key': 'properties.dpdTimeoutSeconds', 'type': 'int'},
21462        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
21463        'vpn_connection_protocol_type': {'key': 'properties.vpnConnectionProtocolType', 'type': 'str'},
21464        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
21465        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
21466        'connection_bandwidth': {'key': 'properties.connectionBandwidth', 'type': 'int'},
21467        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
21468        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
21469        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
21470        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
21471        'enable_rate_limiting': {'key': 'properties.enableRateLimiting', 'type': 'bool'},
21472        'enable_internet_security': {'key': 'properties.enableInternetSecurity', 'type': 'bool'},
21473        'use_local_azure_ip_address': {'key': 'properties.useLocalAzureIpAddress', 'type': 'bool'},
21474        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
21475        'vpn_link_connections': {'key': 'properties.vpnLinkConnections', 'type': '[VpnSiteLinkConnection]'},
21476        'routing_configuration': {'key': 'properties.routingConfiguration', 'type': 'RoutingConfiguration'},
21477    }
21478
21479    def __init__(
21480        self,
21481        *,
21482        id: Optional[str] = None,
21483        name: Optional[str] = None,
21484        remote_vpn_site: Optional["SubResource"] = None,
21485        routing_weight: Optional[int] = None,
21486        dpd_timeout_seconds: Optional[int] = None,
21487        vpn_connection_protocol_type: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None,
21488        connection_bandwidth: Optional[int] = None,
21489        shared_key: Optional[str] = None,
21490        enable_bgp: Optional[bool] = None,
21491        use_policy_based_traffic_selectors: Optional[bool] = None,
21492        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
21493        enable_rate_limiting: Optional[bool] = None,
21494        enable_internet_security: Optional[bool] = None,
21495        use_local_azure_ip_address: Optional[bool] = None,
21496        vpn_link_connections: Optional[List["VpnSiteLinkConnection"]] = None,
21497        routing_configuration: Optional["RoutingConfiguration"] = None,
21498        **kwargs
21499    ):
21500        super(VpnConnection, self).__init__(id=id, **kwargs)
21501        self.name = name
21502        self.etag = None
21503        self.remote_vpn_site = remote_vpn_site
21504        self.routing_weight = routing_weight
21505        self.dpd_timeout_seconds = dpd_timeout_seconds
21506        self.connection_status = None
21507        self.vpn_connection_protocol_type = vpn_connection_protocol_type
21508        self.ingress_bytes_transferred = None
21509        self.egress_bytes_transferred = None
21510        self.connection_bandwidth = connection_bandwidth
21511        self.shared_key = shared_key
21512        self.enable_bgp = enable_bgp
21513        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
21514        self.ipsec_policies = ipsec_policies
21515        self.enable_rate_limiting = enable_rate_limiting
21516        self.enable_internet_security = enable_internet_security
21517        self.use_local_azure_ip_address = use_local_azure_ip_address
21518        self.provisioning_state = None
21519        self.vpn_link_connections = vpn_link_connections
21520        self.routing_configuration = routing_configuration
21521
21522
21523class VpnDeviceScriptParameters(msrest.serialization.Model):
21524    """Vpn device configuration script generation parameters.
21525
21526    :param vendor: The vendor for the vpn device.
21527    :type vendor: str
21528    :param device_family: The device family for the vpn device.
21529    :type device_family: str
21530    :param firmware_version: The firmware version for the vpn device.
21531    :type firmware_version: str
21532    """
21533
21534    _attribute_map = {
21535        'vendor': {'key': 'vendor', 'type': 'str'},
21536        'device_family': {'key': 'deviceFamily', 'type': 'str'},
21537        'firmware_version': {'key': 'firmwareVersion', 'type': 'str'},
21538    }
21539
21540    def __init__(
21541        self,
21542        *,
21543        vendor: Optional[str] = None,
21544        device_family: Optional[str] = None,
21545        firmware_version: Optional[str] = None,
21546        **kwargs
21547    ):
21548        super(VpnDeviceScriptParameters, self).__init__(**kwargs)
21549        self.vendor = vendor
21550        self.device_family = device_family
21551        self.firmware_version = firmware_version
21552
21553
21554class VpnGateway(Resource):
21555    """VpnGateway Resource.
21556
21557    Variables are only populated by the server, and will be ignored when sending a request.
21558
21559    :param id: Resource ID.
21560    :type id: str
21561    :ivar name: Resource name.
21562    :vartype name: str
21563    :ivar type: Resource type.
21564    :vartype type: str
21565    :param location: Resource location.
21566    :type location: str
21567    :param tags: A set of tags. Resource tags.
21568    :type tags: dict[str, str]
21569    :ivar etag: A unique read-only string that changes whenever the resource is updated.
21570    :vartype etag: str
21571    :param virtual_hub: The VirtualHub to which the gateway belongs.
21572    :type virtual_hub: ~azure.mgmt.network.v2020_04_01.models.SubResource
21573    :param connections: List of all vpn connections to the gateway.
21574    :type connections: list[~azure.mgmt.network.v2020_04_01.models.VpnConnection]
21575    :param bgp_settings: Local network gateway's BGP speaker settings.
21576    :type bgp_settings: ~azure.mgmt.network.v2020_04_01.models.BgpSettings
21577    :ivar provisioning_state: The provisioning state of the VPN gateway resource. Possible values
21578     include: "Succeeded", "Updating", "Deleting", "Failed".
21579    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
21580    :param vpn_gateway_scale_unit: The scale unit for this vpn gateway.
21581    :type vpn_gateway_scale_unit: int
21582    """
21583
21584    _validation = {
21585        'name': {'readonly': True},
21586        'type': {'readonly': True},
21587        'etag': {'readonly': True},
21588        'provisioning_state': {'readonly': True},
21589    }
21590
21591    _attribute_map = {
21592        'id': {'key': 'id', 'type': 'str'},
21593        'name': {'key': 'name', 'type': 'str'},
21594        'type': {'key': 'type', 'type': 'str'},
21595        'location': {'key': 'location', 'type': 'str'},
21596        'tags': {'key': 'tags', 'type': '{str}'},
21597        'etag': {'key': 'etag', 'type': 'str'},
21598        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
21599        'connections': {'key': 'properties.connections', 'type': '[VpnConnection]'},
21600        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
21601        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
21602        'vpn_gateway_scale_unit': {'key': 'properties.vpnGatewayScaleUnit', 'type': 'int'},
21603    }
21604
21605    def __init__(
21606        self,
21607        *,
21608        id: Optional[str] = None,
21609        location: Optional[str] = None,
21610        tags: Optional[Dict[str, str]] = None,
21611        virtual_hub: Optional["SubResource"] = None,
21612        connections: Optional[List["VpnConnection"]] = None,
21613        bgp_settings: Optional["BgpSettings"] = None,
21614        vpn_gateway_scale_unit: Optional[int] = None,
21615        **kwargs
21616    ):
21617        super(VpnGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
21618        self.etag = None
21619        self.virtual_hub = virtual_hub
21620        self.connections = connections
21621        self.bgp_settings = bgp_settings
21622        self.provisioning_state = None
21623        self.vpn_gateway_scale_unit = vpn_gateway_scale_unit
21624
21625
21626class VpnLinkBgpSettings(msrest.serialization.Model):
21627    """BGP settings details for a link.
21628
21629    :param asn: The BGP speaker's ASN.
21630    :type asn: long
21631    :param bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker.
21632    :type bgp_peering_address: str
21633    """
21634
21635    _attribute_map = {
21636        'asn': {'key': 'asn', 'type': 'long'},
21637        'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'},
21638    }
21639
21640    def __init__(
21641        self,
21642        *,
21643        asn: Optional[int] = None,
21644        bgp_peering_address: Optional[str] = None,
21645        **kwargs
21646    ):
21647        super(VpnLinkBgpSettings, self).__init__(**kwargs)
21648        self.asn = asn
21649        self.bgp_peering_address = bgp_peering_address
21650
21651
21652class VpnLinkProviderProperties(msrest.serialization.Model):
21653    """List of properties of a link provider.
21654
21655    :param link_provider_name: Name of the link provider.
21656    :type link_provider_name: str
21657    :param link_speed_in_mbps: Link speed.
21658    :type link_speed_in_mbps: int
21659    """
21660
21661    _attribute_map = {
21662        'link_provider_name': {'key': 'linkProviderName', 'type': 'str'},
21663        'link_speed_in_mbps': {'key': 'linkSpeedInMbps', 'type': 'int'},
21664    }
21665
21666    def __init__(
21667        self,
21668        *,
21669        link_provider_name: Optional[str] = None,
21670        link_speed_in_mbps: Optional[int] = None,
21671        **kwargs
21672    ):
21673        super(VpnLinkProviderProperties, self).__init__(**kwargs)
21674        self.link_provider_name = link_provider_name
21675        self.link_speed_in_mbps = link_speed_in_mbps
21676
21677
21678class VpnPacketCaptureStartParameters(msrest.serialization.Model):
21679    """Start packet capture parameters on virtual network gateway.
21680
21681    :param filter_data: Start Packet capture parameters.
21682    :type filter_data: str
21683    """
21684
21685    _attribute_map = {
21686        'filter_data': {'key': 'filterData', 'type': 'str'},
21687    }
21688
21689    def __init__(
21690        self,
21691        *,
21692        filter_data: Optional[str] = None,
21693        **kwargs
21694    ):
21695        super(VpnPacketCaptureStartParameters, self).__init__(**kwargs)
21696        self.filter_data = filter_data
21697
21698
21699class VpnPacketCaptureStopParameters(msrest.serialization.Model):
21700    """Stop packet capture parameters.
21701
21702    :param sas_url: SAS url for packet capture on virtual network gateway.
21703    :type sas_url: str
21704    """
21705
21706    _attribute_map = {
21707        'sas_url': {'key': 'sasUrl', 'type': 'str'},
21708    }
21709
21710    def __init__(
21711        self,
21712        *,
21713        sas_url: Optional[str] = None,
21714        **kwargs
21715    ):
21716        super(VpnPacketCaptureStopParameters, self).__init__(**kwargs)
21717        self.sas_url = sas_url
21718
21719
21720class VpnProfileResponse(msrest.serialization.Model):
21721    """Vpn Profile Response for package generation.
21722
21723    :param profile_url: URL to the VPN profile.
21724    :type profile_url: str
21725    """
21726
21727    _attribute_map = {
21728        'profile_url': {'key': 'profileUrl', 'type': 'str'},
21729    }
21730
21731    def __init__(
21732        self,
21733        *,
21734        profile_url: Optional[str] = None,
21735        **kwargs
21736    ):
21737        super(VpnProfileResponse, self).__init__(**kwargs)
21738        self.profile_url = profile_url
21739
21740
21741class VpnServerConfigRadiusClientRootCertificate(msrest.serialization.Model):
21742    """Properties of the Radius client root certificate of VpnServerConfiguration.
21743
21744    :param name: The certificate name.
21745    :type name: str
21746    :param thumbprint: The Radius client root certificate thumbprint.
21747    :type thumbprint: str
21748    """
21749
21750    _attribute_map = {
21751        'name': {'key': 'name', 'type': 'str'},
21752        'thumbprint': {'key': 'thumbprint', 'type': 'str'},
21753    }
21754
21755    def __init__(
21756        self,
21757        *,
21758        name: Optional[str] = None,
21759        thumbprint: Optional[str] = None,
21760        **kwargs
21761    ):
21762        super(VpnServerConfigRadiusClientRootCertificate, self).__init__(**kwargs)
21763        self.name = name
21764        self.thumbprint = thumbprint
21765
21766
21767class VpnServerConfigRadiusServerRootCertificate(msrest.serialization.Model):
21768    """Properties of Radius Server root certificate of VpnServerConfiguration.
21769
21770    :param name: The certificate name.
21771    :type name: str
21772    :param public_cert_data: The certificate public data.
21773    :type public_cert_data: str
21774    """
21775
21776    _attribute_map = {
21777        'name': {'key': 'name', 'type': 'str'},
21778        'public_cert_data': {'key': 'publicCertData', 'type': 'str'},
21779    }
21780
21781    def __init__(
21782        self,
21783        *,
21784        name: Optional[str] = None,
21785        public_cert_data: Optional[str] = None,
21786        **kwargs
21787    ):
21788        super(VpnServerConfigRadiusServerRootCertificate, self).__init__(**kwargs)
21789        self.name = name
21790        self.public_cert_data = public_cert_data
21791
21792
21793class VpnServerConfiguration(Resource):
21794    """VpnServerConfiguration Resource.
21795
21796    Variables are only populated by the server, and will be ignored when sending a request.
21797
21798    :param id: Resource ID.
21799    :type id: str
21800    :ivar name: Resource name.
21801    :vartype name: str
21802    :ivar type: Resource type.
21803    :vartype type: str
21804    :param location: Resource location.
21805    :type location: str
21806    :param tags: A set of tags. Resource tags.
21807    :type tags: dict[str, str]
21808    :ivar etag: A unique read-only string that changes whenever the resource is updated.
21809    :vartype etag: str
21810    :param name_properties_name: The name of the VpnServerConfiguration that is unique within a
21811     resource group.
21812    :type name_properties_name: str
21813    :param vpn_protocols: VPN protocols for the VpnServerConfiguration.
21814    :type vpn_protocols: list[str or
21815     ~azure.mgmt.network.v2020_04_01.models.VpnGatewayTunnelingProtocol]
21816    :param vpn_authentication_types: VPN authentication types for the VpnServerConfiguration.
21817    :type vpn_authentication_types: list[str or
21818     ~azure.mgmt.network.v2020_04_01.models.VpnAuthenticationType]
21819    :param vpn_client_root_certificates: VPN client root certificate of VpnServerConfiguration.
21820    :type vpn_client_root_certificates:
21821     list[~azure.mgmt.network.v2020_04_01.models.VpnServerConfigVpnClientRootCertificate]
21822    :param vpn_client_revoked_certificates: VPN client revoked certificate of
21823     VpnServerConfiguration.
21824    :type vpn_client_revoked_certificates:
21825     list[~azure.mgmt.network.v2020_04_01.models.VpnServerConfigVpnClientRevokedCertificate]
21826    :param radius_server_root_certificates: Radius Server root certificate of
21827     VpnServerConfiguration.
21828    :type radius_server_root_certificates:
21829     list[~azure.mgmt.network.v2020_04_01.models.VpnServerConfigRadiusServerRootCertificate]
21830    :param radius_client_root_certificates: Radius client root certificate of
21831     VpnServerConfiguration.
21832    :type radius_client_root_certificates:
21833     list[~azure.mgmt.network.v2020_04_01.models.VpnServerConfigRadiusClientRootCertificate]
21834    :param vpn_client_ipsec_policies: VpnClientIpsecPolicies for VpnServerConfiguration.
21835    :type vpn_client_ipsec_policies: list[~azure.mgmt.network.v2020_04_01.models.IpsecPolicy]
21836    :param radius_server_address: The radius server address property of the VpnServerConfiguration
21837     resource for point to site client connection.
21838    :type radius_server_address: str
21839    :param radius_server_secret: The radius secret property of the VpnServerConfiguration resource
21840     for point to site client connection.
21841    :type radius_server_secret: str
21842    :param radius_servers: Multiple Radius Server configuration for VpnServerConfiguration.
21843    :type radius_servers: list[~azure.mgmt.network.v2020_04_01.models.RadiusServer]
21844    :param aad_authentication_parameters: The set of aad vpn authentication parameters.
21845    :type aad_authentication_parameters:
21846     ~azure.mgmt.network.v2020_04_01.models.AadAuthenticationParameters
21847    :ivar provisioning_state: The provisioning state of the VpnServerConfiguration resource.
21848     Possible values are: 'Updating', 'Deleting', and 'Failed'.
21849    :vartype provisioning_state: str
21850    :ivar p2_s_vpn_gateways: List of references to P2SVpnGateways.
21851    :vartype p2_s_vpn_gateways: list[~azure.mgmt.network.v2020_04_01.models.P2SVpnGateway]
21852    :ivar etag_properties_etag: A unique read-only string that changes whenever the resource is
21853     updated.
21854    :vartype etag_properties_etag: str
21855    """
21856
21857    _validation = {
21858        'name': {'readonly': True},
21859        'type': {'readonly': True},
21860        'etag': {'readonly': True},
21861        'provisioning_state': {'readonly': True},
21862        'p2_s_vpn_gateways': {'readonly': True},
21863        'etag_properties_etag': {'readonly': True},
21864    }
21865
21866    _attribute_map = {
21867        'id': {'key': 'id', 'type': 'str'},
21868        'name': {'key': 'name', 'type': 'str'},
21869        'type': {'key': 'type', 'type': 'str'},
21870        'location': {'key': 'location', 'type': 'str'},
21871        'tags': {'key': 'tags', 'type': '{str}'},
21872        'etag': {'key': 'etag', 'type': 'str'},
21873        'name_properties_name': {'key': 'properties.name', 'type': 'str'},
21874        'vpn_protocols': {'key': 'properties.vpnProtocols', 'type': '[str]'},
21875        'vpn_authentication_types': {'key': 'properties.vpnAuthenticationTypes', 'type': '[str]'},
21876        'vpn_client_root_certificates': {'key': 'properties.vpnClientRootCertificates', 'type': '[VpnServerConfigVpnClientRootCertificate]'},
21877        'vpn_client_revoked_certificates': {'key': 'properties.vpnClientRevokedCertificates', 'type': '[VpnServerConfigVpnClientRevokedCertificate]'},
21878        'radius_server_root_certificates': {'key': 'properties.radiusServerRootCertificates', 'type': '[VpnServerConfigRadiusServerRootCertificate]'},
21879        'radius_client_root_certificates': {'key': 'properties.radiusClientRootCertificates', 'type': '[VpnServerConfigRadiusClientRootCertificate]'},
21880        'vpn_client_ipsec_policies': {'key': 'properties.vpnClientIpsecPolicies', 'type': '[IpsecPolicy]'},
21881        'radius_server_address': {'key': 'properties.radiusServerAddress', 'type': 'str'},
21882        'radius_server_secret': {'key': 'properties.radiusServerSecret', 'type': 'str'},
21883        'radius_servers': {'key': 'properties.radiusServers', 'type': '[RadiusServer]'},
21884        'aad_authentication_parameters': {'key': 'properties.aadAuthenticationParameters', 'type': 'AadAuthenticationParameters'},
21885        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
21886        'p2_s_vpn_gateways': {'key': 'properties.p2SVpnGateways', 'type': '[P2SVpnGateway]'},
21887        'etag_properties_etag': {'key': 'properties.etag', 'type': 'str'},
21888    }
21889
21890    def __init__(
21891        self,
21892        *,
21893        id: Optional[str] = None,
21894        location: Optional[str] = None,
21895        tags: Optional[Dict[str, str]] = None,
21896        name_properties_name: Optional[str] = None,
21897        vpn_protocols: Optional[List[Union[str, "VpnGatewayTunnelingProtocol"]]] = None,
21898        vpn_authentication_types: Optional[List[Union[str, "VpnAuthenticationType"]]] = None,
21899        vpn_client_root_certificates: Optional[List["VpnServerConfigVpnClientRootCertificate"]] = None,
21900        vpn_client_revoked_certificates: Optional[List["VpnServerConfigVpnClientRevokedCertificate"]] = None,
21901        radius_server_root_certificates: Optional[List["VpnServerConfigRadiusServerRootCertificate"]] = None,
21902        radius_client_root_certificates: Optional[List["VpnServerConfigRadiusClientRootCertificate"]] = None,
21903        vpn_client_ipsec_policies: Optional[List["IpsecPolicy"]] = None,
21904        radius_server_address: Optional[str] = None,
21905        radius_server_secret: Optional[str] = None,
21906        radius_servers: Optional[List["RadiusServer"]] = None,
21907        aad_authentication_parameters: Optional["AadAuthenticationParameters"] = None,
21908        **kwargs
21909    ):
21910        super(VpnServerConfiguration, self).__init__(id=id, location=location, tags=tags, **kwargs)
21911        self.etag = None
21912        self.name_properties_name = name_properties_name
21913        self.vpn_protocols = vpn_protocols
21914        self.vpn_authentication_types = vpn_authentication_types
21915        self.vpn_client_root_certificates = vpn_client_root_certificates
21916        self.vpn_client_revoked_certificates = vpn_client_revoked_certificates
21917        self.radius_server_root_certificates = radius_server_root_certificates
21918        self.radius_client_root_certificates = radius_client_root_certificates
21919        self.vpn_client_ipsec_policies = vpn_client_ipsec_policies
21920        self.radius_server_address = radius_server_address
21921        self.radius_server_secret = radius_server_secret
21922        self.radius_servers = radius_servers
21923        self.aad_authentication_parameters = aad_authentication_parameters
21924        self.provisioning_state = None
21925        self.p2_s_vpn_gateways = None
21926        self.etag_properties_etag = None
21927
21928
21929class VpnServerConfigurationsResponse(msrest.serialization.Model):
21930    """VpnServerConfigurations list associated with VirtualWan Response.
21931
21932    :param vpn_server_configuration_resource_ids: List of VpnServerConfigurations associated with
21933     VirtualWan.
21934    :type vpn_server_configuration_resource_ids: list[str]
21935    """
21936
21937    _attribute_map = {
21938        'vpn_server_configuration_resource_ids': {'key': 'vpnServerConfigurationResourceIds', 'type': '[str]'},
21939    }
21940
21941    def __init__(
21942        self,
21943        *,
21944        vpn_server_configuration_resource_ids: Optional[List[str]] = None,
21945        **kwargs
21946    ):
21947        super(VpnServerConfigurationsResponse, self).__init__(**kwargs)
21948        self.vpn_server_configuration_resource_ids = vpn_server_configuration_resource_ids
21949
21950
21951class VpnServerConfigVpnClientRevokedCertificate(msrest.serialization.Model):
21952    """Properties of the revoked VPN client certificate of VpnServerConfiguration.
21953
21954    :param name: The certificate name.
21955    :type name: str
21956    :param thumbprint: The revoked VPN client certificate thumbprint.
21957    :type thumbprint: str
21958    """
21959
21960    _attribute_map = {
21961        'name': {'key': 'name', 'type': 'str'},
21962        'thumbprint': {'key': 'thumbprint', 'type': 'str'},
21963    }
21964
21965    def __init__(
21966        self,
21967        *,
21968        name: Optional[str] = None,
21969        thumbprint: Optional[str] = None,
21970        **kwargs
21971    ):
21972        super(VpnServerConfigVpnClientRevokedCertificate, self).__init__(**kwargs)
21973        self.name = name
21974        self.thumbprint = thumbprint
21975
21976
21977class VpnServerConfigVpnClientRootCertificate(msrest.serialization.Model):
21978    """Properties of VPN client root certificate of VpnServerConfiguration.
21979
21980    :param name: The certificate name.
21981    :type name: str
21982    :param public_cert_data: The certificate public data.
21983    :type public_cert_data: str
21984    """
21985
21986    _attribute_map = {
21987        'name': {'key': 'name', 'type': 'str'},
21988        'public_cert_data': {'key': 'publicCertData', 'type': 'str'},
21989    }
21990
21991    def __init__(
21992        self,
21993        *,
21994        name: Optional[str] = None,
21995        public_cert_data: Optional[str] = None,
21996        **kwargs
21997    ):
21998        super(VpnServerConfigVpnClientRootCertificate, self).__init__(**kwargs)
21999        self.name = name
22000        self.public_cert_data = public_cert_data
22001
22002
22003class VpnSite(Resource):
22004    """VpnSite Resource.
22005
22006    Variables are only populated by the server, and will be ignored when sending a request.
22007
22008    :param id: Resource ID.
22009    :type id: str
22010    :ivar name: Resource name.
22011    :vartype name: str
22012    :ivar type: Resource type.
22013    :vartype type: str
22014    :param location: Resource location.
22015    :type location: str
22016    :param tags: A set of tags. Resource tags.
22017    :type tags: dict[str, str]
22018    :ivar etag: A unique read-only string that changes whenever the resource is updated.
22019    :vartype etag: str
22020    :param virtual_wan: The VirtualWAN to which the vpnSite belongs.
22021    :type virtual_wan: ~azure.mgmt.network.v2020_04_01.models.SubResource
22022    :param device_properties: The device properties.
22023    :type device_properties: ~azure.mgmt.network.v2020_04_01.models.DeviceProperties
22024    :param ip_address: The ip-address for the vpn-site.
22025    :type ip_address: str
22026    :param site_key: The key for vpn-site that can be used for connections.
22027    :type site_key: str
22028    :param address_space: The AddressSpace that contains an array of IP address ranges.
22029    :type address_space: ~azure.mgmt.network.v2020_04_01.models.AddressSpace
22030    :param bgp_properties: The set of bgp properties.
22031    :type bgp_properties: ~azure.mgmt.network.v2020_04_01.models.BgpSettings
22032    :ivar provisioning_state: The provisioning state of the VPN site resource. Possible values
22033     include: "Succeeded", "Updating", "Deleting", "Failed".
22034    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
22035    :param is_security_site: IsSecuritySite flag.
22036    :type is_security_site: bool
22037    :param vpn_site_links: List of all vpn site links.
22038    :type vpn_site_links: list[~azure.mgmt.network.v2020_04_01.models.VpnSiteLink]
22039    """
22040
22041    _validation = {
22042        'name': {'readonly': True},
22043        'type': {'readonly': True},
22044        'etag': {'readonly': True},
22045        'provisioning_state': {'readonly': True},
22046    }
22047
22048    _attribute_map = {
22049        'id': {'key': 'id', 'type': 'str'},
22050        'name': {'key': 'name', 'type': 'str'},
22051        'type': {'key': 'type', 'type': 'str'},
22052        'location': {'key': 'location', 'type': 'str'},
22053        'tags': {'key': 'tags', 'type': '{str}'},
22054        'etag': {'key': 'etag', 'type': 'str'},
22055        'virtual_wan': {'key': 'properties.virtualWan', 'type': 'SubResource'},
22056        'device_properties': {'key': 'properties.deviceProperties', 'type': 'DeviceProperties'},
22057        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
22058        'site_key': {'key': 'properties.siteKey', 'type': 'str'},
22059        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
22060        'bgp_properties': {'key': 'properties.bgpProperties', 'type': 'BgpSettings'},
22061        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
22062        'is_security_site': {'key': 'properties.isSecuritySite', 'type': 'bool'},
22063        'vpn_site_links': {'key': 'properties.vpnSiteLinks', 'type': '[VpnSiteLink]'},
22064    }
22065
22066    def __init__(
22067        self,
22068        *,
22069        id: Optional[str] = None,
22070        location: Optional[str] = None,
22071        tags: Optional[Dict[str, str]] = None,
22072        virtual_wan: Optional["SubResource"] = None,
22073        device_properties: Optional["DeviceProperties"] = None,
22074        ip_address: Optional[str] = None,
22075        site_key: Optional[str] = None,
22076        address_space: Optional["AddressSpace"] = None,
22077        bgp_properties: Optional["BgpSettings"] = None,
22078        is_security_site: Optional[bool] = None,
22079        vpn_site_links: Optional[List["VpnSiteLink"]] = None,
22080        **kwargs
22081    ):
22082        super(VpnSite, self).__init__(id=id, location=location, tags=tags, **kwargs)
22083        self.etag = None
22084        self.virtual_wan = virtual_wan
22085        self.device_properties = device_properties
22086        self.ip_address = ip_address
22087        self.site_key = site_key
22088        self.address_space = address_space
22089        self.bgp_properties = bgp_properties
22090        self.provisioning_state = None
22091        self.is_security_site = is_security_site
22092        self.vpn_site_links = vpn_site_links
22093
22094
22095class VpnSiteId(msrest.serialization.Model):
22096    """VpnSite Resource.
22097
22098    Variables are only populated by the server, and will be ignored when sending a request.
22099
22100    :ivar vpn_site: The resource-uri of the vpn-site for which config is to be fetched.
22101    :vartype vpn_site: str
22102    """
22103
22104    _validation = {
22105        'vpn_site': {'readonly': True},
22106    }
22107
22108    _attribute_map = {
22109        'vpn_site': {'key': 'vpnSite', 'type': 'str'},
22110    }
22111
22112    def __init__(
22113        self,
22114        **kwargs
22115    ):
22116        super(VpnSiteId, self).__init__(**kwargs)
22117        self.vpn_site = None
22118
22119
22120class VpnSiteLink(SubResource):
22121    """VpnSiteLink Resource.
22122
22123    Variables are only populated by the server, and will be ignored when sending a request.
22124
22125    :param id: Resource ID.
22126    :type id: str
22127    :ivar etag: A unique read-only string that changes whenever the resource is updated.
22128    :vartype etag: str
22129    :param name: The name of the resource that is unique within a resource group. This name can be
22130     used to access the resource.
22131    :type name: str
22132    :ivar type: Resource type.
22133    :vartype type: str
22134    :param link_properties: The link provider properties.
22135    :type link_properties: ~azure.mgmt.network.v2020_04_01.models.VpnLinkProviderProperties
22136    :param ip_address: The ip-address for the vpn-site-link.
22137    :type ip_address: str
22138    :param fqdn: FQDN of vpn-site-link.
22139    :type fqdn: str
22140    :param bgp_properties: The set of bgp properties.
22141    :type bgp_properties: ~azure.mgmt.network.v2020_04_01.models.VpnLinkBgpSettings
22142    :ivar provisioning_state: The provisioning state of the VPN site link resource. Possible values
22143     include: "Succeeded", "Updating", "Deleting", "Failed".
22144    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
22145    """
22146
22147    _validation = {
22148        'etag': {'readonly': True},
22149        'type': {'readonly': True},
22150        'provisioning_state': {'readonly': True},
22151    }
22152
22153    _attribute_map = {
22154        'id': {'key': 'id', 'type': 'str'},
22155        'etag': {'key': 'etag', 'type': 'str'},
22156        'name': {'key': 'name', 'type': 'str'},
22157        'type': {'key': 'type', 'type': 'str'},
22158        'link_properties': {'key': 'properties.linkProperties', 'type': 'VpnLinkProviderProperties'},
22159        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
22160        'fqdn': {'key': 'properties.fqdn', 'type': 'str'},
22161        'bgp_properties': {'key': 'properties.bgpProperties', 'type': 'VpnLinkBgpSettings'},
22162        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
22163    }
22164
22165    def __init__(
22166        self,
22167        *,
22168        id: Optional[str] = None,
22169        name: Optional[str] = None,
22170        link_properties: Optional["VpnLinkProviderProperties"] = None,
22171        ip_address: Optional[str] = None,
22172        fqdn: Optional[str] = None,
22173        bgp_properties: Optional["VpnLinkBgpSettings"] = None,
22174        **kwargs
22175    ):
22176        super(VpnSiteLink, self).__init__(id=id, **kwargs)
22177        self.etag = None
22178        self.name = name
22179        self.type = None
22180        self.link_properties = link_properties
22181        self.ip_address = ip_address
22182        self.fqdn = fqdn
22183        self.bgp_properties = bgp_properties
22184        self.provisioning_state = None
22185
22186
22187class VpnSiteLinkConnection(SubResource):
22188    """VpnSiteLinkConnection Resource.
22189
22190    Variables are only populated by the server, and will be ignored when sending a request.
22191
22192    :param id: Resource ID.
22193    :type id: str
22194    :param name: The name of the resource that is unique within a resource group. This name can be
22195     used to access the resource.
22196    :type name: str
22197    :ivar etag: A unique read-only string that changes whenever the resource is updated.
22198    :vartype etag: str
22199    :ivar type: Resource type.
22200    :vartype type: str
22201    :param vpn_site_link: Id of the connected vpn site link.
22202    :type vpn_site_link: ~azure.mgmt.network.v2020_04_01.models.SubResource
22203    :param routing_weight: Routing weight for vpn connection.
22204    :type routing_weight: int
22205    :ivar connection_status: The connection status. Possible values include: "Unknown",
22206     "Connecting", "Connected", "NotConnected".
22207    :vartype connection_status: str or ~azure.mgmt.network.v2020_04_01.models.VpnConnectionStatus
22208    :param vpn_connection_protocol_type: Connection protocol used for this connection. Possible
22209     values include: "IKEv2", "IKEv1".
22210    :type vpn_connection_protocol_type: str or
22211     ~azure.mgmt.network.v2020_04_01.models.VirtualNetworkGatewayConnectionProtocol
22212    :ivar ingress_bytes_transferred: Ingress bytes transferred.
22213    :vartype ingress_bytes_transferred: long
22214    :ivar egress_bytes_transferred: Egress bytes transferred.
22215    :vartype egress_bytes_transferred: long
22216    :param connection_bandwidth: Expected bandwidth in MBPS.
22217    :type connection_bandwidth: int
22218    :param shared_key: SharedKey for the vpn connection.
22219    :type shared_key: str
22220    :param enable_bgp: EnableBgp flag.
22221    :type enable_bgp: bool
22222    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
22223    :type use_policy_based_traffic_selectors: bool
22224    :param ipsec_policies: The IPSec Policies to be considered by this connection.
22225    :type ipsec_policies: list[~azure.mgmt.network.v2020_04_01.models.IpsecPolicy]
22226    :param enable_rate_limiting: EnableBgp flag.
22227    :type enable_rate_limiting: bool
22228    :param use_local_azure_ip_address: Use local azure ip to initiate connection.
22229    :type use_local_azure_ip_address: bool
22230    :ivar provisioning_state: The provisioning state of the VPN site link connection resource.
22231     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
22232    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
22233    """
22234
22235    _validation = {
22236        'etag': {'readonly': True},
22237        'type': {'readonly': True},
22238        'connection_status': {'readonly': True},
22239        'ingress_bytes_transferred': {'readonly': True},
22240        'egress_bytes_transferred': {'readonly': True},
22241        'provisioning_state': {'readonly': True},
22242    }
22243
22244    _attribute_map = {
22245        'id': {'key': 'id', 'type': 'str'},
22246        'name': {'key': 'name', 'type': 'str'},
22247        'etag': {'key': 'etag', 'type': 'str'},
22248        'type': {'key': 'type', 'type': 'str'},
22249        'vpn_site_link': {'key': 'properties.vpnSiteLink', 'type': 'SubResource'},
22250        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
22251        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
22252        'vpn_connection_protocol_type': {'key': 'properties.vpnConnectionProtocolType', 'type': 'str'},
22253        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
22254        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
22255        'connection_bandwidth': {'key': 'properties.connectionBandwidth', 'type': 'int'},
22256        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
22257        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
22258        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
22259        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
22260        'enable_rate_limiting': {'key': 'properties.enableRateLimiting', 'type': 'bool'},
22261        'use_local_azure_ip_address': {'key': 'properties.useLocalAzureIpAddress', 'type': 'bool'},
22262        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
22263    }
22264
22265    def __init__(
22266        self,
22267        *,
22268        id: Optional[str] = None,
22269        name: Optional[str] = None,
22270        vpn_site_link: Optional["SubResource"] = None,
22271        routing_weight: Optional[int] = None,
22272        vpn_connection_protocol_type: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None,
22273        connection_bandwidth: Optional[int] = None,
22274        shared_key: Optional[str] = None,
22275        enable_bgp: Optional[bool] = None,
22276        use_policy_based_traffic_selectors: Optional[bool] = None,
22277        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
22278        enable_rate_limiting: Optional[bool] = None,
22279        use_local_azure_ip_address: Optional[bool] = None,
22280        **kwargs
22281    ):
22282        super(VpnSiteLinkConnection, self).__init__(id=id, **kwargs)
22283        self.name = name
22284        self.etag = None
22285        self.type = None
22286        self.vpn_site_link = vpn_site_link
22287        self.routing_weight = routing_weight
22288        self.connection_status = None
22289        self.vpn_connection_protocol_type = vpn_connection_protocol_type
22290        self.ingress_bytes_transferred = None
22291        self.egress_bytes_transferred = None
22292        self.connection_bandwidth = connection_bandwidth
22293        self.shared_key = shared_key
22294        self.enable_bgp = enable_bgp
22295        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
22296        self.ipsec_policies = ipsec_policies
22297        self.enable_rate_limiting = enable_rate_limiting
22298        self.use_local_azure_ip_address = use_local_azure_ip_address
22299        self.provisioning_state = None
22300
22301
22302class WebApplicationFirewallCustomRule(msrest.serialization.Model):
22303    """Defines contents of a web application rule.
22304
22305    Variables are only populated by the server, and will be ignored when sending a request.
22306
22307    All required parameters must be populated in order to send to Azure.
22308
22309    :param name: The name of the resource that is unique within a policy. This name can be used to
22310     access the resource.
22311    :type name: str
22312    :ivar etag: A unique read-only string that changes whenever the resource is updated.
22313    :vartype etag: str
22314    :param priority: Required. Priority of the rule. Rules with a lower value will be evaluated
22315     before rules with a higher value.
22316    :type priority: int
22317    :param rule_type: Required. The rule type. Possible values include: "MatchRule", "Invalid".
22318    :type rule_type: str or ~azure.mgmt.network.v2020_04_01.models.WebApplicationFirewallRuleType
22319    :param match_conditions: Required. List of match conditions.
22320    :type match_conditions: list[~azure.mgmt.network.v2020_04_01.models.MatchCondition]
22321    :param action: Required. Type of Actions. Possible values include: "Allow", "Block", "Log".
22322    :type action: str or ~azure.mgmt.network.v2020_04_01.models.WebApplicationFirewallAction
22323    """
22324
22325    _validation = {
22326        'name': {'max_length': 128, 'min_length': 0},
22327        'etag': {'readonly': True},
22328        'priority': {'required': True},
22329        'rule_type': {'required': True},
22330        'match_conditions': {'required': True},
22331        'action': {'required': True},
22332    }
22333
22334    _attribute_map = {
22335        'name': {'key': 'name', 'type': 'str'},
22336        'etag': {'key': 'etag', 'type': 'str'},
22337        'priority': {'key': 'priority', 'type': 'int'},
22338        'rule_type': {'key': 'ruleType', 'type': 'str'},
22339        'match_conditions': {'key': 'matchConditions', 'type': '[MatchCondition]'},
22340        'action': {'key': 'action', 'type': 'str'},
22341    }
22342
22343    def __init__(
22344        self,
22345        *,
22346        priority: int,
22347        rule_type: Union[str, "WebApplicationFirewallRuleType"],
22348        match_conditions: List["MatchCondition"],
22349        action: Union[str, "WebApplicationFirewallAction"],
22350        name: Optional[str] = None,
22351        **kwargs
22352    ):
22353        super(WebApplicationFirewallCustomRule, self).__init__(**kwargs)
22354        self.name = name
22355        self.etag = None
22356        self.priority = priority
22357        self.rule_type = rule_type
22358        self.match_conditions = match_conditions
22359        self.action = action
22360
22361
22362class WebApplicationFirewallPolicy(Resource):
22363    """Defines web application firewall policy.
22364
22365    Variables are only populated by the server, and will be ignored when sending a request.
22366
22367    :param id: Resource ID.
22368    :type id: str
22369    :ivar name: Resource name.
22370    :vartype name: str
22371    :ivar type: Resource type.
22372    :vartype type: str
22373    :param location: Resource location.
22374    :type location: str
22375    :param tags: A set of tags. Resource tags.
22376    :type tags: dict[str, str]
22377    :ivar etag: A unique read-only string that changes whenever the resource is updated.
22378    :vartype etag: str
22379    :param policy_settings: The PolicySettings for policy.
22380    :type policy_settings: ~azure.mgmt.network.v2020_04_01.models.PolicySettings
22381    :param custom_rules: The custom rules inside the policy.
22382    :type custom_rules:
22383     list[~azure.mgmt.network.v2020_04_01.models.WebApplicationFirewallCustomRule]
22384    :ivar application_gateways: A collection of references to application gateways.
22385    :vartype application_gateways: list[~azure.mgmt.network.v2020_04_01.models.ApplicationGateway]
22386    :ivar provisioning_state: The provisioning state of the web application firewall policy
22387     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
22388    :vartype provisioning_state: str or ~azure.mgmt.network.v2020_04_01.models.ProvisioningState
22389    :ivar resource_state: Resource status of the policy. Possible values include: "Creating",
22390     "Enabling", "Enabled", "Disabling", "Disabled", "Deleting".
22391    :vartype resource_state: str or
22392     ~azure.mgmt.network.v2020_04_01.models.WebApplicationFirewallPolicyResourceState
22393    :param managed_rules: Describes the managedRules structure.
22394    :type managed_rules: ~azure.mgmt.network.v2020_04_01.models.ManagedRulesDefinition
22395    :ivar http_listeners: A collection of references to application gateway http listeners.
22396    :vartype http_listeners: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
22397    :ivar path_based_rules: A collection of references to application gateway path rules.
22398    :vartype path_based_rules: list[~azure.mgmt.network.v2020_04_01.models.SubResource]
22399    """
22400
22401    _validation = {
22402        'name': {'readonly': True},
22403        'type': {'readonly': True},
22404        'etag': {'readonly': True},
22405        'application_gateways': {'readonly': True},
22406        'provisioning_state': {'readonly': True},
22407        'resource_state': {'readonly': True},
22408        'http_listeners': {'readonly': True},
22409        'path_based_rules': {'readonly': True},
22410    }
22411
22412    _attribute_map = {
22413        'id': {'key': 'id', 'type': 'str'},
22414        'name': {'key': 'name', 'type': 'str'},
22415        'type': {'key': 'type', 'type': 'str'},
22416        'location': {'key': 'location', 'type': 'str'},
22417        'tags': {'key': 'tags', 'type': '{str}'},
22418        'etag': {'key': 'etag', 'type': 'str'},
22419        'policy_settings': {'key': 'properties.policySettings', 'type': 'PolicySettings'},
22420        'custom_rules': {'key': 'properties.customRules', 'type': '[WebApplicationFirewallCustomRule]'},
22421        'application_gateways': {'key': 'properties.applicationGateways', 'type': '[ApplicationGateway]'},
22422        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
22423        'resource_state': {'key': 'properties.resourceState', 'type': 'str'},
22424        'managed_rules': {'key': 'properties.managedRules', 'type': 'ManagedRulesDefinition'},
22425        'http_listeners': {'key': 'properties.httpListeners', 'type': '[SubResource]'},
22426        'path_based_rules': {'key': 'properties.pathBasedRules', 'type': '[SubResource]'},
22427    }
22428
22429    def __init__(
22430        self,
22431        *,
22432        id: Optional[str] = None,
22433        location: Optional[str] = None,
22434        tags: Optional[Dict[str, str]] = None,
22435        policy_settings: Optional["PolicySettings"] = None,
22436        custom_rules: Optional[List["WebApplicationFirewallCustomRule"]] = None,
22437        managed_rules: Optional["ManagedRulesDefinition"] = None,
22438        **kwargs
22439    ):
22440        super(WebApplicationFirewallPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs)
22441        self.etag = None
22442        self.policy_settings = policy_settings
22443        self.custom_rules = custom_rules
22444        self.application_gateways = None
22445        self.provisioning_state = None
22446        self.resource_state = None
22447        self.managed_rules = managed_rules
22448        self.http_listeners = None
22449        self.path_based_rules = None
22450
22451
22452class WebApplicationFirewallPolicyListResult(msrest.serialization.Model):
22453    """Result of the request to list WebApplicationFirewallPolicies. It contains a list of WebApplicationFirewallPolicy objects and a URL link to get the next set of results.
22454
22455    Variables are only populated by the server, and will be ignored when sending a request.
22456
22457    :ivar value: List of WebApplicationFirewallPolicies within a resource group.
22458    :vartype value: list[~azure.mgmt.network.v2020_04_01.models.WebApplicationFirewallPolicy]
22459    :ivar next_link: URL to get the next set of WebApplicationFirewallPolicy objects if there are
22460     any.
22461    :vartype next_link: str
22462    """
22463
22464    _validation = {
22465        'value': {'readonly': True},
22466        'next_link': {'readonly': True},
22467    }
22468
22469    _attribute_map = {
22470        'value': {'key': 'value', 'type': '[WebApplicationFirewallPolicy]'},
22471        'next_link': {'key': 'nextLink', 'type': 'str'},
22472    }
22473
22474    def __init__(
22475        self,
22476        **kwargs
22477    ):
22478        super(WebApplicationFirewallPolicyListResult, self).__init__(**kwargs)
22479        self.value = None
22480        self.next_link = None
22481