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.v2019_12_01.models.ManagedServiceIdentity
138    :param sku: SKU of the application gateway resource.
139    :type sku: ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySku
140    :param ssl_policy: SSL policy of the application gateway resource.
141    :type ssl_policy: ~azure.mgmt.network.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_01.models.ApplicationGatewayFrontendPort]
176    :param probes: Probes of the application gateway resource.
177    :type probes: list[~azure.mgmt.network.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_01.models.ApplicationGatewayRedirectConfiguration]
208    :param web_application_firewall_configuration: Web application firewall configuration.
209    :type web_application_firewall_configuration:
210     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayWebApplicationFirewallConfiguration
211    :param firewall_policy: Reference to the FirewallPolicy resource.
212    :type firewall_policy: ~azure.mgmt.network.v2019_12_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.v2019_12_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.v2019_12_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.v2019_12_01.models.ApplicationGatewayCustomError]
229    """
230
231    _validation = {
232        'name': {'readonly': True},
233        'type': {'readonly': True},
234        'etag': {'readonly': True},
235        'operational_state': {'readonly': True},
236        'resource_guid': {'readonly': True},
237        'provisioning_state': {'readonly': True},
238    }
239
240    _attribute_map = {
241        'id': {'key': 'id', 'type': 'str'},
242        'name': {'key': 'name', 'type': 'str'},
243        'type': {'key': 'type', 'type': 'str'},
244        'location': {'key': 'location', 'type': 'str'},
245        'tags': {'key': 'tags', 'type': '{str}'},
246        'etag': {'key': 'etag', 'type': 'str'},
247        'zones': {'key': 'zones', 'type': '[str]'},
248        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
249        'sku': {'key': 'properties.sku', 'type': 'ApplicationGatewaySku'},
250        'ssl_policy': {'key': 'properties.sslPolicy', 'type': 'ApplicationGatewaySslPolicy'},
251        'operational_state': {'key': 'properties.operationalState', 'type': 'str'},
252        'gateway_ip_configurations': {'key': 'properties.gatewayIPConfigurations', 'type': '[ApplicationGatewayIPConfiguration]'},
253        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[ApplicationGatewayAuthenticationCertificate]'},
254        'trusted_root_certificates': {'key': 'properties.trustedRootCertificates', 'type': '[ApplicationGatewayTrustedRootCertificate]'},
255        'ssl_certificates': {'key': 'properties.sslCertificates', 'type': '[ApplicationGatewaySslCertificate]'},
256        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[ApplicationGatewayFrontendIPConfiguration]'},
257        'frontend_ports': {'key': 'properties.frontendPorts', 'type': '[ApplicationGatewayFrontendPort]'},
258        'probes': {'key': 'properties.probes', 'type': '[ApplicationGatewayProbe]'},
259        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
260        'backend_http_settings_collection': {'key': 'properties.backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHttpSettings]'},
261        'http_listeners': {'key': 'properties.httpListeners', 'type': '[ApplicationGatewayHttpListener]'},
262        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[ApplicationGatewayUrlPathMap]'},
263        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[ApplicationGatewayRequestRoutingRule]'},
264        'rewrite_rule_sets': {'key': 'properties.rewriteRuleSets', 'type': '[ApplicationGatewayRewriteRuleSet]'},
265        'redirect_configurations': {'key': 'properties.redirectConfigurations', 'type': '[ApplicationGatewayRedirectConfiguration]'},
266        'web_application_firewall_configuration': {'key': 'properties.webApplicationFirewallConfiguration', 'type': 'ApplicationGatewayWebApplicationFirewallConfiguration'},
267        'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'},
268        'enable_http2': {'key': 'properties.enableHttp2', 'type': 'bool'},
269        'enable_fips': {'key': 'properties.enableFips', 'type': 'bool'},
270        'autoscale_configuration': {'key': 'properties.autoscaleConfiguration', 'type': 'ApplicationGatewayAutoscaleConfiguration'},
271        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
272        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
273        'custom_error_configurations': {'key': 'properties.customErrorConfigurations', 'type': '[ApplicationGatewayCustomError]'},
274    }
275
276    def __init__(
277        self,
278        *,
279        id: Optional[str] = None,
280        location: Optional[str] = None,
281        tags: Optional[Dict[str, str]] = None,
282        zones: Optional[List[str]] = None,
283        identity: Optional["ManagedServiceIdentity"] = None,
284        sku: Optional["ApplicationGatewaySku"] = None,
285        ssl_policy: Optional["ApplicationGatewaySslPolicy"] = None,
286        gateway_ip_configurations: Optional[List["ApplicationGatewayIPConfiguration"]] = None,
287        authentication_certificates: Optional[List["ApplicationGatewayAuthenticationCertificate"]] = None,
288        trusted_root_certificates: Optional[List["ApplicationGatewayTrustedRootCertificate"]] = None,
289        ssl_certificates: Optional[List["ApplicationGatewaySslCertificate"]] = None,
290        frontend_ip_configurations: Optional[List["ApplicationGatewayFrontendIPConfiguration"]] = None,
291        frontend_ports: Optional[List["ApplicationGatewayFrontendPort"]] = None,
292        probes: Optional[List["ApplicationGatewayProbe"]] = None,
293        backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None,
294        backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHttpSettings"]] = None,
295        http_listeners: Optional[List["ApplicationGatewayHttpListener"]] = None,
296        url_path_maps: Optional[List["ApplicationGatewayUrlPathMap"]] = None,
297        request_routing_rules: Optional[List["ApplicationGatewayRequestRoutingRule"]] = None,
298        rewrite_rule_sets: Optional[List["ApplicationGatewayRewriteRuleSet"]] = None,
299        redirect_configurations: Optional[List["ApplicationGatewayRedirectConfiguration"]] = None,
300        web_application_firewall_configuration: Optional["ApplicationGatewayWebApplicationFirewallConfiguration"] = None,
301        firewall_policy: Optional["SubResource"] = None,
302        enable_http2: Optional[bool] = None,
303        enable_fips: Optional[bool] = None,
304        autoscale_configuration: Optional["ApplicationGatewayAutoscaleConfiguration"] = None,
305        custom_error_configurations: Optional[List["ApplicationGatewayCustomError"]] = None,
306        **kwargs
307    ):
308        super(ApplicationGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
309        self.etag = None
310        self.zones = zones
311        self.identity = identity
312        self.sku = sku
313        self.ssl_policy = ssl_policy
314        self.operational_state = None
315        self.gateway_ip_configurations = gateway_ip_configurations
316        self.authentication_certificates = authentication_certificates
317        self.trusted_root_certificates = trusted_root_certificates
318        self.ssl_certificates = ssl_certificates
319        self.frontend_ip_configurations = frontend_ip_configurations
320        self.frontend_ports = frontend_ports
321        self.probes = probes
322        self.backend_address_pools = backend_address_pools
323        self.backend_http_settings_collection = backend_http_settings_collection
324        self.http_listeners = http_listeners
325        self.url_path_maps = url_path_maps
326        self.request_routing_rules = request_routing_rules
327        self.rewrite_rule_sets = rewrite_rule_sets
328        self.redirect_configurations = redirect_configurations
329        self.web_application_firewall_configuration = web_application_firewall_configuration
330        self.firewall_policy = firewall_policy
331        self.enable_http2 = enable_http2
332        self.enable_fips = enable_fips
333        self.autoscale_configuration = autoscale_configuration
334        self.resource_guid = None
335        self.provisioning_state = None
336        self.custom_error_configurations = custom_error_configurations
337
338
339class SubResource(msrest.serialization.Model):
340    """Reference to another subresource.
341
342    :param id: Resource ID.
343    :type id: str
344    """
345
346    _attribute_map = {
347        'id': {'key': 'id', 'type': 'str'},
348    }
349
350    def __init__(
351        self,
352        *,
353        id: Optional[str] = None,
354        **kwargs
355    ):
356        super(SubResource, self).__init__(**kwargs)
357        self.id = id
358
359
360class ApplicationGatewayAuthenticationCertificate(SubResource):
361    """Authentication certificates of an application gateway.
362
363    Variables are only populated by the server, and will be ignored when sending a request.
364
365    :param id: Resource ID.
366    :type id: str
367    :param name: Name of the authentication certificate that is unique within an Application
368     Gateway.
369    :type name: str
370    :ivar etag: A unique read-only string that changes whenever the resource is updated.
371    :vartype etag: str
372    :ivar type: Type of the resource.
373    :vartype type: str
374    :param data: Certificate public data.
375    :type data: str
376    :ivar provisioning_state: The provisioning state of the authentication certificate resource.
377     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
378    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
379    """
380
381    _validation = {
382        'etag': {'readonly': True},
383        'type': {'readonly': True},
384        'provisioning_state': {'readonly': True},
385    }
386
387    _attribute_map = {
388        'id': {'key': 'id', 'type': 'str'},
389        'name': {'key': 'name', 'type': 'str'},
390        'etag': {'key': 'etag', 'type': 'str'},
391        'type': {'key': 'type', 'type': 'str'},
392        'data': {'key': 'properties.data', 'type': 'str'},
393        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
394    }
395
396    def __init__(
397        self,
398        *,
399        id: Optional[str] = None,
400        name: Optional[str] = None,
401        data: Optional[str] = None,
402        **kwargs
403    ):
404        super(ApplicationGatewayAuthenticationCertificate, self).__init__(id=id, **kwargs)
405        self.name = name
406        self.etag = None
407        self.type = None
408        self.data = data
409        self.provisioning_state = None
410
411
412class ApplicationGatewayAutoscaleConfiguration(msrest.serialization.Model):
413    """Application Gateway autoscale configuration.
414
415    All required parameters must be populated in order to send to Azure.
416
417    :param min_capacity: Required. Lower bound on number of Application Gateway capacity.
418    :type min_capacity: int
419    :param max_capacity: Upper bound on number of Application Gateway capacity.
420    :type max_capacity: int
421    """
422
423    _validation = {
424        'min_capacity': {'required': True, 'minimum': 0},
425        'max_capacity': {'minimum': 2},
426    }
427
428    _attribute_map = {
429        'min_capacity': {'key': 'minCapacity', 'type': 'int'},
430        'max_capacity': {'key': 'maxCapacity', 'type': 'int'},
431    }
432
433    def __init__(
434        self,
435        *,
436        min_capacity: int,
437        max_capacity: Optional[int] = None,
438        **kwargs
439    ):
440        super(ApplicationGatewayAutoscaleConfiguration, self).__init__(**kwargs)
441        self.min_capacity = min_capacity
442        self.max_capacity = max_capacity
443
444
445class ApplicationGatewayAvailableSslOptions(Resource):
446    """Response for ApplicationGatewayAvailableSslOptions API service call.
447
448    Variables are only populated by the server, and will be ignored when sending a request.
449
450    :param id: Resource ID.
451    :type id: str
452    :ivar name: Resource name.
453    :vartype name: str
454    :ivar type: Resource type.
455    :vartype type: str
456    :param location: Resource location.
457    :type location: str
458    :param tags: A set of tags. Resource tags.
459    :type tags: dict[str, str]
460    :param predefined_policies: List of available Ssl predefined policy.
461    :type predefined_policies: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
462    :param default_policy: Name of the Ssl predefined policy applied by default to application
463     gateway. Possible values include: "AppGwSslPolicy20150501", "AppGwSslPolicy20170401",
464     "AppGwSslPolicy20170401S".
465    :type default_policy: str or
466     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslPolicyName
467    :param available_cipher_suites: List of available Ssl cipher suites.
468    :type available_cipher_suites: list[str or
469     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslCipherSuite]
470    :param available_protocols: List of available Ssl protocols.
471    :type available_protocols: list[str or
472     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslProtocol]
473    """
474
475    _validation = {
476        'name': {'readonly': True},
477        'type': {'readonly': True},
478    }
479
480    _attribute_map = {
481        'id': {'key': 'id', 'type': 'str'},
482        'name': {'key': 'name', 'type': 'str'},
483        'type': {'key': 'type', 'type': 'str'},
484        'location': {'key': 'location', 'type': 'str'},
485        'tags': {'key': 'tags', 'type': '{str}'},
486        'predefined_policies': {'key': 'properties.predefinedPolicies', 'type': '[SubResource]'},
487        'default_policy': {'key': 'properties.defaultPolicy', 'type': 'str'},
488        'available_cipher_suites': {'key': 'properties.availableCipherSuites', 'type': '[str]'},
489        'available_protocols': {'key': 'properties.availableProtocols', 'type': '[str]'},
490    }
491
492    def __init__(
493        self,
494        *,
495        id: Optional[str] = None,
496        location: Optional[str] = None,
497        tags: Optional[Dict[str, str]] = None,
498        predefined_policies: Optional[List["SubResource"]] = None,
499        default_policy: Optional[Union[str, "ApplicationGatewaySslPolicyName"]] = None,
500        available_cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
501        available_protocols: Optional[List[Union[str, "ApplicationGatewaySslProtocol"]]] = None,
502        **kwargs
503    ):
504        super(ApplicationGatewayAvailableSslOptions, self).__init__(id=id, location=location, tags=tags, **kwargs)
505        self.predefined_policies = predefined_policies
506        self.default_policy = default_policy
507        self.available_cipher_suites = available_cipher_suites
508        self.available_protocols = available_protocols
509
510
511class ApplicationGatewayAvailableSslPredefinedPolicies(msrest.serialization.Model):
512    """Response for ApplicationGatewayAvailableSslOptions API service call.
513
514    :param value: List of available Ssl predefined policy.
515    :type value: list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslPredefinedPolicy]
516    :param next_link: URL to get the next set of results.
517    :type next_link: str
518    """
519
520    _attribute_map = {
521        'value': {'key': 'value', 'type': '[ApplicationGatewaySslPredefinedPolicy]'},
522        'next_link': {'key': 'nextLink', 'type': 'str'},
523    }
524
525    def __init__(
526        self,
527        *,
528        value: Optional[List["ApplicationGatewaySslPredefinedPolicy"]] = None,
529        next_link: Optional[str] = None,
530        **kwargs
531    ):
532        super(ApplicationGatewayAvailableSslPredefinedPolicies, self).__init__(**kwargs)
533        self.value = value
534        self.next_link = next_link
535
536
537class ApplicationGatewayAvailableWafRuleSetsResult(msrest.serialization.Model):
538    """Response for ApplicationGatewayAvailableWafRuleSets API service call.
539
540    :param value: The list of application gateway rule sets.
541    :type value: list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayFirewallRuleSet]
542    """
543
544    _attribute_map = {
545        'value': {'key': 'value', 'type': '[ApplicationGatewayFirewallRuleSet]'},
546    }
547
548    def __init__(
549        self,
550        *,
551        value: Optional[List["ApplicationGatewayFirewallRuleSet"]] = None,
552        **kwargs
553    ):
554        super(ApplicationGatewayAvailableWafRuleSetsResult, self).__init__(**kwargs)
555        self.value = value
556
557
558class ApplicationGatewayBackendAddress(msrest.serialization.Model):
559    """Backend address of an application gateway.
560
561    :param fqdn: Fully qualified domain name (FQDN).
562    :type fqdn: str
563    :param ip_address: IP address.
564    :type ip_address: str
565    """
566
567    _attribute_map = {
568        'fqdn': {'key': 'fqdn', 'type': 'str'},
569        'ip_address': {'key': 'ipAddress', 'type': 'str'},
570    }
571
572    def __init__(
573        self,
574        *,
575        fqdn: Optional[str] = None,
576        ip_address: Optional[str] = None,
577        **kwargs
578    ):
579        super(ApplicationGatewayBackendAddress, self).__init__(**kwargs)
580        self.fqdn = fqdn
581        self.ip_address = ip_address
582
583
584class ApplicationGatewayBackendAddressPool(SubResource):
585    """Backend Address Pool of an application gateway.
586
587    Variables are only populated by the server, and will be ignored when sending a request.
588
589    :param id: Resource ID.
590    :type id: str
591    :param name: Name of the backend address pool that is unique within an Application Gateway.
592    :type name: str
593    :ivar etag: A unique read-only string that changes whenever the resource is updated.
594    :vartype etag: str
595    :ivar type: Type of the resource.
596    :vartype type: str
597    :ivar backend_ip_configurations: Collection of references to IPs defined in network interfaces.
598    :vartype backend_ip_configurations:
599     list[~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceIPConfiguration]
600    :param backend_addresses: Backend addresses.
601    :type backend_addresses:
602     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayBackendAddress]
603    :ivar provisioning_state: The provisioning state of the backend address pool resource. Possible
604     values include: "Succeeded", "Updating", "Deleting", "Failed".
605    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
606    """
607
608    _validation = {
609        'etag': {'readonly': True},
610        'type': {'readonly': True},
611        'backend_ip_configurations': {'readonly': True},
612        'provisioning_state': {'readonly': True},
613    }
614
615    _attribute_map = {
616        'id': {'key': 'id', 'type': 'str'},
617        'name': {'key': 'name', 'type': 'str'},
618        'etag': {'key': 'etag', 'type': 'str'},
619        'type': {'key': 'type', 'type': 'str'},
620        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
621        'backend_addresses': {'key': 'properties.backendAddresses', 'type': '[ApplicationGatewayBackendAddress]'},
622        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
623    }
624
625    def __init__(
626        self,
627        *,
628        id: Optional[str] = None,
629        name: Optional[str] = None,
630        backend_addresses: Optional[List["ApplicationGatewayBackendAddress"]] = None,
631        **kwargs
632    ):
633        super(ApplicationGatewayBackendAddressPool, self).__init__(id=id, **kwargs)
634        self.name = name
635        self.etag = None
636        self.type = None
637        self.backend_ip_configurations = None
638        self.backend_addresses = backend_addresses
639        self.provisioning_state = None
640
641
642class ApplicationGatewayBackendHealth(msrest.serialization.Model):
643    """Response for ApplicationGatewayBackendHealth API service call.
644
645    :param backend_address_pools: A list of ApplicationGatewayBackendHealthPool resources.
646    :type backend_address_pools:
647     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayBackendHealthPool]
648    """
649
650    _attribute_map = {
651        'backend_address_pools': {'key': 'backendAddressPools', 'type': '[ApplicationGatewayBackendHealthPool]'},
652    }
653
654    def __init__(
655        self,
656        *,
657        backend_address_pools: Optional[List["ApplicationGatewayBackendHealthPool"]] = None,
658        **kwargs
659    ):
660        super(ApplicationGatewayBackendHealth, self).__init__(**kwargs)
661        self.backend_address_pools = backend_address_pools
662
663
664class ApplicationGatewayBackendHealthHttpSettings(msrest.serialization.Model):
665    """Application gateway BackendHealthHttp settings.
666
667    :param backend_http_settings: Reference to an ApplicationGatewayBackendHttpSettings resource.
668    :type backend_http_settings:
669     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayBackendHttpSettings
670    :param servers: List of ApplicationGatewayBackendHealthServer resources.
671    :type servers:
672     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayBackendHealthServer]
673    """
674
675    _attribute_map = {
676        'backend_http_settings': {'key': 'backendHttpSettings', 'type': 'ApplicationGatewayBackendHttpSettings'},
677        'servers': {'key': 'servers', 'type': '[ApplicationGatewayBackendHealthServer]'},
678    }
679
680    def __init__(
681        self,
682        *,
683        backend_http_settings: Optional["ApplicationGatewayBackendHttpSettings"] = None,
684        servers: Optional[List["ApplicationGatewayBackendHealthServer"]] = None,
685        **kwargs
686    ):
687        super(ApplicationGatewayBackendHealthHttpSettings, self).__init__(**kwargs)
688        self.backend_http_settings = backend_http_settings
689        self.servers = servers
690
691
692class ApplicationGatewayBackendHealthOnDemand(msrest.serialization.Model):
693    """Result of on demand test probe.
694
695    :param backend_address_pool: Reference to an ApplicationGatewayBackendAddressPool resource.
696    :type backend_address_pool:
697     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayBackendAddressPool
698    :param backend_health_http_settings: Application gateway BackendHealthHttp settings.
699    :type backend_health_http_settings:
700     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayBackendHealthHttpSettings
701    """
702
703    _attribute_map = {
704        'backend_address_pool': {'key': 'backendAddressPool', 'type': 'ApplicationGatewayBackendAddressPool'},
705        'backend_health_http_settings': {'key': 'backendHealthHttpSettings', 'type': 'ApplicationGatewayBackendHealthHttpSettings'},
706    }
707
708    def __init__(
709        self,
710        *,
711        backend_address_pool: Optional["ApplicationGatewayBackendAddressPool"] = None,
712        backend_health_http_settings: Optional["ApplicationGatewayBackendHealthHttpSettings"] = None,
713        **kwargs
714    ):
715        super(ApplicationGatewayBackendHealthOnDemand, self).__init__(**kwargs)
716        self.backend_address_pool = backend_address_pool
717        self.backend_health_http_settings = backend_health_http_settings
718
719
720class ApplicationGatewayBackendHealthPool(msrest.serialization.Model):
721    """Application gateway BackendHealth pool.
722
723    :param backend_address_pool: Reference to an ApplicationGatewayBackendAddressPool resource.
724    :type backend_address_pool:
725     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayBackendAddressPool
726    :param backend_http_settings_collection: List of ApplicationGatewayBackendHealthHttpSettings
727     resources.
728    :type backend_http_settings_collection:
729     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayBackendHealthHttpSettings]
730    """
731
732    _attribute_map = {
733        'backend_address_pool': {'key': 'backendAddressPool', 'type': 'ApplicationGatewayBackendAddressPool'},
734        'backend_http_settings_collection': {'key': 'backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHealthHttpSettings]'},
735    }
736
737    def __init__(
738        self,
739        *,
740        backend_address_pool: Optional["ApplicationGatewayBackendAddressPool"] = None,
741        backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHealthHttpSettings"]] = None,
742        **kwargs
743    ):
744        super(ApplicationGatewayBackendHealthPool, self).__init__(**kwargs)
745        self.backend_address_pool = backend_address_pool
746        self.backend_http_settings_collection = backend_http_settings_collection
747
748
749class ApplicationGatewayBackendHealthServer(msrest.serialization.Model):
750    """Application gateway backendhealth http settings.
751
752    :param address: IP address or FQDN of backend server.
753    :type address: str
754    :param ip_configuration: Reference to IP configuration of backend server.
755    :type ip_configuration: ~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceIPConfiguration
756    :param health: Health of backend server. Possible values include: "Unknown", "Up", "Down",
757     "Partial", "Draining".
758    :type health: str or
759     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayBackendHealthServerHealth
760    :param health_probe_log: Health Probe Log.
761    :type health_probe_log: str
762    """
763
764    _attribute_map = {
765        'address': {'key': 'address', 'type': 'str'},
766        'ip_configuration': {'key': 'ipConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
767        'health': {'key': 'health', 'type': 'str'},
768        'health_probe_log': {'key': 'healthProbeLog', 'type': 'str'},
769    }
770
771    def __init__(
772        self,
773        *,
774        address: Optional[str] = None,
775        ip_configuration: Optional["NetworkInterfaceIPConfiguration"] = None,
776        health: Optional[Union[str, "ApplicationGatewayBackendHealthServerHealth"]] = None,
777        health_probe_log: Optional[str] = None,
778        **kwargs
779    ):
780        super(ApplicationGatewayBackendHealthServer, self).__init__(**kwargs)
781        self.address = address
782        self.ip_configuration = ip_configuration
783        self.health = health
784        self.health_probe_log = health_probe_log
785
786
787class ApplicationGatewayBackendHttpSettings(SubResource):
788    """Backend address pool settings of an application gateway.
789
790    Variables are only populated by the server, and will be ignored when sending a request.
791
792    :param id: Resource ID.
793    :type id: str
794    :param name: Name of the backend http settings that is unique within an Application Gateway.
795    :type name: str
796    :ivar etag: A unique read-only string that changes whenever the resource is updated.
797    :vartype etag: str
798    :ivar type: Type of the resource.
799    :vartype type: str
800    :param port: The destination port on the backend.
801    :type port: int
802    :param protocol: The protocol used to communicate with the backend. Possible values include:
803     "Http", "Https".
804    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayProtocol
805    :param cookie_based_affinity: Cookie based affinity. Possible values include: "Enabled",
806     "Disabled".
807    :type cookie_based_affinity: str or
808     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayCookieBasedAffinity
809    :param request_timeout: Request timeout in seconds. Application Gateway will fail the request
810     if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400
811     seconds.
812    :type request_timeout: int
813    :param probe: Probe resource of an application gateway.
814    :type probe: ~azure.mgmt.network.v2019_12_01.models.SubResource
815    :param authentication_certificates: Array of references to application gateway authentication
816     certificates.
817    :type authentication_certificates: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
818    :param trusted_root_certificates: Array of references to application gateway trusted root
819     certificates.
820    :type trusted_root_certificates: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
821    :param connection_draining: Connection draining of the backend http settings resource.
822    :type connection_draining:
823     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayConnectionDraining
824    :param host_name: Host header to be sent to the backend servers.
825    :type host_name: str
826    :param pick_host_name_from_backend_address: Whether to pick host header should be picked from
827     the host name of the backend server. Default value is false.
828    :type pick_host_name_from_backend_address: bool
829    :param affinity_cookie_name: Cookie name to use for the affinity cookie.
830    :type affinity_cookie_name: str
831    :param probe_enabled: Whether the probe is enabled. Default value is false.
832    :type probe_enabled: bool
833    :param path: Path which should be used as a prefix for all HTTP requests. Null means no path
834     will be prefixed. Default value is null.
835    :type path: str
836    :ivar provisioning_state: The provisioning state of the backend HTTP settings resource.
837     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
838    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
839    """
840
841    _validation = {
842        'etag': {'readonly': True},
843        'type': {'readonly': True},
844        'provisioning_state': {'readonly': True},
845    }
846
847    _attribute_map = {
848        'id': {'key': 'id', 'type': 'str'},
849        'name': {'key': 'name', 'type': 'str'},
850        'etag': {'key': 'etag', 'type': 'str'},
851        'type': {'key': 'type', 'type': 'str'},
852        'port': {'key': 'properties.port', 'type': 'int'},
853        'protocol': {'key': 'properties.protocol', 'type': 'str'},
854        'cookie_based_affinity': {'key': 'properties.cookieBasedAffinity', 'type': 'str'},
855        'request_timeout': {'key': 'properties.requestTimeout', 'type': 'int'},
856        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
857        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[SubResource]'},
858        'trusted_root_certificates': {'key': 'properties.trustedRootCertificates', 'type': '[SubResource]'},
859        'connection_draining': {'key': 'properties.connectionDraining', 'type': 'ApplicationGatewayConnectionDraining'},
860        'host_name': {'key': 'properties.hostName', 'type': 'str'},
861        'pick_host_name_from_backend_address': {'key': 'properties.pickHostNameFromBackendAddress', 'type': 'bool'},
862        'affinity_cookie_name': {'key': 'properties.affinityCookieName', 'type': 'str'},
863        'probe_enabled': {'key': 'properties.probeEnabled', 'type': 'bool'},
864        'path': {'key': 'properties.path', 'type': 'str'},
865        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
866    }
867
868    def __init__(
869        self,
870        *,
871        id: Optional[str] = None,
872        name: Optional[str] = None,
873        port: Optional[int] = None,
874        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
875        cookie_based_affinity: Optional[Union[str, "ApplicationGatewayCookieBasedAffinity"]] = None,
876        request_timeout: Optional[int] = None,
877        probe: Optional["SubResource"] = None,
878        authentication_certificates: Optional[List["SubResource"]] = None,
879        trusted_root_certificates: Optional[List["SubResource"]] = None,
880        connection_draining: Optional["ApplicationGatewayConnectionDraining"] = None,
881        host_name: Optional[str] = None,
882        pick_host_name_from_backend_address: Optional[bool] = None,
883        affinity_cookie_name: Optional[str] = None,
884        probe_enabled: Optional[bool] = None,
885        path: Optional[str] = None,
886        **kwargs
887    ):
888        super(ApplicationGatewayBackendHttpSettings, self).__init__(id=id, **kwargs)
889        self.name = name
890        self.etag = None
891        self.type = None
892        self.port = port
893        self.protocol = protocol
894        self.cookie_based_affinity = cookie_based_affinity
895        self.request_timeout = request_timeout
896        self.probe = probe
897        self.authentication_certificates = authentication_certificates
898        self.trusted_root_certificates = trusted_root_certificates
899        self.connection_draining = connection_draining
900        self.host_name = host_name
901        self.pick_host_name_from_backend_address = pick_host_name_from_backend_address
902        self.affinity_cookie_name = affinity_cookie_name
903        self.probe_enabled = probe_enabled
904        self.path = path
905        self.provisioning_state = None
906
907
908class ApplicationGatewayConnectionDraining(msrest.serialization.Model):
909    """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.
910
911    All required parameters must be populated in order to send to Azure.
912
913    :param enabled: Required. Whether connection draining is enabled or not.
914    :type enabled: bool
915    :param drain_timeout_in_sec: Required. The number of seconds connection draining is active.
916     Acceptable values are from 1 second to 3600 seconds.
917    :type drain_timeout_in_sec: int
918    """
919
920    _validation = {
921        'enabled': {'required': True},
922        'drain_timeout_in_sec': {'required': True, 'maximum': 3600, 'minimum': 1},
923    }
924
925    _attribute_map = {
926        'enabled': {'key': 'enabled', 'type': 'bool'},
927        'drain_timeout_in_sec': {'key': 'drainTimeoutInSec', 'type': 'int'},
928    }
929
930    def __init__(
931        self,
932        *,
933        enabled: bool,
934        drain_timeout_in_sec: int,
935        **kwargs
936    ):
937        super(ApplicationGatewayConnectionDraining, self).__init__(**kwargs)
938        self.enabled = enabled
939        self.drain_timeout_in_sec = drain_timeout_in_sec
940
941
942class ApplicationGatewayCustomError(msrest.serialization.Model):
943    """Customer error of an application gateway.
944
945    :param status_code: Status code of the application gateway customer error. Possible values
946     include: "HttpStatus403", "HttpStatus502".
947    :type status_code: str or
948     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayCustomErrorStatusCode
949    :param custom_error_page_url: Error page URL of the application gateway customer error.
950    :type custom_error_page_url: str
951    """
952
953    _attribute_map = {
954        'status_code': {'key': 'statusCode', 'type': 'str'},
955        'custom_error_page_url': {'key': 'customErrorPageUrl', 'type': 'str'},
956    }
957
958    def __init__(
959        self,
960        *,
961        status_code: Optional[Union[str, "ApplicationGatewayCustomErrorStatusCode"]] = None,
962        custom_error_page_url: Optional[str] = None,
963        **kwargs
964    ):
965        super(ApplicationGatewayCustomError, self).__init__(**kwargs)
966        self.status_code = status_code
967        self.custom_error_page_url = custom_error_page_url
968
969
970class ApplicationGatewayFirewallDisabledRuleGroup(msrest.serialization.Model):
971    """Allows to disable rules within a rule group or an entire rule group.
972
973    All required parameters must be populated in order to send to Azure.
974
975    :param rule_group_name: Required. The name of the rule group that will be disabled.
976    :type rule_group_name: str
977    :param rules: The list of rules that will be disabled. If null, all rules of the rule group
978     will be disabled.
979    :type rules: list[int]
980    """
981
982    _validation = {
983        'rule_group_name': {'required': True},
984    }
985
986    _attribute_map = {
987        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
988        'rules': {'key': 'rules', 'type': '[int]'},
989    }
990
991    def __init__(
992        self,
993        *,
994        rule_group_name: str,
995        rules: Optional[List[int]] = None,
996        **kwargs
997    ):
998        super(ApplicationGatewayFirewallDisabledRuleGroup, self).__init__(**kwargs)
999        self.rule_group_name = rule_group_name
1000        self.rules = rules
1001
1002
1003class ApplicationGatewayFirewallExclusion(msrest.serialization.Model):
1004    """Allow to exclude some variable satisfy the condition for the WAF check.
1005
1006    All required parameters must be populated in order to send to Azure.
1007
1008    :param match_variable: Required. The variable to be excluded.
1009    :type match_variable: str
1010    :param selector_match_operator: Required. When matchVariable is a collection, operate on the
1011     selector to specify which elements in the collection this exclusion applies to.
1012    :type selector_match_operator: str
1013    :param selector: Required. When matchVariable is a collection, operator used to specify which
1014     elements in the collection this exclusion applies to.
1015    :type selector: str
1016    """
1017
1018    _validation = {
1019        'match_variable': {'required': True},
1020        'selector_match_operator': {'required': True},
1021        'selector': {'required': True},
1022    }
1023
1024    _attribute_map = {
1025        'match_variable': {'key': 'matchVariable', 'type': 'str'},
1026        'selector_match_operator': {'key': 'selectorMatchOperator', 'type': 'str'},
1027        'selector': {'key': 'selector', 'type': 'str'},
1028    }
1029
1030    def __init__(
1031        self,
1032        *,
1033        match_variable: str,
1034        selector_match_operator: str,
1035        selector: str,
1036        **kwargs
1037    ):
1038        super(ApplicationGatewayFirewallExclusion, self).__init__(**kwargs)
1039        self.match_variable = match_variable
1040        self.selector_match_operator = selector_match_operator
1041        self.selector = selector
1042
1043
1044class ApplicationGatewayFirewallRule(msrest.serialization.Model):
1045    """A web application firewall rule.
1046
1047    All required parameters must be populated in order to send to Azure.
1048
1049    :param rule_id: Required. The identifier of the web application firewall rule.
1050    :type rule_id: int
1051    :param description: The description of the web application firewall rule.
1052    :type description: str
1053    """
1054
1055    _validation = {
1056        'rule_id': {'required': True},
1057    }
1058
1059    _attribute_map = {
1060        'rule_id': {'key': 'ruleId', 'type': 'int'},
1061        'description': {'key': 'description', 'type': 'str'},
1062    }
1063
1064    def __init__(
1065        self,
1066        *,
1067        rule_id: int,
1068        description: Optional[str] = None,
1069        **kwargs
1070    ):
1071        super(ApplicationGatewayFirewallRule, self).__init__(**kwargs)
1072        self.rule_id = rule_id
1073        self.description = description
1074
1075
1076class ApplicationGatewayFirewallRuleGroup(msrest.serialization.Model):
1077    """A web application firewall rule group.
1078
1079    All required parameters must be populated in order to send to Azure.
1080
1081    :param rule_group_name: Required. The name of the web application firewall rule group.
1082    :type rule_group_name: str
1083    :param description: The description of the web application firewall rule group.
1084    :type description: str
1085    :param rules: Required. The rules of the web application firewall rule group.
1086    :type rules: list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayFirewallRule]
1087    """
1088
1089    _validation = {
1090        'rule_group_name': {'required': True},
1091        'rules': {'required': True},
1092    }
1093
1094    _attribute_map = {
1095        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
1096        'description': {'key': 'description', 'type': 'str'},
1097        'rules': {'key': 'rules', 'type': '[ApplicationGatewayFirewallRule]'},
1098    }
1099
1100    def __init__(
1101        self,
1102        *,
1103        rule_group_name: str,
1104        rules: List["ApplicationGatewayFirewallRule"],
1105        description: Optional[str] = None,
1106        **kwargs
1107    ):
1108        super(ApplicationGatewayFirewallRuleGroup, self).__init__(**kwargs)
1109        self.rule_group_name = rule_group_name
1110        self.description = description
1111        self.rules = rules
1112
1113
1114class ApplicationGatewayFirewallRuleSet(Resource):
1115    """A web application firewall rule set.
1116
1117    Variables are only populated by the server, and will be ignored when sending a request.
1118
1119    :param id: Resource ID.
1120    :type id: str
1121    :ivar name: Resource name.
1122    :vartype name: str
1123    :ivar type: Resource type.
1124    :vartype type: str
1125    :param location: Resource location.
1126    :type location: str
1127    :param tags: A set of tags. Resource tags.
1128    :type tags: dict[str, str]
1129    :ivar provisioning_state: The provisioning state of the web application firewall rule set.
1130     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
1131    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
1132    :param rule_set_type: The type of the web application firewall rule set.
1133    :type rule_set_type: str
1134    :param rule_set_version: The version of the web application firewall rule set type.
1135    :type rule_set_version: str
1136    :param rule_groups: The rule groups of the web application firewall rule set.
1137    :type rule_groups:
1138     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayFirewallRuleGroup]
1139    """
1140
1141    _validation = {
1142        'name': {'readonly': True},
1143        'type': {'readonly': True},
1144        'provisioning_state': {'readonly': True},
1145    }
1146
1147    _attribute_map = {
1148        'id': {'key': 'id', 'type': 'str'},
1149        'name': {'key': 'name', 'type': 'str'},
1150        'type': {'key': 'type', 'type': 'str'},
1151        'location': {'key': 'location', 'type': 'str'},
1152        'tags': {'key': 'tags', 'type': '{str}'},
1153        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1154        'rule_set_type': {'key': 'properties.ruleSetType', 'type': 'str'},
1155        'rule_set_version': {'key': 'properties.ruleSetVersion', 'type': 'str'},
1156        'rule_groups': {'key': 'properties.ruleGroups', 'type': '[ApplicationGatewayFirewallRuleGroup]'},
1157    }
1158
1159    def __init__(
1160        self,
1161        *,
1162        id: Optional[str] = None,
1163        location: Optional[str] = None,
1164        tags: Optional[Dict[str, str]] = None,
1165        rule_set_type: Optional[str] = None,
1166        rule_set_version: Optional[str] = None,
1167        rule_groups: Optional[List["ApplicationGatewayFirewallRuleGroup"]] = None,
1168        **kwargs
1169    ):
1170        super(ApplicationGatewayFirewallRuleSet, self).__init__(id=id, location=location, tags=tags, **kwargs)
1171        self.provisioning_state = None
1172        self.rule_set_type = rule_set_type
1173        self.rule_set_version = rule_set_version
1174        self.rule_groups = rule_groups
1175
1176
1177class ApplicationGatewayFrontendIPConfiguration(SubResource):
1178    """Frontend IP configuration of an application gateway.
1179
1180    Variables are only populated by the server, and will be ignored when sending a request.
1181
1182    :param id: Resource ID.
1183    :type id: str
1184    :param name: Name of the frontend IP configuration that is unique within an Application
1185     Gateway.
1186    :type name: str
1187    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1188    :vartype etag: str
1189    :ivar type: Type of the resource.
1190    :vartype type: str
1191    :param private_ip_address: PrivateIPAddress of the network interface IP Configuration.
1192    :type private_ip_address: str
1193    :param private_ip_allocation_method: The private IP address allocation method. Possible values
1194     include: "Static", "Dynamic".
1195    :type private_ip_allocation_method: str or
1196     ~azure.mgmt.network.v2019_12_01.models.IPAllocationMethod
1197    :param subnet: Reference to the subnet resource.
1198    :type subnet: ~azure.mgmt.network.v2019_12_01.models.SubResource
1199    :param public_ip_address: Reference to the PublicIP resource.
1200    :type public_ip_address: ~azure.mgmt.network.v2019_12_01.models.SubResource
1201    :ivar provisioning_state: The provisioning state of the frontend IP configuration resource.
1202     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
1203    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
1204    """
1205
1206    _validation = {
1207        'etag': {'readonly': True},
1208        'type': {'readonly': True},
1209        'provisioning_state': {'readonly': True},
1210    }
1211
1212    _attribute_map = {
1213        'id': {'key': 'id', 'type': 'str'},
1214        'name': {'key': 'name', 'type': 'str'},
1215        'etag': {'key': 'etag', 'type': 'str'},
1216        'type': {'key': 'type', 'type': 'str'},
1217        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
1218        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
1219        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
1220        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
1221        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1222    }
1223
1224    def __init__(
1225        self,
1226        *,
1227        id: Optional[str] = None,
1228        name: Optional[str] = None,
1229        private_ip_address: Optional[str] = None,
1230        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
1231        subnet: Optional["SubResource"] = None,
1232        public_ip_address: Optional["SubResource"] = None,
1233        **kwargs
1234    ):
1235        super(ApplicationGatewayFrontendIPConfiguration, self).__init__(id=id, **kwargs)
1236        self.name = name
1237        self.etag = None
1238        self.type = None
1239        self.private_ip_address = private_ip_address
1240        self.private_ip_allocation_method = private_ip_allocation_method
1241        self.subnet = subnet
1242        self.public_ip_address = public_ip_address
1243        self.provisioning_state = None
1244
1245
1246class ApplicationGatewayFrontendPort(SubResource):
1247    """Frontend port of an application gateway.
1248
1249    Variables are only populated by the server, and will be ignored when sending a request.
1250
1251    :param id: Resource ID.
1252    :type id: str
1253    :param name: Name of the frontend port that is unique within an Application Gateway.
1254    :type name: str
1255    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1256    :vartype etag: str
1257    :ivar type: Type of the resource.
1258    :vartype type: str
1259    :param port: Frontend port.
1260    :type port: int
1261    :ivar provisioning_state: The provisioning state of the frontend port resource. Possible values
1262     include: "Succeeded", "Updating", "Deleting", "Failed".
1263    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
1264    """
1265
1266    _validation = {
1267        'etag': {'readonly': True},
1268        'type': {'readonly': True},
1269        'provisioning_state': {'readonly': True},
1270    }
1271
1272    _attribute_map = {
1273        'id': {'key': 'id', 'type': 'str'},
1274        'name': {'key': 'name', 'type': 'str'},
1275        'etag': {'key': 'etag', 'type': 'str'},
1276        'type': {'key': 'type', 'type': 'str'},
1277        'port': {'key': 'properties.port', 'type': 'int'},
1278        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1279    }
1280
1281    def __init__(
1282        self,
1283        *,
1284        id: Optional[str] = None,
1285        name: Optional[str] = None,
1286        port: Optional[int] = None,
1287        **kwargs
1288    ):
1289        super(ApplicationGatewayFrontendPort, self).__init__(id=id, **kwargs)
1290        self.name = name
1291        self.etag = None
1292        self.type = None
1293        self.port = port
1294        self.provisioning_state = None
1295
1296
1297class ApplicationGatewayHeaderConfiguration(msrest.serialization.Model):
1298    """Header configuration of the Actions set in Application Gateway.
1299
1300    :param header_name: Header name of the header configuration.
1301    :type header_name: str
1302    :param header_value: Header value of the header configuration.
1303    :type header_value: str
1304    """
1305
1306    _attribute_map = {
1307        'header_name': {'key': 'headerName', 'type': 'str'},
1308        'header_value': {'key': 'headerValue', 'type': 'str'},
1309    }
1310
1311    def __init__(
1312        self,
1313        *,
1314        header_name: Optional[str] = None,
1315        header_value: Optional[str] = None,
1316        **kwargs
1317    ):
1318        super(ApplicationGatewayHeaderConfiguration, self).__init__(**kwargs)
1319        self.header_name = header_name
1320        self.header_value = header_value
1321
1322
1323class ApplicationGatewayHttpListener(SubResource):
1324    """Http listener of an application gateway.
1325
1326    Variables are only populated by the server, and will be ignored when sending a request.
1327
1328    :param id: Resource ID.
1329    :type id: str
1330    :param name: Name of the HTTP listener that is unique within an Application Gateway.
1331    :type name: str
1332    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1333    :vartype etag: str
1334    :ivar type: Type of the resource.
1335    :vartype type: str
1336    :param frontend_ip_configuration: Frontend IP configuration resource of an application gateway.
1337    :type frontend_ip_configuration: ~azure.mgmt.network.v2019_12_01.models.SubResource
1338    :param frontend_port: Frontend port resource of an application gateway.
1339    :type frontend_port: ~azure.mgmt.network.v2019_12_01.models.SubResource
1340    :param protocol: Protocol of the HTTP listener. Possible values include: "Http", "Https".
1341    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayProtocol
1342    :param host_name: Host name of HTTP listener.
1343    :type host_name: str
1344    :param ssl_certificate: SSL certificate resource of an application gateway.
1345    :type ssl_certificate: ~azure.mgmt.network.v2019_12_01.models.SubResource
1346    :param require_server_name_indication: Applicable only if protocol is https. Enables SNI for
1347     multi-hosting.
1348    :type require_server_name_indication: bool
1349    :ivar provisioning_state: The provisioning state of the HTTP listener resource. Possible values
1350     include: "Succeeded", "Updating", "Deleting", "Failed".
1351    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
1352    :param custom_error_configurations: Custom error configurations of the HTTP listener.
1353    :type custom_error_configurations:
1354     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayCustomError]
1355    :param firewall_policy: Reference to the FirewallPolicy resource.
1356    :type firewall_policy: ~azure.mgmt.network.v2019_12_01.models.SubResource
1357    :param host_names: List of Host names for HTTP Listener that allows special wildcard characters
1358     as well.
1359    :type host_names: list[str]
1360    """
1361
1362    _validation = {
1363        'etag': {'readonly': True},
1364        'type': {'readonly': True},
1365        'provisioning_state': {'readonly': True},
1366    }
1367
1368    _attribute_map = {
1369        'id': {'key': 'id', 'type': 'str'},
1370        'name': {'key': 'name', 'type': 'str'},
1371        'etag': {'key': 'etag', 'type': 'str'},
1372        'type': {'key': 'type', 'type': 'str'},
1373        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
1374        'frontend_port': {'key': 'properties.frontendPort', 'type': 'SubResource'},
1375        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1376        'host_name': {'key': 'properties.hostName', 'type': 'str'},
1377        'ssl_certificate': {'key': 'properties.sslCertificate', 'type': 'SubResource'},
1378        'require_server_name_indication': {'key': 'properties.requireServerNameIndication', 'type': 'bool'},
1379        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1380        'custom_error_configurations': {'key': 'properties.customErrorConfigurations', 'type': '[ApplicationGatewayCustomError]'},
1381        'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'},
1382        'host_names': {'key': 'properties.hostNames', 'type': '[str]'},
1383    }
1384
1385    def __init__(
1386        self,
1387        *,
1388        id: Optional[str] = None,
1389        name: Optional[str] = None,
1390        frontend_ip_configuration: Optional["SubResource"] = None,
1391        frontend_port: Optional["SubResource"] = None,
1392        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
1393        host_name: Optional[str] = None,
1394        ssl_certificate: Optional["SubResource"] = None,
1395        require_server_name_indication: Optional[bool] = None,
1396        custom_error_configurations: Optional[List["ApplicationGatewayCustomError"]] = None,
1397        firewall_policy: Optional["SubResource"] = None,
1398        host_names: Optional[List[str]] = None,
1399        **kwargs
1400    ):
1401        super(ApplicationGatewayHttpListener, self).__init__(id=id, **kwargs)
1402        self.name = name
1403        self.etag = None
1404        self.type = None
1405        self.frontend_ip_configuration = frontend_ip_configuration
1406        self.frontend_port = frontend_port
1407        self.protocol = protocol
1408        self.host_name = host_name
1409        self.ssl_certificate = ssl_certificate
1410        self.require_server_name_indication = require_server_name_indication
1411        self.provisioning_state = None
1412        self.custom_error_configurations = custom_error_configurations
1413        self.firewall_policy = firewall_policy
1414        self.host_names = host_names
1415
1416
1417class ApplicationGatewayIPConfiguration(SubResource):
1418    """IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.
1419
1420    Variables are only populated by the server, and will be ignored when sending a request.
1421
1422    :param id: Resource ID.
1423    :type id: str
1424    :param name: Name of the IP configuration that is unique within an Application Gateway.
1425    :type name: str
1426    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1427    :vartype etag: str
1428    :ivar type: Type of the resource.
1429    :vartype type: str
1430    :param subnet: Reference to the subnet resource. A subnet from where application gateway gets
1431     its private address.
1432    :type subnet: ~azure.mgmt.network.v2019_12_01.models.SubResource
1433    :ivar provisioning_state: The provisioning state of the application gateway IP configuration
1434     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
1435    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
1436    """
1437
1438    _validation = {
1439        'etag': {'readonly': True},
1440        'type': {'readonly': True},
1441        'provisioning_state': {'readonly': True},
1442    }
1443
1444    _attribute_map = {
1445        'id': {'key': 'id', 'type': 'str'},
1446        'name': {'key': 'name', 'type': 'str'},
1447        'etag': {'key': 'etag', 'type': 'str'},
1448        'type': {'key': 'type', 'type': 'str'},
1449        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
1450        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1451    }
1452
1453    def __init__(
1454        self,
1455        *,
1456        id: Optional[str] = None,
1457        name: Optional[str] = None,
1458        subnet: Optional["SubResource"] = None,
1459        **kwargs
1460    ):
1461        super(ApplicationGatewayIPConfiguration, self).__init__(id=id, **kwargs)
1462        self.name = name
1463        self.etag = None
1464        self.type = None
1465        self.subnet = subnet
1466        self.provisioning_state = None
1467
1468
1469class ApplicationGatewayListResult(msrest.serialization.Model):
1470    """Response for ListApplicationGateways API service call.
1471
1472    :param value: List of an application gateways in a resource group.
1473    :type value: list[~azure.mgmt.network.v2019_12_01.models.ApplicationGateway]
1474    :param next_link: URL to get the next set of results.
1475    :type next_link: str
1476    """
1477
1478    _attribute_map = {
1479        'value': {'key': 'value', 'type': '[ApplicationGateway]'},
1480        'next_link': {'key': 'nextLink', 'type': 'str'},
1481    }
1482
1483    def __init__(
1484        self,
1485        *,
1486        value: Optional[List["ApplicationGateway"]] = None,
1487        next_link: Optional[str] = None,
1488        **kwargs
1489    ):
1490        super(ApplicationGatewayListResult, self).__init__(**kwargs)
1491        self.value = value
1492        self.next_link = next_link
1493
1494
1495class ApplicationGatewayOnDemandProbe(msrest.serialization.Model):
1496    """Details of on demand test probe request.
1497
1498    :param protocol: The protocol used for the probe. Possible values include: "Http", "Https".
1499    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayProtocol
1500    :param host: Host name to send the probe to.
1501    :type host: str
1502    :param path: Relative path of probe. Valid path starts from '/'. Probe is sent to
1503     :code:`<Protocol>`://:code:`<host>`::code:`<port>`:code:`<path>`.
1504    :type path: str
1505    :param timeout: The probe timeout in seconds. Probe marked as failed if valid response is not
1506     received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
1507    :type timeout: int
1508    :param pick_host_name_from_backend_http_settings: Whether the host header should be picked from
1509     the backend http settings. Default value is false.
1510    :type pick_host_name_from_backend_http_settings: bool
1511    :param match: Criterion for classifying a healthy probe response.
1512    :type match: ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayProbeHealthResponseMatch
1513    :param backend_address_pool: Reference to backend pool of application gateway to which probe
1514     request will be sent.
1515    :type backend_address_pool: ~azure.mgmt.network.v2019_12_01.models.SubResource
1516    :param backend_http_settings: Reference to backend http setting of application gateway to be
1517     used for test probe.
1518    :type backend_http_settings: ~azure.mgmt.network.v2019_12_01.models.SubResource
1519    """
1520
1521    _attribute_map = {
1522        'protocol': {'key': 'protocol', 'type': 'str'},
1523        'host': {'key': 'host', 'type': 'str'},
1524        'path': {'key': 'path', 'type': 'str'},
1525        'timeout': {'key': 'timeout', 'type': 'int'},
1526        'pick_host_name_from_backend_http_settings': {'key': 'pickHostNameFromBackendHttpSettings', 'type': 'bool'},
1527        'match': {'key': 'match', 'type': 'ApplicationGatewayProbeHealthResponseMatch'},
1528        'backend_address_pool': {'key': 'backendAddressPool', 'type': 'SubResource'},
1529        'backend_http_settings': {'key': 'backendHttpSettings', 'type': 'SubResource'},
1530    }
1531
1532    def __init__(
1533        self,
1534        *,
1535        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
1536        host: Optional[str] = None,
1537        path: Optional[str] = None,
1538        timeout: Optional[int] = None,
1539        pick_host_name_from_backend_http_settings: Optional[bool] = None,
1540        match: Optional["ApplicationGatewayProbeHealthResponseMatch"] = None,
1541        backend_address_pool: Optional["SubResource"] = None,
1542        backend_http_settings: Optional["SubResource"] = None,
1543        **kwargs
1544    ):
1545        super(ApplicationGatewayOnDemandProbe, self).__init__(**kwargs)
1546        self.protocol = protocol
1547        self.host = host
1548        self.path = path
1549        self.timeout = timeout
1550        self.pick_host_name_from_backend_http_settings = pick_host_name_from_backend_http_settings
1551        self.match = match
1552        self.backend_address_pool = backend_address_pool
1553        self.backend_http_settings = backend_http_settings
1554
1555
1556class ApplicationGatewayPathRule(SubResource):
1557    """Path rule of URL path map of an application gateway.
1558
1559    Variables are only populated by the server, and will be ignored when sending a request.
1560
1561    :param id: Resource ID.
1562    :type id: str
1563    :param name: Name of the path rule that is unique within an Application Gateway.
1564    :type name: str
1565    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1566    :vartype etag: str
1567    :ivar type: Type of the resource.
1568    :vartype type: str
1569    :param paths: Path rules of URL path map.
1570    :type paths: list[str]
1571    :param backend_address_pool: Backend address pool resource of URL path map path rule.
1572    :type backend_address_pool: ~azure.mgmt.network.v2019_12_01.models.SubResource
1573    :param backend_http_settings: Backend http settings resource of URL path map path rule.
1574    :type backend_http_settings: ~azure.mgmt.network.v2019_12_01.models.SubResource
1575    :param redirect_configuration: Redirect configuration resource of URL path map path rule.
1576    :type redirect_configuration: ~azure.mgmt.network.v2019_12_01.models.SubResource
1577    :param rewrite_rule_set: Rewrite rule set resource of URL path map path rule.
1578    :type rewrite_rule_set: ~azure.mgmt.network.v2019_12_01.models.SubResource
1579    :ivar provisioning_state: The provisioning state of the path rule resource. Possible values
1580     include: "Succeeded", "Updating", "Deleting", "Failed".
1581    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
1582    :param firewall_policy: Reference to the FirewallPolicy resource.
1583    :type firewall_policy: ~azure.mgmt.network.v2019_12_01.models.SubResource
1584    """
1585
1586    _validation = {
1587        'etag': {'readonly': True},
1588        'type': {'readonly': True},
1589        'provisioning_state': {'readonly': True},
1590    }
1591
1592    _attribute_map = {
1593        'id': {'key': 'id', 'type': 'str'},
1594        'name': {'key': 'name', 'type': 'str'},
1595        'etag': {'key': 'etag', 'type': 'str'},
1596        'type': {'key': 'type', 'type': 'str'},
1597        'paths': {'key': 'properties.paths', 'type': '[str]'},
1598        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1599        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1600        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1601        'rewrite_rule_set': {'key': 'properties.rewriteRuleSet', 'type': 'SubResource'},
1602        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1603        'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'},
1604    }
1605
1606    def __init__(
1607        self,
1608        *,
1609        id: Optional[str] = None,
1610        name: Optional[str] = None,
1611        paths: Optional[List[str]] = None,
1612        backend_address_pool: Optional["SubResource"] = None,
1613        backend_http_settings: Optional["SubResource"] = None,
1614        redirect_configuration: Optional["SubResource"] = None,
1615        rewrite_rule_set: Optional["SubResource"] = None,
1616        firewall_policy: Optional["SubResource"] = None,
1617        **kwargs
1618    ):
1619        super(ApplicationGatewayPathRule, self).__init__(id=id, **kwargs)
1620        self.name = name
1621        self.etag = None
1622        self.type = None
1623        self.paths = paths
1624        self.backend_address_pool = backend_address_pool
1625        self.backend_http_settings = backend_http_settings
1626        self.redirect_configuration = redirect_configuration
1627        self.rewrite_rule_set = rewrite_rule_set
1628        self.provisioning_state = None
1629        self.firewall_policy = firewall_policy
1630
1631
1632class ApplicationGatewayProbe(SubResource):
1633    """Probe of the application gateway.
1634
1635    Variables are only populated by the server, and will be ignored when sending a request.
1636
1637    :param id: Resource ID.
1638    :type id: str
1639    :param name: Name of the probe that is unique within an Application Gateway.
1640    :type name: str
1641    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1642    :vartype etag: str
1643    :ivar type: Type of the resource.
1644    :vartype type: str
1645    :param protocol: The protocol used for the probe. Possible values include: "Http", "Https".
1646    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayProtocol
1647    :param host: Host name to send the probe to.
1648    :type host: str
1649    :param path: Relative path of probe. Valid path starts from '/'. Probe is sent to
1650     :code:`<Protocol>`://:code:`<host>`::code:`<port>`:code:`<path>`.
1651    :type path: str
1652    :param interval: The probing interval in seconds. This is the time interval between two
1653     consecutive probes. Acceptable values are from 1 second to 86400 seconds.
1654    :type interval: int
1655    :param timeout: The probe timeout in seconds. Probe marked as failed if valid response is not
1656     received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
1657    :type timeout: int
1658    :param unhealthy_threshold: The probe retry count. Backend server is marked down after
1659     consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second
1660     to 20.
1661    :type unhealthy_threshold: int
1662    :param pick_host_name_from_backend_http_settings: Whether the host header should be picked from
1663     the backend http settings. Default value is false.
1664    :type pick_host_name_from_backend_http_settings: bool
1665    :param min_servers: Minimum number of servers that are always marked healthy. Default value is
1666     0.
1667    :type min_servers: int
1668    :param match: Criterion for classifying a healthy probe response.
1669    :type match: ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayProbeHealthResponseMatch
1670    :ivar provisioning_state: The provisioning state of the probe resource. Possible values
1671     include: "Succeeded", "Updating", "Deleting", "Failed".
1672    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
1673    :param port: Custom port which will be used for probing the backend servers. The valid value
1674     ranges from 1 to 65535. In case not set, port from http settings will be used. This property is
1675     valid for Standard_v2 and WAF_v2 only.
1676    :type port: int
1677    """
1678
1679    _validation = {
1680        'etag': {'readonly': True},
1681        'type': {'readonly': True},
1682        'provisioning_state': {'readonly': True},
1683        'port': {'maximum': 65535, 'minimum': 1},
1684    }
1685
1686    _attribute_map = {
1687        'id': {'key': 'id', 'type': 'str'},
1688        'name': {'key': 'name', 'type': 'str'},
1689        'etag': {'key': 'etag', 'type': 'str'},
1690        'type': {'key': 'type', 'type': 'str'},
1691        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1692        'host': {'key': 'properties.host', 'type': 'str'},
1693        'path': {'key': 'properties.path', 'type': 'str'},
1694        'interval': {'key': 'properties.interval', 'type': 'int'},
1695        'timeout': {'key': 'properties.timeout', 'type': 'int'},
1696        'unhealthy_threshold': {'key': 'properties.unhealthyThreshold', 'type': 'int'},
1697        'pick_host_name_from_backend_http_settings': {'key': 'properties.pickHostNameFromBackendHttpSettings', 'type': 'bool'},
1698        'min_servers': {'key': 'properties.minServers', 'type': 'int'},
1699        'match': {'key': 'properties.match', 'type': 'ApplicationGatewayProbeHealthResponseMatch'},
1700        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1701        'port': {'key': 'properties.port', 'type': 'int'},
1702    }
1703
1704    def __init__(
1705        self,
1706        *,
1707        id: Optional[str] = None,
1708        name: Optional[str] = None,
1709        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
1710        host: Optional[str] = None,
1711        path: Optional[str] = None,
1712        interval: Optional[int] = None,
1713        timeout: Optional[int] = None,
1714        unhealthy_threshold: Optional[int] = None,
1715        pick_host_name_from_backend_http_settings: Optional[bool] = None,
1716        min_servers: Optional[int] = None,
1717        match: Optional["ApplicationGatewayProbeHealthResponseMatch"] = None,
1718        port: Optional[int] = None,
1719        **kwargs
1720    ):
1721        super(ApplicationGatewayProbe, self).__init__(id=id, **kwargs)
1722        self.name = name
1723        self.etag = None
1724        self.type = None
1725        self.protocol = protocol
1726        self.host = host
1727        self.path = path
1728        self.interval = interval
1729        self.timeout = timeout
1730        self.unhealthy_threshold = unhealthy_threshold
1731        self.pick_host_name_from_backend_http_settings = pick_host_name_from_backend_http_settings
1732        self.min_servers = min_servers
1733        self.match = match
1734        self.provisioning_state = None
1735        self.port = port
1736
1737
1738class ApplicationGatewayProbeHealthResponseMatch(msrest.serialization.Model):
1739    """Application gateway probe health response match.
1740
1741    :param body: Body that must be contained in the health response. Default value is empty.
1742    :type body: str
1743    :param status_codes: Allowed ranges of healthy status codes. Default range of healthy status
1744     codes is 200-399.
1745    :type status_codes: list[str]
1746    """
1747
1748    _attribute_map = {
1749        'body': {'key': 'body', 'type': 'str'},
1750        'status_codes': {'key': 'statusCodes', 'type': '[str]'},
1751    }
1752
1753    def __init__(
1754        self,
1755        *,
1756        body: Optional[str] = None,
1757        status_codes: Optional[List[str]] = None,
1758        **kwargs
1759    ):
1760        super(ApplicationGatewayProbeHealthResponseMatch, self).__init__(**kwargs)
1761        self.body = body
1762        self.status_codes = status_codes
1763
1764
1765class ApplicationGatewayRedirectConfiguration(SubResource):
1766    """Redirect configuration of an application gateway.
1767
1768    Variables are only populated by the server, and will be ignored when sending a request.
1769
1770    :param id: Resource ID.
1771    :type id: str
1772    :param name: Name of the redirect configuration that is unique within an Application Gateway.
1773    :type name: str
1774    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1775    :vartype etag: str
1776    :ivar type: Type of the resource.
1777    :vartype type: str
1778    :param redirect_type: HTTP redirection type. Possible values include: "Permanent", "Found",
1779     "SeeOther", "Temporary".
1780    :type redirect_type: str or
1781     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayRedirectType
1782    :param target_listener: Reference to a listener to redirect the request to.
1783    :type target_listener: ~azure.mgmt.network.v2019_12_01.models.SubResource
1784    :param target_url: Url to redirect the request to.
1785    :type target_url: str
1786    :param include_path: Include path in the redirected url.
1787    :type include_path: bool
1788    :param include_query_string: Include query string in the redirected url.
1789    :type include_query_string: bool
1790    :param request_routing_rules: Request routing specifying redirect configuration.
1791    :type request_routing_rules: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
1792    :param url_path_maps: Url path maps specifying default redirect configuration.
1793    :type url_path_maps: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
1794    :param path_rules: Path rules specifying redirect configuration.
1795    :type path_rules: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
1796    """
1797
1798    _validation = {
1799        'etag': {'readonly': True},
1800        'type': {'readonly': True},
1801    }
1802
1803    _attribute_map = {
1804        'id': {'key': 'id', 'type': 'str'},
1805        'name': {'key': 'name', 'type': 'str'},
1806        'etag': {'key': 'etag', 'type': 'str'},
1807        'type': {'key': 'type', 'type': 'str'},
1808        'redirect_type': {'key': 'properties.redirectType', 'type': 'str'},
1809        'target_listener': {'key': 'properties.targetListener', 'type': 'SubResource'},
1810        'target_url': {'key': 'properties.targetUrl', 'type': 'str'},
1811        'include_path': {'key': 'properties.includePath', 'type': 'bool'},
1812        'include_query_string': {'key': 'properties.includeQueryString', 'type': 'bool'},
1813        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[SubResource]'},
1814        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[SubResource]'},
1815        'path_rules': {'key': 'properties.pathRules', 'type': '[SubResource]'},
1816    }
1817
1818    def __init__(
1819        self,
1820        *,
1821        id: Optional[str] = None,
1822        name: Optional[str] = None,
1823        redirect_type: Optional[Union[str, "ApplicationGatewayRedirectType"]] = None,
1824        target_listener: Optional["SubResource"] = None,
1825        target_url: Optional[str] = None,
1826        include_path: Optional[bool] = None,
1827        include_query_string: Optional[bool] = None,
1828        request_routing_rules: Optional[List["SubResource"]] = None,
1829        url_path_maps: Optional[List["SubResource"]] = None,
1830        path_rules: Optional[List["SubResource"]] = None,
1831        **kwargs
1832    ):
1833        super(ApplicationGatewayRedirectConfiguration, self).__init__(id=id, **kwargs)
1834        self.name = name
1835        self.etag = None
1836        self.type = None
1837        self.redirect_type = redirect_type
1838        self.target_listener = target_listener
1839        self.target_url = target_url
1840        self.include_path = include_path
1841        self.include_query_string = include_query_string
1842        self.request_routing_rules = request_routing_rules
1843        self.url_path_maps = url_path_maps
1844        self.path_rules = path_rules
1845
1846
1847class ApplicationGatewayRequestRoutingRule(SubResource):
1848    """Request routing rule of an application gateway.
1849
1850    Variables are only populated by the server, and will be ignored when sending a request.
1851
1852    :param id: Resource ID.
1853    :type id: str
1854    :param name: Name of the request routing rule that is unique within an Application Gateway.
1855    :type name: str
1856    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1857    :vartype etag: str
1858    :ivar type: Type of the resource.
1859    :vartype type: str
1860    :param rule_type: Rule type. Possible values include: "Basic", "PathBasedRouting".
1861    :type rule_type: str or
1862     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayRequestRoutingRuleType
1863    :param priority: Priority of the request routing rule.
1864    :type priority: int
1865    :param backend_address_pool: Backend address pool resource of the application gateway.
1866    :type backend_address_pool: ~azure.mgmt.network.v2019_12_01.models.SubResource
1867    :param backend_http_settings: Backend http settings resource of the application gateway.
1868    :type backend_http_settings: ~azure.mgmt.network.v2019_12_01.models.SubResource
1869    :param http_listener: Http listener resource of the application gateway.
1870    :type http_listener: ~azure.mgmt.network.v2019_12_01.models.SubResource
1871    :param url_path_map: URL path map resource of the application gateway.
1872    :type url_path_map: ~azure.mgmt.network.v2019_12_01.models.SubResource
1873    :param rewrite_rule_set: Rewrite Rule Set resource in Basic rule of the application gateway.
1874    :type rewrite_rule_set: ~azure.mgmt.network.v2019_12_01.models.SubResource
1875    :param redirect_configuration: Redirect configuration resource of the application gateway.
1876    :type redirect_configuration: ~azure.mgmt.network.v2019_12_01.models.SubResource
1877    :ivar provisioning_state: The provisioning state of the request routing rule resource. Possible
1878     values include: "Succeeded", "Updating", "Deleting", "Failed".
1879    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
1880    """
1881
1882    _validation = {
1883        'etag': {'readonly': True},
1884        'type': {'readonly': True},
1885        'priority': {'maximum': 20000, 'minimum': 1},
1886        'provisioning_state': {'readonly': True},
1887    }
1888
1889    _attribute_map = {
1890        'id': {'key': 'id', 'type': 'str'},
1891        'name': {'key': 'name', 'type': 'str'},
1892        'etag': {'key': 'etag', 'type': 'str'},
1893        'type': {'key': 'type', 'type': 'str'},
1894        'rule_type': {'key': 'properties.ruleType', 'type': 'str'},
1895        'priority': {'key': 'properties.priority', 'type': 'int'},
1896        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1897        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1898        'http_listener': {'key': 'properties.httpListener', 'type': 'SubResource'},
1899        'url_path_map': {'key': 'properties.urlPathMap', 'type': 'SubResource'},
1900        'rewrite_rule_set': {'key': 'properties.rewriteRuleSet', 'type': 'SubResource'},
1901        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1902        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1903    }
1904
1905    def __init__(
1906        self,
1907        *,
1908        id: Optional[str] = None,
1909        name: Optional[str] = None,
1910        rule_type: Optional[Union[str, "ApplicationGatewayRequestRoutingRuleType"]] = None,
1911        priority: Optional[int] = None,
1912        backend_address_pool: Optional["SubResource"] = None,
1913        backend_http_settings: Optional["SubResource"] = None,
1914        http_listener: Optional["SubResource"] = None,
1915        url_path_map: Optional["SubResource"] = None,
1916        rewrite_rule_set: Optional["SubResource"] = None,
1917        redirect_configuration: Optional["SubResource"] = None,
1918        **kwargs
1919    ):
1920        super(ApplicationGatewayRequestRoutingRule, self).__init__(id=id, **kwargs)
1921        self.name = name
1922        self.etag = None
1923        self.type = None
1924        self.rule_type = rule_type
1925        self.priority = priority
1926        self.backend_address_pool = backend_address_pool
1927        self.backend_http_settings = backend_http_settings
1928        self.http_listener = http_listener
1929        self.url_path_map = url_path_map
1930        self.rewrite_rule_set = rewrite_rule_set
1931        self.redirect_configuration = redirect_configuration
1932        self.provisioning_state = None
1933
1934
1935class ApplicationGatewayRewriteRule(msrest.serialization.Model):
1936    """Rewrite rule of an application gateway.
1937
1938    :param name: Name of the rewrite rule that is unique within an Application Gateway.
1939    :type name: str
1940    :param rule_sequence: Rule Sequence of the rewrite rule that determines the order of execution
1941     of a particular rule in a RewriteRuleSet.
1942    :type rule_sequence: int
1943    :param conditions: Conditions based on which the action set execution will be evaluated.
1944    :type conditions:
1945     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayRewriteRuleCondition]
1946    :param action_set: Set of actions to be done as part of the rewrite Rule.
1947    :type action_set: ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayRewriteRuleActionSet
1948    """
1949
1950    _attribute_map = {
1951        'name': {'key': 'name', 'type': 'str'},
1952        'rule_sequence': {'key': 'ruleSequence', 'type': 'int'},
1953        'conditions': {'key': 'conditions', 'type': '[ApplicationGatewayRewriteRuleCondition]'},
1954        'action_set': {'key': 'actionSet', 'type': 'ApplicationGatewayRewriteRuleActionSet'},
1955    }
1956
1957    def __init__(
1958        self,
1959        *,
1960        name: Optional[str] = None,
1961        rule_sequence: Optional[int] = None,
1962        conditions: Optional[List["ApplicationGatewayRewriteRuleCondition"]] = None,
1963        action_set: Optional["ApplicationGatewayRewriteRuleActionSet"] = None,
1964        **kwargs
1965    ):
1966        super(ApplicationGatewayRewriteRule, self).__init__(**kwargs)
1967        self.name = name
1968        self.rule_sequence = rule_sequence
1969        self.conditions = conditions
1970        self.action_set = action_set
1971
1972
1973class ApplicationGatewayRewriteRuleActionSet(msrest.serialization.Model):
1974    """Set of actions in the Rewrite Rule in Application Gateway.
1975
1976    :param request_header_configurations: Request Header Actions in the Action Set.
1977    :type request_header_configurations:
1978     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayHeaderConfiguration]
1979    :param response_header_configurations: Response Header Actions in the Action Set.
1980    :type response_header_configurations:
1981     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayHeaderConfiguration]
1982    :param url_configuration: Url Configuration Action in the Action Set.
1983    :type url_configuration:
1984     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayUrlConfiguration
1985    """
1986
1987    _attribute_map = {
1988        'request_header_configurations': {'key': 'requestHeaderConfigurations', 'type': '[ApplicationGatewayHeaderConfiguration]'},
1989        'response_header_configurations': {'key': 'responseHeaderConfigurations', 'type': '[ApplicationGatewayHeaderConfiguration]'},
1990        'url_configuration': {'key': 'urlConfiguration', 'type': 'ApplicationGatewayUrlConfiguration'},
1991    }
1992
1993    def __init__(
1994        self,
1995        *,
1996        request_header_configurations: Optional[List["ApplicationGatewayHeaderConfiguration"]] = None,
1997        response_header_configurations: Optional[List["ApplicationGatewayHeaderConfiguration"]] = None,
1998        url_configuration: Optional["ApplicationGatewayUrlConfiguration"] = None,
1999        **kwargs
2000    ):
2001        super(ApplicationGatewayRewriteRuleActionSet, self).__init__(**kwargs)
2002        self.request_header_configurations = request_header_configurations
2003        self.response_header_configurations = response_header_configurations
2004        self.url_configuration = url_configuration
2005
2006
2007class ApplicationGatewayRewriteRuleCondition(msrest.serialization.Model):
2008    """Set of conditions in the Rewrite Rule in Application Gateway.
2009
2010    :param variable: The condition parameter of the RewriteRuleCondition.
2011    :type variable: str
2012    :param pattern: The pattern, either fixed string or regular expression, that evaluates the
2013     truthfulness of the condition.
2014    :type pattern: str
2015    :param ignore_case: Setting this parameter to truth value with force the pattern to do a case
2016     in-sensitive comparison.
2017    :type ignore_case: bool
2018    :param negate: Setting this value as truth will force to check the negation of the condition
2019     given by the user.
2020    :type negate: bool
2021    """
2022
2023    _attribute_map = {
2024        'variable': {'key': 'variable', 'type': 'str'},
2025        'pattern': {'key': 'pattern', 'type': 'str'},
2026        'ignore_case': {'key': 'ignoreCase', 'type': 'bool'},
2027        'negate': {'key': 'negate', 'type': 'bool'},
2028    }
2029
2030    def __init__(
2031        self,
2032        *,
2033        variable: Optional[str] = None,
2034        pattern: Optional[str] = None,
2035        ignore_case: Optional[bool] = None,
2036        negate: Optional[bool] = None,
2037        **kwargs
2038    ):
2039        super(ApplicationGatewayRewriteRuleCondition, self).__init__(**kwargs)
2040        self.variable = variable
2041        self.pattern = pattern
2042        self.ignore_case = ignore_case
2043        self.negate = negate
2044
2045
2046class ApplicationGatewayRewriteRuleSet(SubResource):
2047    """Rewrite rule set of an application gateway.
2048
2049    Variables are only populated by the server, and will be ignored when sending a request.
2050
2051    :param id: Resource ID.
2052    :type id: str
2053    :param name: Name of the rewrite rule set that is unique within an Application Gateway.
2054    :type name: str
2055    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2056    :vartype etag: str
2057    :param rewrite_rules: Rewrite rules in the rewrite rule set.
2058    :type rewrite_rules: list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayRewriteRule]
2059    :ivar provisioning_state: The provisioning state of the rewrite rule set resource. Possible
2060     values include: "Succeeded", "Updating", "Deleting", "Failed".
2061    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
2062    """
2063
2064    _validation = {
2065        'etag': {'readonly': True},
2066        'provisioning_state': {'readonly': True},
2067    }
2068
2069    _attribute_map = {
2070        'id': {'key': 'id', 'type': 'str'},
2071        'name': {'key': 'name', 'type': 'str'},
2072        'etag': {'key': 'etag', 'type': 'str'},
2073        'rewrite_rules': {'key': 'properties.rewriteRules', 'type': '[ApplicationGatewayRewriteRule]'},
2074        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2075    }
2076
2077    def __init__(
2078        self,
2079        *,
2080        id: Optional[str] = None,
2081        name: Optional[str] = None,
2082        rewrite_rules: Optional[List["ApplicationGatewayRewriteRule"]] = None,
2083        **kwargs
2084    ):
2085        super(ApplicationGatewayRewriteRuleSet, self).__init__(id=id, **kwargs)
2086        self.name = name
2087        self.etag = None
2088        self.rewrite_rules = rewrite_rules
2089        self.provisioning_state = None
2090
2091
2092class ApplicationGatewaySku(msrest.serialization.Model):
2093    """SKU of an application gateway.
2094
2095    :param name: Name of an application gateway SKU. Possible values include: "Standard_Small",
2096     "Standard_Medium", "Standard_Large", "WAF_Medium", "WAF_Large", "Standard_v2", "WAF_v2".
2097    :type name: str or ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySkuName
2098    :param tier: Tier of an application gateway. Possible values include: "Standard", "WAF",
2099     "Standard_v2", "WAF_v2".
2100    :type tier: str or ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayTier
2101    :param capacity: Capacity (instance count) of an application gateway.
2102    :type capacity: int
2103    """
2104
2105    _attribute_map = {
2106        'name': {'key': 'name', 'type': 'str'},
2107        'tier': {'key': 'tier', 'type': 'str'},
2108        'capacity': {'key': 'capacity', 'type': 'int'},
2109    }
2110
2111    def __init__(
2112        self,
2113        *,
2114        name: Optional[Union[str, "ApplicationGatewaySkuName"]] = None,
2115        tier: Optional[Union[str, "ApplicationGatewayTier"]] = None,
2116        capacity: Optional[int] = None,
2117        **kwargs
2118    ):
2119        super(ApplicationGatewaySku, self).__init__(**kwargs)
2120        self.name = name
2121        self.tier = tier
2122        self.capacity = capacity
2123
2124
2125class ApplicationGatewaySslCertificate(SubResource):
2126    """SSL certificates of an application gateway.
2127
2128    Variables are only populated by the server, and will be ignored when sending a request.
2129
2130    :param id: Resource ID.
2131    :type id: str
2132    :param name: Name of the SSL certificate that is unique within an Application Gateway.
2133    :type name: str
2134    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2135    :vartype etag: str
2136    :ivar type: Type of the resource.
2137    :vartype type: str
2138    :param data: Base-64 encoded pfx certificate. Only applicable in PUT Request.
2139    :type data: str
2140    :param password: Password for the pfx file specified in data. Only applicable in PUT request.
2141    :type password: str
2142    :ivar public_cert_data: Base-64 encoded Public cert data corresponding to pfx specified in
2143     data. Only applicable in GET request.
2144    :vartype public_cert_data: str
2145    :param key_vault_secret_id: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or
2146     'Certificate' object stored in KeyVault.
2147    :type key_vault_secret_id: str
2148    :ivar provisioning_state: The provisioning state of the SSL certificate resource. Possible
2149     values include: "Succeeded", "Updating", "Deleting", "Failed".
2150    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
2151    """
2152
2153    _validation = {
2154        'etag': {'readonly': True},
2155        'type': {'readonly': True},
2156        'public_cert_data': {'readonly': True},
2157        'provisioning_state': {'readonly': True},
2158    }
2159
2160    _attribute_map = {
2161        'id': {'key': 'id', 'type': 'str'},
2162        'name': {'key': 'name', 'type': 'str'},
2163        'etag': {'key': 'etag', 'type': 'str'},
2164        'type': {'key': 'type', 'type': 'str'},
2165        'data': {'key': 'properties.data', 'type': 'str'},
2166        'password': {'key': 'properties.password', 'type': 'str'},
2167        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
2168        'key_vault_secret_id': {'key': 'properties.keyVaultSecretId', 'type': 'str'},
2169        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2170    }
2171
2172    def __init__(
2173        self,
2174        *,
2175        id: Optional[str] = None,
2176        name: Optional[str] = None,
2177        data: Optional[str] = None,
2178        password: Optional[str] = None,
2179        key_vault_secret_id: Optional[str] = None,
2180        **kwargs
2181    ):
2182        super(ApplicationGatewaySslCertificate, self).__init__(id=id, **kwargs)
2183        self.name = name
2184        self.etag = None
2185        self.type = None
2186        self.data = data
2187        self.password = password
2188        self.public_cert_data = None
2189        self.key_vault_secret_id = key_vault_secret_id
2190        self.provisioning_state = None
2191
2192
2193class ApplicationGatewaySslPolicy(msrest.serialization.Model):
2194    """Application Gateway Ssl policy.
2195
2196    :param disabled_ssl_protocols: Ssl protocols to be disabled on application gateway.
2197    :type disabled_ssl_protocols: list[str or
2198     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslProtocol]
2199    :param policy_type: Type of Ssl Policy. Possible values include: "Predefined", "Custom".
2200    :type policy_type: str or
2201     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslPolicyType
2202    :param policy_name: Name of Ssl predefined policy. Possible values include:
2203     "AppGwSslPolicy20150501", "AppGwSslPolicy20170401", "AppGwSslPolicy20170401S".
2204    :type policy_name: str or
2205     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslPolicyName
2206    :param cipher_suites: Ssl cipher suites to be enabled in the specified order to application
2207     gateway.
2208    :type cipher_suites: list[str or
2209     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslCipherSuite]
2210    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
2211     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
2212    :type min_protocol_version: str or
2213     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslProtocol
2214    """
2215
2216    _attribute_map = {
2217        'disabled_ssl_protocols': {'key': 'disabledSslProtocols', 'type': '[str]'},
2218        'policy_type': {'key': 'policyType', 'type': 'str'},
2219        'policy_name': {'key': 'policyName', 'type': 'str'},
2220        'cipher_suites': {'key': 'cipherSuites', 'type': '[str]'},
2221        'min_protocol_version': {'key': 'minProtocolVersion', 'type': 'str'},
2222    }
2223
2224    def __init__(
2225        self,
2226        *,
2227        disabled_ssl_protocols: Optional[List[Union[str, "ApplicationGatewaySslProtocol"]]] = None,
2228        policy_type: Optional[Union[str, "ApplicationGatewaySslPolicyType"]] = None,
2229        policy_name: Optional[Union[str, "ApplicationGatewaySslPolicyName"]] = None,
2230        cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
2231        min_protocol_version: Optional[Union[str, "ApplicationGatewaySslProtocol"]] = None,
2232        **kwargs
2233    ):
2234        super(ApplicationGatewaySslPolicy, self).__init__(**kwargs)
2235        self.disabled_ssl_protocols = disabled_ssl_protocols
2236        self.policy_type = policy_type
2237        self.policy_name = policy_name
2238        self.cipher_suites = cipher_suites
2239        self.min_protocol_version = min_protocol_version
2240
2241
2242class ApplicationGatewaySslPredefinedPolicy(SubResource):
2243    """An Ssl predefined policy.
2244
2245    :param id: Resource ID.
2246    :type id: str
2247    :param name: Name of the Ssl predefined policy.
2248    :type name: str
2249    :param cipher_suites: Ssl cipher suites to be enabled in the specified order for application
2250     gateway.
2251    :type cipher_suites: list[str or
2252     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslCipherSuite]
2253    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
2254     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
2255    :type min_protocol_version: str or
2256     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewaySslProtocol
2257    """
2258
2259    _attribute_map = {
2260        'id': {'key': 'id', 'type': 'str'},
2261        'name': {'key': 'name', 'type': 'str'},
2262        'cipher_suites': {'key': 'properties.cipherSuites', 'type': '[str]'},
2263        'min_protocol_version': {'key': 'properties.minProtocolVersion', 'type': 'str'},
2264    }
2265
2266    def __init__(
2267        self,
2268        *,
2269        id: Optional[str] = None,
2270        name: Optional[str] = None,
2271        cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
2272        min_protocol_version: Optional[Union[str, "ApplicationGatewaySslProtocol"]] = None,
2273        **kwargs
2274    ):
2275        super(ApplicationGatewaySslPredefinedPolicy, self).__init__(id=id, **kwargs)
2276        self.name = name
2277        self.cipher_suites = cipher_suites
2278        self.min_protocol_version = min_protocol_version
2279
2280
2281class ApplicationGatewayTrustedRootCertificate(SubResource):
2282    """Trusted Root certificates of an application gateway.
2283
2284    Variables are only populated by the server, and will be ignored when sending a request.
2285
2286    :param id: Resource ID.
2287    :type id: str
2288    :param name: Name of the trusted root certificate that is unique within an Application Gateway.
2289    :type name: str
2290    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2291    :vartype etag: str
2292    :ivar type: Type of the resource.
2293    :vartype type: str
2294    :param data: Certificate public data.
2295    :type data: str
2296    :param key_vault_secret_id: Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or
2297     'Certificate' object stored in KeyVault.
2298    :type key_vault_secret_id: str
2299    :ivar provisioning_state: The provisioning state of the trusted root certificate resource.
2300     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
2301    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
2302    """
2303
2304    _validation = {
2305        'etag': {'readonly': True},
2306        'type': {'readonly': True},
2307        'provisioning_state': {'readonly': True},
2308    }
2309
2310    _attribute_map = {
2311        'id': {'key': 'id', 'type': 'str'},
2312        'name': {'key': 'name', 'type': 'str'},
2313        'etag': {'key': 'etag', 'type': 'str'},
2314        'type': {'key': 'type', 'type': 'str'},
2315        'data': {'key': 'properties.data', 'type': 'str'},
2316        'key_vault_secret_id': {'key': 'properties.keyVaultSecretId', 'type': 'str'},
2317        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2318    }
2319
2320    def __init__(
2321        self,
2322        *,
2323        id: Optional[str] = None,
2324        name: Optional[str] = None,
2325        data: Optional[str] = None,
2326        key_vault_secret_id: Optional[str] = None,
2327        **kwargs
2328    ):
2329        super(ApplicationGatewayTrustedRootCertificate, self).__init__(id=id, **kwargs)
2330        self.name = name
2331        self.etag = None
2332        self.type = None
2333        self.data = data
2334        self.key_vault_secret_id = key_vault_secret_id
2335        self.provisioning_state = None
2336
2337
2338class ApplicationGatewayUrlConfiguration(msrest.serialization.Model):
2339    """Url configuration of the Actions set in Application Gateway.
2340
2341    :param modified_path: Url path which user has provided for url rewrite. Null means no path will
2342     be updated. Default value is null.
2343    :type modified_path: str
2344    :param modified_query_string: Query string which user has provided for url rewrite. Null means
2345     no query string will be updated. Default value is null.
2346    :type modified_query_string: str
2347    :param reroute: If set as true, it will re-evaluate the url path map provided in path based
2348     request routing rules using modified path. Default value is false.
2349    :type reroute: bool
2350    """
2351
2352    _attribute_map = {
2353        'modified_path': {'key': 'modifiedPath', 'type': 'str'},
2354        'modified_query_string': {'key': 'modifiedQueryString', 'type': 'str'},
2355        'reroute': {'key': 'reroute', 'type': 'bool'},
2356    }
2357
2358    def __init__(
2359        self,
2360        *,
2361        modified_path: Optional[str] = None,
2362        modified_query_string: Optional[str] = None,
2363        reroute: Optional[bool] = None,
2364        **kwargs
2365    ):
2366        super(ApplicationGatewayUrlConfiguration, self).__init__(**kwargs)
2367        self.modified_path = modified_path
2368        self.modified_query_string = modified_query_string
2369        self.reroute = reroute
2370
2371
2372class ApplicationGatewayUrlPathMap(SubResource):
2373    """UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.
2374
2375    Variables are only populated by the server, and will be ignored when sending a request.
2376
2377    :param id: Resource ID.
2378    :type id: str
2379    :param name: Name of the URL path map that is unique within an Application Gateway.
2380    :type name: str
2381    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2382    :vartype etag: str
2383    :ivar type: Type of the resource.
2384    :vartype type: str
2385    :param default_backend_address_pool: Default backend address pool resource of URL path map.
2386    :type default_backend_address_pool: ~azure.mgmt.network.v2019_12_01.models.SubResource
2387    :param default_backend_http_settings: Default backend http settings resource of URL path map.
2388    :type default_backend_http_settings: ~azure.mgmt.network.v2019_12_01.models.SubResource
2389    :param default_rewrite_rule_set: Default Rewrite rule set resource of URL path map.
2390    :type default_rewrite_rule_set: ~azure.mgmt.network.v2019_12_01.models.SubResource
2391    :param default_redirect_configuration: Default redirect configuration resource of URL path map.
2392    :type default_redirect_configuration: ~azure.mgmt.network.v2019_12_01.models.SubResource
2393    :param path_rules: Path rule of URL path map resource.
2394    :type path_rules: list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayPathRule]
2395    :ivar provisioning_state: The provisioning state of the URL path map resource. Possible values
2396     include: "Succeeded", "Updating", "Deleting", "Failed".
2397    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
2398    """
2399
2400    _validation = {
2401        'etag': {'readonly': True},
2402        'type': {'readonly': True},
2403        'provisioning_state': {'readonly': True},
2404    }
2405
2406    _attribute_map = {
2407        'id': {'key': 'id', 'type': 'str'},
2408        'name': {'key': 'name', 'type': 'str'},
2409        'etag': {'key': 'etag', 'type': 'str'},
2410        'type': {'key': 'type', 'type': 'str'},
2411        'default_backend_address_pool': {'key': 'properties.defaultBackendAddressPool', 'type': 'SubResource'},
2412        'default_backend_http_settings': {'key': 'properties.defaultBackendHttpSettings', 'type': 'SubResource'},
2413        'default_rewrite_rule_set': {'key': 'properties.defaultRewriteRuleSet', 'type': 'SubResource'},
2414        'default_redirect_configuration': {'key': 'properties.defaultRedirectConfiguration', 'type': 'SubResource'},
2415        'path_rules': {'key': 'properties.pathRules', 'type': '[ApplicationGatewayPathRule]'},
2416        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2417    }
2418
2419    def __init__(
2420        self,
2421        *,
2422        id: Optional[str] = None,
2423        name: Optional[str] = None,
2424        default_backend_address_pool: Optional["SubResource"] = None,
2425        default_backend_http_settings: Optional["SubResource"] = None,
2426        default_rewrite_rule_set: Optional["SubResource"] = None,
2427        default_redirect_configuration: Optional["SubResource"] = None,
2428        path_rules: Optional[List["ApplicationGatewayPathRule"]] = None,
2429        **kwargs
2430    ):
2431        super(ApplicationGatewayUrlPathMap, self).__init__(id=id, **kwargs)
2432        self.name = name
2433        self.etag = None
2434        self.type = None
2435        self.default_backend_address_pool = default_backend_address_pool
2436        self.default_backend_http_settings = default_backend_http_settings
2437        self.default_rewrite_rule_set = default_rewrite_rule_set
2438        self.default_redirect_configuration = default_redirect_configuration
2439        self.path_rules = path_rules
2440        self.provisioning_state = None
2441
2442
2443class ApplicationGatewayWebApplicationFirewallConfiguration(msrest.serialization.Model):
2444    """Application gateway web application firewall configuration.
2445
2446    All required parameters must be populated in order to send to Azure.
2447
2448    :param enabled: Required. Whether the web application firewall is enabled or not.
2449    :type enabled: bool
2450    :param firewall_mode: Required. Web application firewall mode. Possible values include:
2451     "Detection", "Prevention".
2452    :type firewall_mode: str or
2453     ~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayFirewallMode
2454    :param rule_set_type: Required. The type of the web application firewall rule set. Possible
2455     values are: 'OWASP'.
2456    :type rule_set_type: str
2457    :param rule_set_version: Required. The version of the rule set type.
2458    :type rule_set_version: str
2459    :param disabled_rule_groups: The disabled rule groups.
2460    :type disabled_rule_groups:
2461     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayFirewallDisabledRuleGroup]
2462    :param request_body_check: Whether allow WAF to check request Body.
2463    :type request_body_check: bool
2464    :param max_request_body_size: Maximum request body size for WAF.
2465    :type max_request_body_size: int
2466    :param max_request_body_size_in_kb: Maximum request body size in Kb for WAF.
2467    :type max_request_body_size_in_kb: int
2468    :param file_upload_limit_in_mb: Maximum file upload size in Mb for WAF.
2469    :type file_upload_limit_in_mb: int
2470    :param exclusions: The exclusion list.
2471    :type exclusions:
2472     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayFirewallExclusion]
2473    """
2474
2475    _validation = {
2476        'enabled': {'required': True},
2477        'firewall_mode': {'required': True},
2478        'rule_set_type': {'required': True},
2479        'rule_set_version': {'required': True},
2480        'max_request_body_size': {'maximum': 128, 'minimum': 8},
2481        'max_request_body_size_in_kb': {'maximum': 128, 'minimum': 8},
2482        'file_upload_limit_in_mb': {'minimum': 0},
2483    }
2484
2485    _attribute_map = {
2486        'enabled': {'key': 'enabled', 'type': 'bool'},
2487        'firewall_mode': {'key': 'firewallMode', 'type': 'str'},
2488        'rule_set_type': {'key': 'ruleSetType', 'type': 'str'},
2489        'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'},
2490        'disabled_rule_groups': {'key': 'disabledRuleGroups', 'type': '[ApplicationGatewayFirewallDisabledRuleGroup]'},
2491        'request_body_check': {'key': 'requestBodyCheck', 'type': 'bool'},
2492        'max_request_body_size': {'key': 'maxRequestBodySize', 'type': 'int'},
2493        'max_request_body_size_in_kb': {'key': 'maxRequestBodySizeInKb', 'type': 'int'},
2494        'file_upload_limit_in_mb': {'key': 'fileUploadLimitInMb', 'type': 'int'},
2495        'exclusions': {'key': 'exclusions', 'type': '[ApplicationGatewayFirewallExclusion]'},
2496    }
2497
2498    def __init__(
2499        self,
2500        *,
2501        enabled: bool,
2502        firewall_mode: Union[str, "ApplicationGatewayFirewallMode"],
2503        rule_set_type: str,
2504        rule_set_version: str,
2505        disabled_rule_groups: Optional[List["ApplicationGatewayFirewallDisabledRuleGroup"]] = None,
2506        request_body_check: Optional[bool] = None,
2507        max_request_body_size: Optional[int] = None,
2508        max_request_body_size_in_kb: Optional[int] = None,
2509        file_upload_limit_in_mb: Optional[int] = None,
2510        exclusions: Optional[List["ApplicationGatewayFirewallExclusion"]] = None,
2511        **kwargs
2512    ):
2513        super(ApplicationGatewayWebApplicationFirewallConfiguration, self).__init__(**kwargs)
2514        self.enabled = enabled
2515        self.firewall_mode = firewall_mode
2516        self.rule_set_type = rule_set_type
2517        self.rule_set_version = rule_set_version
2518        self.disabled_rule_groups = disabled_rule_groups
2519        self.request_body_check = request_body_check
2520        self.max_request_body_size = max_request_body_size
2521        self.max_request_body_size_in_kb = max_request_body_size_in_kb
2522        self.file_upload_limit_in_mb = file_upload_limit_in_mb
2523        self.exclusions = exclusions
2524
2525
2526class FirewallPolicyRuleCondition(msrest.serialization.Model):
2527    """Properties of a rule.
2528
2529    You probably want to use the sub-classes and not this class directly. Known
2530    sub-classes are: ApplicationRuleCondition, NatRuleCondition, NetworkRuleCondition.
2531
2532    All required parameters must be populated in order to send to Azure.
2533
2534    :param name: Name of the rule condition.
2535    :type name: str
2536    :param description: Description of the rule condition.
2537    :type description: str
2538    :param rule_condition_type: Required. Rule Condition Type.Constant filled by server.  Possible
2539     values include: "ApplicationRuleCondition", "NetworkRuleCondition", "NatRuleCondition".
2540    :type rule_condition_type: str or
2541     ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleConditionType
2542    """
2543
2544    _validation = {
2545        'rule_condition_type': {'required': True},
2546    }
2547
2548    _attribute_map = {
2549        'name': {'key': 'name', 'type': 'str'},
2550        'description': {'key': 'description', 'type': 'str'},
2551        'rule_condition_type': {'key': 'ruleConditionType', 'type': 'str'},
2552    }
2553
2554    _subtype_map = {
2555        'rule_condition_type': {'ApplicationRuleCondition': 'ApplicationRuleCondition', 'NatRuleCondition': 'NatRuleCondition', 'NetworkRuleCondition': 'NetworkRuleCondition'}
2556    }
2557
2558    def __init__(
2559        self,
2560        *,
2561        name: Optional[str] = None,
2562        description: Optional[str] = None,
2563        **kwargs
2564    ):
2565        super(FirewallPolicyRuleCondition, self).__init__(**kwargs)
2566        self.name = name
2567        self.description = description
2568        self.rule_condition_type = None  # type: Optional[str]
2569
2570
2571class ApplicationRuleCondition(FirewallPolicyRuleCondition):
2572    """Rule condition of type application.
2573
2574    All required parameters must be populated in order to send to Azure.
2575
2576    :param name: Name of the rule condition.
2577    :type name: str
2578    :param description: Description of the rule condition.
2579    :type description: str
2580    :param rule_condition_type: Required. Rule Condition Type.Constant filled by server.  Possible
2581     values include: "ApplicationRuleCondition", "NetworkRuleCondition", "NatRuleCondition".
2582    :type rule_condition_type: str or
2583     ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleConditionType
2584    :param source_addresses: List of source IP addresses for this rule.
2585    :type source_addresses: list[str]
2586    :param destination_addresses: List of destination IP addresses or Service Tags.
2587    :type destination_addresses: list[str]
2588    :param protocols: Array of Application Protocols.
2589    :type protocols:
2590     list[~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleConditionApplicationProtocol]
2591    :param target_fqdns: List of FQDNs for this rule condition.
2592    :type target_fqdns: list[str]
2593    :param fqdn_tags: List of FQDN Tags for this rule condition.
2594    :type fqdn_tags: list[str]
2595    :param source_ip_groups: List of source IpGroups for this rule.
2596    :type source_ip_groups: list[str]
2597    """
2598
2599    _validation = {
2600        'rule_condition_type': {'required': True},
2601    }
2602
2603    _attribute_map = {
2604        'name': {'key': 'name', 'type': 'str'},
2605        'description': {'key': 'description', 'type': 'str'},
2606        'rule_condition_type': {'key': 'ruleConditionType', 'type': 'str'},
2607        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
2608        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
2609        'protocols': {'key': 'protocols', 'type': '[FirewallPolicyRuleConditionApplicationProtocol]'},
2610        'target_fqdns': {'key': 'targetFqdns', 'type': '[str]'},
2611        'fqdn_tags': {'key': 'fqdnTags', 'type': '[str]'},
2612        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
2613    }
2614
2615    def __init__(
2616        self,
2617        *,
2618        name: Optional[str] = None,
2619        description: Optional[str] = None,
2620        source_addresses: Optional[List[str]] = None,
2621        destination_addresses: Optional[List[str]] = None,
2622        protocols: Optional[List["FirewallPolicyRuleConditionApplicationProtocol"]] = None,
2623        target_fqdns: Optional[List[str]] = None,
2624        fqdn_tags: Optional[List[str]] = None,
2625        source_ip_groups: Optional[List[str]] = None,
2626        **kwargs
2627    ):
2628        super(ApplicationRuleCondition, self).__init__(name=name, description=description, **kwargs)
2629        self.rule_condition_type = 'ApplicationRuleCondition'  # type: str
2630        self.source_addresses = source_addresses
2631        self.destination_addresses = destination_addresses
2632        self.protocols = protocols
2633        self.target_fqdns = target_fqdns
2634        self.fqdn_tags = fqdn_tags
2635        self.source_ip_groups = source_ip_groups
2636
2637
2638class ApplicationSecurityGroup(Resource):
2639    """An application security group in a resource group.
2640
2641    Variables are only populated by the server, and will be ignored when sending a request.
2642
2643    :param id: Resource ID.
2644    :type id: str
2645    :ivar name: Resource name.
2646    :vartype name: str
2647    :ivar type: Resource type.
2648    :vartype type: str
2649    :param location: Resource location.
2650    :type location: str
2651    :param tags: A set of tags. Resource tags.
2652    :type tags: dict[str, str]
2653    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2654    :vartype etag: str
2655    :ivar resource_guid: The resource GUID property of the application security group resource. It
2656     uniquely identifies a resource, even if the user changes its name or migrate the resource
2657     across subscriptions or resource groups.
2658    :vartype resource_guid: str
2659    :ivar provisioning_state: The provisioning state of the application security group resource.
2660     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
2661    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
2662    """
2663
2664    _validation = {
2665        'name': {'readonly': True},
2666        'type': {'readonly': True},
2667        'etag': {'readonly': True},
2668        'resource_guid': {'readonly': True},
2669        'provisioning_state': {'readonly': True},
2670    }
2671
2672    _attribute_map = {
2673        'id': {'key': 'id', 'type': 'str'},
2674        'name': {'key': 'name', 'type': 'str'},
2675        'type': {'key': 'type', 'type': 'str'},
2676        'location': {'key': 'location', 'type': 'str'},
2677        'tags': {'key': 'tags', 'type': '{str}'},
2678        'etag': {'key': 'etag', 'type': 'str'},
2679        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
2680        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2681    }
2682
2683    def __init__(
2684        self,
2685        *,
2686        id: Optional[str] = None,
2687        location: Optional[str] = None,
2688        tags: Optional[Dict[str, str]] = None,
2689        **kwargs
2690    ):
2691        super(ApplicationSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
2692        self.etag = None
2693        self.resource_guid = None
2694        self.provisioning_state = None
2695
2696
2697class ApplicationSecurityGroupListResult(msrest.serialization.Model):
2698    """A list of application security groups.
2699
2700    Variables are only populated by the server, and will be ignored when sending a request.
2701
2702    :param value: A list of application security groups.
2703    :type value: list[~azure.mgmt.network.v2019_12_01.models.ApplicationSecurityGroup]
2704    :ivar next_link: The URL to get the next set of results.
2705    :vartype next_link: str
2706    """
2707
2708    _validation = {
2709        'next_link': {'readonly': True},
2710    }
2711
2712    _attribute_map = {
2713        'value': {'key': 'value', 'type': '[ApplicationSecurityGroup]'},
2714        'next_link': {'key': 'nextLink', 'type': 'str'},
2715    }
2716
2717    def __init__(
2718        self,
2719        *,
2720        value: Optional[List["ApplicationSecurityGroup"]] = None,
2721        **kwargs
2722    ):
2723        super(ApplicationSecurityGroupListResult, self).__init__(**kwargs)
2724        self.value = value
2725        self.next_link = None
2726
2727
2728class AuthorizationListResult(msrest.serialization.Model):
2729    """Response for ListAuthorizations API service call retrieves all authorizations that belongs to an ExpressRouteCircuit.
2730
2731    :param value: The authorizations in an ExpressRoute Circuit.
2732    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitAuthorization]
2733    :param next_link: The URL to get the next set of results.
2734    :type next_link: str
2735    """
2736
2737    _attribute_map = {
2738        'value': {'key': 'value', 'type': '[ExpressRouteCircuitAuthorization]'},
2739        'next_link': {'key': 'nextLink', 'type': 'str'},
2740    }
2741
2742    def __init__(
2743        self,
2744        *,
2745        value: Optional[List["ExpressRouteCircuitAuthorization"]] = None,
2746        next_link: Optional[str] = None,
2747        **kwargs
2748    ):
2749        super(AuthorizationListResult, self).__init__(**kwargs)
2750        self.value = value
2751        self.next_link = next_link
2752
2753
2754class AutoApprovedPrivateLinkService(msrest.serialization.Model):
2755    """The information of an AutoApprovedPrivateLinkService.
2756
2757    :param private_link_service: The id of the private link service resource.
2758    :type private_link_service: str
2759    """
2760
2761    _attribute_map = {
2762        'private_link_service': {'key': 'privateLinkService', 'type': 'str'},
2763    }
2764
2765    def __init__(
2766        self,
2767        *,
2768        private_link_service: Optional[str] = None,
2769        **kwargs
2770    ):
2771        super(AutoApprovedPrivateLinkService, self).__init__(**kwargs)
2772        self.private_link_service = private_link_service
2773
2774
2775class AutoApprovedPrivateLinkServicesResult(msrest.serialization.Model):
2776    """An array of private link service id that can be linked to a private end point with auto approved.
2777
2778    Variables are only populated by the server, and will be ignored when sending a request.
2779
2780    :param value: An array of auto approved private link service.
2781    :type value: list[~azure.mgmt.network.v2019_12_01.models.AutoApprovedPrivateLinkService]
2782    :ivar next_link: The URL to get the next set of results.
2783    :vartype next_link: str
2784    """
2785
2786    _validation = {
2787        'next_link': {'readonly': True},
2788    }
2789
2790    _attribute_map = {
2791        'value': {'key': 'value', 'type': '[AutoApprovedPrivateLinkService]'},
2792        'next_link': {'key': 'nextLink', 'type': 'str'},
2793    }
2794
2795    def __init__(
2796        self,
2797        *,
2798        value: Optional[List["AutoApprovedPrivateLinkService"]] = None,
2799        **kwargs
2800    ):
2801        super(AutoApprovedPrivateLinkServicesResult, self).__init__(**kwargs)
2802        self.value = value
2803        self.next_link = None
2804
2805
2806class Availability(msrest.serialization.Model):
2807    """Availability of the metric.
2808
2809    :param time_grain: The time grain of the availability.
2810    :type time_grain: str
2811    :param retention: The retention of the availability.
2812    :type retention: str
2813    :param blob_duration: Duration of the availability blob.
2814    :type blob_duration: str
2815    """
2816
2817    _attribute_map = {
2818        'time_grain': {'key': 'timeGrain', 'type': 'str'},
2819        'retention': {'key': 'retention', 'type': 'str'},
2820        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
2821    }
2822
2823    def __init__(
2824        self,
2825        *,
2826        time_grain: Optional[str] = None,
2827        retention: Optional[str] = None,
2828        blob_duration: Optional[str] = None,
2829        **kwargs
2830    ):
2831        super(Availability, self).__init__(**kwargs)
2832        self.time_grain = time_grain
2833        self.retention = retention
2834        self.blob_duration = blob_duration
2835
2836
2837class AvailableDelegation(msrest.serialization.Model):
2838    """The serviceName of an AvailableDelegation indicates a possible delegation for a subnet.
2839
2840    :param name: The name of the AvailableDelegation resource.
2841    :type name: str
2842    :param id: A unique identifier of the AvailableDelegation resource.
2843    :type id: str
2844    :param type: Resource type.
2845    :type type: str
2846    :param service_name: The name of the service and resource.
2847    :type service_name: str
2848    :param actions: The actions permitted to the service upon delegation.
2849    :type actions: list[str]
2850    """
2851
2852    _attribute_map = {
2853        'name': {'key': 'name', 'type': 'str'},
2854        'id': {'key': 'id', 'type': 'str'},
2855        'type': {'key': 'type', 'type': 'str'},
2856        'service_name': {'key': 'serviceName', 'type': 'str'},
2857        'actions': {'key': 'actions', 'type': '[str]'},
2858    }
2859
2860    def __init__(
2861        self,
2862        *,
2863        name: Optional[str] = None,
2864        id: Optional[str] = None,
2865        type: Optional[str] = None,
2866        service_name: Optional[str] = None,
2867        actions: Optional[List[str]] = None,
2868        **kwargs
2869    ):
2870        super(AvailableDelegation, self).__init__(**kwargs)
2871        self.name = name
2872        self.id = id
2873        self.type = type
2874        self.service_name = service_name
2875        self.actions = actions
2876
2877
2878class AvailableDelegationsResult(msrest.serialization.Model):
2879    """An array of available delegations.
2880
2881    Variables are only populated by the server, and will be ignored when sending a request.
2882
2883    :param value: An array of available delegations.
2884    :type value: list[~azure.mgmt.network.v2019_12_01.models.AvailableDelegation]
2885    :ivar next_link: The URL to get the next set of results.
2886    :vartype next_link: str
2887    """
2888
2889    _validation = {
2890        'next_link': {'readonly': True},
2891    }
2892
2893    _attribute_map = {
2894        'value': {'key': 'value', 'type': '[AvailableDelegation]'},
2895        'next_link': {'key': 'nextLink', 'type': 'str'},
2896    }
2897
2898    def __init__(
2899        self,
2900        *,
2901        value: Optional[List["AvailableDelegation"]] = None,
2902        **kwargs
2903    ):
2904        super(AvailableDelegationsResult, self).__init__(**kwargs)
2905        self.value = value
2906        self.next_link = None
2907
2908
2909class AvailablePrivateEndpointType(msrest.serialization.Model):
2910    """The information of an AvailablePrivateEndpointType.
2911
2912    :param name: The name of the service and resource.
2913    :type name: str
2914    :param id: A unique identifier of the AvailablePrivateEndpoint Type resource.
2915    :type id: str
2916    :param type: Resource type.
2917    :type type: str
2918    :param resource_name: The name of the service and resource.
2919    :type resource_name: str
2920    """
2921
2922    _attribute_map = {
2923        'name': {'key': 'name', 'type': 'str'},
2924        'id': {'key': 'id', 'type': 'str'},
2925        'type': {'key': 'type', 'type': 'str'},
2926        'resource_name': {'key': 'resourceName', 'type': 'str'},
2927    }
2928
2929    def __init__(
2930        self,
2931        *,
2932        name: Optional[str] = None,
2933        id: Optional[str] = None,
2934        type: Optional[str] = None,
2935        resource_name: Optional[str] = None,
2936        **kwargs
2937    ):
2938        super(AvailablePrivateEndpointType, self).__init__(**kwargs)
2939        self.name = name
2940        self.id = id
2941        self.type = type
2942        self.resource_name = resource_name
2943
2944
2945class AvailablePrivateEndpointTypesResult(msrest.serialization.Model):
2946    """An array of available PrivateEndpoint types.
2947
2948    Variables are only populated by the server, and will be ignored when sending a request.
2949
2950    :param value: An array of available privateEndpoint type.
2951    :type value: list[~azure.mgmt.network.v2019_12_01.models.AvailablePrivateEndpointType]
2952    :ivar next_link: The URL to get the next set of results.
2953    :vartype next_link: str
2954    """
2955
2956    _validation = {
2957        'next_link': {'readonly': True},
2958    }
2959
2960    _attribute_map = {
2961        'value': {'key': 'value', 'type': '[AvailablePrivateEndpointType]'},
2962        'next_link': {'key': 'nextLink', 'type': 'str'},
2963    }
2964
2965    def __init__(
2966        self,
2967        *,
2968        value: Optional[List["AvailablePrivateEndpointType"]] = None,
2969        **kwargs
2970    ):
2971        super(AvailablePrivateEndpointTypesResult, self).__init__(**kwargs)
2972        self.value = value
2973        self.next_link = None
2974
2975
2976class AvailableProvidersList(msrest.serialization.Model):
2977    """List of available countries with details.
2978
2979    All required parameters must be populated in order to send to Azure.
2980
2981    :param countries: Required. List of available countries.
2982    :type countries: list[~azure.mgmt.network.v2019_12_01.models.AvailableProvidersListCountry]
2983    """
2984
2985    _validation = {
2986        'countries': {'required': True},
2987    }
2988
2989    _attribute_map = {
2990        'countries': {'key': 'countries', 'type': '[AvailableProvidersListCountry]'},
2991    }
2992
2993    def __init__(
2994        self,
2995        *,
2996        countries: List["AvailableProvidersListCountry"],
2997        **kwargs
2998    ):
2999        super(AvailableProvidersList, self).__init__(**kwargs)
3000        self.countries = countries
3001
3002
3003class AvailableProvidersListCity(msrest.serialization.Model):
3004    """City or town details.
3005
3006    :param city_name: The city or town name.
3007    :type city_name: str
3008    :param providers: A list of Internet service providers.
3009    :type providers: list[str]
3010    """
3011
3012    _attribute_map = {
3013        'city_name': {'key': 'cityName', 'type': 'str'},
3014        'providers': {'key': 'providers', 'type': '[str]'},
3015    }
3016
3017    def __init__(
3018        self,
3019        *,
3020        city_name: Optional[str] = None,
3021        providers: Optional[List[str]] = None,
3022        **kwargs
3023    ):
3024        super(AvailableProvidersListCity, self).__init__(**kwargs)
3025        self.city_name = city_name
3026        self.providers = providers
3027
3028
3029class AvailableProvidersListCountry(msrest.serialization.Model):
3030    """Country details.
3031
3032    :param country_name: The country name.
3033    :type country_name: str
3034    :param providers: A list of Internet service providers.
3035    :type providers: list[str]
3036    :param states: List of available states in the country.
3037    :type states: list[~azure.mgmt.network.v2019_12_01.models.AvailableProvidersListState]
3038    """
3039
3040    _attribute_map = {
3041        'country_name': {'key': 'countryName', 'type': 'str'},
3042        'providers': {'key': 'providers', 'type': '[str]'},
3043        'states': {'key': 'states', 'type': '[AvailableProvidersListState]'},
3044    }
3045
3046    def __init__(
3047        self,
3048        *,
3049        country_name: Optional[str] = None,
3050        providers: Optional[List[str]] = None,
3051        states: Optional[List["AvailableProvidersListState"]] = None,
3052        **kwargs
3053    ):
3054        super(AvailableProvidersListCountry, self).__init__(**kwargs)
3055        self.country_name = country_name
3056        self.providers = providers
3057        self.states = states
3058
3059
3060class AvailableProvidersListParameters(msrest.serialization.Model):
3061    """Constraints that determine the list of available Internet service providers.
3062
3063    :param azure_locations: A list of Azure regions.
3064    :type azure_locations: list[str]
3065    :param country: The country for available providers list.
3066    :type country: str
3067    :param state: The state for available providers list.
3068    :type state: str
3069    :param city: The city or town for available providers list.
3070    :type city: str
3071    """
3072
3073    _attribute_map = {
3074        'azure_locations': {'key': 'azureLocations', 'type': '[str]'},
3075        'country': {'key': 'country', 'type': 'str'},
3076        'state': {'key': 'state', 'type': 'str'},
3077        'city': {'key': 'city', 'type': 'str'},
3078    }
3079
3080    def __init__(
3081        self,
3082        *,
3083        azure_locations: Optional[List[str]] = None,
3084        country: Optional[str] = None,
3085        state: Optional[str] = None,
3086        city: Optional[str] = None,
3087        **kwargs
3088    ):
3089        super(AvailableProvidersListParameters, self).__init__(**kwargs)
3090        self.azure_locations = azure_locations
3091        self.country = country
3092        self.state = state
3093        self.city = city
3094
3095
3096class AvailableProvidersListState(msrest.serialization.Model):
3097    """State details.
3098
3099    :param state_name: The state name.
3100    :type state_name: str
3101    :param providers: A list of Internet service providers.
3102    :type providers: list[str]
3103    :param cities: List of available cities or towns in the state.
3104    :type cities: list[~azure.mgmt.network.v2019_12_01.models.AvailableProvidersListCity]
3105    """
3106
3107    _attribute_map = {
3108        'state_name': {'key': 'stateName', 'type': 'str'},
3109        'providers': {'key': 'providers', 'type': '[str]'},
3110        'cities': {'key': 'cities', 'type': '[AvailableProvidersListCity]'},
3111    }
3112
3113    def __init__(
3114        self,
3115        *,
3116        state_name: Optional[str] = None,
3117        providers: Optional[List[str]] = None,
3118        cities: Optional[List["AvailableProvidersListCity"]] = None,
3119        **kwargs
3120    ):
3121        super(AvailableProvidersListState, self).__init__(**kwargs)
3122        self.state_name = state_name
3123        self.providers = providers
3124        self.cities = cities
3125
3126
3127class AvailableServiceAlias(msrest.serialization.Model):
3128    """The available service alias.
3129
3130    :param name: The name of the service alias.
3131    :type name: str
3132    :param id: The ID of the service alias.
3133    :type id: str
3134    :param type: The type of the resource.
3135    :type type: str
3136    :param resource_name: The resource name of the service alias.
3137    :type resource_name: str
3138    """
3139
3140    _attribute_map = {
3141        'name': {'key': 'name', 'type': 'str'},
3142        'id': {'key': 'id', 'type': 'str'},
3143        'type': {'key': 'type', 'type': 'str'},
3144        'resource_name': {'key': 'resourceName', 'type': 'str'},
3145    }
3146
3147    def __init__(
3148        self,
3149        *,
3150        name: Optional[str] = None,
3151        id: Optional[str] = None,
3152        type: Optional[str] = None,
3153        resource_name: Optional[str] = None,
3154        **kwargs
3155    ):
3156        super(AvailableServiceAlias, self).__init__(**kwargs)
3157        self.name = name
3158        self.id = id
3159        self.type = type
3160        self.resource_name = resource_name
3161
3162
3163class AvailableServiceAliasesResult(msrest.serialization.Model):
3164    """An array of available service aliases.
3165
3166    Variables are only populated by the server, and will be ignored when sending a request.
3167
3168    :param value: An array of available service aliases.
3169    :type value: list[~azure.mgmt.network.v2019_12_01.models.AvailableServiceAlias]
3170    :ivar next_link: The URL to get the next set of results.
3171    :vartype next_link: str
3172    """
3173
3174    _validation = {
3175        'next_link': {'readonly': True},
3176    }
3177
3178    _attribute_map = {
3179        'value': {'key': 'value', 'type': '[AvailableServiceAlias]'},
3180        'next_link': {'key': 'nextLink', 'type': 'str'},
3181    }
3182
3183    def __init__(
3184        self,
3185        *,
3186        value: Optional[List["AvailableServiceAlias"]] = None,
3187        **kwargs
3188    ):
3189        super(AvailableServiceAliasesResult, self).__init__(**kwargs)
3190        self.value = value
3191        self.next_link = None
3192
3193
3194class AzureAsyncOperationResult(msrest.serialization.Model):
3195    """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.
3196
3197    :param status: Status of the Azure async operation. Possible values include: "InProgress",
3198     "Succeeded", "Failed".
3199    :type status: str or ~azure.mgmt.network.v2019_12_01.models.NetworkOperationStatus
3200    :param error: Details of the error occurred during specified asynchronous operation.
3201    :type error: ~azure.mgmt.network.v2019_12_01.models.Error
3202    """
3203
3204    _attribute_map = {
3205        'status': {'key': 'status', 'type': 'str'},
3206        'error': {'key': 'error', 'type': 'Error'},
3207    }
3208
3209    def __init__(
3210        self,
3211        *,
3212        status: Optional[Union[str, "NetworkOperationStatus"]] = None,
3213        error: Optional["Error"] = None,
3214        **kwargs
3215    ):
3216        super(AzureAsyncOperationResult, self).__init__(**kwargs)
3217        self.status = status
3218        self.error = error
3219
3220
3221class AzureFirewall(Resource):
3222    """Azure Firewall resource.
3223
3224    Variables are only populated by the server, and will be ignored when sending a request.
3225
3226    :param id: Resource ID.
3227    :type id: str
3228    :ivar name: Resource name.
3229    :vartype name: str
3230    :ivar type: Resource type.
3231    :vartype type: str
3232    :param location: Resource location.
3233    :type location: str
3234    :param tags: A set of tags. Resource tags.
3235    :type tags: dict[str, str]
3236    :param zones: A list of availability zones denoting where the resource needs to come from.
3237    :type zones: list[str]
3238    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3239    :vartype etag: str
3240    :param application_rule_collections: Collection of application rule collections used by Azure
3241     Firewall.
3242    :type application_rule_collections:
3243     list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallApplicationRuleCollection]
3244    :param nat_rule_collections: Collection of NAT rule collections used by Azure Firewall.
3245    :type nat_rule_collections:
3246     list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallNatRuleCollection]
3247    :param network_rule_collections: Collection of network rule collections used by Azure Firewall.
3248    :type network_rule_collections:
3249     list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallNetworkRuleCollection]
3250    :param ip_configurations: IP configuration of the Azure Firewall resource.
3251    :type ip_configurations:
3252     list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallIPConfiguration]
3253    :param management_ip_configuration: IP configuration of the Azure Firewall used for management
3254     traffic.
3255    :type management_ip_configuration:
3256     ~azure.mgmt.network.v2019_12_01.models.AzureFirewallIPConfiguration
3257    :ivar provisioning_state: The provisioning state of the Azure firewall resource. Possible
3258     values include: "Succeeded", "Updating", "Deleting", "Failed".
3259    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
3260    :param threat_intel_mode: The operation mode for Threat Intelligence. Possible values include:
3261     "Alert", "Deny", "Off".
3262    :type threat_intel_mode: str or
3263     ~azure.mgmt.network.v2019_12_01.models.AzureFirewallThreatIntelMode
3264    :param virtual_hub: The virtualHub to which the firewall belongs.
3265    :type virtual_hub: ~azure.mgmt.network.v2019_12_01.models.SubResource
3266    :param firewall_policy: The firewallPolicy associated with this azure firewall.
3267    :type firewall_policy: ~azure.mgmt.network.v2019_12_01.models.SubResource
3268    :ivar hub_ip_addresses: IP addresses associated with AzureFirewall.
3269    :vartype hub_ip_addresses: ~azure.mgmt.network.v2019_12_01.models.HubIPAddresses
3270    :ivar ip_groups: IpGroups associated with AzureFirewall.
3271    :vartype ip_groups: list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallIpGroups]
3272    :param sku: The Azure Firewall Resource SKU.
3273    :type sku: ~azure.mgmt.network.v2019_12_01.models.AzureFirewallSku
3274    :param additional_properties: The additional properties used to further config this azure
3275     firewall.
3276    :type additional_properties: dict[str, str]
3277    """
3278
3279    _validation = {
3280        'name': {'readonly': True},
3281        'type': {'readonly': True},
3282        'etag': {'readonly': True},
3283        'provisioning_state': {'readonly': True},
3284        'hub_ip_addresses': {'readonly': True},
3285        'ip_groups': {'readonly': True},
3286    }
3287
3288    _attribute_map = {
3289        'id': {'key': 'id', 'type': 'str'},
3290        'name': {'key': 'name', 'type': 'str'},
3291        'type': {'key': 'type', 'type': 'str'},
3292        'location': {'key': 'location', 'type': 'str'},
3293        'tags': {'key': 'tags', 'type': '{str}'},
3294        'zones': {'key': 'zones', 'type': '[str]'},
3295        'etag': {'key': 'etag', 'type': 'str'},
3296        'application_rule_collections': {'key': 'properties.applicationRuleCollections', 'type': '[AzureFirewallApplicationRuleCollection]'},
3297        'nat_rule_collections': {'key': 'properties.natRuleCollections', 'type': '[AzureFirewallNatRuleCollection]'},
3298        'network_rule_collections': {'key': 'properties.networkRuleCollections', 'type': '[AzureFirewallNetworkRuleCollection]'},
3299        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[AzureFirewallIPConfiguration]'},
3300        'management_ip_configuration': {'key': 'properties.managementIpConfiguration', 'type': 'AzureFirewallIPConfiguration'},
3301        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3302        'threat_intel_mode': {'key': 'properties.threatIntelMode', 'type': 'str'},
3303        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
3304        'firewall_policy': {'key': 'properties.firewallPolicy', 'type': 'SubResource'},
3305        'hub_ip_addresses': {'key': 'properties.hubIpAddresses', 'type': 'HubIPAddresses'},
3306        'ip_groups': {'key': 'properties.ipGroups', 'type': '[AzureFirewallIpGroups]'},
3307        'sku': {'key': 'properties.sku', 'type': 'AzureFirewallSku'},
3308        'additional_properties': {'key': 'properties.additionalProperties', 'type': '{str}'},
3309    }
3310
3311    def __init__(
3312        self,
3313        *,
3314        id: Optional[str] = None,
3315        location: Optional[str] = None,
3316        tags: Optional[Dict[str, str]] = None,
3317        zones: Optional[List[str]] = None,
3318        application_rule_collections: Optional[List["AzureFirewallApplicationRuleCollection"]] = None,
3319        nat_rule_collections: Optional[List["AzureFirewallNatRuleCollection"]] = None,
3320        network_rule_collections: Optional[List["AzureFirewallNetworkRuleCollection"]] = None,
3321        ip_configurations: Optional[List["AzureFirewallIPConfiguration"]] = None,
3322        management_ip_configuration: Optional["AzureFirewallIPConfiguration"] = None,
3323        threat_intel_mode: Optional[Union[str, "AzureFirewallThreatIntelMode"]] = None,
3324        virtual_hub: Optional["SubResource"] = None,
3325        firewall_policy: Optional["SubResource"] = None,
3326        sku: Optional["AzureFirewallSku"] = None,
3327        additional_properties: Optional[Dict[str, str]] = None,
3328        **kwargs
3329    ):
3330        super(AzureFirewall, self).__init__(id=id, location=location, tags=tags, **kwargs)
3331        self.zones = zones
3332        self.etag = None
3333        self.application_rule_collections = application_rule_collections
3334        self.nat_rule_collections = nat_rule_collections
3335        self.network_rule_collections = network_rule_collections
3336        self.ip_configurations = ip_configurations
3337        self.management_ip_configuration = management_ip_configuration
3338        self.provisioning_state = None
3339        self.threat_intel_mode = threat_intel_mode
3340        self.virtual_hub = virtual_hub
3341        self.firewall_policy = firewall_policy
3342        self.hub_ip_addresses = None
3343        self.ip_groups = None
3344        self.sku = sku
3345        self.additional_properties = additional_properties
3346
3347
3348class AzureFirewallApplicationRule(msrest.serialization.Model):
3349    """Properties of an application rule.
3350
3351    :param name: Name of the application rule.
3352    :type name: str
3353    :param description: Description of the rule.
3354    :type description: str
3355    :param source_addresses: List of source IP addresses for this rule.
3356    :type source_addresses: list[str]
3357    :param protocols: Array of ApplicationRuleProtocols.
3358    :type protocols:
3359     list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallApplicationRuleProtocol]
3360    :param target_fqdns: List of FQDNs for this rule.
3361    :type target_fqdns: list[str]
3362    :param fqdn_tags: List of FQDN Tags for this rule.
3363    :type fqdn_tags: list[str]
3364    :param source_ip_groups: List of source IpGroups for this rule.
3365    :type source_ip_groups: list[str]
3366    """
3367
3368    _attribute_map = {
3369        'name': {'key': 'name', 'type': 'str'},
3370        'description': {'key': 'description', 'type': 'str'},
3371        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
3372        'protocols': {'key': 'protocols', 'type': '[AzureFirewallApplicationRuleProtocol]'},
3373        'target_fqdns': {'key': 'targetFqdns', 'type': '[str]'},
3374        'fqdn_tags': {'key': 'fqdnTags', 'type': '[str]'},
3375        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
3376    }
3377
3378    def __init__(
3379        self,
3380        *,
3381        name: Optional[str] = None,
3382        description: Optional[str] = None,
3383        source_addresses: Optional[List[str]] = None,
3384        protocols: Optional[List["AzureFirewallApplicationRuleProtocol"]] = None,
3385        target_fqdns: Optional[List[str]] = None,
3386        fqdn_tags: Optional[List[str]] = None,
3387        source_ip_groups: Optional[List[str]] = None,
3388        **kwargs
3389    ):
3390        super(AzureFirewallApplicationRule, self).__init__(**kwargs)
3391        self.name = name
3392        self.description = description
3393        self.source_addresses = source_addresses
3394        self.protocols = protocols
3395        self.target_fqdns = target_fqdns
3396        self.fqdn_tags = fqdn_tags
3397        self.source_ip_groups = source_ip_groups
3398
3399
3400class AzureFirewallApplicationRuleCollection(SubResource):
3401    """Application rule collection resource.
3402
3403    Variables are only populated by the server, and will be ignored when sending a request.
3404
3405    :param id: Resource ID.
3406    :type id: str
3407    :param name: The name of the resource that is unique within the Azure firewall. This name can
3408     be used to access the resource.
3409    :type name: str
3410    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3411    :vartype etag: str
3412    :param priority: Priority of the application rule collection resource.
3413    :type priority: int
3414    :param action: The action type of a rule collection.
3415    :type action: ~azure.mgmt.network.v2019_12_01.models.AzureFirewallRCAction
3416    :param rules: Collection of rules used by a application rule collection.
3417    :type rules: list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallApplicationRule]
3418    :ivar provisioning_state: The provisioning state of the application rule collection resource.
3419     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
3420    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
3421    """
3422
3423    _validation = {
3424        'etag': {'readonly': True},
3425        'priority': {'maximum': 65000, 'minimum': 100},
3426        'provisioning_state': {'readonly': True},
3427    }
3428
3429    _attribute_map = {
3430        'id': {'key': 'id', 'type': 'str'},
3431        'name': {'key': 'name', 'type': 'str'},
3432        'etag': {'key': 'etag', 'type': 'str'},
3433        'priority': {'key': 'properties.priority', 'type': 'int'},
3434        'action': {'key': 'properties.action', 'type': 'AzureFirewallRCAction'},
3435        'rules': {'key': 'properties.rules', 'type': '[AzureFirewallApplicationRule]'},
3436        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3437    }
3438
3439    def __init__(
3440        self,
3441        *,
3442        id: Optional[str] = None,
3443        name: Optional[str] = None,
3444        priority: Optional[int] = None,
3445        action: Optional["AzureFirewallRCAction"] = None,
3446        rules: Optional[List["AzureFirewallApplicationRule"]] = None,
3447        **kwargs
3448    ):
3449        super(AzureFirewallApplicationRuleCollection, self).__init__(id=id, **kwargs)
3450        self.name = name
3451        self.etag = None
3452        self.priority = priority
3453        self.action = action
3454        self.rules = rules
3455        self.provisioning_state = None
3456
3457
3458class AzureFirewallApplicationRuleProtocol(msrest.serialization.Model):
3459    """Properties of the application rule protocol.
3460
3461    :param protocol_type: Protocol type. Possible values include: "Http", "Https", "Mssql".
3462    :type protocol_type: str or
3463     ~azure.mgmt.network.v2019_12_01.models.AzureFirewallApplicationRuleProtocolType
3464    :param port: Port number for the protocol, cannot be greater than 64000. This field is
3465     optional.
3466    :type port: int
3467    """
3468
3469    _validation = {
3470        'port': {'maximum': 64000, 'minimum': 0},
3471    }
3472
3473    _attribute_map = {
3474        'protocol_type': {'key': 'protocolType', 'type': 'str'},
3475        'port': {'key': 'port', 'type': 'int'},
3476    }
3477
3478    def __init__(
3479        self,
3480        *,
3481        protocol_type: Optional[Union[str, "AzureFirewallApplicationRuleProtocolType"]] = None,
3482        port: Optional[int] = None,
3483        **kwargs
3484    ):
3485        super(AzureFirewallApplicationRuleProtocol, self).__init__(**kwargs)
3486        self.protocol_type = protocol_type
3487        self.port = port
3488
3489
3490class AzureFirewallFqdnTag(Resource):
3491    """Azure Firewall FQDN Tag Resource.
3492
3493    Variables are only populated by the server, and will be ignored when sending a request.
3494
3495    :param id: Resource ID.
3496    :type id: str
3497    :ivar name: Resource name.
3498    :vartype name: str
3499    :ivar type: Resource type.
3500    :vartype type: str
3501    :param location: Resource location.
3502    :type location: str
3503    :param tags: A set of tags. Resource tags.
3504    :type tags: dict[str, str]
3505    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3506    :vartype etag: str
3507    :ivar provisioning_state: The provisioning state of the Azure firewall FQDN tag resource.
3508     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
3509    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
3510    :ivar fqdn_tag_name: The name of this FQDN Tag.
3511    :vartype fqdn_tag_name: str
3512    """
3513
3514    _validation = {
3515        'name': {'readonly': True},
3516        'type': {'readonly': True},
3517        'etag': {'readonly': True},
3518        'provisioning_state': {'readonly': True},
3519        'fqdn_tag_name': {'readonly': True},
3520    }
3521
3522    _attribute_map = {
3523        'id': {'key': 'id', 'type': 'str'},
3524        'name': {'key': 'name', 'type': 'str'},
3525        'type': {'key': 'type', 'type': 'str'},
3526        'location': {'key': 'location', 'type': 'str'},
3527        'tags': {'key': 'tags', 'type': '{str}'},
3528        'etag': {'key': 'etag', 'type': 'str'},
3529        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3530        'fqdn_tag_name': {'key': 'properties.fqdnTagName', 'type': 'str'},
3531    }
3532
3533    def __init__(
3534        self,
3535        *,
3536        id: Optional[str] = None,
3537        location: Optional[str] = None,
3538        tags: Optional[Dict[str, str]] = None,
3539        **kwargs
3540    ):
3541        super(AzureFirewallFqdnTag, self).__init__(id=id, location=location, tags=tags, **kwargs)
3542        self.etag = None
3543        self.provisioning_state = None
3544        self.fqdn_tag_name = None
3545
3546
3547class AzureFirewallFqdnTagListResult(msrest.serialization.Model):
3548    """Response for ListAzureFirewallFqdnTags API service call.
3549
3550    :param value: List of Azure Firewall FQDN Tags in a resource group.
3551    :type value: list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallFqdnTag]
3552    :param next_link: URL to get the next set of results.
3553    :type next_link: str
3554    """
3555
3556    _attribute_map = {
3557        'value': {'key': 'value', 'type': '[AzureFirewallFqdnTag]'},
3558        'next_link': {'key': 'nextLink', 'type': 'str'},
3559    }
3560
3561    def __init__(
3562        self,
3563        *,
3564        value: Optional[List["AzureFirewallFqdnTag"]] = None,
3565        next_link: Optional[str] = None,
3566        **kwargs
3567    ):
3568        super(AzureFirewallFqdnTagListResult, self).__init__(**kwargs)
3569        self.value = value
3570        self.next_link = next_link
3571
3572
3573class AzureFirewallIPConfiguration(SubResource):
3574    """IP configuration of an Azure Firewall.
3575
3576    Variables are only populated by the server, and will be ignored when sending a request.
3577
3578    :param id: Resource ID.
3579    :type id: str
3580    :param name: Name of the resource that is unique within a resource group. This name can be used
3581     to access the resource.
3582    :type name: str
3583    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3584    :vartype etag: str
3585    :ivar type: Type of the resource.
3586    :vartype type: str
3587    :ivar private_ip_address: The Firewall Internal Load Balancer IP to be used as the next hop in
3588     User Defined Routes.
3589    :vartype private_ip_address: str
3590    :param subnet: Reference to the subnet resource. This resource must be named
3591     'AzureFirewallSubnet' or 'AzureFirewallManagementSubnet'.
3592    :type subnet: ~azure.mgmt.network.v2019_12_01.models.SubResource
3593    :param public_ip_address: Reference to the PublicIP resource. This field is a mandatory input
3594     if subnet is not null.
3595    :type public_ip_address: ~azure.mgmt.network.v2019_12_01.models.SubResource
3596    :ivar provisioning_state: The provisioning state of the Azure firewall IP configuration
3597     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
3598    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
3599    """
3600
3601    _validation = {
3602        'etag': {'readonly': True},
3603        'type': {'readonly': True},
3604        'private_ip_address': {'readonly': True},
3605        'provisioning_state': {'readonly': True},
3606    }
3607
3608    _attribute_map = {
3609        'id': {'key': 'id', 'type': 'str'},
3610        'name': {'key': 'name', 'type': 'str'},
3611        'etag': {'key': 'etag', 'type': 'str'},
3612        'type': {'key': 'type', 'type': 'str'},
3613        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
3614        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
3615        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
3616        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3617    }
3618
3619    def __init__(
3620        self,
3621        *,
3622        id: Optional[str] = None,
3623        name: Optional[str] = None,
3624        subnet: Optional["SubResource"] = None,
3625        public_ip_address: Optional["SubResource"] = None,
3626        **kwargs
3627    ):
3628        super(AzureFirewallIPConfiguration, self).__init__(id=id, **kwargs)
3629        self.name = name
3630        self.etag = None
3631        self.type = None
3632        self.private_ip_address = None
3633        self.subnet = subnet
3634        self.public_ip_address = public_ip_address
3635        self.provisioning_state = None
3636
3637
3638class AzureFirewallIpGroups(msrest.serialization.Model):
3639    """IpGroups associated with azure firewall.
3640
3641    Variables are only populated by the server, and will be ignored when sending a request.
3642
3643    :ivar id: Resource ID.
3644    :vartype id: str
3645    :ivar change_number: The iteration number.
3646    :vartype change_number: str
3647    """
3648
3649    _validation = {
3650        'id': {'readonly': True},
3651        'change_number': {'readonly': True},
3652    }
3653
3654    _attribute_map = {
3655        'id': {'key': 'id', 'type': 'str'},
3656        'change_number': {'key': 'changeNumber', 'type': 'str'},
3657    }
3658
3659    def __init__(
3660        self,
3661        **kwargs
3662    ):
3663        super(AzureFirewallIpGroups, self).__init__(**kwargs)
3664        self.id = None
3665        self.change_number = None
3666
3667
3668class AzureFirewallListResult(msrest.serialization.Model):
3669    """Response for ListAzureFirewalls API service call.
3670
3671    :param value: List of Azure Firewalls in a resource group.
3672    :type value: list[~azure.mgmt.network.v2019_12_01.models.AzureFirewall]
3673    :param next_link: URL to get the next set of results.
3674    :type next_link: str
3675    """
3676
3677    _attribute_map = {
3678        'value': {'key': 'value', 'type': '[AzureFirewall]'},
3679        'next_link': {'key': 'nextLink', 'type': 'str'},
3680    }
3681
3682    def __init__(
3683        self,
3684        *,
3685        value: Optional[List["AzureFirewall"]] = None,
3686        next_link: Optional[str] = None,
3687        **kwargs
3688    ):
3689        super(AzureFirewallListResult, self).__init__(**kwargs)
3690        self.value = value
3691        self.next_link = next_link
3692
3693
3694class AzureFirewallNatRCAction(msrest.serialization.Model):
3695    """AzureFirewall NAT Rule Collection Action.
3696
3697    :param type: The type of action. Possible values include: "Snat", "Dnat".
3698    :type type: str or ~azure.mgmt.network.v2019_12_01.models.AzureFirewallNatRCActionType
3699    """
3700
3701    _attribute_map = {
3702        'type': {'key': 'type', 'type': 'str'},
3703    }
3704
3705    def __init__(
3706        self,
3707        *,
3708        type: Optional[Union[str, "AzureFirewallNatRCActionType"]] = None,
3709        **kwargs
3710    ):
3711        super(AzureFirewallNatRCAction, self).__init__(**kwargs)
3712        self.type = type
3713
3714
3715class AzureFirewallNatRule(msrest.serialization.Model):
3716    """Properties of a NAT rule.
3717
3718    :param name: Name of the NAT rule.
3719    :type name: str
3720    :param description: Description of the rule.
3721    :type description: str
3722    :param source_addresses: List of source IP addresses for this rule.
3723    :type source_addresses: list[str]
3724    :param destination_addresses: List of destination IP addresses for this rule. Supports IP
3725     ranges, prefixes, and service tags.
3726    :type destination_addresses: list[str]
3727    :param destination_ports: List of destination ports.
3728    :type destination_ports: list[str]
3729    :param protocols: Array of AzureFirewallNetworkRuleProtocols applicable to this NAT rule.
3730    :type protocols: list[str or
3731     ~azure.mgmt.network.v2019_12_01.models.AzureFirewallNetworkRuleProtocol]
3732    :param translated_address: The translated address for this NAT rule.
3733    :type translated_address: str
3734    :param translated_port: The translated port for this NAT rule.
3735    :type translated_port: str
3736    :param translated_fqdn: The translated FQDN for this NAT rule.
3737    :type translated_fqdn: str
3738    :param source_ip_groups: List of source IpGroups for this rule.
3739    :type source_ip_groups: list[str]
3740    """
3741
3742    _attribute_map = {
3743        'name': {'key': 'name', 'type': 'str'},
3744        'description': {'key': 'description', 'type': 'str'},
3745        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
3746        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
3747        'destination_ports': {'key': 'destinationPorts', 'type': '[str]'},
3748        'protocols': {'key': 'protocols', 'type': '[str]'},
3749        'translated_address': {'key': 'translatedAddress', 'type': 'str'},
3750        'translated_port': {'key': 'translatedPort', 'type': 'str'},
3751        'translated_fqdn': {'key': 'translatedFqdn', 'type': 'str'},
3752        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
3753    }
3754
3755    def __init__(
3756        self,
3757        *,
3758        name: Optional[str] = None,
3759        description: Optional[str] = None,
3760        source_addresses: Optional[List[str]] = None,
3761        destination_addresses: Optional[List[str]] = None,
3762        destination_ports: Optional[List[str]] = None,
3763        protocols: Optional[List[Union[str, "AzureFirewallNetworkRuleProtocol"]]] = None,
3764        translated_address: Optional[str] = None,
3765        translated_port: Optional[str] = None,
3766        translated_fqdn: Optional[str] = None,
3767        source_ip_groups: Optional[List[str]] = None,
3768        **kwargs
3769    ):
3770        super(AzureFirewallNatRule, self).__init__(**kwargs)
3771        self.name = name
3772        self.description = description
3773        self.source_addresses = source_addresses
3774        self.destination_addresses = destination_addresses
3775        self.destination_ports = destination_ports
3776        self.protocols = protocols
3777        self.translated_address = translated_address
3778        self.translated_port = translated_port
3779        self.translated_fqdn = translated_fqdn
3780        self.source_ip_groups = source_ip_groups
3781
3782
3783class AzureFirewallNatRuleCollection(SubResource):
3784    """NAT rule collection resource.
3785
3786    Variables are only populated by the server, and will be ignored when sending a request.
3787
3788    :param id: Resource ID.
3789    :type id: str
3790    :param name: The name of the resource that is unique within the Azure firewall. This name can
3791     be used to access the resource.
3792    :type name: str
3793    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3794    :vartype etag: str
3795    :param priority: Priority of the NAT rule collection resource.
3796    :type priority: int
3797    :param action: The action type of a NAT rule collection.
3798    :type action: ~azure.mgmt.network.v2019_12_01.models.AzureFirewallNatRCAction
3799    :param rules: Collection of rules used by a NAT rule collection.
3800    :type rules: list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallNatRule]
3801    :ivar provisioning_state: The provisioning state of the NAT rule collection resource. Possible
3802     values include: "Succeeded", "Updating", "Deleting", "Failed".
3803    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
3804    """
3805
3806    _validation = {
3807        'etag': {'readonly': True},
3808        'priority': {'maximum': 65000, 'minimum': 100},
3809        'provisioning_state': {'readonly': True},
3810    }
3811
3812    _attribute_map = {
3813        'id': {'key': 'id', 'type': 'str'},
3814        'name': {'key': 'name', 'type': 'str'},
3815        'etag': {'key': 'etag', 'type': 'str'},
3816        'priority': {'key': 'properties.priority', 'type': 'int'},
3817        'action': {'key': 'properties.action', 'type': 'AzureFirewallNatRCAction'},
3818        'rules': {'key': 'properties.rules', 'type': '[AzureFirewallNatRule]'},
3819        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3820    }
3821
3822    def __init__(
3823        self,
3824        *,
3825        id: Optional[str] = None,
3826        name: Optional[str] = None,
3827        priority: Optional[int] = None,
3828        action: Optional["AzureFirewallNatRCAction"] = None,
3829        rules: Optional[List["AzureFirewallNatRule"]] = None,
3830        **kwargs
3831    ):
3832        super(AzureFirewallNatRuleCollection, self).__init__(id=id, **kwargs)
3833        self.name = name
3834        self.etag = None
3835        self.priority = priority
3836        self.action = action
3837        self.rules = rules
3838        self.provisioning_state = None
3839
3840
3841class AzureFirewallNetworkRule(msrest.serialization.Model):
3842    """Properties of the network rule.
3843
3844    :param name: Name of the network rule.
3845    :type name: str
3846    :param description: Description of the rule.
3847    :type description: str
3848    :param protocols: Array of AzureFirewallNetworkRuleProtocols.
3849    :type protocols: list[str or
3850     ~azure.mgmt.network.v2019_12_01.models.AzureFirewallNetworkRuleProtocol]
3851    :param source_addresses: List of source IP addresses for this rule.
3852    :type source_addresses: list[str]
3853    :param destination_addresses: List of destination IP addresses.
3854    :type destination_addresses: list[str]
3855    :param destination_ports: List of destination ports.
3856    :type destination_ports: list[str]
3857    :param destination_fqdns: List of destination FQDNs.
3858    :type destination_fqdns: list[str]
3859    :param source_ip_groups: List of source IpGroups for this rule.
3860    :type source_ip_groups: list[str]
3861    :param destination_ip_groups: List of destination IpGroups for this rule.
3862    :type destination_ip_groups: list[str]
3863    """
3864
3865    _attribute_map = {
3866        'name': {'key': 'name', 'type': 'str'},
3867        'description': {'key': 'description', 'type': 'str'},
3868        'protocols': {'key': 'protocols', 'type': '[str]'},
3869        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
3870        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
3871        'destination_ports': {'key': 'destinationPorts', 'type': '[str]'},
3872        'destination_fqdns': {'key': 'destinationFqdns', 'type': '[str]'},
3873        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
3874        'destination_ip_groups': {'key': 'destinationIpGroups', 'type': '[str]'},
3875    }
3876
3877    def __init__(
3878        self,
3879        *,
3880        name: Optional[str] = None,
3881        description: Optional[str] = None,
3882        protocols: Optional[List[Union[str, "AzureFirewallNetworkRuleProtocol"]]] = None,
3883        source_addresses: Optional[List[str]] = None,
3884        destination_addresses: Optional[List[str]] = None,
3885        destination_ports: Optional[List[str]] = None,
3886        destination_fqdns: Optional[List[str]] = None,
3887        source_ip_groups: Optional[List[str]] = None,
3888        destination_ip_groups: Optional[List[str]] = None,
3889        **kwargs
3890    ):
3891        super(AzureFirewallNetworkRule, self).__init__(**kwargs)
3892        self.name = name
3893        self.description = description
3894        self.protocols = protocols
3895        self.source_addresses = source_addresses
3896        self.destination_addresses = destination_addresses
3897        self.destination_ports = destination_ports
3898        self.destination_fqdns = destination_fqdns
3899        self.source_ip_groups = source_ip_groups
3900        self.destination_ip_groups = destination_ip_groups
3901
3902
3903class AzureFirewallNetworkRuleCollection(SubResource):
3904    """Network rule collection resource.
3905
3906    Variables are only populated by the server, and will be ignored when sending a request.
3907
3908    :param id: Resource ID.
3909    :type id: str
3910    :param name: The name of the resource that is unique within the Azure firewall. This name can
3911     be used to access the resource.
3912    :type name: str
3913    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3914    :vartype etag: str
3915    :param priority: Priority of the network rule collection resource.
3916    :type priority: int
3917    :param action: The action type of a rule collection.
3918    :type action: ~azure.mgmt.network.v2019_12_01.models.AzureFirewallRCAction
3919    :param rules: Collection of rules used by a network rule collection.
3920    :type rules: list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallNetworkRule]
3921    :ivar provisioning_state: The provisioning state of the network rule collection resource.
3922     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
3923    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
3924    """
3925
3926    _validation = {
3927        'etag': {'readonly': True},
3928        'priority': {'maximum': 65000, 'minimum': 100},
3929        'provisioning_state': {'readonly': True},
3930    }
3931
3932    _attribute_map = {
3933        'id': {'key': 'id', 'type': 'str'},
3934        'name': {'key': 'name', 'type': 'str'},
3935        'etag': {'key': 'etag', 'type': 'str'},
3936        'priority': {'key': 'properties.priority', 'type': 'int'},
3937        'action': {'key': 'properties.action', 'type': 'AzureFirewallRCAction'},
3938        'rules': {'key': 'properties.rules', 'type': '[AzureFirewallNetworkRule]'},
3939        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3940    }
3941
3942    def __init__(
3943        self,
3944        *,
3945        id: Optional[str] = None,
3946        name: Optional[str] = None,
3947        priority: Optional[int] = None,
3948        action: Optional["AzureFirewallRCAction"] = None,
3949        rules: Optional[List["AzureFirewallNetworkRule"]] = None,
3950        **kwargs
3951    ):
3952        super(AzureFirewallNetworkRuleCollection, self).__init__(id=id, **kwargs)
3953        self.name = name
3954        self.etag = None
3955        self.priority = priority
3956        self.action = action
3957        self.rules = rules
3958        self.provisioning_state = None
3959
3960
3961class AzureFirewallPublicIPAddress(msrest.serialization.Model):
3962    """Public IP Address associated with azure firewall.
3963
3964    :param address: Public IP Address value.
3965    :type address: str
3966    """
3967
3968    _attribute_map = {
3969        'address': {'key': 'address', 'type': 'str'},
3970    }
3971
3972    def __init__(
3973        self,
3974        *,
3975        address: Optional[str] = None,
3976        **kwargs
3977    ):
3978        super(AzureFirewallPublicIPAddress, self).__init__(**kwargs)
3979        self.address = address
3980
3981
3982class AzureFirewallRCAction(msrest.serialization.Model):
3983    """Properties of the AzureFirewallRCAction.
3984
3985    :param type: The type of action. Possible values include: "Allow", "Deny".
3986    :type type: str or ~azure.mgmt.network.v2019_12_01.models.AzureFirewallRCActionType
3987    """
3988
3989    _attribute_map = {
3990        'type': {'key': 'type', 'type': 'str'},
3991    }
3992
3993    def __init__(
3994        self,
3995        *,
3996        type: Optional[Union[str, "AzureFirewallRCActionType"]] = None,
3997        **kwargs
3998    ):
3999        super(AzureFirewallRCAction, self).__init__(**kwargs)
4000        self.type = type
4001
4002
4003class AzureFirewallSku(msrest.serialization.Model):
4004    """SKU of an Azure Firewall.
4005
4006    :param name: Name of an Azure Firewall SKU. Possible values include: "AZFW_VNet", "AZFW_Hub".
4007    :type name: str or ~azure.mgmt.network.v2019_12_01.models.AzureFirewallSkuName
4008    :param tier: Tier of an Azure Firewall. Possible values include: "Standard".
4009    :type tier: str or ~azure.mgmt.network.v2019_12_01.models.AzureFirewallSkuTier
4010    """
4011
4012    _attribute_map = {
4013        'name': {'key': 'name', 'type': 'str'},
4014        'tier': {'key': 'tier', 'type': 'str'},
4015    }
4016
4017    def __init__(
4018        self,
4019        *,
4020        name: Optional[Union[str, "AzureFirewallSkuName"]] = None,
4021        tier: Optional[Union[str, "AzureFirewallSkuTier"]] = None,
4022        **kwargs
4023    ):
4024        super(AzureFirewallSku, self).__init__(**kwargs)
4025        self.name = name
4026        self.tier = tier
4027
4028
4029class AzureReachabilityReport(msrest.serialization.Model):
4030    """Azure reachability report details.
4031
4032    All required parameters must be populated in order to send to Azure.
4033
4034    :param aggregation_level: Required. The aggregation level of Azure reachability report. Can be
4035     Country, State or City.
4036    :type aggregation_level: str
4037    :param provider_location: Required. Parameters that define a geographic location.
4038    :type provider_location: ~azure.mgmt.network.v2019_12_01.models.AzureReachabilityReportLocation
4039    :param reachability_report: Required. List of Azure reachability report items.
4040    :type reachability_report:
4041     list[~azure.mgmt.network.v2019_12_01.models.AzureReachabilityReportItem]
4042    """
4043
4044    _validation = {
4045        'aggregation_level': {'required': True},
4046        'provider_location': {'required': True},
4047        'reachability_report': {'required': True},
4048    }
4049
4050    _attribute_map = {
4051        'aggregation_level': {'key': 'aggregationLevel', 'type': 'str'},
4052        'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'},
4053        'reachability_report': {'key': 'reachabilityReport', 'type': '[AzureReachabilityReportItem]'},
4054    }
4055
4056    def __init__(
4057        self,
4058        *,
4059        aggregation_level: str,
4060        provider_location: "AzureReachabilityReportLocation",
4061        reachability_report: List["AzureReachabilityReportItem"],
4062        **kwargs
4063    ):
4064        super(AzureReachabilityReport, self).__init__(**kwargs)
4065        self.aggregation_level = aggregation_level
4066        self.provider_location = provider_location
4067        self.reachability_report = reachability_report
4068
4069
4070class AzureReachabilityReportItem(msrest.serialization.Model):
4071    """Azure reachability report details for a given provider location.
4072
4073    :param provider: The Internet service provider.
4074    :type provider: str
4075    :param azure_location: The Azure region.
4076    :type azure_location: str
4077    :param latencies: List of latency details for each of the time series.
4078    :type latencies:
4079     list[~azure.mgmt.network.v2019_12_01.models.AzureReachabilityReportLatencyInfo]
4080    """
4081
4082    _attribute_map = {
4083        'provider': {'key': 'provider', 'type': 'str'},
4084        'azure_location': {'key': 'azureLocation', 'type': 'str'},
4085        'latencies': {'key': 'latencies', 'type': '[AzureReachabilityReportLatencyInfo]'},
4086    }
4087
4088    def __init__(
4089        self,
4090        *,
4091        provider: Optional[str] = None,
4092        azure_location: Optional[str] = None,
4093        latencies: Optional[List["AzureReachabilityReportLatencyInfo"]] = None,
4094        **kwargs
4095    ):
4096        super(AzureReachabilityReportItem, self).__init__(**kwargs)
4097        self.provider = provider
4098        self.azure_location = azure_location
4099        self.latencies = latencies
4100
4101
4102class AzureReachabilityReportLatencyInfo(msrest.serialization.Model):
4103    """Details on latency for a time series.
4104
4105    :param time_stamp: The time stamp.
4106    :type time_stamp: ~datetime.datetime
4107    :param score: The relative latency score between 1 and 100, higher values indicating a faster
4108     connection.
4109    :type score: int
4110    """
4111
4112    _validation = {
4113        'score': {'maximum': 100, 'minimum': 1},
4114    }
4115
4116    _attribute_map = {
4117        'time_stamp': {'key': 'timeStamp', 'type': 'iso-8601'},
4118        'score': {'key': 'score', 'type': 'int'},
4119    }
4120
4121    def __init__(
4122        self,
4123        *,
4124        time_stamp: Optional[datetime.datetime] = None,
4125        score: Optional[int] = None,
4126        **kwargs
4127    ):
4128        super(AzureReachabilityReportLatencyInfo, self).__init__(**kwargs)
4129        self.time_stamp = time_stamp
4130        self.score = score
4131
4132
4133class AzureReachabilityReportLocation(msrest.serialization.Model):
4134    """Parameters that define a geographic location.
4135
4136    All required parameters must be populated in order to send to Azure.
4137
4138    :param country: Required. The name of the country.
4139    :type country: str
4140    :param state: The name of the state.
4141    :type state: str
4142    :param city: The name of the city or town.
4143    :type city: str
4144    """
4145
4146    _validation = {
4147        'country': {'required': True},
4148    }
4149
4150    _attribute_map = {
4151        'country': {'key': 'country', 'type': 'str'},
4152        'state': {'key': 'state', 'type': 'str'},
4153        'city': {'key': 'city', 'type': 'str'},
4154    }
4155
4156    def __init__(
4157        self,
4158        *,
4159        country: str,
4160        state: Optional[str] = None,
4161        city: Optional[str] = None,
4162        **kwargs
4163    ):
4164        super(AzureReachabilityReportLocation, self).__init__(**kwargs)
4165        self.country = country
4166        self.state = state
4167        self.city = city
4168
4169
4170class AzureReachabilityReportParameters(msrest.serialization.Model):
4171    """Geographic and time constraints for Azure reachability report.
4172
4173    All required parameters must be populated in order to send to Azure.
4174
4175    :param provider_location: Required. Parameters that define a geographic location.
4176    :type provider_location: ~azure.mgmt.network.v2019_12_01.models.AzureReachabilityReportLocation
4177    :param providers: List of Internet service providers.
4178    :type providers: list[str]
4179    :param azure_locations: Optional Azure regions to scope the query to.
4180    :type azure_locations: list[str]
4181    :param start_time: Required. The start time for the Azure reachability report.
4182    :type start_time: ~datetime.datetime
4183    :param end_time: Required. The end time for the Azure reachability report.
4184    :type end_time: ~datetime.datetime
4185    """
4186
4187    _validation = {
4188        'provider_location': {'required': True},
4189        'start_time': {'required': True},
4190        'end_time': {'required': True},
4191    }
4192
4193    _attribute_map = {
4194        'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'},
4195        'providers': {'key': 'providers', 'type': '[str]'},
4196        'azure_locations': {'key': 'azureLocations', 'type': '[str]'},
4197        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
4198        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
4199    }
4200
4201    def __init__(
4202        self,
4203        *,
4204        provider_location: "AzureReachabilityReportLocation",
4205        start_time: datetime.datetime,
4206        end_time: datetime.datetime,
4207        providers: Optional[List[str]] = None,
4208        azure_locations: Optional[List[str]] = None,
4209        **kwargs
4210    ):
4211        super(AzureReachabilityReportParameters, self).__init__(**kwargs)
4212        self.provider_location = provider_location
4213        self.providers = providers
4214        self.azure_locations = azure_locations
4215        self.start_time = start_time
4216        self.end_time = end_time
4217
4218
4219class BackendAddressPool(SubResource):
4220    """Pool of backend IP addresses.
4221
4222    Variables are only populated by the server, and will be ignored when sending a request.
4223
4224    :param id: Resource ID.
4225    :type id: str
4226    :param name: The name of the resource that is unique within the set of backend address pools
4227     used by the load balancer. This name can be used to access the resource.
4228    :type name: str
4229    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4230    :vartype etag: str
4231    :ivar type: Type of the resource.
4232    :vartype type: str
4233    :ivar backend_ip_configurations: An array of references to IP addresses defined in network
4234     interfaces.
4235    :vartype backend_ip_configurations:
4236     list[~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceIPConfiguration]
4237    :ivar load_balancing_rules: An array of references to load balancing rules that use this
4238     backend address pool.
4239    :vartype load_balancing_rules: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
4240    :ivar outbound_rule: A reference to an outbound rule that uses this backend address pool.
4241    :vartype outbound_rule: ~azure.mgmt.network.v2019_12_01.models.SubResource
4242    :ivar outbound_rules: An array of references to outbound rules that use this backend address
4243     pool.
4244    :vartype outbound_rules: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
4245    :ivar provisioning_state: The provisioning state of the backend address pool resource. Possible
4246     values include: "Succeeded", "Updating", "Deleting", "Failed".
4247    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
4248    """
4249
4250    _validation = {
4251        'etag': {'readonly': True},
4252        'type': {'readonly': True},
4253        'backend_ip_configurations': {'readonly': True},
4254        'load_balancing_rules': {'readonly': True},
4255        'outbound_rule': {'readonly': True},
4256        'outbound_rules': {'readonly': True},
4257        'provisioning_state': {'readonly': True},
4258    }
4259
4260    _attribute_map = {
4261        'id': {'key': 'id', 'type': 'str'},
4262        'name': {'key': 'name', 'type': 'str'},
4263        'etag': {'key': 'etag', 'type': 'str'},
4264        'type': {'key': 'type', 'type': 'str'},
4265        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
4266        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
4267        'outbound_rule': {'key': 'properties.outboundRule', 'type': 'SubResource'},
4268        'outbound_rules': {'key': 'properties.outboundRules', 'type': '[SubResource]'},
4269        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4270    }
4271
4272    def __init__(
4273        self,
4274        *,
4275        id: Optional[str] = None,
4276        name: Optional[str] = None,
4277        **kwargs
4278    ):
4279        super(BackendAddressPool, self).__init__(id=id, **kwargs)
4280        self.name = name
4281        self.etag = None
4282        self.type = None
4283        self.backend_ip_configurations = None
4284        self.load_balancing_rules = None
4285        self.outbound_rule = None
4286        self.outbound_rules = None
4287        self.provisioning_state = None
4288
4289
4290class BastionActiveSession(msrest.serialization.Model):
4291    """The session detail for a target.
4292
4293    Variables are only populated by the server, and will be ignored when sending a request.
4294
4295    :ivar session_id: A unique id for the session.
4296    :vartype session_id: str
4297    :ivar start_time: The time when the session started.
4298    :vartype start_time: str
4299    :ivar target_subscription_id: The subscription id for the target virtual machine.
4300    :vartype target_subscription_id: str
4301    :ivar resource_type: The type of the resource.
4302    :vartype resource_type: str
4303    :ivar target_host_name: The host name of the target.
4304    :vartype target_host_name: str
4305    :ivar target_resource_group: The resource group of the target.
4306    :vartype target_resource_group: str
4307    :ivar user_name: The user name who is active on this session.
4308    :vartype user_name: str
4309    :ivar target_ip_address: The IP Address of the target.
4310    :vartype target_ip_address: str
4311    :ivar protocol: The protocol used to connect to the target. Possible values include: "SSH",
4312     "RDP".
4313    :vartype protocol: str or ~azure.mgmt.network.v2019_12_01.models.BastionConnectProtocol
4314    :ivar target_resource_id: The resource id of the target.
4315    :vartype target_resource_id: str
4316    :ivar session_duration_in_mins: Duration in mins the session has been active.
4317    :vartype session_duration_in_mins: float
4318    """
4319
4320    _validation = {
4321        'session_id': {'readonly': True},
4322        'start_time': {'readonly': True},
4323        'target_subscription_id': {'readonly': True},
4324        'resource_type': {'readonly': True},
4325        'target_host_name': {'readonly': True},
4326        'target_resource_group': {'readonly': True},
4327        'user_name': {'readonly': True},
4328        'target_ip_address': {'readonly': True},
4329        'protocol': {'readonly': True},
4330        'target_resource_id': {'readonly': True},
4331        'session_duration_in_mins': {'readonly': True},
4332    }
4333
4334    _attribute_map = {
4335        'session_id': {'key': 'sessionId', 'type': 'str'},
4336        'start_time': {'key': 'startTime', 'type': 'str'},
4337        'target_subscription_id': {'key': 'targetSubscriptionId', 'type': 'str'},
4338        'resource_type': {'key': 'resourceType', 'type': 'str'},
4339        'target_host_name': {'key': 'targetHostName', 'type': 'str'},
4340        'target_resource_group': {'key': 'targetResourceGroup', 'type': 'str'},
4341        'user_name': {'key': 'userName', 'type': 'str'},
4342        'target_ip_address': {'key': 'targetIpAddress', 'type': 'str'},
4343        'protocol': {'key': 'protocol', 'type': 'str'},
4344        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
4345        'session_duration_in_mins': {'key': 'sessionDurationInMins', 'type': 'float'},
4346    }
4347
4348    def __init__(
4349        self,
4350        **kwargs
4351    ):
4352        super(BastionActiveSession, self).__init__(**kwargs)
4353        self.session_id = None
4354        self.start_time = None
4355        self.target_subscription_id = None
4356        self.resource_type = None
4357        self.target_host_name = None
4358        self.target_resource_group = None
4359        self.user_name = None
4360        self.target_ip_address = None
4361        self.protocol = None
4362        self.target_resource_id = None
4363        self.session_duration_in_mins = None
4364
4365
4366class BastionActiveSessionListResult(msrest.serialization.Model):
4367    """Response for GetActiveSessions.
4368
4369    :param value: List of active sessions on the bastion.
4370    :type value: list[~azure.mgmt.network.v2019_12_01.models.BastionActiveSession]
4371    :param next_link: The URL to get the next set of results.
4372    :type next_link: str
4373    """
4374
4375    _attribute_map = {
4376        'value': {'key': 'value', 'type': '[BastionActiveSession]'},
4377        'next_link': {'key': 'nextLink', 'type': 'str'},
4378    }
4379
4380    def __init__(
4381        self,
4382        *,
4383        value: Optional[List["BastionActiveSession"]] = None,
4384        next_link: Optional[str] = None,
4385        **kwargs
4386    ):
4387        super(BastionActiveSessionListResult, self).__init__(**kwargs)
4388        self.value = value
4389        self.next_link = next_link
4390
4391
4392class BastionHost(Resource):
4393    """Bastion Host resource.
4394
4395    Variables are only populated by the server, and will be ignored when sending a request.
4396
4397    :param id: Resource ID.
4398    :type id: str
4399    :ivar name: Resource name.
4400    :vartype name: str
4401    :ivar type: Resource type.
4402    :vartype type: str
4403    :param location: Resource location.
4404    :type location: str
4405    :param tags: A set of tags. Resource tags.
4406    :type tags: dict[str, str]
4407    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4408    :vartype etag: str
4409    :param ip_configurations: IP configuration of the Bastion Host resource.
4410    :type ip_configurations:
4411     list[~azure.mgmt.network.v2019_12_01.models.BastionHostIPConfiguration]
4412    :param dns_name: FQDN for the endpoint on which bastion host is accessible.
4413    :type dns_name: str
4414    :ivar provisioning_state: The provisioning state of the bastion host resource. Possible values
4415     include: "Succeeded", "Updating", "Deleting", "Failed".
4416    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
4417    """
4418
4419    _validation = {
4420        'name': {'readonly': True},
4421        'type': {'readonly': True},
4422        'etag': {'readonly': True},
4423        'provisioning_state': {'readonly': True},
4424    }
4425
4426    _attribute_map = {
4427        'id': {'key': 'id', 'type': 'str'},
4428        'name': {'key': 'name', 'type': 'str'},
4429        'type': {'key': 'type', 'type': 'str'},
4430        'location': {'key': 'location', 'type': 'str'},
4431        'tags': {'key': 'tags', 'type': '{str}'},
4432        'etag': {'key': 'etag', 'type': 'str'},
4433        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[BastionHostIPConfiguration]'},
4434        'dns_name': {'key': 'properties.dnsName', 'type': 'str'},
4435        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4436    }
4437
4438    def __init__(
4439        self,
4440        *,
4441        id: Optional[str] = None,
4442        location: Optional[str] = None,
4443        tags: Optional[Dict[str, str]] = None,
4444        ip_configurations: Optional[List["BastionHostIPConfiguration"]] = None,
4445        dns_name: Optional[str] = None,
4446        **kwargs
4447    ):
4448        super(BastionHost, self).__init__(id=id, location=location, tags=tags, **kwargs)
4449        self.etag = None
4450        self.ip_configurations = ip_configurations
4451        self.dns_name = dns_name
4452        self.provisioning_state = None
4453
4454
4455class BastionHostIPConfiguration(SubResource):
4456    """IP configuration of an Bastion Host.
4457
4458    Variables are only populated by the server, and will be ignored when sending a request.
4459
4460    :param id: Resource ID.
4461    :type id: str
4462    :param name: Name of the resource that is unique within a resource group. This name can be used
4463     to access the resource.
4464    :type name: str
4465    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4466    :vartype etag: str
4467    :ivar type: Ip configuration type.
4468    :vartype type: str
4469    :param subnet: Reference of the subnet resource.
4470    :type subnet: ~azure.mgmt.network.v2019_12_01.models.SubResource
4471    :param public_ip_address: Reference of the PublicIP resource.
4472    :type public_ip_address: ~azure.mgmt.network.v2019_12_01.models.SubResource
4473    :ivar provisioning_state: The provisioning state of the bastion host IP configuration resource.
4474     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
4475    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
4476    :param private_ip_allocation_method: Private IP allocation method. Possible values include:
4477     "Static", "Dynamic".
4478    :type private_ip_allocation_method: str or
4479     ~azure.mgmt.network.v2019_12_01.models.IPAllocationMethod
4480    """
4481
4482    _validation = {
4483        'etag': {'readonly': True},
4484        'type': {'readonly': True},
4485        'provisioning_state': {'readonly': True},
4486    }
4487
4488    _attribute_map = {
4489        'id': {'key': 'id', 'type': 'str'},
4490        'name': {'key': 'name', 'type': 'str'},
4491        'etag': {'key': 'etag', 'type': 'str'},
4492        'type': {'key': 'type', 'type': 'str'},
4493        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
4494        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
4495        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4496        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
4497    }
4498
4499    def __init__(
4500        self,
4501        *,
4502        id: Optional[str] = None,
4503        name: Optional[str] = None,
4504        subnet: Optional["SubResource"] = None,
4505        public_ip_address: Optional["SubResource"] = None,
4506        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
4507        **kwargs
4508    ):
4509        super(BastionHostIPConfiguration, self).__init__(id=id, **kwargs)
4510        self.name = name
4511        self.etag = None
4512        self.type = None
4513        self.subnet = subnet
4514        self.public_ip_address = public_ip_address
4515        self.provisioning_state = None
4516        self.private_ip_allocation_method = private_ip_allocation_method
4517
4518
4519class BastionHostListResult(msrest.serialization.Model):
4520    """Response for ListBastionHosts API service call.
4521
4522    :param value: List of Bastion Hosts in a resource group.
4523    :type value: list[~azure.mgmt.network.v2019_12_01.models.BastionHost]
4524    :param next_link: URL to get the next set of results.
4525    :type next_link: str
4526    """
4527
4528    _attribute_map = {
4529        'value': {'key': 'value', 'type': '[BastionHost]'},
4530        'next_link': {'key': 'nextLink', 'type': 'str'},
4531    }
4532
4533    def __init__(
4534        self,
4535        *,
4536        value: Optional[List["BastionHost"]] = None,
4537        next_link: Optional[str] = None,
4538        **kwargs
4539    ):
4540        super(BastionHostListResult, self).__init__(**kwargs)
4541        self.value = value
4542        self.next_link = next_link
4543
4544
4545class BastionSessionDeleteResult(msrest.serialization.Model):
4546    """Response for DisconnectActiveSessions.
4547
4548    :param value: List of sessions with their corresponding state.
4549    :type value: list[~azure.mgmt.network.v2019_12_01.models.BastionSessionState]
4550    :param next_link: The URL to get the next set of results.
4551    :type next_link: str
4552    """
4553
4554    _attribute_map = {
4555        'value': {'key': 'value', 'type': '[BastionSessionState]'},
4556        'next_link': {'key': 'nextLink', 'type': 'str'},
4557    }
4558
4559    def __init__(
4560        self,
4561        *,
4562        value: Optional[List["BastionSessionState"]] = None,
4563        next_link: Optional[str] = None,
4564        **kwargs
4565    ):
4566        super(BastionSessionDeleteResult, self).__init__(**kwargs)
4567        self.value = value
4568        self.next_link = next_link
4569
4570
4571class BastionSessionState(msrest.serialization.Model):
4572    """The session state detail for a target.
4573
4574    Variables are only populated by the server, and will be ignored when sending a request.
4575
4576    :ivar session_id: A unique id for the session.
4577    :vartype session_id: str
4578    :ivar message: Used for extra information.
4579    :vartype message: str
4580    :ivar state: The state of the session. Disconnected/Failed/NotFound.
4581    :vartype state: str
4582    """
4583
4584    _validation = {
4585        'session_id': {'readonly': True},
4586        'message': {'readonly': True},
4587        'state': {'readonly': True},
4588    }
4589
4590    _attribute_map = {
4591        'session_id': {'key': 'sessionId', 'type': 'str'},
4592        'message': {'key': 'message', 'type': 'str'},
4593        'state': {'key': 'state', 'type': 'str'},
4594    }
4595
4596    def __init__(
4597        self,
4598        **kwargs
4599    ):
4600        super(BastionSessionState, self).__init__(**kwargs)
4601        self.session_id = None
4602        self.message = None
4603        self.state = None
4604
4605
4606class BastionShareableLink(msrest.serialization.Model):
4607    """Bastion Shareable Link.
4608
4609    Variables are only populated by the server, and will be ignored when sending a request.
4610
4611    All required parameters must be populated in order to send to Azure.
4612
4613    :param vm: Required. Reference of the virtual machine resource.
4614    :type vm: ~azure.mgmt.network.v2019_12_01.models.VM
4615    :ivar bsl: The unique Bastion Shareable Link to the virtual machine.
4616    :vartype bsl: str
4617    :ivar created_at: The time when the link was created.
4618    :vartype created_at: str
4619    :ivar message: Optional field indicating the warning or error message related to the vm in case
4620     of partial failure.
4621    :vartype message: str
4622    """
4623
4624    _validation = {
4625        'vm': {'required': True},
4626        'bsl': {'readonly': True},
4627        'created_at': {'readonly': True},
4628        'message': {'readonly': True},
4629    }
4630
4631    _attribute_map = {
4632        'vm': {'key': 'vm', 'type': 'VM'},
4633        'bsl': {'key': 'bsl', 'type': 'str'},
4634        'created_at': {'key': 'createdAt', 'type': 'str'},
4635        'message': {'key': 'message', 'type': 'str'},
4636    }
4637
4638    def __init__(
4639        self,
4640        *,
4641        vm: "VM",
4642        **kwargs
4643    ):
4644        super(BastionShareableLink, self).__init__(**kwargs)
4645        self.vm = vm
4646        self.bsl = None
4647        self.created_at = None
4648        self.message = None
4649
4650
4651class BastionShareableLinkListRequest(msrest.serialization.Model):
4652    """Post request for all the Bastion Shareable Link endpoints.
4653
4654    :param vms: List of VM references.
4655    :type vms: list[~azure.mgmt.network.v2019_12_01.models.BastionShareableLink]
4656    """
4657
4658    _attribute_map = {
4659        'vms': {'key': 'vms', 'type': '[BastionShareableLink]'},
4660    }
4661
4662    def __init__(
4663        self,
4664        *,
4665        vms: Optional[List["BastionShareableLink"]] = None,
4666        **kwargs
4667    ):
4668        super(BastionShareableLinkListRequest, self).__init__(**kwargs)
4669        self.vms = vms
4670
4671
4672class BastionShareableLinkListResult(msrest.serialization.Model):
4673    """Response for all the Bastion Shareable Link endpoints.
4674
4675    :param value: List of Bastion Shareable Links for the request.
4676    :type value: list[~azure.mgmt.network.v2019_12_01.models.BastionShareableLink]
4677    :param next_link: The URL to get the next set of results.
4678    :type next_link: str
4679    """
4680
4681    _attribute_map = {
4682        'value': {'key': 'value', 'type': '[BastionShareableLink]'},
4683        'next_link': {'key': 'nextLink', 'type': 'str'},
4684    }
4685
4686    def __init__(
4687        self,
4688        *,
4689        value: Optional[List["BastionShareableLink"]] = None,
4690        next_link: Optional[str] = None,
4691        **kwargs
4692    ):
4693        super(BastionShareableLinkListResult, self).__init__(**kwargs)
4694        self.value = value
4695        self.next_link = next_link
4696
4697
4698class BGPCommunity(msrest.serialization.Model):
4699    """Contains bgp community information offered in Service Community resources.
4700
4701    :param service_supported_region: The region which the service support. e.g. For O365, region is
4702     Global.
4703    :type service_supported_region: str
4704    :param community_name: The name of the bgp community. e.g. Skype.
4705    :type community_name: str
4706    :param community_value: The value of the bgp community. For more information:
4707     https://docs.microsoft.com/en-us/azure/expressroute/expressroute-routing.
4708    :type community_value: str
4709    :param community_prefixes: The prefixes that the bgp community contains.
4710    :type community_prefixes: list[str]
4711    :param is_authorized_to_use: Customer is authorized to use bgp community or not.
4712    :type is_authorized_to_use: bool
4713    :param service_group: The service group of the bgp community contains.
4714    :type service_group: str
4715    """
4716
4717    _attribute_map = {
4718        'service_supported_region': {'key': 'serviceSupportedRegion', 'type': 'str'},
4719        'community_name': {'key': 'communityName', 'type': 'str'},
4720        'community_value': {'key': 'communityValue', 'type': 'str'},
4721        'community_prefixes': {'key': 'communityPrefixes', 'type': '[str]'},
4722        'is_authorized_to_use': {'key': 'isAuthorizedToUse', 'type': 'bool'},
4723        'service_group': {'key': 'serviceGroup', 'type': 'str'},
4724    }
4725
4726    def __init__(
4727        self,
4728        *,
4729        service_supported_region: Optional[str] = None,
4730        community_name: Optional[str] = None,
4731        community_value: Optional[str] = None,
4732        community_prefixes: Optional[List[str]] = None,
4733        is_authorized_to_use: Optional[bool] = None,
4734        service_group: Optional[str] = None,
4735        **kwargs
4736    ):
4737        super(BGPCommunity, self).__init__(**kwargs)
4738        self.service_supported_region = service_supported_region
4739        self.community_name = community_name
4740        self.community_value = community_value
4741        self.community_prefixes = community_prefixes
4742        self.is_authorized_to_use = is_authorized_to_use
4743        self.service_group = service_group
4744
4745
4746class BgpPeerStatus(msrest.serialization.Model):
4747    """BGP peer status details.
4748
4749    Variables are only populated by the server, and will be ignored when sending a request.
4750
4751    :ivar local_address: The virtual network gateway's local address.
4752    :vartype local_address: str
4753    :ivar neighbor: The remote BGP peer.
4754    :vartype neighbor: str
4755    :ivar asn: The autonomous system number of the remote BGP peer.
4756    :vartype asn: int
4757    :ivar state: The BGP peer state. Possible values include: "Unknown", "Stopped", "Idle",
4758     "Connecting", "Connected".
4759    :vartype state: str or ~azure.mgmt.network.v2019_12_01.models.BgpPeerState
4760    :ivar connected_duration: For how long the peering has been up.
4761    :vartype connected_duration: str
4762    :ivar routes_received: The number of routes learned from this peer.
4763    :vartype routes_received: long
4764    :ivar messages_sent: The number of BGP messages sent.
4765    :vartype messages_sent: long
4766    :ivar messages_received: The number of BGP messages received.
4767    :vartype messages_received: long
4768    """
4769
4770    _validation = {
4771        'local_address': {'readonly': True},
4772        'neighbor': {'readonly': True},
4773        'asn': {'readonly': True},
4774        'state': {'readonly': True},
4775        'connected_duration': {'readonly': True},
4776        'routes_received': {'readonly': True},
4777        'messages_sent': {'readonly': True},
4778        'messages_received': {'readonly': True},
4779    }
4780
4781    _attribute_map = {
4782        'local_address': {'key': 'localAddress', 'type': 'str'},
4783        'neighbor': {'key': 'neighbor', 'type': 'str'},
4784        'asn': {'key': 'asn', 'type': 'int'},
4785        'state': {'key': 'state', 'type': 'str'},
4786        'connected_duration': {'key': 'connectedDuration', 'type': 'str'},
4787        'routes_received': {'key': 'routesReceived', 'type': 'long'},
4788        'messages_sent': {'key': 'messagesSent', 'type': 'long'},
4789        'messages_received': {'key': 'messagesReceived', 'type': 'long'},
4790    }
4791
4792    def __init__(
4793        self,
4794        **kwargs
4795    ):
4796        super(BgpPeerStatus, self).__init__(**kwargs)
4797        self.local_address = None
4798        self.neighbor = None
4799        self.asn = None
4800        self.state = None
4801        self.connected_duration = None
4802        self.routes_received = None
4803        self.messages_sent = None
4804        self.messages_received = None
4805
4806
4807class BgpPeerStatusListResult(msrest.serialization.Model):
4808    """Response for list BGP peer status API service call.
4809
4810    :param value: List of BGP peers.
4811    :type value: list[~azure.mgmt.network.v2019_12_01.models.BgpPeerStatus]
4812    """
4813
4814    _attribute_map = {
4815        'value': {'key': 'value', 'type': '[BgpPeerStatus]'},
4816    }
4817
4818    def __init__(
4819        self,
4820        *,
4821        value: Optional[List["BgpPeerStatus"]] = None,
4822        **kwargs
4823    ):
4824        super(BgpPeerStatusListResult, self).__init__(**kwargs)
4825        self.value = value
4826
4827
4828class BgpServiceCommunity(Resource):
4829    """Service Community Properties.
4830
4831    Variables are only populated by the server, and will be ignored when sending a request.
4832
4833    :param id: Resource ID.
4834    :type id: str
4835    :ivar name: Resource name.
4836    :vartype name: str
4837    :ivar type: Resource type.
4838    :vartype type: str
4839    :param location: Resource location.
4840    :type location: str
4841    :param tags: A set of tags. Resource tags.
4842    :type tags: dict[str, str]
4843    :param service_name: The name of the bgp community. e.g. Skype.
4844    :type service_name: str
4845    :param bgp_communities: A list of bgp communities.
4846    :type bgp_communities: list[~azure.mgmt.network.v2019_12_01.models.BGPCommunity]
4847    """
4848
4849    _validation = {
4850        'name': {'readonly': True},
4851        'type': {'readonly': True},
4852    }
4853
4854    _attribute_map = {
4855        'id': {'key': 'id', 'type': 'str'},
4856        'name': {'key': 'name', 'type': 'str'},
4857        'type': {'key': 'type', 'type': 'str'},
4858        'location': {'key': 'location', 'type': 'str'},
4859        'tags': {'key': 'tags', 'type': '{str}'},
4860        'service_name': {'key': 'properties.serviceName', 'type': 'str'},
4861        'bgp_communities': {'key': 'properties.bgpCommunities', 'type': '[BGPCommunity]'},
4862    }
4863
4864    def __init__(
4865        self,
4866        *,
4867        id: Optional[str] = None,
4868        location: Optional[str] = None,
4869        tags: Optional[Dict[str, str]] = None,
4870        service_name: Optional[str] = None,
4871        bgp_communities: Optional[List["BGPCommunity"]] = None,
4872        **kwargs
4873    ):
4874        super(BgpServiceCommunity, self).__init__(id=id, location=location, tags=tags, **kwargs)
4875        self.service_name = service_name
4876        self.bgp_communities = bgp_communities
4877
4878
4879class BgpServiceCommunityListResult(msrest.serialization.Model):
4880    """Response for the ListServiceCommunity API service call.
4881
4882    :param value: A list of service community resources.
4883    :type value: list[~azure.mgmt.network.v2019_12_01.models.BgpServiceCommunity]
4884    :param next_link: The URL to get the next set of results.
4885    :type next_link: str
4886    """
4887
4888    _attribute_map = {
4889        'value': {'key': 'value', 'type': '[BgpServiceCommunity]'},
4890        'next_link': {'key': 'nextLink', 'type': 'str'},
4891    }
4892
4893    def __init__(
4894        self,
4895        *,
4896        value: Optional[List["BgpServiceCommunity"]] = None,
4897        next_link: Optional[str] = None,
4898        **kwargs
4899    ):
4900        super(BgpServiceCommunityListResult, self).__init__(**kwargs)
4901        self.value = value
4902        self.next_link = next_link
4903
4904
4905class BgpSettings(msrest.serialization.Model):
4906    """BGP settings details.
4907
4908    :param asn: The BGP speaker's ASN.
4909    :type asn: long
4910    :param bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker.
4911    :type bgp_peering_address: str
4912    :param peer_weight: The weight added to routes learned from this BGP speaker.
4913    :type peer_weight: int
4914    :param bgp_peering_addresses: BGP peering address with IP configuration ID for virtual network
4915     gateway.
4916    :type bgp_peering_addresses:
4917     list[~azure.mgmt.network.v2019_12_01.models.IPConfigurationBgpPeeringAddress]
4918    """
4919
4920    _attribute_map = {
4921        'asn': {'key': 'asn', 'type': 'long'},
4922        'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'},
4923        'peer_weight': {'key': 'peerWeight', 'type': 'int'},
4924        'bgp_peering_addresses': {'key': 'bgpPeeringAddresses', 'type': '[IPConfigurationBgpPeeringAddress]'},
4925    }
4926
4927    def __init__(
4928        self,
4929        *,
4930        asn: Optional[int] = None,
4931        bgp_peering_address: Optional[str] = None,
4932        peer_weight: Optional[int] = None,
4933        bgp_peering_addresses: Optional[List["IPConfigurationBgpPeeringAddress"]] = None,
4934        **kwargs
4935    ):
4936        super(BgpSettings, self).__init__(**kwargs)
4937        self.asn = asn
4938        self.bgp_peering_address = bgp_peering_address
4939        self.peer_weight = peer_weight
4940        self.bgp_peering_addresses = bgp_peering_addresses
4941
4942
4943class CheckPrivateLinkServiceVisibilityRequest(msrest.serialization.Model):
4944    """Request body of the CheckPrivateLinkServiceVisibility API service call.
4945
4946    :param private_link_service_alias: The alias of the private link service.
4947    :type private_link_service_alias: str
4948    """
4949
4950    _attribute_map = {
4951        'private_link_service_alias': {'key': 'privateLinkServiceAlias', 'type': 'str'},
4952    }
4953
4954    def __init__(
4955        self,
4956        *,
4957        private_link_service_alias: Optional[str] = None,
4958        **kwargs
4959    ):
4960        super(CheckPrivateLinkServiceVisibilityRequest, self).__init__(**kwargs)
4961        self.private_link_service_alias = private_link_service_alias
4962
4963
4964class CloudErrorBody(msrest.serialization.Model):
4965    """An error response from the service.
4966
4967    :param code: An identifier for the error. Codes are invariant and are intended to be consumed
4968     programmatically.
4969    :type code: str
4970    :param message: A message describing the error, intended to be suitable for display in a user
4971     interface.
4972    :type message: str
4973    :param target: The target of the particular error. For example, the name of the property in
4974     error.
4975    :type target: str
4976    :param details: A list of additional details about the error.
4977    :type details: list[~azure.mgmt.network.v2019_12_01.models.CloudErrorBody]
4978    """
4979
4980    _attribute_map = {
4981        'code': {'key': 'code', 'type': 'str'},
4982        'message': {'key': 'message', 'type': 'str'},
4983        'target': {'key': 'target', 'type': 'str'},
4984        'details': {'key': 'details', 'type': '[CloudErrorBody]'},
4985    }
4986
4987    def __init__(
4988        self,
4989        *,
4990        code: Optional[str] = None,
4991        message: Optional[str] = None,
4992        target: Optional[str] = None,
4993        details: Optional[List["CloudErrorBody"]] = None,
4994        **kwargs
4995    ):
4996        super(CloudErrorBody, self).__init__(**kwargs)
4997        self.code = code
4998        self.message = message
4999        self.target = target
5000        self.details = details
5001
5002
5003class Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties(msrest.serialization.Model):
5004    """Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties.
5005
5006    Variables are only populated by the server, and will be ignored when sending a request.
5007
5008    :ivar principal_id: The principal id of user assigned identity.
5009    :vartype principal_id: str
5010    :ivar client_id: The client id of user assigned identity.
5011    :vartype client_id: str
5012    """
5013
5014    _validation = {
5015        'principal_id': {'readonly': True},
5016        'client_id': {'readonly': True},
5017    }
5018
5019    _attribute_map = {
5020        'principal_id': {'key': 'principalId', 'type': 'str'},
5021        'client_id': {'key': 'clientId', 'type': 'str'},
5022    }
5023
5024    def __init__(
5025        self,
5026        **kwargs
5027    ):
5028        super(Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties, self).__init__(**kwargs)
5029        self.principal_id = None
5030        self.client_id = None
5031
5032
5033class ConnectionMonitor(msrest.serialization.Model):
5034    """Parameters that define the operation to create a connection monitor.
5035
5036    :param location: Connection monitor location.
5037    :type location: str
5038    :param tags: A set of tags. Connection monitor tags.
5039    :type tags: dict[str, str]
5040    :param source: Describes the source of connection monitor.
5041    :type source: ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorSource
5042    :param destination: Describes the destination of connection monitor.
5043    :type destination: ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorDestination
5044    :param auto_start: Determines if the connection monitor will start automatically once created.
5045    :type auto_start: bool
5046    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
5047    :type monitoring_interval_in_seconds: int
5048    :param endpoints: List of connection monitor endpoints.
5049    :type endpoints: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorEndpoint]
5050    :param test_configurations: List of connection monitor test configurations.
5051    :type test_configurations:
5052     list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorTestConfiguration]
5053    :param test_groups: List of connection monitor test groups.
5054    :type test_groups: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorTestGroup]
5055    :param outputs: List of connection monitor outputs.
5056    :type outputs: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorOutput]
5057    :param notes: Optional notes to be associated with the connection monitor.
5058    :type notes: str
5059    """
5060
5061    _attribute_map = {
5062        'location': {'key': 'location', 'type': 'str'},
5063        'tags': {'key': 'tags', 'type': '{str}'},
5064        'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'},
5065        'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'},
5066        'auto_start': {'key': 'properties.autoStart', 'type': 'bool'},
5067        'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'},
5068        'endpoints': {'key': 'properties.endpoints', 'type': '[ConnectionMonitorEndpoint]'},
5069        'test_configurations': {'key': 'properties.testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'},
5070        'test_groups': {'key': 'properties.testGroups', 'type': '[ConnectionMonitorTestGroup]'},
5071        'outputs': {'key': 'properties.outputs', 'type': '[ConnectionMonitorOutput]'},
5072        'notes': {'key': 'properties.notes', 'type': 'str'},
5073    }
5074
5075    def __init__(
5076        self,
5077        *,
5078        location: Optional[str] = None,
5079        tags: Optional[Dict[str, str]] = None,
5080        source: Optional["ConnectionMonitorSource"] = None,
5081        destination: Optional["ConnectionMonitorDestination"] = None,
5082        auto_start: Optional[bool] = True,
5083        monitoring_interval_in_seconds: Optional[int] = 60,
5084        endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None,
5085        test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None,
5086        test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None,
5087        outputs: Optional[List["ConnectionMonitorOutput"]] = None,
5088        notes: Optional[str] = None,
5089        **kwargs
5090    ):
5091        super(ConnectionMonitor, self).__init__(**kwargs)
5092        self.location = location
5093        self.tags = tags
5094        self.source = source
5095        self.destination = destination
5096        self.auto_start = auto_start
5097        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
5098        self.endpoints = endpoints
5099        self.test_configurations = test_configurations
5100        self.test_groups = test_groups
5101        self.outputs = outputs
5102        self.notes = notes
5103
5104
5105class ConnectionMonitorDestination(msrest.serialization.Model):
5106    """Describes the destination of connection monitor.
5107
5108    :param resource_id: The ID of the resource used as the destination by connection monitor.
5109    :type resource_id: str
5110    :param address: Address of the connection monitor destination (IP or domain name).
5111    :type address: str
5112    :param port: The destination port used by connection monitor.
5113    :type port: int
5114    """
5115
5116    _attribute_map = {
5117        'resource_id': {'key': 'resourceId', 'type': 'str'},
5118        'address': {'key': 'address', 'type': 'str'},
5119        'port': {'key': 'port', 'type': 'int'},
5120    }
5121
5122    def __init__(
5123        self,
5124        *,
5125        resource_id: Optional[str] = None,
5126        address: Optional[str] = None,
5127        port: Optional[int] = None,
5128        **kwargs
5129    ):
5130        super(ConnectionMonitorDestination, self).__init__(**kwargs)
5131        self.resource_id = resource_id
5132        self.address = address
5133        self.port = port
5134
5135
5136class ConnectionMonitorEndpoint(msrest.serialization.Model):
5137    """Describes the connection monitor endpoint.
5138
5139    All required parameters must be populated in order to send to Azure.
5140
5141    :param name: Required. The name of the connection monitor endpoint.
5142    :type name: str
5143    :param resource_id: Resource ID of the connection monitor endpoint.
5144    :type resource_id: str
5145    :param address: Address of the connection monitor endpoint (IP or domain name).
5146    :type address: str
5147    :param filter: Filter for sub-items within the endpoint.
5148    :type filter: ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorEndpointFilter
5149    """
5150
5151    _validation = {
5152        'name': {'required': True},
5153    }
5154
5155    _attribute_map = {
5156        'name': {'key': 'name', 'type': 'str'},
5157        'resource_id': {'key': 'resourceId', 'type': 'str'},
5158        'address': {'key': 'address', 'type': 'str'},
5159        'filter': {'key': 'filter', 'type': 'ConnectionMonitorEndpointFilter'},
5160    }
5161
5162    def __init__(
5163        self,
5164        *,
5165        name: str,
5166        resource_id: Optional[str] = None,
5167        address: Optional[str] = None,
5168        filter: Optional["ConnectionMonitorEndpointFilter"] = None,
5169        **kwargs
5170    ):
5171        super(ConnectionMonitorEndpoint, self).__init__(**kwargs)
5172        self.name = name
5173        self.resource_id = resource_id
5174        self.address = address
5175        self.filter = filter
5176
5177
5178class ConnectionMonitorEndpointFilter(msrest.serialization.Model):
5179    """Describes the connection monitor endpoint filter.
5180
5181    :param type: The behavior of the endpoint filter. Currently only 'Include' is supported.
5182     Possible values include: "Include".
5183    :type type: str or ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorEndpointFilterType
5184    :param items: List of items in the filter.
5185    :type items: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorEndpointFilterItem]
5186    """
5187
5188    _attribute_map = {
5189        'type': {'key': 'type', 'type': 'str'},
5190        'items': {'key': 'items', 'type': '[ConnectionMonitorEndpointFilterItem]'},
5191    }
5192
5193    def __init__(
5194        self,
5195        *,
5196        type: Optional[Union[str, "ConnectionMonitorEndpointFilterType"]] = None,
5197        items: Optional[List["ConnectionMonitorEndpointFilterItem"]] = None,
5198        **kwargs
5199    ):
5200        super(ConnectionMonitorEndpointFilter, self).__init__(**kwargs)
5201        self.type = type
5202        self.items = items
5203
5204
5205class ConnectionMonitorEndpointFilterItem(msrest.serialization.Model):
5206    """Describes the connection monitor endpoint filter item.
5207
5208    :param type: The type of item included in the filter. Currently only 'AgentAddress' is
5209     supported. Possible values include: "AgentAddress".
5210    :type type: str or
5211     ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorEndpointFilterItemType
5212    :param address: The address of the filter item.
5213    :type address: str
5214    """
5215
5216    _attribute_map = {
5217        'type': {'key': 'type', 'type': 'str'},
5218        'address': {'key': 'address', 'type': 'str'},
5219    }
5220
5221    def __init__(
5222        self,
5223        *,
5224        type: Optional[Union[str, "ConnectionMonitorEndpointFilterItemType"]] = None,
5225        address: Optional[str] = None,
5226        **kwargs
5227    ):
5228        super(ConnectionMonitorEndpointFilterItem, self).__init__(**kwargs)
5229        self.type = type
5230        self.address = address
5231
5232
5233class ConnectionMonitorHttpConfiguration(msrest.serialization.Model):
5234    """Describes the HTTP configuration.
5235
5236    :param port: The port to connect to.
5237    :type port: int
5238    :param method: The HTTP method to use. Possible values include: "Get", "Post".
5239    :type method: str or ~azure.mgmt.network.v2019_12_01.models.HTTPConfigurationMethod
5240    :param path: The path component of the URI. For instance, "/dir1/dir2".
5241    :type path: str
5242    :param request_headers: The HTTP headers to transmit with the request.
5243    :type request_headers: list[~azure.mgmt.network.v2019_12_01.models.HTTPHeader]
5244    :param valid_status_code_ranges: HTTP status codes to consider successful. For instance,
5245     "2xx,301-304,418".
5246    :type valid_status_code_ranges: list[str]
5247    :param prefer_https: Value indicating whether HTTPS is preferred over HTTP in cases where the
5248     choice is not explicit.
5249    :type prefer_https: bool
5250    """
5251
5252    _attribute_map = {
5253        'port': {'key': 'port', 'type': 'int'},
5254        'method': {'key': 'method', 'type': 'str'},
5255        'path': {'key': 'path', 'type': 'str'},
5256        'request_headers': {'key': 'requestHeaders', 'type': '[HTTPHeader]'},
5257        'valid_status_code_ranges': {'key': 'validStatusCodeRanges', 'type': '[str]'},
5258        'prefer_https': {'key': 'preferHTTPS', 'type': 'bool'},
5259    }
5260
5261    def __init__(
5262        self,
5263        *,
5264        port: Optional[int] = None,
5265        method: Optional[Union[str, "HTTPConfigurationMethod"]] = None,
5266        path: Optional[str] = None,
5267        request_headers: Optional[List["HTTPHeader"]] = None,
5268        valid_status_code_ranges: Optional[List[str]] = None,
5269        prefer_https: Optional[bool] = None,
5270        **kwargs
5271    ):
5272        super(ConnectionMonitorHttpConfiguration, self).__init__(**kwargs)
5273        self.port = port
5274        self.method = method
5275        self.path = path
5276        self.request_headers = request_headers
5277        self.valid_status_code_ranges = valid_status_code_ranges
5278        self.prefer_https = prefer_https
5279
5280
5281class ConnectionMonitorIcmpConfiguration(msrest.serialization.Model):
5282    """Describes the ICMP configuration.
5283
5284    :param disable_trace_route: Value indicating whether path evaluation with trace route should be
5285     disabled.
5286    :type disable_trace_route: bool
5287    """
5288
5289    _attribute_map = {
5290        'disable_trace_route': {'key': 'disableTraceRoute', 'type': 'bool'},
5291    }
5292
5293    def __init__(
5294        self,
5295        *,
5296        disable_trace_route: Optional[bool] = None,
5297        **kwargs
5298    ):
5299        super(ConnectionMonitorIcmpConfiguration, self).__init__(**kwargs)
5300        self.disable_trace_route = disable_trace_route
5301
5302
5303class ConnectionMonitorListResult(msrest.serialization.Model):
5304    """List of connection monitors.
5305
5306    :param value: Information about connection monitors.
5307    :type value: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorResult]
5308    """
5309
5310    _attribute_map = {
5311        'value': {'key': 'value', 'type': '[ConnectionMonitorResult]'},
5312    }
5313
5314    def __init__(
5315        self,
5316        *,
5317        value: Optional[List["ConnectionMonitorResult"]] = None,
5318        **kwargs
5319    ):
5320        super(ConnectionMonitorListResult, self).__init__(**kwargs)
5321        self.value = value
5322
5323
5324class ConnectionMonitorOutput(msrest.serialization.Model):
5325    """Describes a connection monitor output destination.
5326
5327    :param type: Connection monitor output destination type. Currently, only "Workspace" is
5328     supported. Possible values include: "Workspace".
5329    :type type: str or ~azure.mgmt.network.v2019_12_01.models.OutputType
5330    :param workspace_settings: Describes the settings for producing output into a log analytics
5331     workspace.
5332    :type workspace_settings:
5333     ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorWorkspaceSettings
5334    """
5335
5336    _attribute_map = {
5337        'type': {'key': 'type', 'type': 'str'},
5338        'workspace_settings': {'key': 'workspaceSettings', 'type': 'ConnectionMonitorWorkspaceSettings'},
5339    }
5340
5341    def __init__(
5342        self,
5343        *,
5344        type: Optional[Union[str, "OutputType"]] = None,
5345        workspace_settings: Optional["ConnectionMonitorWorkspaceSettings"] = None,
5346        **kwargs
5347    ):
5348        super(ConnectionMonitorOutput, self).__init__(**kwargs)
5349        self.type = type
5350        self.workspace_settings = workspace_settings
5351
5352
5353class ConnectionMonitorParameters(msrest.serialization.Model):
5354    """Parameters that define the operation to create a connection monitor.
5355
5356    :param source: Describes the source of connection monitor.
5357    :type source: ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorSource
5358    :param destination: Describes the destination of connection monitor.
5359    :type destination: ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorDestination
5360    :param auto_start: Determines if the connection monitor will start automatically once created.
5361    :type auto_start: bool
5362    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
5363    :type monitoring_interval_in_seconds: int
5364    :param endpoints: List of connection monitor endpoints.
5365    :type endpoints: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorEndpoint]
5366    :param test_configurations: List of connection monitor test configurations.
5367    :type test_configurations:
5368     list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorTestConfiguration]
5369    :param test_groups: List of connection monitor test groups.
5370    :type test_groups: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorTestGroup]
5371    :param outputs: List of connection monitor outputs.
5372    :type outputs: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorOutput]
5373    :param notes: Optional notes to be associated with the connection monitor.
5374    :type notes: str
5375    """
5376
5377    _attribute_map = {
5378        'source': {'key': 'source', 'type': 'ConnectionMonitorSource'},
5379        'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'},
5380        'auto_start': {'key': 'autoStart', 'type': 'bool'},
5381        'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'},
5382        'endpoints': {'key': 'endpoints', 'type': '[ConnectionMonitorEndpoint]'},
5383        'test_configurations': {'key': 'testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'},
5384        'test_groups': {'key': 'testGroups', 'type': '[ConnectionMonitorTestGroup]'},
5385        'outputs': {'key': 'outputs', 'type': '[ConnectionMonitorOutput]'},
5386        'notes': {'key': 'notes', 'type': 'str'},
5387    }
5388
5389    def __init__(
5390        self,
5391        *,
5392        source: Optional["ConnectionMonitorSource"] = None,
5393        destination: Optional["ConnectionMonitorDestination"] = None,
5394        auto_start: Optional[bool] = True,
5395        monitoring_interval_in_seconds: Optional[int] = 60,
5396        endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None,
5397        test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None,
5398        test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None,
5399        outputs: Optional[List["ConnectionMonitorOutput"]] = None,
5400        notes: Optional[str] = None,
5401        **kwargs
5402    ):
5403        super(ConnectionMonitorParameters, self).__init__(**kwargs)
5404        self.source = source
5405        self.destination = destination
5406        self.auto_start = auto_start
5407        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
5408        self.endpoints = endpoints
5409        self.test_configurations = test_configurations
5410        self.test_groups = test_groups
5411        self.outputs = outputs
5412        self.notes = notes
5413
5414
5415class ConnectionMonitorQueryResult(msrest.serialization.Model):
5416    """List of connection states snapshots.
5417
5418    :param source_status: Status of connection monitor source. Possible values include: "Unknown",
5419     "Active", "Inactive".
5420    :type source_status: str or
5421     ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorSourceStatus
5422    :param states: Information about connection states.
5423    :type states: list[~azure.mgmt.network.v2019_12_01.models.ConnectionStateSnapshot]
5424    """
5425
5426    _attribute_map = {
5427        'source_status': {'key': 'sourceStatus', 'type': 'str'},
5428        'states': {'key': 'states', 'type': '[ConnectionStateSnapshot]'},
5429    }
5430
5431    def __init__(
5432        self,
5433        *,
5434        source_status: Optional[Union[str, "ConnectionMonitorSourceStatus"]] = None,
5435        states: Optional[List["ConnectionStateSnapshot"]] = None,
5436        **kwargs
5437    ):
5438        super(ConnectionMonitorQueryResult, self).__init__(**kwargs)
5439        self.source_status = source_status
5440        self.states = states
5441
5442
5443class ConnectionMonitorResult(msrest.serialization.Model):
5444    """Information about the connection monitor.
5445
5446    Variables are only populated by the server, and will be ignored when sending a request.
5447
5448    :ivar name: Name of the connection monitor.
5449    :vartype name: str
5450    :ivar id: ID of the connection monitor.
5451    :vartype id: str
5452    :ivar etag: A unique read-only string that changes whenever the resource is updated.
5453    :vartype etag: str
5454    :ivar type: Connection monitor type.
5455    :vartype type: str
5456    :param location: Connection monitor location.
5457    :type location: str
5458    :param tags: A set of tags. Connection monitor tags.
5459    :type tags: dict[str, str]
5460    :param source: Describes the source of connection monitor.
5461    :type source: ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorSource
5462    :param destination: Describes the destination of connection monitor.
5463    :type destination: ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorDestination
5464    :param auto_start: Determines if the connection monitor will start automatically once created.
5465    :type auto_start: bool
5466    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
5467    :type monitoring_interval_in_seconds: int
5468    :param endpoints: List of connection monitor endpoints.
5469    :type endpoints: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorEndpoint]
5470    :param test_configurations: List of connection monitor test configurations.
5471    :type test_configurations:
5472     list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorTestConfiguration]
5473    :param test_groups: List of connection monitor test groups.
5474    :type test_groups: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorTestGroup]
5475    :param outputs: List of connection monitor outputs.
5476    :type outputs: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorOutput]
5477    :param notes: Optional notes to be associated with the connection monitor.
5478    :type notes: str
5479    :ivar provisioning_state: The provisioning state of the connection monitor. Possible values
5480     include: "Succeeded", "Updating", "Deleting", "Failed".
5481    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
5482    :ivar start_time: The date and time when the connection monitor was started.
5483    :vartype start_time: ~datetime.datetime
5484    :ivar monitoring_status: The monitoring status of the connection monitor.
5485    :vartype monitoring_status: str
5486    :ivar connection_monitor_type: Type of connection monitor. Possible values include:
5487     "MultiEndpoint", "SingleSourceDestination".
5488    :vartype connection_monitor_type: str or
5489     ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorType
5490    """
5491
5492    _validation = {
5493        'name': {'readonly': True},
5494        'id': {'readonly': True},
5495        'etag': {'readonly': True},
5496        'type': {'readonly': True},
5497        'provisioning_state': {'readonly': True},
5498        'start_time': {'readonly': True},
5499        'monitoring_status': {'readonly': True},
5500        'connection_monitor_type': {'readonly': True},
5501    }
5502
5503    _attribute_map = {
5504        'name': {'key': 'name', 'type': 'str'},
5505        'id': {'key': 'id', 'type': 'str'},
5506        'etag': {'key': 'etag', 'type': 'str'},
5507        'type': {'key': 'type', 'type': 'str'},
5508        'location': {'key': 'location', 'type': 'str'},
5509        'tags': {'key': 'tags', 'type': '{str}'},
5510        'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'},
5511        'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'},
5512        'auto_start': {'key': 'properties.autoStart', 'type': 'bool'},
5513        'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'},
5514        'endpoints': {'key': 'properties.endpoints', 'type': '[ConnectionMonitorEndpoint]'},
5515        'test_configurations': {'key': 'properties.testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'},
5516        'test_groups': {'key': 'properties.testGroups', 'type': '[ConnectionMonitorTestGroup]'},
5517        'outputs': {'key': 'properties.outputs', 'type': '[ConnectionMonitorOutput]'},
5518        'notes': {'key': 'properties.notes', 'type': 'str'},
5519        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5520        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
5521        'monitoring_status': {'key': 'properties.monitoringStatus', 'type': 'str'},
5522        'connection_monitor_type': {'key': 'properties.connectionMonitorType', 'type': 'str'},
5523    }
5524
5525    def __init__(
5526        self,
5527        *,
5528        location: Optional[str] = None,
5529        tags: Optional[Dict[str, str]] = None,
5530        source: Optional["ConnectionMonitorSource"] = None,
5531        destination: Optional["ConnectionMonitorDestination"] = None,
5532        auto_start: Optional[bool] = True,
5533        monitoring_interval_in_seconds: Optional[int] = 60,
5534        endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None,
5535        test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None,
5536        test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None,
5537        outputs: Optional[List["ConnectionMonitorOutput"]] = None,
5538        notes: Optional[str] = None,
5539        **kwargs
5540    ):
5541        super(ConnectionMonitorResult, self).__init__(**kwargs)
5542        self.name = None
5543        self.id = None
5544        self.etag = None
5545        self.type = None
5546        self.location = location
5547        self.tags = tags
5548        self.source = source
5549        self.destination = destination
5550        self.auto_start = auto_start
5551        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
5552        self.endpoints = endpoints
5553        self.test_configurations = test_configurations
5554        self.test_groups = test_groups
5555        self.outputs = outputs
5556        self.notes = notes
5557        self.provisioning_state = None
5558        self.start_time = None
5559        self.monitoring_status = None
5560        self.connection_monitor_type = None
5561
5562
5563class ConnectionMonitorResultProperties(ConnectionMonitorParameters):
5564    """Describes the properties of a connection monitor.
5565
5566    Variables are only populated by the server, and will be ignored when sending a request.
5567
5568    :param source: Describes the source of connection monitor.
5569    :type source: ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorSource
5570    :param destination: Describes the destination of connection monitor.
5571    :type destination: ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorDestination
5572    :param auto_start: Determines if the connection monitor will start automatically once created.
5573    :type auto_start: bool
5574    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
5575    :type monitoring_interval_in_seconds: int
5576    :param endpoints: List of connection monitor endpoints.
5577    :type endpoints: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorEndpoint]
5578    :param test_configurations: List of connection monitor test configurations.
5579    :type test_configurations:
5580     list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorTestConfiguration]
5581    :param test_groups: List of connection monitor test groups.
5582    :type test_groups: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorTestGroup]
5583    :param outputs: List of connection monitor outputs.
5584    :type outputs: list[~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorOutput]
5585    :param notes: Optional notes to be associated with the connection monitor.
5586    :type notes: str
5587    :ivar provisioning_state: The provisioning state of the connection monitor. Possible values
5588     include: "Succeeded", "Updating", "Deleting", "Failed".
5589    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
5590    :ivar start_time: The date and time when the connection monitor was started.
5591    :vartype start_time: ~datetime.datetime
5592    :ivar monitoring_status: The monitoring status of the connection monitor.
5593    :vartype monitoring_status: str
5594    :ivar connection_monitor_type: Type of connection monitor. Possible values include:
5595     "MultiEndpoint", "SingleSourceDestination".
5596    :vartype connection_monitor_type: str or
5597     ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorType
5598    """
5599
5600    _validation = {
5601        'provisioning_state': {'readonly': True},
5602        'start_time': {'readonly': True},
5603        'monitoring_status': {'readonly': True},
5604        'connection_monitor_type': {'readonly': True},
5605    }
5606
5607    _attribute_map = {
5608        'source': {'key': 'source', 'type': 'ConnectionMonitorSource'},
5609        'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'},
5610        'auto_start': {'key': 'autoStart', 'type': 'bool'},
5611        'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'},
5612        'endpoints': {'key': 'endpoints', 'type': '[ConnectionMonitorEndpoint]'},
5613        'test_configurations': {'key': 'testConfigurations', 'type': '[ConnectionMonitorTestConfiguration]'},
5614        'test_groups': {'key': 'testGroups', 'type': '[ConnectionMonitorTestGroup]'},
5615        'outputs': {'key': 'outputs', 'type': '[ConnectionMonitorOutput]'},
5616        'notes': {'key': 'notes', 'type': 'str'},
5617        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
5618        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
5619        'monitoring_status': {'key': 'monitoringStatus', 'type': 'str'},
5620        'connection_monitor_type': {'key': 'connectionMonitorType', 'type': 'str'},
5621    }
5622
5623    def __init__(
5624        self,
5625        *,
5626        source: Optional["ConnectionMonitorSource"] = None,
5627        destination: Optional["ConnectionMonitorDestination"] = None,
5628        auto_start: Optional[bool] = True,
5629        monitoring_interval_in_seconds: Optional[int] = 60,
5630        endpoints: Optional[List["ConnectionMonitorEndpoint"]] = None,
5631        test_configurations: Optional[List["ConnectionMonitorTestConfiguration"]] = None,
5632        test_groups: Optional[List["ConnectionMonitorTestGroup"]] = None,
5633        outputs: Optional[List["ConnectionMonitorOutput"]] = None,
5634        notes: Optional[str] = None,
5635        **kwargs
5636    ):
5637        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)
5638        self.provisioning_state = None
5639        self.start_time = None
5640        self.monitoring_status = None
5641        self.connection_monitor_type = None
5642
5643
5644class ConnectionMonitorSource(msrest.serialization.Model):
5645    """Describes the source of connection monitor.
5646
5647    All required parameters must be populated in order to send to Azure.
5648
5649    :param resource_id: Required. The ID of the resource used as the source by connection monitor.
5650    :type resource_id: str
5651    :param port: The source port used by connection monitor.
5652    :type port: int
5653    """
5654
5655    _validation = {
5656        'resource_id': {'required': True},
5657    }
5658
5659    _attribute_map = {
5660        'resource_id': {'key': 'resourceId', 'type': 'str'},
5661        'port': {'key': 'port', 'type': 'int'},
5662    }
5663
5664    def __init__(
5665        self,
5666        *,
5667        resource_id: str,
5668        port: Optional[int] = None,
5669        **kwargs
5670    ):
5671        super(ConnectionMonitorSource, self).__init__(**kwargs)
5672        self.resource_id = resource_id
5673        self.port = port
5674
5675
5676class ConnectionMonitorSuccessThreshold(msrest.serialization.Model):
5677    """Describes the threshold for declaring a test successful.
5678
5679    :param checks_failed_percent: The maximum percentage of failed checks permitted for a test to
5680     evaluate as successful.
5681    :type checks_failed_percent: int
5682    :param round_trip_time_ms: The maximum round-trip time in milliseconds permitted for a test to
5683     evaluate as successful.
5684    :type round_trip_time_ms: int
5685    """
5686
5687    _attribute_map = {
5688        'checks_failed_percent': {'key': 'checksFailedPercent', 'type': 'int'},
5689        'round_trip_time_ms': {'key': 'roundTripTimeMs', 'type': 'int'},
5690    }
5691
5692    def __init__(
5693        self,
5694        *,
5695        checks_failed_percent: Optional[int] = None,
5696        round_trip_time_ms: Optional[int] = None,
5697        **kwargs
5698    ):
5699        super(ConnectionMonitorSuccessThreshold, self).__init__(**kwargs)
5700        self.checks_failed_percent = checks_failed_percent
5701        self.round_trip_time_ms = round_trip_time_ms
5702
5703
5704class ConnectionMonitorTcpConfiguration(msrest.serialization.Model):
5705    """Describes the TCP configuration.
5706
5707    :param port: The port to connect to.
5708    :type port: int
5709    :param disable_trace_route: Value indicating whether path evaluation with trace route should be
5710     disabled.
5711    :type disable_trace_route: bool
5712    """
5713
5714    _attribute_map = {
5715        'port': {'key': 'port', 'type': 'int'},
5716        'disable_trace_route': {'key': 'disableTraceRoute', 'type': 'bool'},
5717    }
5718
5719    def __init__(
5720        self,
5721        *,
5722        port: Optional[int] = None,
5723        disable_trace_route: Optional[bool] = None,
5724        **kwargs
5725    ):
5726        super(ConnectionMonitorTcpConfiguration, self).__init__(**kwargs)
5727        self.port = port
5728        self.disable_trace_route = disable_trace_route
5729
5730
5731class ConnectionMonitorTestConfiguration(msrest.serialization.Model):
5732    """Describes a connection monitor test configuration.
5733
5734    All required parameters must be populated in order to send to Azure.
5735
5736    :param name: Required. The name of the connection monitor test configuration.
5737    :type name: str
5738    :param test_frequency_sec: The frequency of test evaluation, in seconds.
5739    :type test_frequency_sec: int
5740    :param protocol: Required. The protocol to use in test evaluation. Possible values include:
5741     "Tcp", "Http", "Icmp".
5742    :type protocol: str or
5743     ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorTestConfigurationProtocol
5744    :param preferred_ip_version: The preferred IP version to use in test evaluation. The connection
5745     monitor may choose to use a different version depending on other parameters. Possible values
5746     include: "IPv4", "IPv6".
5747    :type preferred_ip_version: str or ~azure.mgmt.network.v2019_12_01.models.PreferredIPVersion
5748    :param http_configuration: The parameters used to perform test evaluation over HTTP.
5749    :type http_configuration:
5750     ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorHttpConfiguration
5751    :param tcp_configuration: The parameters used to perform test evaluation over TCP.
5752    :type tcp_configuration:
5753     ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorTcpConfiguration
5754    :param icmp_configuration: The parameters used to perform test evaluation over ICMP.
5755    :type icmp_configuration:
5756     ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorIcmpConfiguration
5757    :param success_threshold: The threshold for declaring a test successful.
5758    :type success_threshold:
5759     ~azure.mgmt.network.v2019_12_01.models.ConnectionMonitorSuccessThreshold
5760    """
5761
5762    _validation = {
5763        'name': {'required': True},
5764        'protocol': {'required': True},
5765    }
5766
5767    _attribute_map = {
5768        'name': {'key': 'name', 'type': 'str'},
5769        'test_frequency_sec': {'key': 'testFrequencySec', 'type': 'int'},
5770        'protocol': {'key': 'protocol', 'type': 'str'},
5771        'preferred_ip_version': {'key': 'preferredIPVersion', 'type': 'str'},
5772        'http_configuration': {'key': 'httpConfiguration', 'type': 'ConnectionMonitorHttpConfiguration'},
5773        'tcp_configuration': {'key': 'tcpConfiguration', 'type': 'ConnectionMonitorTcpConfiguration'},
5774        'icmp_configuration': {'key': 'icmpConfiguration', 'type': 'ConnectionMonitorIcmpConfiguration'},
5775        'success_threshold': {'key': 'successThreshold', 'type': 'ConnectionMonitorSuccessThreshold'},
5776    }
5777
5778    def __init__(
5779        self,
5780        *,
5781        name: str,
5782        protocol: Union[str, "ConnectionMonitorTestConfigurationProtocol"],
5783        test_frequency_sec: Optional[int] = None,
5784        preferred_ip_version: Optional[Union[str, "PreferredIPVersion"]] = None,
5785        http_configuration: Optional["ConnectionMonitorHttpConfiguration"] = None,
5786        tcp_configuration: Optional["ConnectionMonitorTcpConfiguration"] = None,
5787        icmp_configuration: Optional["ConnectionMonitorIcmpConfiguration"] = None,
5788        success_threshold: Optional["ConnectionMonitorSuccessThreshold"] = None,
5789        **kwargs
5790    ):
5791        super(ConnectionMonitorTestConfiguration, self).__init__(**kwargs)
5792        self.name = name
5793        self.test_frequency_sec = test_frequency_sec
5794        self.protocol = protocol
5795        self.preferred_ip_version = preferred_ip_version
5796        self.http_configuration = http_configuration
5797        self.tcp_configuration = tcp_configuration
5798        self.icmp_configuration = icmp_configuration
5799        self.success_threshold = success_threshold
5800
5801
5802class ConnectionMonitorTestGroup(msrest.serialization.Model):
5803    """Describes the connection monitor test group.
5804
5805    All required parameters must be populated in order to send to Azure.
5806
5807    :param name: Required. The name of the connection monitor test group.
5808    :type name: str
5809    :param disable: Value indicating whether test group is disabled.
5810    :type disable: bool
5811    :param test_configurations: Required. List of test configuration names.
5812    :type test_configurations: list[str]
5813    :param sources: Required. List of source endpoint names.
5814    :type sources: list[str]
5815    :param destinations: Required. List of destination endpoint names.
5816    :type destinations: list[str]
5817    """
5818
5819    _validation = {
5820        'name': {'required': True},
5821        'test_configurations': {'required': True},
5822        'sources': {'required': True},
5823        'destinations': {'required': True},
5824    }
5825
5826    _attribute_map = {
5827        'name': {'key': 'name', 'type': 'str'},
5828        'disable': {'key': 'disable', 'type': 'bool'},
5829        'test_configurations': {'key': 'testConfigurations', 'type': '[str]'},
5830        'sources': {'key': 'sources', 'type': '[str]'},
5831        'destinations': {'key': 'destinations', 'type': '[str]'},
5832    }
5833
5834    def __init__(
5835        self,
5836        *,
5837        name: str,
5838        test_configurations: List[str],
5839        sources: List[str],
5840        destinations: List[str],
5841        disable: Optional[bool] = None,
5842        **kwargs
5843    ):
5844        super(ConnectionMonitorTestGroup, self).__init__(**kwargs)
5845        self.name = name
5846        self.disable = disable
5847        self.test_configurations = test_configurations
5848        self.sources = sources
5849        self.destinations = destinations
5850
5851
5852class ConnectionMonitorWorkspaceSettings(msrest.serialization.Model):
5853    """Describes the settings for producing output into a log analytics workspace.
5854
5855    :param workspace_resource_id: Log analytics workspace resource ID.
5856    :type workspace_resource_id: str
5857    """
5858
5859    _attribute_map = {
5860        'workspace_resource_id': {'key': 'workspaceResourceId', 'type': 'str'},
5861    }
5862
5863    def __init__(
5864        self,
5865        *,
5866        workspace_resource_id: Optional[str] = None,
5867        **kwargs
5868    ):
5869        super(ConnectionMonitorWorkspaceSettings, self).__init__(**kwargs)
5870        self.workspace_resource_id = workspace_resource_id
5871
5872
5873class ConnectionResetSharedKey(msrest.serialization.Model):
5874    """The virtual network connection reset shared key.
5875
5876    All required parameters must be populated in order to send to Azure.
5877
5878    :param key_length: Required. The virtual network connection reset shared key length, should
5879     between 1 and 128.
5880    :type key_length: int
5881    """
5882
5883    _validation = {
5884        'key_length': {'required': True, 'maximum': 128, 'minimum': 1},
5885    }
5886
5887    _attribute_map = {
5888        'key_length': {'key': 'keyLength', 'type': 'int'},
5889    }
5890
5891    def __init__(
5892        self,
5893        *,
5894        key_length: int,
5895        **kwargs
5896    ):
5897        super(ConnectionResetSharedKey, self).__init__(**kwargs)
5898        self.key_length = key_length
5899
5900
5901class ConnectionSharedKey(SubResource):
5902    """Response for GetConnectionSharedKey API service call.
5903
5904    All required parameters must be populated in order to send to Azure.
5905
5906    :param id: Resource ID.
5907    :type id: str
5908    :param value: Required. The virtual network connection shared key value.
5909    :type value: str
5910    """
5911
5912    _validation = {
5913        'value': {'required': True},
5914    }
5915
5916    _attribute_map = {
5917        'id': {'key': 'id', 'type': 'str'},
5918        'value': {'key': 'value', 'type': 'str'},
5919    }
5920
5921    def __init__(
5922        self,
5923        *,
5924        value: str,
5925        id: Optional[str] = None,
5926        **kwargs
5927    ):
5928        super(ConnectionSharedKey, self).__init__(id=id, **kwargs)
5929        self.value = value
5930
5931
5932class ConnectionStateSnapshot(msrest.serialization.Model):
5933    """Connection state snapshot.
5934
5935    Variables are only populated by the server, and will be ignored when sending a request.
5936
5937    :param connection_state: The connection state. Possible values include: "Reachable",
5938     "Unreachable", "Unknown".
5939    :type connection_state: str or ~azure.mgmt.network.v2019_12_01.models.ConnectionState
5940    :param start_time: The start time of the connection snapshot.
5941    :type start_time: ~datetime.datetime
5942    :param end_time: The end time of the connection snapshot.
5943    :type end_time: ~datetime.datetime
5944    :param evaluation_state: Connectivity analysis evaluation state. Possible values include:
5945     "NotStarted", "InProgress", "Completed".
5946    :type evaluation_state: str or ~azure.mgmt.network.v2019_12_01.models.EvaluationState
5947    :param avg_latency_in_ms: Average latency in ms.
5948    :type avg_latency_in_ms: int
5949    :param min_latency_in_ms: Minimum latency in ms.
5950    :type min_latency_in_ms: int
5951    :param max_latency_in_ms: Maximum latency in ms.
5952    :type max_latency_in_ms: int
5953    :param probes_sent: The number of sent probes.
5954    :type probes_sent: int
5955    :param probes_failed: The number of failed probes.
5956    :type probes_failed: int
5957    :ivar hops: List of hops between the source and the destination.
5958    :vartype hops: list[~azure.mgmt.network.v2019_12_01.models.ConnectivityHop]
5959    """
5960
5961    _validation = {
5962        'hops': {'readonly': True},
5963    }
5964
5965    _attribute_map = {
5966        'connection_state': {'key': 'connectionState', 'type': 'str'},
5967        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
5968        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
5969        'evaluation_state': {'key': 'evaluationState', 'type': 'str'},
5970        'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'int'},
5971        'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'int'},
5972        'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'int'},
5973        'probes_sent': {'key': 'probesSent', 'type': 'int'},
5974        'probes_failed': {'key': 'probesFailed', 'type': 'int'},
5975        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
5976    }
5977
5978    def __init__(
5979        self,
5980        *,
5981        connection_state: Optional[Union[str, "ConnectionState"]] = None,
5982        start_time: Optional[datetime.datetime] = None,
5983        end_time: Optional[datetime.datetime] = None,
5984        evaluation_state: Optional[Union[str, "EvaluationState"]] = None,
5985        avg_latency_in_ms: Optional[int] = None,
5986        min_latency_in_ms: Optional[int] = None,
5987        max_latency_in_ms: Optional[int] = None,
5988        probes_sent: Optional[int] = None,
5989        probes_failed: Optional[int] = None,
5990        **kwargs
5991    ):
5992        super(ConnectionStateSnapshot, self).__init__(**kwargs)
5993        self.connection_state = connection_state
5994        self.start_time = start_time
5995        self.end_time = end_time
5996        self.evaluation_state = evaluation_state
5997        self.avg_latency_in_ms = avg_latency_in_ms
5998        self.min_latency_in_ms = min_latency_in_ms
5999        self.max_latency_in_ms = max_latency_in_ms
6000        self.probes_sent = probes_sent
6001        self.probes_failed = probes_failed
6002        self.hops = None
6003
6004
6005class ConnectivityDestination(msrest.serialization.Model):
6006    """Parameters that define destination of connection.
6007
6008    :param resource_id: The ID of the resource to which a connection attempt will be made.
6009    :type resource_id: str
6010    :param address: The IP address or URI the resource to which a connection attempt will be made.
6011    :type address: str
6012    :param port: Port on which check connectivity will be performed.
6013    :type port: int
6014    """
6015
6016    _attribute_map = {
6017        'resource_id': {'key': 'resourceId', 'type': 'str'},
6018        'address': {'key': 'address', 'type': 'str'},
6019        'port': {'key': 'port', 'type': 'int'},
6020    }
6021
6022    def __init__(
6023        self,
6024        *,
6025        resource_id: Optional[str] = None,
6026        address: Optional[str] = None,
6027        port: Optional[int] = None,
6028        **kwargs
6029    ):
6030        super(ConnectivityDestination, self).__init__(**kwargs)
6031        self.resource_id = resource_id
6032        self.address = address
6033        self.port = port
6034
6035
6036class ConnectivityHop(msrest.serialization.Model):
6037    """Information about a hop between the source and the destination.
6038
6039    Variables are only populated by the server, and will be ignored when sending a request.
6040
6041    :ivar type: The type of the hop.
6042    :vartype type: str
6043    :ivar id: The ID of the hop.
6044    :vartype id: str
6045    :ivar address: The IP address of the hop.
6046    :vartype address: str
6047    :ivar resource_id: The ID of the resource corresponding to this hop.
6048    :vartype resource_id: str
6049    :ivar next_hop_ids: List of next hop identifiers.
6050    :vartype next_hop_ids: list[str]
6051    :ivar issues: List of issues.
6052    :vartype issues: list[~azure.mgmt.network.v2019_12_01.models.ConnectivityIssue]
6053    """
6054
6055    _validation = {
6056        'type': {'readonly': True},
6057        'id': {'readonly': True},
6058        'address': {'readonly': True},
6059        'resource_id': {'readonly': True},
6060        'next_hop_ids': {'readonly': True},
6061        'issues': {'readonly': True},
6062    }
6063
6064    _attribute_map = {
6065        'type': {'key': 'type', 'type': 'str'},
6066        'id': {'key': 'id', 'type': 'str'},
6067        'address': {'key': 'address', 'type': 'str'},
6068        'resource_id': {'key': 'resourceId', 'type': 'str'},
6069        'next_hop_ids': {'key': 'nextHopIds', 'type': '[str]'},
6070        'issues': {'key': 'issues', 'type': '[ConnectivityIssue]'},
6071    }
6072
6073    def __init__(
6074        self,
6075        **kwargs
6076    ):
6077        super(ConnectivityHop, self).__init__(**kwargs)
6078        self.type = None
6079        self.id = None
6080        self.address = None
6081        self.resource_id = None
6082        self.next_hop_ids = None
6083        self.issues = None
6084
6085
6086class ConnectivityInformation(msrest.serialization.Model):
6087    """Information on the connectivity status.
6088
6089    Variables are only populated by the server, and will be ignored when sending a request.
6090
6091    :ivar hops: List of hops between the source and the destination.
6092    :vartype hops: list[~azure.mgmt.network.v2019_12_01.models.ConnectivityHop]
6093    :ivar connection_status: The connection status. Possible values include: "Unknown",
6094     "Connected", "Disconnected", "Degraded".
6095    :vartype connection_status: str or ~azure.mgmt.network.v2019_12_01.models.ConnectionStatus
6096    :ivar avg_latency_in_ms: Average latency in milliseconds.
6097    :vartype avg_latency_in_ms: int
6098    :ivar min_latency_in_ms: Minimum latency in milliseconds.
6099    :vartype min_latency_in_ms: int
6100    :ivar max_latency_in_ms: Maximum latency in milliseconds.
6101    :vartype max_latency_in_ms: int
6102    :ivar probes_sent: Total number of probes sent.
6103    :vartype probes_sent: int
6104    :ivar probes_failed: Number of failed probes.
6105    :vartype probes_failed: int
6106    """
6107
6108    _validation = {
6109        'hops': {'readonly': True},
6110        'connection_status': {'readonly': True},
6111        'avg_latency_in_ms': {'readonly': True},
6112        'min_latency_in_ms': {'readonly': True},
6113        'max_latency_in_ms': {'readonly': True},
6114        'probes_sent': {'readonly': True},
6115        'probes_failed': {'readonly': True},
6116    }
6117
6118    _attribute_map = {
6119        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
6120        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
6121        'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'int'},
6122        'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'int'},
6123        'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'int'},
6124        'probes_sent': {'key': 'probesSent', 'type': 'int'},
6125        'probes_failed': {'key': 'probesFailed', 'type': 'int'},
6126    }
6127
6128    def __init__(
6129        self,
6130        **kwargs
6131    ):
6132        super(ConnectivityInformation, self).__init__(**kwargs)
6133        self.hops = None
6134        self.connection_status = None
6135        self.avg_latency_in_ms = None
6136        self.min_latency_in_ms = None
6137        self.max_latency_in_ms = None
6138        self.probes_sent = None
6139        self.probes_failed = None
6140
6141
6142class ConnectivityIssue(msrest.serialization.Model):
6143    """Information about an issue encountered in the process of checking for connectivity.
6144
6145    Variables are only populated by the server, and will be ignored when sending a request.
6146
6147    :ivar origin: The origin of the issue. Possible values include: "Local", "Inbound", "Outbound".
6148    :vartype origin: str or ~azure.mgmt.network.v2019_12_01.models.Origin
6149    :ivar severity: The severity of the issue. Possible values include: "Error", "Warning".
6150    :vartype severity: str or ~azure.mgmt.network.v2019_12_01.models.Severity
6151    :ivar type: The type of issue. Possible values include: "Unknown", "AgentStopped",
6152     "GuestFirewall", "DnsResolution", "SocketBind", "NetworkSecurityRule", "UserDefinedRoute",
6153     "PortThrottled", "Platform".
6154    :vartype type: str or ~azure.mgmt.network.v2019_12_01.models.IssueType
6155    :ivar context: Provides additional context on the issue.
6156    :vartype context: list[dict[str, str]]
6157    """
6158
6159    _validation = {
6160        'origin': {'readonly': True},
6161        'severity': {'readonly': True},
6162        'type': {'readonly': True},
6163        'context': {'readonly': True},
6164    }
6165
6166    _attribute_map = {
6167        'origin': {'key': 'origin', 'type': 'str'},
6168        'severity': {'key': 'severity', 'type': 'str'},
6169        'type': {'key': 'type', 'type': 'str'},
6170        'context': {'key': 'context', 'type': '[{str}]'},
6171    }
6172
6173    def __init__(
6174        self,
6175        **kwargs
6176    ):
6177        super(ConnectivityIssue, self).__init__(**kwargs)
6178        self.origin = None
6179        self.severity = None
6180        self.type = None
6181        self.context = None
6182
6183
6184class ConnectivityParameters(msrest.serialization.Model):
6185    """Parameters that determine how the connectivity check will be performed.
6186
6187    All required parameters must be populated in order to send to Azure.
6188
6189    :param source: Required. The source of the connection.
6190    :type source: ~azure.mgmt.network.v2019_12_01.models.ConnectivitySource
6191    :param destination: Required. The destination of connection.
6192    :type destination: ~azure.mgmt.network.v2019_12_01.models.ConnectivityDestination
6193    :param protocol: Network protocol. Possible values include: "Tcp", "Http", "Https", "Icmp".
6194    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.Protocol
6195    :param protocol_configuration: Configuration of the protocol.
6196    :type protocol_configuration: ~azure.mgmt.network.v2019_12_01.models.ProtocolConfiguration
6197    :param preferred_ip_version: Preferred IP version of the connection. Possible values include:
6198     "IPv4", "IPv6".
6199    :type preferred_ip_version: str or ~azure.mgmt.network.v2019_12_01.models.IPVersion
6200    """
6201
6202    _validation = {
6203        'source': {'required': True},
6204        'destination': {'required': True},
6205    }
6206
6207    _attribute_map = {
6208        'source': {'key': 'source', 'type': 'ConnectivitySource'},
6209        'destination': {'key': 'destination', 'type': 'ConnectivityDestination'},
6210        'protocol': {'key': 'protocol', 'type': 'str'},
6211        'protocol_configuration': {'key': 'protocolConfiguration', 'type': 'ProtocolConfiguration'},
6212        'preferred_ip_version': {'key': 'preferredIPVersion', 'type': 'str'},
6213    }
6214
6215    def __init__(
6216        self,
6217        *,
6218        source: "ConnectivitySource",
6219        destination: "ConnectivityDestination",
6220        protocol: Optional[Union[str, "Protocol"]] = None,
6221        protocol_configuration: Optional["ProtocolConfiguration"] = None,
6222        preferred_ip_version: Optional[Union[str, "IPVersion"]] = None,
6223        **kwargs
6224    ):
6225        super(ConnectivityParameters, self).__init__(**kwargs)
6226        self.source = source
6227        self.destination = destination
6228        self.protocol = protocol
6229        self.protocol_configuration = protocol_configuration
6230        self.preferred_ip_version = preferred_ip_version
6231
6232
6233class ConnectivitySource(msrest.serialization.Model):
6234    """Parameters that define the source of the connection.
6235
6236    All required parameters must be populated in order to send to Azure.
6237
6238    :param resource_id: Required. The ID of the resource from which a connectivity check will be
6239     initiated.
6240    :type resource_id: str
6241    :param port: The source port from which a connectivity check will be performed.
6242    :type port: int
6243    """
6244
6245    _validation = {
6246        'resource_id': {'required': True},
6247    }
6248
6249    _attribute_map = {
6250        'resource_id': {'key': 'resourceId', 'type': 'str'},
6251        'port': {'key': 'port', 'type': 'int'},
6252    }
6253
6254    def __init__(
6255        self,
6256        *,
6257        resource_id: str,
6258        port: Optional[int] = None,
6259        **kwargs
6260    ):
6261        super(ConnectivitySource, self).__init__(**kwargs)
6262        self.resource_id = resource_id
6263        self.port = port
6264
6265
6266class Container(SubResource):
6267    """Reference to container resource in remote resource provider.
6268
6269    :param id: Resource ID.
6270    :type id: str
6271    """
6272
6273    _attribute_map = {
6274        'id': {'key': 'id', 'type': 'str'},
6275    }
6276
6277    def __init__(
6278        self,
6279        *,
6280        id: Optional[str] = None,
6281        **kwargs
6282    ):
6283        super(Container, self).__init__(id=id, **kwargs)
6284
6285
6286class ContainerNetworkInterface(SubResource):
6287    """Container network interface child resource.
6288
6289    Variables are only populated by the server, and will be ignored when sending a request.
6290
6291    :param id: Resource ID.
6292    :type id: str
6293    :param name: The name of the resource. This name can be used to access the resource.
6294    :type name: str
6295    :ivar type: Sub Resource type.
6296    :vartype type: str
6297    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6298    :vartype etag: str
6299    :ivar container_network_interface_configuration: Container network interface configuration from
6300     which this container network interface is created.
6301    :vartype container_network_interface_configuration:
6302     ~azure.mgmt.network.v2019_12_01.models.ContainerNetworkInterfaceConfiguration
6303    :param container: Reference to the container to which this container network interface is
6304     attached.
6305    :type container: ~azure.mgmt.network.v2019_12_01.models.Container
6306    :ivar ip_configurations: Reference to the ip configuration on this container nic.
6307    :vartype ip_configurations:
6308     list[~azure.mgmt.network.v2019_12_01.models.ContainerNetworkInterfaceIpConfiguration]
6309    :ivar provisioning_state: The provisioning state of the container network interface resource.
6310     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
6311    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
6312    """
6313
6314    _validation = {
6315        'type': {'readonly': True},
6316        'etag': {'readonly': True},
6317        'container_network_interface_configuration': {'readonly': True},
6318        'ip_configurations': {'readonly': True},
6319        'provisioning_state': {'readonly': True},
6320    }
6321
6322    _attribute_map = {
6323        'id': {'key': 'id', 'type': 'str'},
6324        'name': {'key': 'name', 'type': 'str'},
6325        'type': {'key': 'type', 'type': 'str'},
6326        'etag': {'key': 'etag', 'type': 'str'},
6327        'container_network_interface_configuration': {'key': 'properties.containerNetworkInterfaceConfiguration', 'type': 'ContainerNetworkInterfaceConfiguration'},
6328        'container': {'key': 'properties.container', 'type': 'Container'},
6329        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[ContainerNetworkInterfaceIpConfiguration]'},
6330        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6331    }
6332
6333    def __init__(
6334        self,
6335        *,
6336        id: Optional[str] = None,
6337        name: Optional[str] = None,
6338        container: Optional["Container"] = None,
6339        **kwargs
6340    ):
6341        super(ContainerNetworkInterface, self).__init__(id=id, **kwargs)
6342        self.name = name
6343        self.type = None
6344        self.etag = None
6345        self.container_network_interface_configuration = None
6346        self.container = container
6347        self.ip_configurations = None
6348        self.provisioning_state = None
6349
6350
6351class ContainerNetworkInterfaceConfiguration(SubResource):
6352    """Container network interface configuration child resource.
6353
6354    Variables are only populated by the server, and will be ignored when sending a request.
6355
6356    :param id: Resource ID.
6357    :type id: str
6358    :param name: The name of the resource. This name can be used to access the resource.
6359    :type name: str
6360    :ivar type: Sub Resource type.
6361    :vartype type: str
6362    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6363    :vartype etag: str
6364    :param ip_configurations: A list of ip configurations of the container network interface
6365     configuration.
6366    :type ip_configurations: list[~azure.mgmt.network.v2019_12_01.models.IPConfigurationProfile]
6367    :param container_network_interfaces: A list of container network interfaces created from this
6368     container network interface configuration.
6369    :type container_network_interfaces: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
6370    :ivar provisioning_state: The provisioning state of the container network interface
6371     configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
6372    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
6373    """
6374
6375    _validation = {
6376        'type': {'readonly': True},
6377        'etag': {'readonly': True},
6378        'provisioning_state': {'readonly': True},
6379    }
6380
6381    _attribute_map = {
6382        'id': {'key': 'id', 'type': 'str'},
6383        'name': {'key': 'name', 'type': 'str'},
6384        'type': {'key': 'type', 'type': 'str'},
6385        'etag': {'key': 'etag', 'type': 'str'},
6386        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfigurationProfile]'},
6387        'container_network_interfaces': {'key': 'properties.containerNetworkInterfaces', 'type': '[SubResource]'},
6388        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6389    }
6390
6391    def __init__(
6392        self,
6393        *,
6394        id: Optional[str] = None,
6395        name: Optional[str] = None,
6396        ip_configurations: Optional[List["IPConfigurationProfile"]] = None,
6397        container_network_interfaces: Optional[List["SubResource"]] = None,
6398        **kwargs
6399    ):
6400        super(ContainerNetworkInterfaceConfiguration, self).__init__(id=id, **kwargs)
6401        self.name = name
6402        self.type = None
6403        self.etag = None
6404        self.ip_configurations = ip_configurations
6405        self.container_network_interfaces = container_network_interfaces
6406        self.provisioning_state = None
6407
6408
6409class ContainerNetworkInterfaceIpConfiguration(msrest.serialization.Model):
6410    """The ip configuration for a container network interface.
6411
6412    Variables are only populated by the server, and will be ignored when sending a request.
6413
6414    :param name: The name of the resource. This name can be used to access the resource.
6415    :type name: str
6416    :ivar type: Sub Resource type.
6417    :vartype type: str
6418    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6419    :vartype etag: str
6420    :ivar provisioning_state: The provisioning state of the container network interface IP
6421     configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
6422    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
6423    """
6424
6425    _validation = {
6426        'type': {'readonly': True},
6427        'etag': {'readonly': True},
6428        'provisioning_state': {'readonly': True},
6429    }
6430
6431    _attribute_map = {
6432        'name': {'key': 'name', 'type': 'str'},
6433        'type': {'key': 'type', 'type': 'str'},
6434        'etag': {'key': 'etag', 'type': 'str'},
6435        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6436    }
6437
6438    def __init__(
6439        self,
6440        *,
6441        name: Optional[str] = None,
6442        **kwargs
6443    ):
6444        super(ContainerNetworkInterfaceIpConfiguration, self).__init__(**kwargs)
6445        self.name = name
6446        self.type = None
6447        self.etag = None
6448        self.provisioning_state = None
6449
6450
6451class DdosCustomPolicy(Resource):
6452    """A DDoS custom policy in a resource group.
6453
6454    Variables are only populated by the server, and will be ignored when sending a request.
6455
6456    :param id: Resource ID.
6457    :type id: str
6458    :ivar name: Resource name.
6459    :vartype name: str
6460    :ivar type: Resource type.
6461    :vartype type: str
6462    :param location: Resource location.
6463    :type location: str
6464    :param tags: A set of tags. Resource tags.
6465    :type tags: dict[str, str]
6466    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6467    :vartype etag: str
6468    :ivar resource_guid: The resource GUID property of the DDoS custom policy resource. It uniquely
6469     identifies the resource, even if the user changes its name or migrate the resource across
6470     subscriptions or resource groups.
6471    :vartype resource_guid: str
6472    :ivar provisioning_state: The provisioning state of the DDoS custom policy resource. Possible
6473     values include: "Succeeded", "Updating", "Deleting", "Failed".
6474    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
6475    :ivar public_ip_addresses: The list of public IPs associated with the DDoS custom policy
6476     resource. This list is read-only.
6477    :vartype public_ip_addresses: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
6478    :param protocol_custom_settings: The protocol-specific DDoS policy customization parameters.
6479    :type protocol_custom_settings:
6480     list[~azure.mgmt.network.v2019_12_01.models.ProtocolCustomSettingsFormat]
6481    """
6482
6483    _validation = {
6484        'name': {'readonly': True},
6485        'type': {'readonly': True},
6486        'etag': {'readonly': True},
6487        'resource_guid': {'readonly': True},
6488        'provisioning_state': {'readonly': True},
6489        'public_ip_addresses': {'readonly': True},
6490    }
6491
6492    _attribute_map = {
6493        'id': {'key': 'id', 'type': 'str'},
6494        'name': {'key': 'name', 'type': 'str'},
6495        'type': {'key': 'type', 'type': 'str'},
6496        'location': {'key': 'location', 'type': 'str'},
6497        'tags': {'key': 'tags', 'type': '{str}'},
6498        'etag': {'key': 'etag', 'type': 'str'},
6499        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6500        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6501        'public_ip_addresses': {'key': 'properties.publicIPAddresses', 'type': '[SubResource]'},
6502        'protocol_custom_settings': {'key': 'properties.protocolCustomSettings', 'type': '[ProtocolCustomSettingsFormat]'},
6503    }
6504
6505    def __init__(
6506        self,
6507        *,
6508        id: Optional[str] = None,
6509        location: Optional[str] = None,
6510        tags: Optional[Dict[str, str]] = None,
6511        protocol_custom_settings: Optional[List["ProtocolCustomSettingsFormat"]] = None,
6512        **kwargs
6513    ):
6514        super(DdosCustomPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs)
6515        self.etag = None
6516        self.resource_guid = None
6517        self.provisioning_state = None
6518        self.public_ip_addresses = None
6519        self.protocol_custom_settings = protocol_custom_settings
6520
6521
6522class DdosProtectionPlan(msrest.serialization.Model):
6523    """A DDoS protection plan in a resource group.
6524
6525    Variables are only populated by the server, and will be ignored when sending a request.
6526
6527    :ivar id: Resource ID.
6528    :vartype id: str
6529    :ivar name: Resource name.
6530    :vartype name: str
6531    :ivar type: Resource type.
6532    :vartype type: str
6533    :param location: Resource location.
6534    :type location: str
6535    :param tags: A set of tags. Resource tags.
6536    :type tags: dict[str, str]
6537    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6538    :vartype etag: str
6539    :ivar resource_guid: The resource GUID property of the DDoS protection plan resource. It
6540     uniquely identifies the resource, even if the user changes its name or migrate the resource
6541     across subscriptions or resource groups.
6542    :vartype resource_guid: str
6543    :ivar provisioning_state: The provisioning state of the DDoS protection plan resource. Possible
6544     values include: "Succeeded", "Updating", "Deleting", "Failed".
6545    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
6546    :ivar virtual_networks: The list of virtual networks associated with the DDoS protection plan
6547     resource. This list is read-only.
6548    :vartype virtual_networks: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
6549    """
6550
6551    _validation = {
6552        'id': {'readonly': True},
6553        'name': {'readonly': True},
6554        'type': {'readonly': True},
6555        'etag': {'readonly': True},
6556        'resource_guid': {'readonly': True},
6557        'provisioning_state': {'readonly': True},
6558        'virtual_networks': {'readonly': True},
6559    }
6560
6561    _attribute_map = {
6562        'id': {'key': 'id', 'type': 'str'},
6563        'name': {'key': 'name', 'type': 'str'},
6564        'type': {'key': 'type', 'type': 'str'},
6565        'location': {'key': 'location', 'type': 'str'},
6566        'tags': {'key': 'tags', 'type': '{str}'},
6567        'etag': {'key': 'etag', 'type': 'str'},
6568        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6569        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6570        'virtual_networks': {'key': 'properties.virtualNetworks', 'type': '[SubResource]'},
6571    }
6572
6573    def __init__(
6574        self,
6575        *,
6576        location: Optional[str] = None,
6577        tags: Optional[Dict[str, str]] = None,
6578        **kwargs
6579    ):
6580        super(DdosProtectionPlan, self).__init__(**kwargs)
6581        self.id = None
6582        self.name = None
6583        self.type = None
6584        self.location = location
6585        self.tags = tags
6586        self.etag = None
6587        self.resource_guid = None
6588        self.provisioning_state = None
6589        self.virtual_networks = None
6590
6591
6592class DdosProtectionPlanListResult(msrest.serialization.Model):
6593    """A list of DDoS protection plans.
6594
6595    Variables are only populated by the server, and will be ignored when sending a request.
6596
6597    :param value: A list of DDoS protection plans.
6598    :type value: list[~azure.mgmt.network.v2019_12_01.models.DdosProtectionPlan]
6599    :ivar next_link: The URL to get the next set of results.
6600    :vartype next_link: str
6601    """
6602
6603    _validation = {
6604        'next_link': {'readonly': True},
6605    }
6606
6607    _attribute_map = {
6608        'value': {'key': 'value', 'type': '[DdosProtectionPlan]'},
6609        'next_link': {'key': 'nextLink', 'type': 'str'},
6610    }
6611
6612    def __init__(
6613        self,
6614        *,
6615        value: Optional[List["DdosProtectionPlan"]] = None,
6616        **kwargs
6617    ):
6618        super(DdosProtectionPlanListResult, self).__init__(**kwargs)
6619        self.value = value
6620        self.next_link = None
6621
6622
6623class DdosSettings(msrest.serialization.Model):
6624    """Contains the DDoS protection settings of the public IP.
6625
6626    :param ddos_custom_policy: The DDoS custom policy associated with the public IP.
6627    :type ddos_custom_policy: ~azure.mgmt.network.v2019_12_01.models.SubResource
6628    :param protection_coverage: The DDoS protection policy customizability of the public IP. Only
6629     standard coverage will have the ability to be customized. Possible values include: "Basic",
6630     "Standard".
6631    :type protection_coverage: str or
6632     ~azure.mgmt.network.v2019_12_01.models.DdosSettingsProtectionCoverage
6633    :param protected_ip: Enables DDoS protection on the public IP.
6634    :type protected_ip: bool
6635    """
6636
6637    _attribute_map = {
6638        'ddos_custom_policy': {'key': 'ddosCustomPolicy', 'type': 'SubResource'},
6639        'protection_coverage': {'key': 'protectionCoverage', 'type': 'str'},
6640        'protected_ip': {'key': 'protectedIP', 'type': 'bool'},
6641    }
6642
6643    def __init__(
6644        self,
6645        *,
6646        ddos_custom_policy: Optional["SubResource"] = None,
6647        protection_coverage: Optional[Union[str, "DdosSettingsProtectionCoverage"]] = None,
6648        protected_ip: Optional[bool] = None,
6649        **kwargs
6650    ):
6651        super(DdosSettings, self).__init__(**kwargs)
6652        self.ddos_custom_policy = ddos_custom_policy
6653        self.protection_coverage = protection_coverage
6654        self.protected_ip = protected_ip
6655
6656
6657class Delegation(SubResource):
6658    """Details the service to which the subnet is delegated.
6659
6660    Variables are only populated by the server, and will be ignored when sending a request.
6661
6662    :param id: Resource ID.
6663    :type id: str
6664    :param name: The name of the resource that is unique within a subnet. This name can be used to
6665     access the resource.
6666    :type name: str
6667    :ivar etag: A unique read-only string that changes whenever the resource is updated.
6668    :vartype etag: str
6669    :param service_name: The name of the service to whom the subnet should be delegated (e.g.
6670     Microsoft.Sql/servers).
6671    :type service_name: str
6672    :ivar actions: The actions permitted to the service upon delegation.
6673    :vartype actions: list[str]
6674    :ivar provisioning_state: The provisioning state of the service delegation resource. Possible
6675     values include: "Succeeded", "Updating", "Deleting", "Failed".
6676    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
6677    """
6678
6679    _validation = {
6680        'etag': {'readonly': True},
6681        'actions': {'readonly': True},
6682        'provisioning_state': {'readonly': True},
6683    }
6684
6685    _attribute_map = {
6686        'id': {'key': 'id', 'type': 'str'},
6687        'name': {'key': 'name', 'type': 'str'},
6688        'etag': {'key': 'etag', 'type': 'str'},
6689        'service_name': {'key': 'properties.serviceName', 'type': 'str'},
6690        'actions': {'key': 'properties.actions', 'type': '[str]'},
6691        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6692    }
6693
6694    def __init__(
6695        self,
6696        *,
6697        id: Optional[str] = None,
6698        name: Optional[str] = None,
6699        service_name: Optional[str] = None,
6700        **kwargs
6701    ):
6702        super(Delegation, self).__init__(id=id, **kwargs)
6703        self.name = name
6704        self.etag = None
6705        self.service_name = service_name
6706        self.actions = None
6707        self.provisioning_state = None
6708
6709
6710class DeviceProperties(msrest.serialization.Model):
6711    """List of properties of the device.
6712
6713    :param device_vendor: Name of the device Vendor.
6714    :type device_vendor: str
6715    :param device_model: Model of the device.
6716    :type device_model: str
6717    :param link_speed_in_mbps: Link speed.
6718    :type link_speed_in_mbps: int
6719    """
6720
6721    _attribute_map = {
6722        'device_vendor': {'key': 'deviceVendor', 'type': 'str'},
6723        'device_model': {'key': 'deviceModel', 'type': 'str'},
6724        'link_speed_in_mbps': {'key': 'linkSpeedInMbps', 'type': 'int'},
6725    }
6726
6727    def __init__(
6728        self,
6729        *,
6730        device_vendor: Optional[str] = None,
6731        device_model: Optional[str] = None,
6732        link_speed_in_mbps: Optional[int] = None,
6733        **kwargs
6734    ):
6735        super(DeviceProperties, self).__init__(**kwargs)
6736        self.device_vendor = device_vendor
6737        self.device_model = device_model
6738        self.link_speed_in_mbps = link_speed_in_mbps
6739
6740
6741class DhcpOptions(msrest.serialization.Model):
6742    """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.
6743
6744    :param dns_servers: The list of DNS servers IP addresses.
6745    :type dns_servers: list[str]
6746    """
6747
6748    _attribute_map = {
6749        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
6750    }
6751
6752    def __init__(
6753        self,
6754        *,
6755        dns_servers: Optional[List[str]] = None,
6756        **kwargs
6757    ):
6758        super(DhcpOptions, self).__init__(**kwargs)
6759        self.dns_servers = dns_servers
6760
6761
6762class Dimension(msrest.serialization.Model):
6763    """Dimension of the metric.
6764
6765    :param name: The name of the dimension.
6766    :type name: str
6767    :param display_name: The display name of the dimension.
6768    :type display_name: str
6769    :param internal_name: The internal name of the dimension.
6770    :type internal_name: str
6771    """
6772
6773    _attribute_map = {
6774        'name': {'key': 'name', 'type': 'str'},
6775        'display_name': {'key': 'displayName', 'type': 'str'},
6776        'internal_name': {'key': 'internalName', 'type': 'str'},
6777    }
6778
6779    def __init__(
6780        self,
6781        *,
6782        name: Optional[str] = None,
6783        display_name: Optional[str] = None,
6784        internal_name: Optional[str] = None,
6785        **kwargs
6786    ):
6787        super(Dimension, self).__init__(**kwargs)
6788        self.name = name
6789        self.display_name = display_name
6790        self.internal_name = internal_name
6791
6792
6793class DnsNameAvailabilityResult(msrest.serialization.Model):
6794    """Response for the CheckDnsNameAvailability API service call.
6795
6796    :param available: Domain availability (True/False).
6797    :type available: bool
6798    """
6799
6800    _attribute_map = {
6801        'available': {'key': 'available', 'type': 'bool'},
6802    }
6803
6804    def __init__(
6805        self,
6806        *,
6807        available: Optional[bool] = None,
6808        **kwargs
6809    ):
6810        super(DnsNameAvailabilityResult, self).__init__(**kwargs)
6811        self.available = available
6812
6813
6814class EffectiveNetworkSecurityGroup(msrest.serialization.Model):
6815    """Effective network security group.
6816
6817    :param network_security_group: The ID of network security group that is applied.
6818    :type network_security_group: ~azure.mgmt.network.v2019_12_01.models.SubResource
6819    :param association: Associated resources.
6820    :type association:
6821     ~azure.mgmt.network.v2019_12_01.models.EffectiveNetworkSecurityGroupAssociation
6822    :param effective_security_rules: A collection of effective security rules.
6823    :type effective_security_rules:
6824     list[~azure.mgmt.network.v2019_12_01.models.EffectiveNetworkSecurityRule]
6825    :param tag_map: Mapping of tags to list of IP Addresses included within the tag.
6826    :type tag_map: str
6827    """
6828
6829    _attribute_map = {
6830        'network_security_group': {'key': 'networkSecurityGroup', 'type': 'SubResource'},
6831        'association': {'key': 'association', 'type': 'EffectiveNetworkSecurityGroupAssociation'},
6832        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
6833        'tag_map': {'key': 'tagMap', 'type': 'str'},
6834    }
6835
6836    def __init__(
6837        self,
6838        *,
6839        network_security_group: Optional["SubResource"] = None,
6840        association: Optional["EffectiveNetworkSecurityGroupAssociation"] = None,
6841        effective_security_rules: Optional[List["EffectiveNetworkSecurityRule"]] = None,
6842        tag_map: Optional[str] = None,
6843        **kwargs
6844    ):
6845        super(EffectiveNetworkSecurityGroup, self).__init__(**kwargs)
6846        self.network_security_group = network_security_group
6847        self.association = association
6848        self.effective_security_rules = effective_security_rules
6849        self.tag_map = tag_map
6850
6851
6852class EffectiveNetworkSecurityGroupAssociation(msrest.serialization.Model):
6853    """The effective network security group association.
6854
6855    :param subnet: The ID of the subnet if assigned.
6856    :type subnet: ~azure.mgmt.network.v2019_12_01.models.SubResource
6857    :param network_interface: The ID of the network interface if assigned.
6858    :type network_interface: ~azure.mgmt.network.v2019_12_01.models.SubResource
6859    """
6860
6861    _attribute_map = {
6862        'subnet': {'key': 'subnet', 'type': 'SubResource'},
6863        'network_interface': {'key': 'networkInterface', 'type': 'SubResource'},
6864    }
6865
6866    def __init__(
6867        self,
6868        *,
6869        subnet: Optional["SubResource"] = None,
6870        network_interface: Optional["SubResource"] = None,
6871        **kwargs
6872    ):
6873        super(EffectiveNetworkSecurityGroupAssociation, self).__init__(**kwargs)
6874        self.subnet = subnet
6875        self.network_interface = network_interface
6876
6877
6878class EffectiveNetworkSecurityGroupListResult(msrest.serialization.Model):
6879    """Response for list effective network security groups API service call.
6880
6881    Variables are only populated by the server, and will be ignored when sending a request.
6882
6883    :param value: A list of effective network security groups.
6884    :type value: list[~azure.mgmt.network.v2019_12_01.models.EffectiveNetworkSecurityGroup]
6885    :ivar next_link: The URL to get the next set of results.
6886    :vartype next_link: str
6887    """
6888
6889    _validation = {
6890        'next_link': {'readonly': True},
6891    }
6892
6893    _attribute_map = {
6894        'value': {'key': 'value', 'type': '[EffectiveNetworkSecurityGroup]'},
6895        'next_link': {'key': 'nextLink', 'type': 'str'},
6896    }
6897
6898    def __init__(
6899        self,
6900        *,
6901        value: Optional[List["EffectiveNetworkSecurityGroup"]] = None,
6902        **kwargs
6903    ):
6904        super(EffectiveNetworkSecurityGroupListResult, self).__init__(**kwargs)
6905        self.value = value
6906        self.next_link = None
6907
6908
6909class EffectiveNetworkSecurityRule(msrest.serialization.Model):
6910    """Effective network security rules.
6911
6912    :param name: The name of the security rule specified by the user (if created by the user).
6913    :type name: str
6914    :param protocol: The network protocol this rule applies to. Possible values include: "Tcp",
6915     "Udp", "All".
6916    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.EffectiveSecurityRuleProtocol
6917    :param source_port_range: The source port or range.
6918    :type source_port_range: str
6919    :param destination_port_range: The destination port or range.
6920    :type destination_port_range: str
6921    :param source_port_ranges: The source port ranges. Expected values include a single integer
6922     between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
6923    :type source_port_ranges: list[str]
6924    :param destination_port_ranges: The destination port ranges. Expected values include a single
6925     integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
6926    :type destination_port_ranges: list[str]
6927    :param source_address_prefix: The source address prefix.
6928    :type source_address_prefix: str
6929    :param destination_address_prefix: The destination address prefix.
6930    :type destination_address_prefix: str
6931    :param source_address_prefixes: The source address prefixes. Expected values include CIDR IP
6932     ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the
6933     asterisk (*).
6934    :type source_address_prefixes: list[str]
6935    :param destination_address_prefixes: The destination address prefixes. Expected values include
6936     CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and
6937     the asterisk (*).
6938    :type destination_address_prefixes: list[str]
6939    :param expanded_source_address_prefix: The expanded source address prefix.
6940    :type expanded_source_address_prefix: list[str]
6941    :param expanded_destination_address_prefix: Expanded destination address prefix.
6942    :type expanded_destination_address_prefix: list[str]
6943    :param access: Whether network traffic is allowed or denied. Possible values include: "Allow",
6944     "Deny".
6945    :type access: str or ~azure.mgmt.network.v2019_12_01.models.SecurityRuleAccess
6946    :param priority: The priority of the rule.
6947    :type priority: int
6948    :param direction: The direction of the rule. Possible values include: "Inbound", "Outbound".
6949    :type direction: str or ~azure.mgmt.network.v2019_12_01.models.SecurityRuleDirection
6950    """
6951
6952    _attribute_map = {
6953        'name': {'key': 'name', 'type': 'str'},
6954        'protocol': {'key': 'protocol', 'type': 'str'},
6955        'source_port_range': {'key': 'sourcePortRange', 'type': 'str'},
6956        'destination_port_range': {'key': 'destinationPortRange', 'type': 'str'},
6957        'source_port_ranges': {'key': 'sourcePortRanges', 'type': '[str]'},
6958        'destination_port_ranges': {'key': 'destinationPortRanges', 'type': '[str]'},
6959        'source_address_prefix': {'key': 'sourceAddressPrefix', 'type': 'str'},
6960        'destination_address_prefix': {'key': 'destinationAddressPrefix', 'type': 'str'},
6961        'source_address_prefixes': {'key': 'sourceAddressPrefixes', 'type': '[str]'},
6962        'destination_address_prefixes': {'key': 'destinationAddressPrefixes', 'type': '[str]'},
6963        'expanded_source_address_prefix': {'key': 'expandedSourceAddressPrefix', 'type': '[str]'},
6964        'expanded_destination_address_prefix': {'key': 'expandedDestinationAddressPrefix', 'type': '[str]'},
6965        'access': {'key': 'access', 'type': 'str'},
6966        'priority': {'key': 'priority', 'type': 'int'},
6967        'direction': {'key': 'direction', 'type': 'str'},
6968    }
6969
6970    def __init__(
6971        self,
6972        *,
6973        name: Optional[str] = None,
6974        protocol: Optional[Union[str, "EffectiveSecurityRuleProtocol"]] = None,
6975        source_port_range: Optional[str] = None,
6976        destination_port_range: Optional[str] = None,
6977        source_port_ranges: Optional[List[str]] = None,
6978        destination_port_ranges: Optional[List[str]] = None,
6979        source_address_prefix: Optional[str] = None,
6980        destination_address_prefix: Optional[str] = None,
6981        source_address_prefixes: Optional[List[str]] = None,
6982        destination_address_prefixes: Optional[List[str]] = None,
6983        expanded_source_address_prefix: Optional[List[str]] = None,
6984        expanded_destination_address_prefix: Optional[List[str]] = None,
6985        access: Optional[Union[str, "SecurityRuleAccess"]] = None,
6986        priority: Optional[int] = None,
6987        direction: Optional[Union[str, "SecurityRuleDirection"]] = None,
6988        **kwargs
6989    ):
6990        super(EffectiveNetworkSecurityRule, self).__init__(**kwargs)
6991        self.name = name
6992        self.protocol = protocol
6993        self.source_port_range = source_port_range
6994        self.destination_port_range = destination_port_range
6995        self.source_port_ranges = source_port_ranges
6996        self.destination_port_ranges = destination_port_ranges
6997        self.source_address_prefix = source_address_prefix
6998        self.destination_address_prefix = destination_address_prefix
6999        self.source_address_prefixes = source_address_prefixes
7000        self.destination_address_prefixes = destination_address_prefixes
7001        self.expanded_source_address_prefix = expanded_source_address_prefix
7002        self.expanded_destination_address_prefix = expanded_destination_address_prefix
7003        self.access = access
7004        self.priority = priority
7005        self.direction = direction
7006
7007
7008class EffectiveRoute(msrest.serialization.Model):
7009    """Effective Route.
7010
7011    :param name: The name of the user defined route. This is optional.
7012    :type name: str
7013    :param disable_bgp_route_propagation: If true, on-premises routes are not propagated to the
7014     network interfaces in the subnet.
7015    :type disable_bgp_route_propagation: bool
7016    :param source: Who created the route. Possible values include: "Unknown", "User",
7017     "VirtualNetworkGateway", "Default".
7018    :type source: str or ~azure.mgmt.network.v2019_12_01.models.EffectiveRouteSource
7019    :param state: The value of effective route. Possible values include: "Active", "Invalid".
7020    :type state: str or ~azure.mgmt.network.v2019_12_01.models.EffectiveRouteState
7021    :param address_prefix: The address prefixes of the effective routes in CIDR notation.
7022    :type address_prefix: list[str]
7023    :param next_hop_ip_address: The IP address of the next hop of the effective route.
7024    :type next_hop_ip_address: list[str]
7025    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values
7026     include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
7027    :type next_hop_type: str or ~azure.mgmt.network.v2019_12_01.models.RouteNextHopType
7028    """
7029
7030    _attribute_map = {
7031        'name': {'key': 'name', 'type': 'str'},
7032        'disable_bgp_route_propagation': {'key': 'disableBgpRoutePropagation', 'type': 'bool'},
7033        'source': {'key': 'source', 'type': 'str'},
7034        'state': {'key': 'state', 'type': 'str'},
7035        'address_prefix': {'key': 'addressPrefix', 'type': '[str]'},
7036        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': '[str]'},
7037        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
7038    }
7039
7040    def __init__(
7041        self,
7042        *,
7043        name: Optional[str] = None,
7044        disable_bgp_route_propagation: Optional[bool] = None,
7045        source: Optional[Union[str, "EffectiveRouteSource"]] = None,
7046        state: Optional[Union[str, "EffectiveRouteState"]] = None,
7047        address_prefix: Optional[List[str]] = None,
7048        next_hop_ip_address: Optional[List[str]] = None,
7049        next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None,
7050        **kwargs
7051    ):
7052        super(EffectiveRoute, self).__init__(**kwargs)
7053        self.name = name
7054        self.disable_bgp_route_propagation = disable_bgp_route_propagation
7055        self.source = source
7056        self.state = state
7057        self.address_prefix = address_prefix
7058        self.next_hop_ip_address = next_hop_ip_address
7059        self.next_hop_type = next_hop_type
7060
7061
7062class EffectiveRouteListResult(msrest.serialization.Model):
7063    """Response for list effective route API service call.
7064
7065    Variables are only populated by the server, and will be ignored when sending a request.
7066
7067    :param value: A list of effective routes.
7068    :type value: list[~azure.mgmt.network.v2019_12_01.models.EffectiveRoute]
7069    :ivar next_link: The URL to get the next set of results.
7070    :vartype next_link: str
7071    """
7072
7073    _validation = {
7074        'next_link': {'readonly': True},
7075    }
7076
7077    _attribute_map = {
7078        'value': {'key': 'value', 'type': '[EffectiveRoute]'},
7079        'next_link': {'key': 'nextLink', 'type': 'str'},
7080    }
7081
7082    def __init__(
7083        self,
7084        *,
7085        value: Optional[List["EffectiveRoute"]] = None,
7086        **kwargs
7087    ):
7088        super(EffectiveRouteListResult, self).__init__(**kwargs)
7089        self.value = value
7090        self.next_link = None
7091
7092
7093class EndpointServiceResult(SubResource):
7094    """Endpoint service.
7095
7096    Variables are only populated by the server, and will be ignored when sending a request.
7097
7098    :param id: Resource ID.
7099    :type id: str
7100    :ivar name: Name of the endpoint service.
7101    :vartype name: str
7102    :ivar type: Type of the endpoint service.
7103    :vartype type: str
7104    """
7105
7106    _validation = {
7107        'name': {'readonly': True},
7108        'type': {'readonly': True},
7109    }
7110
7111    _attribute_map = {
7112        'id': {'key': 'id', 'type': 'str'},
7113        'name': {'key': 'name', 'type': 'str'},
7114        'type': {'key': 'type', 'type': 'str'},
7115    }
7116
7117    def __init__(
7118        self,
7119        *,
7120        id: Optional[str] = None,
7121        **kwargs
7122    ):
7123        super(EndpointServiceResult, self).__init__(id=id, **kwargs)
7124        self.name = None
7125        self.type = None
7126
7127
7128class EndpointServicesListResult(msrest.serialization.Model):
7129    """Response for the ListAvailableEndpointServices API service call.
7130
7131    :param value: List of available endpoint services in a region.
7132    :type value: list[~azure.mgmt.network.v2019_12_01.models.EndpointServiceResult]
7133    :param next_link: The URL to get the next set of results.
7134    :type next_link: str
7135    """
7136
7137    _attribute_map = {
7138        'value': {'key': 'value', 'type': '[EndpointServiceResult]'},
7139        'next_link': {'key': 'nextLink', 'type': 'str'},
7140    }
7141
7142    def __init__(
7143        self,
7144        *,
7145        value: Optional[List["EndpointServiceResult"]] = None,
7146        next_link: Optional[str] = None,
7147        **kwargs
7148    ):
7149        super(EndpointServicesListResult, self).__init__(**kwargs)
7150        self.value = value
7151        self.next_link = next_link
7152
7153
7154class Error(msrest.serialization.Model):
7155    """Common error representation.
7156
7157    :param code: Error code.
7158    :type code: str
7159    :param message: Error message.
7160    :type message: str
7161    :param target: Error target.
7162    :type target: str
7163    :param details: Error details.
7164    :type details: list[~azure.mgmt.network.v2019_12_01.models.ErrorDetails]
7165    :param inner_error: Inner error message.
7166    :type inner_error: str
7167    """
7168
7169    _attribute_map = {
7170        'code': {'key': 'code', 'type': 'str'},
7171        'message': {'key': 'message', 'type': 'str'},
7172        'target': {'key': 'target', 'type': 'str'},
7173        'details': {'key': 'details', 'type': '[ErrorDetails]'},
7174        'inner_error': {'key': 'innerError', 'type': 'str'},
7175    }
7176
7177    def __init__(
7178        self,
7179        *,
7180        code: Optional[str] = None,
7181        message: Optional[str] = None,
7182        target: Optional[str] = None,
7183        details: Optional[List["ErrorDetails"]] = None,
7184        inner_error: Optional[str] = None,
7185        **kwargs
7186    ):
7187        super(Error, self).__init__(**kwargs)
7188        self.code = code
7189        self.message = message
7190        self.target = target
7191        self.details = details
7192        self.inner_error = inner_error
7193
7194
7195class ErrorDetails(msrest.serialization.Model):
7196    """Common error details representation.
7197
7198    :param code: Error code.
7199    :type code: str
7200    :param target: Error target.
7201    :type target: str
7202    :param message: Error message.
7203    :type message: str
7204    """
7205
7206    _attribute_map = {
7207        'code': {'key': 'code', 'type': 'str'},
7208        'target': {'key': 'target', 'type': 'str'},
7209        'message': {'key': 'message', 'type': 'str'},
7210    }
7211
7212    def __init__(
7213        self,
7214        *,
7215        code: Optional[str] = None,
7216        target: Optional[str] = None,
7217        message: Optional[str] = None,
7218        **kwargs
7219    ):
7220        super(ErrorDetails, self).__init__(**kwargs)
7221        self.code = code
7222        self.target = target
7223        self.message = message
7224
7225
7226class ErrorResponse(msrest.serialization.Model):
7227    """The error object.
7228
7229    :param error: The error details object.
7230    :type error: ~azure.mgmt.network.v2019_12_01.models.ErrorDetails
7231    """
7232
7233    _attribute_map = {
7234        'error': {'key': 'error', 'type': 'ErrorDetails'},
7235    }
7236
7237    def __init__(
7238        self,
7239        *,
7240        error: Optional["ErrorDetails"] = None,
7241        **kwargs
7242    ):
7243        super(ErrorResponse, self).__init__(**kwargs)
7244        self.error = error
7245
7246
7247class EvaluatedNetworkSecurityGroup(msrest.serialization.Model):
7248    """Results of network security group evaluation.
7249
7250    Variables are only populated by the server, and will be ignored when sending a request.
7251
7252    :param network_security_group_id: Network security group ID.
7253    :type network_security_group_id: str
7254    :param applied_to: Resource ID of nic or subnet to which network security group is applied.
7255    :type applied_to: str
7256    :param matched_rule: Matched network security rule.
7257    :type matched_rule: ~azure.mgmt.network.v2019_12_01.models.MatchedRule
7258    :ivar rules_evaluation_result: List of network security rules evaluation results.
7259    :vartype rules_evaluation_result:
7260     list[~azure.mgmt.network.v2019_12_01.models.NetworkSecurityRulesEvaluationResult]
7261    """
7262
7263    _validation = {
7264        'rules_evaluation_result': {'readonly': True},
7265    }
7266
7267    _attribute_map = {
7268        'network_security_group_id': {'key': 'networkSecurityGroupId', 'type': 'str'},
7269        'applied_to': {'key': 'appliedTo', 'type': 'str'},
7270        'matched_rule': {'key': 'matchedRule', 'type': 'MatchedRule'},
7271        'rules_evaluation_result': {'key': 'rulesEvaluationResult', 'type': '[NetworkSecurityRulesEvaluationResult]'},
7272    }
7273
7274    def __init__(
7275        self,
7276        *,
7277        network_security_group_id: Optional[str] = None,
7278        applied_to: Optional[str] = None,
7279        matched_rule: Optional["MatchedRule"] = None,
7280        **kwargs
7281    ):
7282        super(EvaluatedNetworkSecurityGroup, self).__init__(**kwargs)
7283        self.network_security_group_id = network_security_group_id
7284        self.applied_to = applied_to
7285        self.matched_rule = matched_rule
7286        self.rules_evaluation_result = None
7287
7288
7289class ExpressRouteCircuit(Resource):
7290    """ExpressRouteCircuit resource.
7291
7292    Variables are only populated by the server, and will be ignored when sending a request.
7293
7294    :param id: Resource ID.
7295    :type id: str
7296    :ivar name: Resource name.
7297    :vartype name: str
7298    :ivar type: Resource type.
7299    :vartype type: str
7300    :param location: Resource location.
7301    :type location: str
7302    :param tags: A set of tags. Resource tags.
7303    :type tags: dict[str, str]
7304    :param sku: The SKU.
7305    :type sku: ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitSku
7306    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7307    :vartype etag: str
7308    :param allow_classic_operations: Allow classic operations.
7309    :type allow_classic_operations: bool
7310    :param circuit_provisioning_state: The CircuitProvisioningState state of the resource.
7311    :type circuit_provisioning_state: str
7312    :param service_provider_provisioning_state: The ServiceProviderProvisioningState state of the
7313     resource. Possible values include: "NotProvisioned", "Provisioning", "Provisioned",
7314     "Deprovisioning".
7315    :type service_provider_provisioning_state: str or
7316     ~azure.mgmt.network.v2019_12_01.models.ServiceProviderProvisioningState
7317    :param authorizations: The list of authorizations.
7318    :type authorizations:
7319     list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitAuthorization]
7320    :param peerings: The list of peerings.
7321    :type peerings: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeering]
7322    :param service_key: The ServiceKey.
7323    :type service_key: str
7324    :param service_provider_notes: The ServiceProviderNotes.
7325    :type service_provider_notes: str
7326    :param service_provider_properties: The ServiceProviderProperties.
7327    :type service_provider_properties:
7328     ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitServiceProviderProperties
7329    :param express_route_port: The reference to the ExpressRoutePort resource when the circuit is
7330     provisioned on an ExpressRoutePort resource.
7331    :type express_route_port: ~azure.mgmt.network.v2019_12_01.models.SubResource
7332    :param bandwidth_in_gbps: The bandwidth of the circuit when the circuit is provisioned on an
7333     ExpressRoutePort resource.
7334    :type bandwidth_in_gbps: float
7335    :ivar stag: The identifier of the circuit traffic. Outer tag for QinQ encapsulation.
7336    :vartype stag: int
7337    :ivar provisioning_state: The provisioning state of the express route circuit resource.
7338     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
7339    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
7340    :param gateway_manager_etag: The GatewayManager Etag.
7341    :type gateway_manager_etag: str
7342    :param global_reach_enabled: Flag denoting global reach status.
7343    :type global_reach_enabled: bool
7344    """
7345
7346    _validation = {
7347        'name': {'readonly': True},
7348        'type': {'readonly': True},
7349        'etag': {'readonly': True},
7350        'stag': {'readonly': True},
7351        'provisioning_state': {'readonly': True},
7352    }
7353
7354    _attribute_map = {
7355        'id': {'key': 'id', 'type': 'str'},
7356        'name': {'key': 'name', 'type': 'str'},
7357        'type': {'key': 'type', 'type': 'str'},
7358        'location': {'key': 'location', 'type': 'str'},
7359        'tags': {'key': 'tags', 'type': '{str}'},
7360        'sku': {'key': 'sku', 'type': 'ExpressRouteCircuitSku'},
7361        'etag': {'key': 'etag', 'type': 'str'},
7362        'allow_classic_operations': {'key': 'properties.allowClassicOperations', 'type': 'bool'},
7363        'circuit_provisioning_state': {'key': 'properties.circuitProvisioningState', 'type': 'str'},
7364        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
7365        'authorizations': {'key': 'properties.authorizations', 'type': '[ExpressRouteCircuitAuthorization]'},
7366        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
7367        'service_key': {'key': 'properties.serviceKey', 'type': 'str'},
7368        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
7369        'service_provider_properties': {'key': 'properties.serviceProviderProperties', 'type': 'ExpressRouteCircuitServiceProviderProperties'},
7370        'express_route_port': {'key': 'properties.expressRoutePort', 'type': 'SubResource'},
7371        'bandwidth_in_gbps': {'key': 'properties.bandwidthInGbps', 'type': 'float'},
7372        'stag': {'key': 'properties.stag', 'type': 'int'},
7373        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7374        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
7375        'global_reach_enabled': {'key': 'properties.globalReachEnabled', 'type': 'bool'},
7376    }
7377
7378    def __init__(
7379        self,
7380        *,
7381        id: Optional[str] = None,
7382        location: Optional[str] = None,
7383        tags: Optional[Dict[str, str]] = None,
7384        sku: Optional["ExpressRouteCircuitSku"] = None,
7385        allow_classic_operations: Optional[bool] = None,
7386        circuit_provisioning_state: Optional[str] = None,
7387        service_provider_provisioning_state: Optional[Union[str, "ServiceProviderProvisioningState"]] = None,
7388        authorizations: Optional[List["ExpressRouteCircuitAuthorization"]] = None,
7389        peerings: Optional[List["ExpressRouteCircuitPeering"]] = None,
7390        service_key: Optional[str] = None,
7391        service_provider_notes: Optional[str] = None,
7392        service_provider_properties: Optional["ExpressRouteCircuitServiceProviderProperties"] = None,
7393        express_route_port: Optional["SubResource"] = None,
7394        bandwidth_in_gbps: Optional[float] = None,
7395        gateway_manager_etag: Optional[str] = None,
7396        global_reach_enabled: Optional[bool] = None,
7397        **kwargs
7398    ):
7399        super(ExpressRouteCircuit, self).__init__(id=id, location=location, tags=tags, **kwargs)
7400        self.sku = sku
7401        self.etag = None
7402        self.allow_classic_operations = allow_classic_operations
7403        self.circuit_provisioning_state = circuit_provisioning_state
7404        self.service_provider_provisioning_state = service_provider_provisioning_state
7405        self.authorizations = authorizations
7406        self.peerings = peerings
7407        self.service_key = service_key
7408        self.service_provider_notes = service_provider_notes
7409        self.service_provider_properties = service_provider_properties
7410        self.express_route_port = express_route_port
7411        self.bandwidth_in_gbps = bandwidth_in_gbps
7412        self.stag = None
7413        self.provisioning_state = None
7414        self.gateway_manager_etag = gateway_manager_etag
7415        self.global_reach_enabled = global_reach_enabled
7416
7417
7418class ExpressRouteCircuitArpTable(msrest.serialization.Model):
7419    """The ARP table associated with the ExpressRouteCircuit.
7420
7421    :param age: Entry age in minutes.
7422    :type age: int
7423    :param interface: Interface address.
7424    :type interface: str
7425    :param ip_address: The IP address.
7426    :type ip_address: str
7427    :param mac_address: The MAC address.
7428    :type mac_address: str
7429    """
7430
7431    _attribute_map = {
7432        'age': {'key': 'age', 'type': 'int'},
7433        'interface': {'key': 'interface', 'type': 'str'},
7434        'ip_address': {'key': 'ipAddress', 'type': 'str'},
7435        'mac_address': {'key': 'macAddress', 'type': 'str'},
7436    }
7437
7438    def __init__(
7439        self,
7440        *,
7441        age: Optional[int] = None,
7442        interface: Optional[str] = None,
7443        ip_address: Optional[str] = None,
7444        mac_address: Optional[str] = None,
7445        **kwargs
7446    ):
7447        super(ExpressRouteCircuitArpTable, self).__init__(**kwargs)
7448        self.age = age
7449        self.interface = interface
7450        self.ip_address = ip_address
7451        self.mac_address = mac_address
7452
7453
7454class ExpressRouteCircuitAuthorization(SubResource):
7455    """Authorization in an ExpressRouteCircuit resource.
7456
7457    Variables are only populated by the server, and will be ignored when sending a request.
7458
7459    :param id: Resource ID.
7460    :type id: str
7461    :param name: The name of the resource that is unique within a resource group. This name can be
7462     used to access the resource.
7463    :type name: str
7464    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7465    :vartype etag: str
7466    :ivar type: Type of the resource.
7467    :vartype type: str
7468    :param authorization_key: The authorization key.
7469    :type authorization_key: str
7470    :param authorization_use_status: The authorization use status. Possible values include:
7471     "Available", "InUse".
7472    :type authorization_use_status: str or
7473     ~azure.mgmt.network.v2019_12_01.models.AuthorizationUseStatus
7474    :ivar provisioning_state: The provisioning state of the authorization resource. Possible values
7475     include: "Succeeded", "Updating", "Deleting", "Failed".
7476    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
7477    """
7478
7479    _validation = {
7480        'etag': {'readonly': True},
7481        'type': {'readonly': True},
7482        'provisioning_state': {'readonly': True},
7483    }
7484
7485    _attribute_map = {
7486        'id': {'key': 'id', 'type': 'str'},
7487        'name': {'key': 'name', 'type': 'str'},
7488        'etag': {'key': 'etag', 'type': 'str'},
7489        'type': {'key': 'type', 'type': 'str'},
7490        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
7491        'authorization_use_status': {'key': 'properties.authorizationUseStatus', 'type': 'str'},
7492        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7493    }
7494
7495    def __init__(
7496        self,
7497        *,
7498        id: Optional[str] = None,
7499        name: Optional[str] = None,
7500        authorization_key: Optional[str] = None,
7501        authorization_use_status: Optional[Union[str, "AuthorizationUseStatus"]] = None,
7502        **kwargs
7503    ):
7504        super(ExpressRouteCircuitAuthorization, self).__init__(id=id, **kwargs)
7505        self.name = name
7506        self.etag = None
7507        self.type = None
7508        self.authorization_key = authorization_key
7509        self.authorization_use_status = authorization_use_status
7510        self.provisioning_state = None
7511
7512
7513class ExpressRouteCircuitConnection(SubResource):
7514    """Express Route Circuit Connection in an ExpressRouteCircuitPeering resource.
7515
7516    Variables are only populated by the server, and will be ignored when sending a request.
7517
7518    :param id: Resource ID.
7519    :type id: str
7520    :param name: The name of the resource that is unique within a resource group. This name can be
7521     used to access the resource.
7522    :type name: str
7523    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7524    :vartype etag: str
7525    :ivar type: Type of the resource.
7526    :vartype type: str
7527    :param express_route_circuit_peering: Reference to Express Route Circuit Private Peering
7528     Resource of the circuit initiating connection.
7529    :type express_route_circuit_peering: ~azure.mgmt.network.v2019_12_01.models.SubResource
7530    :param peer_express_route_circuit_peering: Reference to Express Route Circuit Private Peering
7531     Resource of the peered circuit.
7532    :type peer_express_route_circuit_peering: ~azure.mgmt.network.v2019_12_01.models.SubResource
7533    :param address_prefix: /29 IP address space to carve out Customer addresses for tunnels.
7534    :type address_prefix: str
7535    :param authorization_key: The authorization key.
7536    :type authorization_key: str
7537    :param ipv6_circuit_connection_config: IPv6 Address PrefixProperties of the express route
7538     circuit connection.
7539    :type ipv6_circuit_connection_config:
7540     ~azure.mgmt.network.v2019_12_01.models.Ipv6CircuitConnectionConfig
7541    :ivar circuit_connection_status: Express Route Circuit connection state. Possible values
7542     include: "Connected", "Connecting", "Disconnected".
7543    :vartype circuit_connection_status: str or
7544     ~azure.mgmt.network.v2019_12_01.models.CircuitConnectionStatus
7545    :ivar provisioning_state: The provisioning state of the express route circuit connection
7546     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
7547    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
7548    """
7549
7550    _validation = {
7551        'etag': {'readonly': True},
7552        'type': {'readonly': True},
7553        'circuit_connection_status': {'readonly': True},
7554        'provisioning_state': {'readonly': True},
7555    }
7556
7557    _attribute_map = {
7558        'id': {'key': 'id', 'type': 'str'},
7559        'name': {'key': 'name', 'type': 'str'},
7560        'etag': {'key': 'etag', 'type': 'str'},
7561        'type': {'key': 'type', 'type': 'str'},
7562        'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'SubResource'},
7563        'peer_express_route_circuit_peering': {'key': 'properties.peerExpressRouteCircuitPeering', 'type': 'SubResource'},
7564        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
7565        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
7566        'ipv6_circuit_connection_config': {'key': 'properties.ipv6CircuitConnectionConfig', 'type': 'Ipv6CircuitConnectionConfig'},
7567        'circuit_connection_status': {'key': 'properties.circuitConnectionStatus', 'type': 'str'},
7568        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7569    }
7570
7571    def __init__(
7572        self,
7573        *,
7574        id: Optional[str] = None,
7575        name: Optional[str] = None,
7576        express_route_circuit_peering: Optional["SubResource"] = None,
7577        peer_express_route_circuit_peering: Optional["SubResource"] = None,
7578        address_prefix: Optional[str] = None,
7579        authorization_key: Optional[str] = None,
7580        ipv6_circuit_connection_config: Optional["Ipv6CircuitConnectionConfig"] = None,
7581        **kwargs
7582    ):
7583        super(ExpressRouteCircuitConnection, self).__init__(id=id, **kwargs)
7584        self.name = name
7585        self.etag = None
7586        self.type = None
7587        self.express_route_circuit_peering = express_route_circuit_peering
7588        self.peer_express_route_circuit_peering = peer_express_route_circuit_peering
7589        self.address_prefix = address_prefix
7590        self.authorization_key = authorization_key
7591        self.ipv6_circuit_connection_config = ipv6_circuit_connection_config
7592        self.circuit_connection_status = None
7593        self.provisioning_state = None
7594
7595
7596class ExpressRouteCircuitConnectionListResult(msrest.serialization.Model):
7597    """Response for ListConnections API service call retrieves all global reach connections that belongs to a Private Peering for an ExpressRouteCircuit.
7598
7599    :param value: The global reach connection associated with Private Peering in an ExpressRoute
7600     Circuit.
7601    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitConnection]
7602    :param next_link: The URL to get the next set of results.
7603    :type next_link: str
7604    """
7605
7606    _attribute_map = {
7607        'value': {'key': 'value', 'type': '[ExpressRouteCircuitConnection]'},
7608        'next_link': {'key': 'nextLink', 'type': 'str'},
7609    }
7610
7611    def __init__(
7612        self,
7613        *,
7614        value: Optional[List["ExpressRouteCircuitConnection"]] = None,
7615        next_link: Optional[str] = None,
7616        **kwargs
7617    ):
7618        super(ExpressRouteCircuitConnectionListResult, self).__init__(**kwargs)
7619        self.value = value
7620        self.next_link = next_link
7621
7622
7623class ExpressRouteCircuitListResult(msrest.serialization.Model):
7624    """Response for ListExpressRouteCircuit API service call.
7625
7626    :param value: A list of ExpressRouteCircuits in a resource group.
7627    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuit]
7628    :param next_link: The URL to get the next set of results.
7629    :type next_link: str
7630    """
7631
7632    _attribute_map = {
7633        'value': {'key': 'value', 'type': '[ExpressRouteCircuit]'},
7634        'next_link': {'key': 'nextLink', 'type': 'str'},
7635    }
7636
7637    def __init__(
7638        self,
7639        *,
7640        value: Optional[List["ExpressRouteCircuit"]] = None,
7641        next_link: Optional[str] = None,
7642        **kwargs
7643    ):
7644        super(ExpressRouteCircuitListResult, self).__init__(**kwargs)
7645        self.value = value
7646        self.next_link = next_link
7647
7648
7649class ExpressRouteCircuitPeering(SubResource):
7650    """Peering in an ExpressRouteCircuit resource.
7651
7652    Variables are only populated by the server, and will be ignored when sending a request.
7653
7654    :param id: Resource ID.
7655    :type id: str
7656    :param name: The name of the resource that is unique within a resource group. This name can be
7657     used to access the resource.
7658    :type name: str
7659    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7660    :vartype etag: str
7661    :ivar type: Type of the resource.
7662    :vartype type: str
7663    :param peering_type: The peering type. Possible values include: "AzurePublicPeering",
7664     "AzurePrivatePeering", "MicrosoftPeering".
7665    :type peering_type: str or ~azure.mgmt.network.v2019_12_01.models.ExpressRoutePeeringType
7666    :param state: The peering state. Possible values include: "Disabled", "Enabled".
7667    :type state: str or ~azure.mgmt.network.v2019_12_01.models.ExpressRoutePeeringState
7668    :param azure_asn: The Azure ASN.
7669    :type azure_asn: int
7670    :param peer_asn: The peer ASN.
7671    :type peer_asn: long
7672    :param primary_peer_address_prefix: The primary address prefix.
7673    :type primary_peer_address_prefix: str
7674    :param secondary_peer_address_prefix: The secondary address prefix.
7675    :type secondary_peer_address_prefix: str
7676    :param primary_azure_port: The primary port.
7677    :type primary_azure_port: str
7678    :param secondary_azure_port: The secondary port.
7679    :type secondary_azure_port: str
7680    :param shared_key: The shared key.
7681    :type shared_key: str
7682    :param vlan_id: The VLAN ID.
7683    :type vlan_id: int
7684    :param microsoft_peering_config: The Microsoft peering configuration.
7685    :type microsoft_peering_config:
7686     ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeeringConfig
7687    :param stats: The peering stats of express route circuit.
7688    :type stats: ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitStats
7689    :ivar provisioning_state: The provisioning state of the express route circuit peering resource.
7690     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
7691    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
7692    :param gateway_manager_etag: The GatewayManager Etag.
7693    :type gateway_manager_etag: str
7694    :ivar last_modified_by: Who was the last to modify the peering.
7695    :vartype last_modified_by: str
7696    :param route_filter: The reference to the RouteFilter resource.
7697    :type route_filter: ~azure.mgmt.network.v2019_12_01.models.SubResource
7698    :param ipv6_peering_config: The IPv6 peering configuration.
7699    :type ipv6_peering_config:
7700     ~azure.mgmt.network.v2019_12_01.models.Ipv6ExpressRouteCircuitPeeringConfig
7701    :param express_route_connection: The ExpressRoute connection.
7702    :type express_route_connection: ~azure.mgmt.network.v2019_12_01.models.ExpressRouteConnectionId
7703    :param connections: The list of circuit connections associated with Azure Private Peering for
7704     this circuit.
7705    :type connections: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitConnection]
7706    :ivar peered_connections: The list of peered circuit connections associated with Azure Private
7707     Peering for this circuit.
7708    :vartype peered_connections:
7709     list[~azure.mgmt.network.v2019_12_01.models.PeerExpressRouteCircuitConnection]
7710    """
7711
7712    _validation = {
7713        'etag': {'readonly': True},
7714        'type': {'readonly': True},
7715        'peer_asn': {'maximum': 4294967295, 'minimum': 1},
7716        'provisioning_state': {'readonly': True},
7717        'last_modified_by': {'readonly': True},
7718        'peered_connections': {'readonly': True},
7719    }
7720
7721    _attribute_map = {
7722        'id': {'key': 'id', 'type': 'str'},
7723        'name': {'key': 'name', 'type': 'str'},
7724        'etag': {'key': 'etag', 'type': 'str'},
7725        'type': {'key': 'type', 'type': 'str'},
7726        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
7727        'state': {'key': 'properties.state', 'type': 'str'},
7728        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
7729        'peer_asn': {'key': 'properties.peerASN', 'type': 'long'},
7730        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
7731        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
7732        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
7733        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
7734        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
7735        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
7736        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
7737        'stats': {'key': 'properties.stats', 'type': 'ExpressRouteCircuitStats'},
7738        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7739        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
7740        'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'},
7741        'route_filter': {'key': 'properties.routeFilter', 'type': 'SubResource'},
7742        'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'},
7743        'express_route_connection': {'key': 'properties.expressRouteConnection', 'type': 'ExpressRouteConnectionId'},
7744        'connections': {'key': 'properties.connections', 'type': '[ExpressRouteCircuitConnection]'},
7745        'peered_connections': {'key': 'properties.peeredConnections', 'type': '[PeerExpressRouteCircuitConnection]'},
7746    }
7747
7748    def __init__(
7749        self,
7750        *,
7751        id: Optional[str] = None,
7752        name: Optional[str] = None,
7753        peering_type: Optional[Union[str, "ExpressRoutePeeringType"]] = None,
7754        state: Optional[Union[str, "ExpressRoutePeeringState"]] = None,
7755        azure_asn: Optional[int] = None,
7756        peer_asn: Optional[int] = None,
7757        primary_peer_address_prefix: Optional[str] = None,
7758        secondary_peer_address_prefix: Optional[str] = None,
7759        primary_azure_port: Optional[str] = None,
7760        secondary_azure_port: Optional[str] = None,
7761        shared_key: Optional[str] = None,
7762        vlan_id: Optional[int] = None,
7763        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
7764        stats: Optional["ExpressRouteCircuitStats"] = None,
7765        gateway_manager_etag: Optional[str] = None,
7766        route_filter: Optional["SubResource"] = None,
7767        ipv6_peering_config: Optional["Ipv6ExpressRouteCircuitPeeringConfig"] = None,
7768        express_route_connection: Optional["ExpressRouteConnectionId"] = None,
7769        connections: Optional[List["ExpressRouteCircuitConnection"]] = None,
7770        **kwargs
7771    ):
7772        super(ExpressRouteCircuitPeering, self).__init__(id=id, **kwargs)
7773        self.name = name
7774        self.etag = None
7775        self.type = None
7776        self.peering_type = peering_type
7777        self.state = state
7778        self.azure_asn = azure_asn
7779        self.peer_asn = peer_asn
7780        self.primary_peer_address_prefix = primary_peer_address_prefix
7781        self.secondary_peer_address_prefix = secondary_peer_address_prefix
7782        self.primary_azure_port = primary_azure_port
7783        self.secondary_azure_port = secondary_azure_port
7784        self.shared_key = shared_key
7785        self.vlan_id = vlan_id
7786        self.microsoft_peering_config = microsoft_peering_config
7787        self.stats = stats
7788        self.provisioning_state = None
7789        self.gateway_manager_etag = gateway_manager_etag
7790        self.last_modified_by = None
7791        self.route_filter = route_filter
7792        self.ipv6_peering_config = ipv6_peering_config
7793        self.express_route_connection = express_route_connection
7794        self.connections = connections
7795        self.peered_connections = None
7796
7797
7798class ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
7799    """Specifies the peering configuration.
7800
7801    Variables are only populated by the server, and will be ignored when sending a request.
7802
7803    :param advertised_public_prefixes: The reference to AdvertisedPublicPrefixes.
7804    :type advertised_public_prefixes: list[str]
7805    :param advertised_communities: The communities of bgp peering. Specified for microsoft peering.
7806    :type advertised_communities: list[str]
7807    :ivar advertised_public_prefixes_state: The advertised public prefix state of the Peering
7808     resource. Possible values include: "NotConfigured", "Configuring", "Configured",
7809     "ValidationNeeded".
7810    :vartype advertised_public_prefixes_state: str or
7811     ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeeringAdvertisedPublicPrefixState
7812    :param legacy_mode: The legacy mode of the peering.
7813    :type legacy_mode: int
7814    :param customer_asn: The CustomerASN of the peering.
7815    :type customer_asn: int
7816    :param routing_registry_name: The RoutingRegistryName of the configuration.
7817    :type routing_registry_name: str
7818    """
7819
7820    _validation = {
7821        'advertised_public_prefixes_state': {'readonly': True},
7822    }
7823
7824    _attribute_map = {
7825        'advertised_public_prefixes': {'key': 'advertisedPublicPrefixes', 'type': '[str]'},
7826        'advertised_communities': {'key': 'advertisedCommunities', 'type': '[str]'},
7827        'advertised_public_prefixes_state': {'key': 'advertisedPublicPrefixesState', 'type': 'str'},
7828        'legacy_mode': {'key': 'legacyMode', 'type': 'int'},
7829        'customer_asn': {'key': 'customerASN', 'type': 'int'},
7830        'routing_registry_name': {'key': 'routingRegistryName', 'type': 'str'},
7831    }
7832
7833    def __init__(
7834        self,
7835        *,
7836        advertised_public_prefixes: Optional[List[str]] = None,
7837        advertised_communities: Optional[List[str]] = None,
7838        legacy_mode: Optional[int] = None,
7839        customer_asn: Optional[int] = None,
7840        routing_registry_name: Optional[str] = None,
7841        **kwargs
7842    ):
7843        super(ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
7844        self.advertised_public_prefixes = advertised_public_prefixes
7845        self.advertised_communities = advertised_communities
7846        self.advertised_public_prefixes_state = None
7847        self.legacy_mode = legacy_mode
7848        self.customer_asn = customer_asn
7849        self.routing_registry_name = routing_registry_name
7850
7851
7852class ExpressRouteCircuitPeeringId(msrest.serialization.Model):
7853    """ExpressRoute circuit peering identifier.
7854
7855    :param id: The ID of the ExpressRoute circuit peering.
7856    :type id: str
7857    """
7858
7859    _attribute_map = {
7860        'id': {'key': 'id', 'type': 'str'},
7861    }
7862
7863    def __init__(
7864        self,
7865        *,
7866        id: Optional[str] = None,
7867        **kwargs
7868    ):
7869        super(ExpressRouteCircuitPeeringId, self).__init__(**kwargs)
7870        self.id = id
7871
7872
7873class ExpressRouteCircuitPeeringListResult(msrest.serialization.Model):
7874    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCircuit.
7875
7876    :param value: The peerings in an express route circuit.
7877    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeering]
7878    :param next_link: The URL to get the next set of results.
7879    :type next_link: str
7880    """
7881
7882    _attribute_map = {
7883        'value': {'key': 'value', 'type': '[ExpressRouteCircuitPeering]'},
7884        'next_link': {'key': 'nextLink', 'type': 'str'},
7885    }
7886
7887    def __init__(
7888        self,
7889        *,
7890        value: Optional[List["ExpressRouteCircuitPeering"]] = None,
7891        next_link: Optional[str] = None,
7892        **kwargs
7893    ):
7894        super(ExpressRouteCircuitPeeringListResult, self).__init__(**kwargs)
7895        self.value = value
7896        self.next_link = next_link
7897
7898
7899class ExpressRouteCircuitReference(msrest.serialization.Model):
7900    """Reference to an express route circuit.
7901
7902    :param id: Corresponding Express Route Circuit Id.
7903    :type id: str
7904    """
7905
7906    _attribute_map = {
7907        'id': {'key': 'id', 'type': 'str'},
7908    }
7909
7910    def __init__(
7911        self,
7912        *,
7913        id: Optional[str] = None,
7914        **kwargs
7915    ):
7916        super(ExpressRouteCircuitReference, self).__init__(**kwargs)
7917        self.id = id
7918
7919
7920class ExpressRouteCircuitRoutesTable(msrest.serialization.Model):
7921    """The routes table associated with the ExpressRouteCircuit.
7922
7923    :param network: IP address of a network entity.
7924    :type network: str
7925    :param next_hop: NextHop address.
7926    :type next_hop: str
7927    :param loc_prf: Local preference value as set with the set local-preference route-map
7928     configuration command.
7929    :type loc_prf: str
7930    :param weight: Route Weight.
7931    :type weight: int
7932    :param path: Autonomous system paths to the destination network.
7933    :type path: str
7934    """
7935
7936    _attribute_map = {
7937        'network': {'key': 'network', 'type': 'str'},
7938        'next_hop': {'key': 'nextHop', 'type': 'str'},
7939        'loc_prf': {'key': 'locPrf', 'type': 'str'},
7940        'weight': {'key': 'weight', 'type': 'int'},
7941        'path': {'key': 'path', 'type': 'str'},
7942    }
7943
7944    def __init__(
7945        self,
7946        *,
7947        network: Optional[str] = None,
7948        next_hop: Optional[str] = None,
7949        loc_prf: Optional[str] = None,
7950        weight: Optional[int] = None,
7951        path: Optional[str] = None,
7952        **kwargs
7953    ):
7954        super(ExpressRouteCircuitRoutesTable, self).__init__(**kwargs)
7955        self.network = network
7956        self.next_hop = next_hop
7957        self.loc_prf = loc_prf
7958        self.weight = weight
7959        self.path = path
7960
7961
7962class ExpressRouteCircuitRoutesTableSummary(msrest.serialization.Model):
7963    """The routes table associated with the ExpressRouteCircuit.
7964
7965    :param neighbor: IP address of the neighbor.
7966    :type neighbor: str
7967    :param v: BGP version number spoken to the neighbor.
7968    :type v: int
7969    :param as_property: Autonomous system number.
7970    :type as_property: int
7971    :param up_down: The length of time that the BGP session has been in the Established state, or
7972     the current status if not in the Established state.
7973    :type up_down: str
7974    :param state_pfx_rcd: Current state of the BGP session, and the number of prefixes that have
7975     been received from a neighbor or peer group.
7976    :type state_pfx_rcd: str
7977    """
7978
7979    _attribute_map = {
7980        'neighbor': {'key': 'neighbor', 'type': 'str'},
7981        'v': {'key': 'v', 'type': 'int'},
7982        'as_property': {'key': 'as', 'type': 'int'},
7983        'up_down': {'key': 'upDown', 'type': 'str'},
7984        'state_pfx_rcd': {'key': 'statePfxRcd', 'type': 'str'},
7985    }
7986
7987    def __init__(
7988        self,
7989        *,
7990        neighbor: Optional[str] = None,
7991        v: Optional[int] = None,
7992        as_property: Optional[int] = None,
7993        up_down: Optional[str] = None,
7994        state_pfx_rcd: Optional[str] = None,
7995        **kwargs
7996    ):
7997        super(ExpressRouteCircuitRoutesTableSummary, self).__init__(**kwargs)
7998        self.neighbor = neighbor
7999        self.v = v
8000        self.as_property = as_property
8001        self.up_down = up_down
8002        self.state_pfx_rcd = state_pfx_rcd
8003
8004
8005class ExpressRouteCircuitsArpTableListResult(msrest.serialization.Model):
8006    """Response for ListArpTable associated with the Express Route Circuits API.
8007
8008    :param value: A list of the ARP tables.
8009    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitArpTable]
8010    :param next_link: The URL to get the next set of results.
8011    :type next_link: str
8012    """
8013
8014    _attribute_map = {
8015        'value': {'key': 'value', 'type': '[ExpressRouteCircuitArpTable]'},
8016        'next_link': {'key': 'nextLink', 'type': 'str'},
8017    }
8018
8019    def __init__(
8020        self,
8021        *,
8022        value: Optional[List["ExpressRouteCircuitArpTable"]] = None,
8023        next_link: Optional[str] = None,
8024        **kwargs
8025    ):
8026        super(ExpressRouteCircuitsArpTableListResult, self).__init__(**kwargs)
8027        self.value = value
8028        self.next_link = next_link
8029
8030
8031class ExpressRouteCircuitServiceProviderProperties(msrest.serialization.Model):
8032    """Contains ServiceProviderProperties in an ExpressRouteCircuit.
8033
8034    :param service_provider_name: The serviceProviderName.
8035    :type service_provider_name: str
8036    :param peering_location: The peering location.
8037    :type peering_location: str
8038    :param bandwidth_in_mbps: The BandwidthInMbps.
8039    :type bandwidth_in_mbps: int
8040    """
8041
8042    _attribute_map = {
8043        'service_provider_name': {'key': 'serviceProviderName', 'type': 'str'},
8044        'peering_location': {'key': 'peeringLocation', 'type': 'str'},
8045        'bandwidth_in_mbps': {'key': 'bandwidthInMbps', 'type': 'int'},
8046    }
8047
8048    def __init__(
8049        self,
8050        *,
8051        service_provider_name: Optional[str] = None,
8052        peering_location: Optional[str] = None,
8053        bandwidth_in_mbps: Optional[int] = None,
8054        **kwargs
8055    ):
8056        super(ExpressRouteCircuitServiceProviderProperties, self).__init__(**kwargs)
8057        self.service_provider_name = service_provider_name
8058        self.peering_location = peering_location
8059        self.bandwidth_in_mbps = bandwidth_in_mbps
8060
8061
8062class ExpressRouteCircuitSku(msrest.serialization.Model):
8063    """Contains SKU in an ExpressRouteCircuit.
8064
8065    :param name: The name of the SKU.
8066    :type name: str
8067    :param tier: The tier of the SKU. Possible values include: "Standard", "Premium", "Basic",
8068     "Local".
8069    :type tier: str or ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitSkuTier
8070    :param family: The family of the SKU. Possible values include: "UnlimitedData", "MeteredData".
8071    :type family: str or ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitSkuFamily
8072    """
8073
8074    _attribute_map = {
8075        'name': {'key': 'name', 'type': 'str'},
8076        'tier': {'key': 'tier', 'type': 'str'},
8077        'family': {'key': 'family', 'type': 'str'},
8078    }
8079
8080    def __init__(
8081        self,
8082        *,
8083        name: Optional[str] = None,
8084        tier: Optional[Union[str, "ExpressRouteCircuitSkuTier"]] = None,
8085        family: Optional[Union[str, "ExpressRouteCircuitSkuFamily"]] = None,
8086        **kwargs
8087    ):
8088        super(ExpressRouteCircuitSku, self).__init__(**kwargs)
8089        self.name = name
8090        self.tier = tier
8091        self.family = family
8092
8093
8094class ExpressRouteCircuitsRoutesTableListResult(msrest.serialization.Model):
8095    """Response for ListRoutesTable associated with the Express Route Circuits API.
8096
8097    :param value: The list of routes table.
8098    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitRoutesTable]
8099    :param next_link: The URL to get the next set of results.
8100    :type next_link: str
8101    """
8102
8103    _attribute_map = {
8104        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTable]'},
8105        'next_link': {'key': 'nextLink', 'type': 'str'},
8106    }
8107
8108    def __init__(
8109        self,
8110        *,
8111        value: Optional[List["ExpressRouteCircuitRoutesTable"]] = None,
8112        next_link: Optional[str] = None,
8113        **kwargs
8114    ):
8115        super(ExpressRouteCircuitsRoutesTableListResult, self).__init__(**kwargs)
8116        self.value = value
8117        self.next_link = next_link
8118
8119
8120class ExpressRouteCircuitsRoutesTableSummaryListResult(msrest.serialization.Model):
8121    """Response for ListRoutesTable associated with the Express Route Circuits API.
8122
8123    :param value: A list of the routes table.
8124    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitRoutesTableSummary]
8125    :param next_link: The URL to get the next set of results.
8126    :type next_link: str
8127    """
8128
8129    _attribute_map = {
8130        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTableSummary]'},
8131        'next_link': {'key': 'nextLink', 'type': 'str'},
8132    }
8133
8134    def __init__(
8135        self,
8136        *,
8137        value: Optional[List["ExpressRouteCircuitRoutesTableSummary"]] = None,
8138        next_link: Optional[str] = None,
8139        **kwargs
8140    ):
8141        super(ExpressRouteCircuitsRoutesTableSummaryListResult, self).__init__(**kwargs)
8142        self.value = value
8143        self.next_link = next_link
8144
8145
8146class ExpressRouteCircuitStats(msrest.serialization.Model):
8147    """Contains stats associated with the peering.
8148
8149    :param primarybytes_in: The Primary BytesIn of the peering.
8150    :type primarybytes_in: long
8151    :param primarybytes_out: The primary BytesOut of the peering.
8152    :type primarybytes_out: long
8153    :param secondarybytes_in: The secondary BytesIn of the peering.
8154    :type secondarybytes_in: long
8155    :param secondarybytes_out: The secondary BytesOut of the peering.
8156    :type secondarybytes_out: long
8157    """
8158
8159    _attribute_map = {
8160        'primarybytes_in': {'key': 'primarybytesIn', 'type': 'long'},
8161        'primarybytes_out': {'key': 'primarybytesOut', 'type': 'long'},
8162        'secondarybytes_in': {'key': 'secondarybytesIn', 'type': 'long'},
8163        'secondarybytes_out': {'key': 'secondarybytesOut', 'type': 'long'},
8164    }
8165
8166    def __init__(
8167        self,
8168        *,
8169        primarybytes_in: Optional[int] = None,
8170        primarybytes_out: Optional[int] = None,
8171        secondarybytes_in: Optional[int] = None,
8172        secondarybytes_out: Optional[int] = None,
8173        **kwargs
8174    ):
8175        super(ExpressRouteCircuitStats, self).__init__(**kwargs)
8176        self.primarybytes_in = primarybytes_in
8177        self.primarybytes_out = primarybytes_out
8178        self.secondarybytes_in = secondarybytes_in
8179        self.secondarybytes_out = secondarybytes_out
8180
8181
8182class ExpressRouteConnection(SubResource):
8183    """ExpressRouteConnection resource.
8184
8185    Variables are only populated by the server, and will be ignored when sending a request.
8186
8187    All required parameters must be populated in order to send to Azure.
8188
8189    :param id: Resource ID.
8190    :type id: str
8191    :param name: Required. The name of the resource.
8192    :type name: str
8193    :ivar provisioning_state: The provisioning state of the express route connection resource.
8194     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
8195    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
8196    :param express_route_circuit_peering: The ExpressRoute circuit peering.
8197    :type express_route_circuit_peering:
8198     ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeeringId
8199    :param authorization_key: Authorization key to establish the connection.
8200    :type authorization_key: str
8201    :param routing_weight: The routing weight associated to the connection.
8202    :type routing_weight: int
8203    :param enable_internet_security: Enable internet security.
8204    :type enable_internet_security: bool
8205    """
8206
8207    _validation = {
8208        'name': {'required': True},
8209        'provisioning_state': {'readonly': True},
8210    }
8211
8212    _attribute_map = {
8213        'id': {'key': 'id', 'type': 'str'},
8214        'name': {'key': 'name', 'type': 'str'},
8215        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8216        'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'ExpressRouteCircuitPeeringId'},
8217        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
8218        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
8219        'enable_internet_security': {'key': 'properties.enableInternetSecurity', 'type': 'bool'},
8220    }
8221
8222    def __init__(
8223        self,
8224        *,
8225        name: str,
8226        id: Optional[str] = None,
8227        express_route_circuit_peering: Optional["ExpressRouteCircuitPeeringId"] = None,
8228        authorization_key: Optional[str] = None,
8229        routing_weight: Optional[int] = None,
8230        enable_internet_security: Optional[bool] = None,
8231        **kwargs
8232    ):
8233        super(ExpressRouteConnection, self).__init__(id=id, **kwargs)
8234        self.name = name
8235        self.provisioning_state = None
8236        self.express_route_circuit_peering = express_route_circuit_peering
8237        self.authorization_key = authorization_key
8238        self.routing_weight = routing_weight
8239        self.enable_internet_security = enable_internet_security
8240
8241
8242class ExpressRouteConnectionId(msrest.serialization.Model):
8243    """The ID of the ExpressRouteConnection.
8244
8245    Variables are only populated by the server, and will be ignored when sending a request.
8246
8247    :ivar id: The ID of the ExpressRouteConnection.
8248    :vartype id: str
8249    """
8250
8251    _validation = {
8252        'id': {'readonly': True},
8253    }
8254
8255    _attribute_map = {
8256        'id': {'key': 'id', 'type': 'str'},
8257    }
8258
8259    def __init__(
8260        self,
8261        **kwargs
8262    ):
8263        super(ExpressRouteConnectionId, self).__init__(**kwargs)
8264        self.id = None
8265
8266
8267class ExpressRouteConnectionList(msrest.serialization.Model):
8268    """ExpressRouteConnection list.
8269
8270    :param value: The list of ExpressRoute connections.
8271    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteConnection]
8272    """
8273
8274    _attribute_map = {
8275        'value': {'key': 'value', 'type': '[ExpressRouteConnection]'},
8276    }
8277
8278    def __init__(
8279        self,
8280        *,
8281        value: Optional[List["ExpressRouteConnection"]] = None,
8282        **kwargs
8283    ):
8284        super(ExpressRouteConnectionList, self).__init__(**kwargs)
8285        self.value = value
8286
8287
8288class ExpressRouteCrossConnection(Resource):
8289    """ExpressRouteCrossConnection resource.
8290
8291    Variables are only populated by the server, and will be ignored when sending a request.
8292
8293    :param id: Resource ID.
8294    :type id: str
8295    :ivar name: Resource name.
8296    :vartype name: str
8297    :ivar type: Resource type.
8298    :vartype type: str
8299    :param location: Resource location.
8300    :type location: str
8301    :param tags: A set of tags. Resource tags.
8302    :type tags: dict[str, str]
8303    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8304    :vartype etag: str
8305    :ivar primary_azure_port: The name of the primary port.
8306    :vartype primary_azure_port: str
8307    :ivar secondary_azure_port: The name of the secondary port.
8308    :vartype secondary_azure_port: str
8309    :ivar s_tag: The identifier of the circuit traffic.
8310    :vartype s_tag: int
8311    :param peering_location: The peering location of the ExpressRoute circuit.
8312    :type peering_location: str
8313    :param bandwidth_in_mbps: The circuit bandwidth In Mbps.
8314    :type bandwidth_in_mbps: int
8315    :param express_route_circuit: The ExpressRouteCircuit.
8316    :type express_route_circuit:
8317     ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitReference
8318    :param service_provider_provisioning_state: The provisioning state of the circuit in the
8319     connectivity provider system. Possible values include: "NotProvisioned", "Provisioning",
8320     "Provisioned", "Deprovisioning".
8321    :type service_provider_provisioning_state: str or
8322     ~azure.mgmt.network.v2019_12_01.models.ServiceProviderProvisioningState
8323    :param service_provider_notes: Additional read only notes set by the connectivity provider.
8324    :type service_provider_notes: str
8325    :ivar provisioning_state: The provisioning state of the express route cross connection
8326     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
8327    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
8328    :param peerings: The list of peerings.
8329    :type peerings: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCrossConnectionPeering]
8330    """
8331
8332    _validation = {
8333        'name': {'readonly': True},
8334        'type': {'readonly': True},
8335        'etag': {'readonly': True},
8336        'primary_azure_port': {'readonly': True},
8337        'secondary_azure_port': {'readonly': True},
8338        's_tag': {'readonly': True},
8339        'provisioning_state': {'readonly': True},
8340    }
8341
8342    _attribute_map = {
8343        'id': {'key': 'id', 'type': 'str'},
8344        'name': {'key': 'name', 'type': 'str'},
8345        'type': {'key': 'type', 'type': 'str'},
8346        'location': {'key': 'location', 'type': 'str'},
8347        'tags': {'key': 'tags', 'type': '{str}'},
8348        'etag': {'key': 'etag', 'type': 'str'},
8349        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
8350        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
8351        's_tag': {'key': 'properties.sTag', 'type': 'int'},
8352        'peering_location': {'key': 'properties.peeringLocation', 'type': 'str'},
8353        'bandwidth_in_mbps': {'key': 'properties.bandwidthInMbps', 'type': 'int'},
8354        'express_route_circuit': {'key': 'properties.expressRouteCircuit', 'type': 'ExpressRouteCircuitReference'},
8355        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
8356        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
8357        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8358        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCrossConnectionPeering]'},
8359    }
8360
8361    def __init__(
8362        self,
8363        *,
8364        id: Optional[str] = None,
8365        location: Optional[str] = None,
8366        tags: Optional[Dict[str, str]] = None,
8367        peering_location: Optional[str] = None,
8368        bandwidth_in_mbps: Optional[int] = None,
8369        express_route_circuit: Optional["ExpressRouteCircuitReference"] = None,
8370        service_provider_provisioning_state: Optional[Union[str, "ServiceProviderProvisioningState"]] = None,
8371        service_provider_notes: Optional[str] = None,
8372        peerings: Optional[List["ExpressRouteCrossConnectionPeering"]] = None,
8373        **kwargs
8374    ):
8375        super(ExpressRouteCrossConnection, self).__init__(id=id, location=location, tags=tags, **kwargs)
8376        self.etag = None
8377        self.primary_azure_port = None
8378        self.secondary_azure_port = None
8379        self.s_tag = None
8380        self.peering_location = peering_location
8381        self.bandwidth_in_mbps = bandwidth_in_mbps
8382        self.express_route_circuit = express_route_circuit
8383        self.service_provider_provisioning_state = service_provider_provisioning_state
8384        self.service_provider_notes = service_provider_notes
8385        self.provisioning_state = None
8386        self.peerings = peerings
8387
8388
8389class ExpressRouteCrossConnectionListResult(msrest.serialization.Model):
8390    """Response for ListExpressRouteCrossConnection API service call.
8391
8392    Variables are only populated by the server, and will be ignored when sending a request.
8393
8394    :param value: A list of ExpressRouteCrossConnection resources.
8395    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCrossConnection]
8396    :ivar next_link: The URL to get the next set of results.
8397    :vartype next_link: str
8398    """
8399
8400    _validation = {
8401        'next_link': {'readonly': True},
8402    }
8403
8404    _attribute_map = {
8405        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnection]'},
8406        'next_link': {'key': 'nextLink', 'type': 'str'},
8407    }
8408
8409    def __init__(
8410        self,
8411        *,
8412        value: Optional[List["ExpressRouteCrossConnection"]] = None,
8413        **kwargs
8414    ):
8415        super(ExpressRouteCrossConnectionListResult, self).__init__(**kwargs)
8416        self.value = value
8417        self.next_link = None
8418
8419
8420class ExpressRouteCrossConnectionPeering(SubResource):
8421    """Peering in an ExpressRoute Cross Connection resource.
8422
8423    Variables are only populated by the server, and will be ignored when sending a request.
8424
8425    :param id: Resource ID.
8426    :type id: str
8427    :param name: The name of the resource that is unique within a resource group. This name can be
8428     used to access the resource.
8429    :type name: str
8430    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8431    :vartype etag: str
8432    :param peering_type: The peering type. Possible values include: "AzurePublicPeering",
8433     "AzurePrivatePeering", "MicrosoftPeering".
8434    :type peering_type: str or ~azure.mgmt.network.v2019_12_01.models.ExpressRoutePeeringType
8435    :param state: The peering state. Possible values include: "Disabled", "Enabled".
8436    :type state: str or ~azure.mgmt.network.v2019_12_01.models.ExpressRoutePeeringState
8437    :ivar azure_asn: The Azure ASN.
8438    :vartype azure_asn: int
8439    :param peer_asn: The peer ASN.
8440    :type peer_asn: long
8441    :param primary_peer_address_prefix: The primary address prefix.
8442    :type primary_peer_address_prefix: str
8443    :param secondary_peer_address_prefix: The secondary address prefix.
8444    :type secondary_peer_address_prefix: str
8445    :ivar primary_azure_port: The primary port.
8446    :vartype primary_azure_port: str
8447    :ivar secondary_azure_port: The secondary port.
8448    :vartype secondary_azure_port: str
8449    :param shared_key: The shared key.
8450    :type shared_key: str
8451    :param vlan_id: The VLAN ID.
8452    :type vlan_id: int
8453    :param microsoft_peering_config: The Microsoft peering configuration.
8454    :type microsoft_peering_config:
8455     ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeeringConfig
8456    :ivar provisioning_state: The provisioning state of the express route cross connection peering
8457     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
8458    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
8459    :param gateway_manager_etag: The GatewayManager Etag.
8460    :type gateway_manager_etag: str
8461    :ivar last_modified_by: Who was the last to modify the peering.
8462    :vartype last_modified_by: str
8463    :param ipv6_peering_config: The IPv6 peering configuration.
8464    :type ipv6_peering_config:
8465     ~azure.mgmt.network.v2019_12_01.models.Ipv6ExpressRouteCircuitPeeringConfig
8466    """
8467
8468    _validation = {
8469        'etag': {'readonly': True},
8470        'azure_asn': {'readonly': True},
8471        'peer_asn': {'maximum': 4294967295, 'minimum': 1},
8472        'primary_azure_port': {'readonly': True},
8473        'secondary_azure_port': {'readonly': True},
8474        'provisioning_state': {'readonly': True},
8475        'last_modified_by': {'readonly': True},
8476    }
8477
8478    _attribute_map = {
8479        'id': {'key': 'id', 'type': 'str'},
8480        'name': {'key': 'name', 'type': 'str'},
8481        'etag': {'key': 'etag', 'type': 'str'},
8482        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
8483        'state': {'key': 'properties.state', 'type': 'str'},
8484        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
8485        'peer_asn': {'key': 'properties.peerASN', 'type': 'long'},
8486        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
8487        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
8488        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
8489        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
8490        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
8491        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
8492        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
8493        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8494        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
8495        'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'},
8496        'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'},
8497    }
8498
8499    def __init__(
8500        self,
8501        *,
8502        id: Optional[str] = None,
8503        name: Optional[str] = None,
8504        peering_type: Optional[Union[str, "ExpressRoutePeeringType"]] = None,
8505        state: Optional[Union[str, "ExpressRoutePeeringState"]] = None,
8506        peer_asn: Optional[int] = None,
8507        primary_peer_address_prefix: Optional[str] = None,
8508        secondary_peer_address_prefix: Optional[str] = None,
8509        shared_key: Optional[str] = None,
8510        vlan_id: Optional[int] = None,
8511        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
8512        gateway_manager_etag: Optional[str] = None,
8513        ipv6_peering_config: Optional["Ipv6ExpressRouteCircuitPeeringConfig"] = None,
8514        **kwargs
8515    ):
8516        super(ExpressRouteCrossConnectionPeering, self).__init__(id=id, **kwargs)
8517        self.name = name
8518        self.etag = None
8519        self.peering_type = peering_type
8520        self.state = state
8521        self.azure_asn = None
8522        self.peer_asn = peer_asn
8523        self.primary_peer_address_prefix = primary_peer_address_prefix
8524        self.secondary_peer_address_prefix = secondary_peer_address_prefix
8525        self.primary_azure_port = None
8526        self.secondary_azure_port = None
8527        self.shared_key = shared_key
8528        self.vlan_id = vlan_id
8529        self.microsoft_peering_config = microsoft_peering_config
8530        self.provisioning_state = None
8531        self.gateway_manager_etag = gateway_manager_etag
8532        self.last_modified_by = None
8533        self.ipv6_peering_config = ipv6_peering_config
8534
8535
8536class ExpressRouteCrossConnectionPeeringList(msrest.serialization.Model):
8537    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCrossConnection.
8538
8539    Variables are only populated by the server, and will be ignored when sending a request.
8540
8541    :param value: The peerings in an express route cross connection.
8542    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCrossConnectionPeering]
8543    :ivar next_link: The URL to get the next set of results.
8544    :vartype next_link: str
8545    """
8546
8547    _validation = {
8548        'next_link': {'readonly': True},
8549    }
8550
8551    _attribute_map = {
8552        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnectionPeering]'},
8553        'next_link': {'key': 'nextLink', 'type': 'str'},
8554    }
8555
8556    def __init__(
8557        self,
8558        *,
8559        value: Optional[List["ExpressRouteCrossConnectionPeering"]] = None,
8560        **kwargs
8561    ):
8562        super(ExpressRouteCrossConnectionPeeringList, self).__init__(**kwargs)
8563        self.value = value
8564        self.next_link = None
8565
8566
8567class ExpressRouteCrossConnectionRoutesTableSummary(msrest.serialization.Model):
8568    """The routes table associated with the ExpressRouteCircuit.
8569
8570    :param neighbor: IP address of Neighbor router.
8571    :type neighbor: str
8572    :param asn: Autonomous system number.
8573    :type asn: int
8574    :param up_down: The length of time that the BGP session has been in the Established state, or
8575     the current status if not in the Established state.
8576    :type up_down: str
8577    :param state_or_prefixes_received: Current state of the BGP session, and the number of prefixes
8578     that have been received from a neighbor or peer group.
8579    :type state_or_prefixes_received: str
8580    """
8581
8582    _attribute_map = {
8583        'neighbor': {'key': 'neighbor', 'type': 'str'},
8584        'asn': {'key': 'asn', 'type': 'int'},
8585        'up_down': {'key': 'upDown', 'type': 'str'},
8586        'state_or_prefixes_received': {'key': 'stateOrPrefixesReceived', 'type': 'str'},
8587    }
8588
8589    def __init__(
8590        self,
8591        *,
8592        neighbor: Optional[str] = None,
8593        asn: Optional[int] = None,
8594        up_down: Optional[str] = None,
8595        state_or_prefixes_received: Optional[str] = None,
8596        **kwargs
8597    ):
8598        super(ExpressRouteCrossConnectionRoutesTableSummary, self).__init__(**kwargs)
8599        self.neighbor = neighbor
8600        self.asn = asn
8601        self.up_down = up_down
8602        self.state_or_prefixes_received = state_or_prefixes_received
8603
8604
8605class ExpressRouteCrossConnectionsRoutesTableSummaryListResult(msrest.serialization.Model):
8606    """Response for ListRoutesTable associated with the Express Route Cross Connections.
8607
8608    Variables are only populated by the server, and will be ignored when sending a request.
8609
8610    :param value: A list of the routes table.
8611    :type value:
8612     list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCrossConnectionRoutesTableSummary]
8613    :ivar next_link: The URL to get the next set of results.
8614    :vartype next_link: str
8615    """
8616
8617    _validation = {
8618        'next_link': {'readonly': True},
8619    }
8620
8621    _attribute_map = {
8622        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnectionRoutesTableSummary]'},
8623        'next_link': {'key': 'nextLink', 'type': 'str'},
8624    }
8625
8626    def __init__(
8627        self,
8628        *,
8629        value: Optional[List["ExpressRouteCrossConnectionRoutesTableSummary"]] = None,
8630        **kwargs
8631    ):
8632        super(ExpressRouteCrossConnectionsRoutesTableSummaryListResult, self).__init__(**kwargs)
8633        self.value = value
8634        self.next_link = None
8635
8636
8637class ExpressRouteGateway(Resource):
8638    """ExpressRoute gateway resource.
8639
8640    Variables are only populated by the server, and will be ignored when sending a request.
8641
8642    :param id: Resource ID.
8643    :type id: str
8644    :ivar name: Resource name.
8645    :vartype name: str
8646    :ivar type: Resource type.
8647    :vartype type: str
8648    :param location: Resource location.
8649    :type location: str
8650    :param tags: A set of tags. Resource tags.
8651    :type tags: dict[str, str]
8652    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8653    :vartype etag: str
8654    :param auto_scale_configuration: Configuration for auto scaling.
8655    :type auto_scale_configuration:
8656     ~azure.mgmt.network.v2019_12_01.models.ExpressRouteGatewayPropertiesAutoScaleConfiguration
8657    :ivar express_route_connections: List of ExpressRoute connections to the ExpressRoute gateway.
8658    :vartype express_route_connections:
8659     list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteConnection]
8660    :ivar provisioning_state: The provisioning state of the express route gateway resource.
8661     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
8662    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
8663    :param virtual_hub: The Virtual Hub where the ExpressRoute gateway is or will be deployed.
8664    :type virtual_hub: ~azure.mgmt.network.v2019_12_01.models.VirtualHubId
8665    """
8666
8667    _validation = {
8668        'name': {'readonly': True},
8669        'type': {'readonly': True},
8670        'etag': {'readonly': True},
8671        'express_route_connections': {'readonly': True},
8672        'provisioning_state': {'readonly': True},
8673    }
8674
8675    _attribute_map = {
8676        'id': {'key': 'id', 'type': 'str'},
8677        'name': {'key': 'name', 'type': 'str'},
8678        'type': {'key': 'type', 'type': 'str'},
8679        'location': {'key': 'location', 'type': 'str'},
8680        'tags': {'key': 'tags', 'type': '{str}'},
8681        'etag': {'key': 'etag', 'type': 'str'},
8682        'auto_scale_configuration': {'key': 'properties.autoScaleConfiguration', 'type': 'ExpressRouteGatewayPropertiesAutoScaleConfiguration'},
8683        'express_route_connections': {'key': 'properties.expressRouteConnections', 'type': '[ExpressRouteConnection]'},
8684        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8685        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'VirtualHubId'},
8686    }
8687
8688    def __init__(
8689        self,
8690        *,
8691        id: Optional[str] = None,
8692        location: Optional[str] = None,
8693        tags: Optional[Dict[str, str]] = None,
8694        auto_scale_configuration: Optional["ExpressRouteGatewayPropertiesAutoScaleConfiguration"] = None,
8695        virtual_hub: Optional["VirtualHubId"] = None,
8696        **kwargs
8697    ):
8698        super(ExpressRouteGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
8699        self.etag = None
8700        self.auto_scale_configuration = auto_scale_configuration
8701        self.express_route_connections = None
8702        self.provisioning_state = None
8703        self.virtual_hub = virtual_hub
8704
8705
8706class ExpressRouteGatewayList(msrest.serialization.Model):
8707    """List of ExpressRoute gateways.
8708
8709    :param value: List of ExpressRoute gateways.
8710    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteGateway]
8711    """
8712
8713    _attribute_map = {
8714        'value': {'key': 'value', 'type': '[ExpressRouteGateway]'},
8715    }
8716
8717    def __init__(
8718        self,
8719        *,
8720        value: Optional[List["ExpressRouteGateway"]] = None,
8721        **kwargs
8722    ):
8723        super(ExpressRouteGatewayList, self).__init__(**kwargs)
8724        self.value = value
8725
8726
8727class ExpressRouteGatewayPropertiesAutoScaleConfiguration(msrest.serialization.Model):
8728    """Configuration for auto scaling.
8729
8730    :param bounds: Minimum and maximum number of scale units to deploy.
8731    :type bounds:
8732     ~azure.mgmt.network.v2019_12_01.models.ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds
8733    """
8734
8735    _attribute_map = {
8736        'bounds': {'key': 'bounds', 'type': 'ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds'},
8737    }
8738
8739    def __init__(
8740        self,
8741        *,
8742        bounds: Optional["ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds"] = None,
8743        **kwargs
8744    ):
8745        super(ExpressRouteGatewayPropertiesAutoScaleConfiguration, self).__init__(**kwargs)
8746        self.bounds = bounds
8747
8748
8749class ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds(msrest.serialization.Model):
8750    """Minimum and maximum number of scale units to deploy.
8751
8752    :param min: Minimum number of scale units deployed for ExpressRoute gateway.
8753    :type min: int
8754    :param max: Maximum number of scale units deployed for ExpressRoute gateway.
8755    :type max: int
8756    """
8757
8758    _attribute_map = {
8759        'min': {'key': 'min', 'type': 'int'},
8760        'max': {'key': 'max', 'type': 'int'},
8761    }
8762
8763    def __init__(
8764        self,
8765        *,
8766        min: Optional[int] = None,
8767        max: Optional[int] = None,
8768        **kwargs
8769    ):
8770        super(ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds, self).__init__(**kwargs)
8771        self.min = min
8772        self.max = max
8773
8774
8775class ExpressRouteLink(SubResource):
8776    """ExpressRouteLink child resource definition.
8777
8778    Variables are only populated by the server, and will be ignored when sending a request.
8779
8780    :param id: Resource ID.
8781    :type id: str
8782    :param name: Name of child port resource that is unique among child port resources of the
8783     parent.
8784    :type name: str
8785    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8786    :vartype etag: str
8787    :ivar router_name: Name of Azure router associated with physical port.
8788    :vartype router_name: str
8789    :ivar interface_name: Name of Azure router interface.
8790    :vartype interface_name: str
8791    :ivar patch_panel_id: Mapping between physical port to patch panel port.
8792    :vartype patch_panel_id: str
8793    :ivar rack_id: Mapping of physical patch panel to rack.
8794    :vartype rack_id: str
8795    :ivar connector_type: Physical fiber port type. Possible values include: "LC", "SC".
8796    :vartype connector_type: str or
8797     ~azure.mgmt.network.v2019_12_01.models.ExpressRouteLinkConnectorType
8798    :param admin_state: Administrative state of the physical port. Possible values include:
8799     "Enabled", "Disabled".
8800    :type admin_state: str or ~azure.mgmt.network.v2019_12_01.models.ExpressRouteLinkAdminState
8801    :ivar provisioning_state: The provisioning state of the express route link resource. Possible
8802     values include: "Succeeded", "Updating", "Deleting", "Failed".
8803    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
8804    :param mac_sec_config: MacSec configuration.
8805    :type mac_sec_config: ~azure.mgmt.network.v2019_12_01.models.ExpressRouteLinkMacSecConfig
8806    """
8807
8808    _validation = {
8809        'etag': {'readonly': True},
8810        'router_name': {'readonly': True},
8811        'interface_name': {'readonly': True},
8812        'patch_panel_id': {'readonly': True},
8813        'rack_id': {'readonly': True},
8814        'connector_type': {'readonly': True},
8815        'provisioning_state': {'readonly': True},
8816    }
8817
8818    _attribute_map = {
8819        'id': {'key': 'id', 'type': 'str'},
8820        'name': {'key': 'name', 'type': 'str'},
8821        'etag': {'key': 'etag', 'type': 'str'},
8822        'router_name': {'key': 'properties.routerName', 'type': 'str'},
8823        'interface_name': {'key': 'properties.interfaceName', 'type': 'str'},
8824        'patch_panel_id': {'key': 'properties.patchPanelId', 'type': 'str'},
8825        'rack_id': {'key': 'properties.rackId', 'type': 'str'},
8826        'connector_type': {'key': 'properties.connectorType', 'type': 'str'},
8827        'admin_state': {'key': 'properties.adminState', 'type': 'str'},
8828        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8829        'mac_sec_config': {'key': 'properties.macSecConfig', 'type': 'ExpressRouteLinkMacSecConfig'},
8830    }
8831
8832    def __init__(
8833        self,
8834        *,
8835        id: Optional[str] = None,
8836        name: Optional[str] = None,
8837        admin_state: Optional[Union[str, "ExpressRouteLinkAdminState"]] = None,
8838        mac_sec_config: Optional["ExpressRouteLinkMacSecConfig"] = None,
8839        **kwargs
8840    ):
8841        super(ExpressRouteLink, self).__init__(id=id, **kwargs)
8842        self.name = name
8843        self.etag = None
8844        self.router_name = None
8845        self.interface_name = None
8846        self.patch_panel_id = None
8847        self.rack_id = None
8848        self.connector_type = None
8849        self.admin_state = admin_state
8850        self.provisioning_state = None
8851        self.mac_sec_config = mac_sec_config
8852
8853
8854class ExpressRouteLinkListResult(msrest.serialization.Model):
8855    """Response for ListExpressRouteLinks API service call.
8856
8857    :param value: The list of ExpressRouteLink sub-resources.
8858    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteLink]
8859    :param next_link: The URL to get the next set of results.
8860    :type next_link: str
8861    """
8862
8863    _attribute_map = {
8864        'value': {'key': 'value', 'type': '[ExpressRouteLink]'},
8865        'next_link': {'key': 'nextLink', 'type': 'str'},
8866    }
8867
8868    def __init__(
8869        self,
8870        *,
8871        value: Optional[List["ExpressRouteLink"]] = None,
8872        next_link: Optional[str] = None,
8873        **kwargs
8874    ):
8875        super(ExpressRouteLinkListResult, self).__init__(**kwargs)
8876        self.value = value
8877        self.next_link = next_link
8878
8879
8880class ExpressRouteLinkMacSecConfig(msrest.serialization.Model):
8881    """ExpressRouteLink Mac Security Configuration.
8882
8883    :param ckn_secret_identifier: Keyvault Secret Identifier URL containing Mac security CKN key.
8884    :type ckn_secret_identifier: str
8885    :param cak_secret_identifier: Keyvault Secret Identifier URL containing Mac security CAK key.
8886    :type cak_secret_identifier: str
8887    :param cipher: Mac security cipher. Possible values include: "gcm-aes-128", "gcm-aes-256".
8888    :type cipher: str or ~azure.mgmt.network.v2019_12_01.models.ExpressRouteLinkMacSecCipher
8889    """
8890
8891    _attribute_map = {
8892        'ckn_secret_identifier': {'key': 'cknSecretIdentifier', 'type': 'str'},
8893        'cak_secret_identifier': {'key': 'cakSecretIdentifier', 'type': 'str'},
8894        'cipher': {'key': 'cipher', 'type': 'str'},
8895    }
8896
8897    def __init__(
8898        self,
8899        *,
8900        ckn_secret_identifier: Optional[str] = None,
8901        cak_secret_identifier: Optional[str] = None,
8902        cipher: Optional[Union[str, "ExpressRouteLinkMacSecCipher"]] = None,
8903        **kwargs
8904    ):
8905        super(ExpressRouteLinkMacSecConfig, self).__init__(**kwargs)
8906        self.ckn_secret_identifier = ckn_secret_identifier
8907        self.cak_secret_identifier = cak_secret_identifier
8908        self.cipher = cipher
8909
8910
8911class ExpressRoutePort(Resource):
8912    """ExpressRoutePort resource definition.
8913
8914    Variables are only populated by the server, and will be ignored when sending a request.
8915
8916    :param id: Resource ID.
8917    :type id: str
8918    :ivar name: Resource name.
8919    :vartype name: str
8920    :ivar type: Resource type.
8921    :vartype type: str
8922    :param location: Resource location.
8923    :type location: str
8924    :param tags: A set of tags. Resource tags.
8925    :type tags: dict[str, str]
8926    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8927    :vartype etag: str
8928    :param identity: The identity of ExpressRoutePort, if configured.
8929    :type identity: ~azure.mgmt.network.v2019_12_01.models.ManagedServiceIdentity
8930    :param peering_location: The name of the peering location that the ExpressRoutePort is mapped
8931     to physically.
8932    :type peering_location: str
8933    :param bandwidth_in_gbps: Bandwidth of procured ports in Gbps.
8934    :type bandwidth_in_gbps: int
8935    :ivar provisioned_bandwidth_in_gbps: Aggregate Gbps of associated circuit bandwidths.
8936    :vartype provisioned_bandwidth_in_gbps: float
8937    :ivar mtu: Maximum transmission unit of the physical port pair(s).
8938    :vartype mtu: str
8939    :param encapsulation: Encapsulation method on physical ports. Possible values include: "Dot1Q",
8940     "QinQ".
8941    :type encapsulation: str or
8942     ~azure.mgmt.network.v2019_12_01.models.ExpressRoutePortsEncapsulation
8943    :ivar ether_type: Ether type of the physical port.
8944    :vartype ether_type: str
8945    :ivar allocation_date: Date of the physical port allocation to be used in Letter of
8946     Authorization.
8947    :vartype allocation_date: str
8948    :param links: The set of physical links of the ExpressRoutePort resource.
8949    :type links: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteLink]
8950    :ivar circuits: Reference the ExpressRoute circuit(s) that are provisioned on this
8951     ExpressRoutePort resource.
8952    :vartype circuits: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
8953    :ivar provisioning_state: The provisioning state of the express route port resource. Possible
8954     values include: "Succeeded", "Updating", "Deleting", "Failed".
8955    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
8956    :ivar resource_guid: The resource GUID property of the express route port resource.
8957    :vartype resource_guid: str
8958    """
8959
8960    _validation = {
8961        'name': {'readonly': True},
8962        'type': {'readonly': True},
8963        'etag': {'readonly': True},
8964        'provisioned_bandwidth_in_gbps': {'readonly': True},
8965        'mtu': {'readonly': True},
8966        'ether_type': {'readonly': True},
8967        'allocation_date': {'readonly': True},
8968        'circuits': {'readonly': True},
8969        'provisioning_state': {'readonly': True},
8970        'resource_guid': {'readonly': True},
8971    }
8972
8973    _attribute_map = {
8974        'id': {'key': 'id', 'type': 'str'},
8975        'name': {'key': 'name', 'type': 'str'},
8976        'type': {'key': 'type', 'type': 'str'},
8977        'location': {'key': 'location', 'type': 'str'},
8978        'tags': {'key': 'tags', 'type': '{str}'},
8979        'etag': {'key': 'etag', 'type': 'str'},
8980        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
8981        'peering_location': {'key': 'properties.peeringLocation', 'type': 'str'},
8982        'bandwidth_in_gbps': {'key': 'properties.bandwidthInGbps', 'type': 'int'},
8983        'provisioned_bandwidth_in_gbps': {'key': 'properties.provisionedBandwidthInGbps', 'type': 'float'},
8984        'mtu': {'key': 'properties.mtu', 'type': 'str'},
8985        'encapsulation': {'key': 'properties.encapsulation', 'type': 'str'},
8986        'ether_type': {'key': 'properties.etherType', 'type': 'str'},
8987        'allocation_date': {'key': 'properties.allocationDate', 'type': 'str'},
8988        'links': {'key': 'properties.links', 'type': '[ExpressRouteLink]'},
8989        'circuits': {'key': 'properties.circuits', 'type': '[SubResource]'},
8990        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8991        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
8992    }
8993
8994    def __init__(
8995        self,
8996        *,
8997        id: Optional[str] = None,
8998        location: Optional[str] = None,
8999        tags: Optional[Dict[str, str]] = None,
9000        identity: Optional["ManagedServiceIdentity"] = None,
9001        peering_location: Optional[str] = None,
9002        bandwidth_in_gbps: Optional[int] = None,
9003        encapsulation: Optional[Union[str, "ExpressRoutePortsEncapsulation"]] = None,
9004        links: Optional[List["ExpressRouteLink"]] = None,
9005        **kwargs
9006    ):
9007        super(ExpressRoutePort, self).__init__(id=id, location=location, tags=tags, **kwargs)
9008        self.etag = None
9009        self.identity = identity
9010        self.peering_location = peering_location
9011        self.bandwidth_in_gbps = bandwidth_in_gbps
9012        self.provisioned_bandwidth_in_gbps = None
9013        self.mtu = None
9014        self.encapsulation = encapsulation
9015        self.ether_type = None
9016        self.allocation_date = None
9017        self.links = links
9018        self.circuits = None
9019        self.provisioning_state = None
9020        self.resource_guid = None
9021
9022
9023class ExpressRoutePortListResult(msrest.serialization.Model):
9024    """Response for ListExpressRoutePorts API service call.
9025
9026    :param value: A list of ExpressRoutePort resources.
9027    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRoutePort]
9028    :param next_link: The URL to get the next set of results.
9029    :type next_link: str
9030    """
9031
9032    _attribute_map = {
9033        'value': {'key': 'value', 'type': '[ExpressRoutePort]'},
9034        'next_link': {'key': 'nextLink', 'type': 'str'},
9035    }
9036
9037    def __init__(
9038        self,
9039        *,
9040        value: Optional[List["ExpressRoutePort"]] = None,
9041        next_link: Optional[str] = None,
9042        **kwargs
9043    ):
9044        super(ExpressRoutePortListResult, self).__init__(**kwargs)
9045        self.value = value
9046        self.next_link = next_link
9047
9048
9049class ExpressRoutePortsLocation(Resource):
9050    """Definition of the ExpressRoutePorts peering location resource.
9051
9052    Variables are only populated by the server, and will be ignored when sending a request.
9053
9054    :param id: Resource ID.
9055    :type id: str
9056    :ivar name: Resource name.
9057    :vartype name: str
9058    :ivar type: Resource type.
9059    :vartype type: str
9060    :param location: Resource location.
9061    :type location: str
9062    :param tags: A set of tags. Resource tags.
9063    :type tags: dict[str, str]
9064    :ivar address: Address of peering location.
9065    :vartype address: str
9066    :ivar contact: Contact details of peering locations.
9067    :vartype contact: str
9068    :param available_bandwidths: The inventory of available ExpressRoutePort bandwidths.
9069    :type available_bandwidths:
9070     list[~azure.mgmt.network.v2019_12_01.models.ExpressRoutePortsLocationBandwidths]
9071    :ivar provisioning_state: The provisioning state of the express route port location resource.
9072     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
9073    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
9074    """
9075
9076    _validation = {
9077        'name': {'readonly': True},
9078        'type': {'readonly': True},
9079        'address': {'readonly': True},
9080        'contact': {'readonly': True},
9081        'provisioning_state': {'readonly': True},
9082    }
9083
9084    _attribute_map = {
9085        'id': {'key': 'id', 'type': 'str'},
9086        'name': {'key': 'name', 'type': 'str'},
9087        'type': {'key': 'type', 'type': 'str'},
9088        'location': {'key': 'location', 'type': 'str'},
9089        'tags': {'key': 'tags', 'type': '{str}'},
9090        'address': {'key': 'properties.address', 'type': 'str'},
9091        'contact': {'key': 'properties.contact', 'type': 'str'},
9092        'available_bandwidths': {'key': 'properties.availableBandwidths', 'type': '[ExpressRoutePortsLocationBandwidths]'},
9093        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9094    }
9095
9096    def __init__(
9097        self,
9098        *,
9099        id: Optional[str] = None,
9100        location: Optional[str] = None,
9101        tags: Optional[Dict[str, str]] = None,
9102        available_bandwidths: Optional[List["ExpressRoutePortsLocationBandwidths"]] = None,
9103        **kwargs
9104    ):
9105        super(ExpressRoutePortsLocation, self).__init__(id=id, location=location, tags=tags, **kwargs)
9106        self.address = None
9107        self.contact = None
9108        self.available_bandwidths = available_bandwidths
9109        self.provisioning_state = None
9110
9111
9112class ExpressRoutePortsLocationBandwidths(msrest.serialization.Model):
9113    """Real-time inventory of available ExpressRoute port bandwidths.
9114
9115    Variables are only populated by the server, and will be ignored when sending a request.
9116
9117    :ivar offer_name: Bandwidth descriptive name.
9118    :vartype offer_name: str
9119    :ivar value_in_gbps: Bandwidth value in Gbps.
9120    :vartype value_in_gbps: int
9121    """
9122
9123    _validation = {
9124        'offer_name': {'readonly': True},
9125        'value_in_gbps': {'readonly': True},
9126    }
9127
9128    _attribute_map = {
9129        'offer_name': {'key': 'offerName', 'type': 'str'},
9130        'value_in_gbps': {'key': 'valueInGbps', 'type': 'int'},
9131    }
9132
9133    def __init__(
9134        self,
9135        **kwargs
9136    ):
9137        super(ExpressRoutePortsLocationBandwidths, self).__init__(**kwargs)
9138        self.offer_name = None
9139        self.value_in_gbps = None
9140
9141
9142class ExpressRoutePortsLocationListResult(msrest.serialization.Model):
9143    """Response for ListExpressRoutePortsLocations API service call.
9144
9145    :param value: The list of all ExpressRoutePort peering locations.
9146    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRoutePortsLocation]
9147    :param next_link: The URL to get the next set of results.
9148    :type next_link: str
9149    """
9150
9151    _attribute_map = {
9152        'value': {'key': 'value', 'type': '[ExpressRoutePortsLocation]'},
9153        'next_link': {'key': 'nextLink', 'type': 'str'},
9154    }
9155
9156    def __init__(
9157        self,
9158        *,
9159        value: Optional[List["ExpressRoutePortsLocation"]] = None,
9160        next_link: Optional[str] = None,
9161        **kwargs
9162    ):
9163        super(ExpressRoutePortsLocationListResult, self).__init__(**kwargs)
9164        self.value = value
9165        self.next_link = next_link
9166
9167
9168class ExpressRouteServiceProvider(Resource):
9169    """A ExpressRouteResourceProvider object.
9170
9171    Variables are only populated by the server, and will be ignored when sending a request.
9172
9173    :param id: Resource ID.
9174    :type id: str
9175    :ivar name: Resource name.
9176    :vartype name: str
9177    :ivar type: Resource type.
9178    :vartype type: str
9179    :param location: Resource location.
9180    :type location: str
9181    :param tags: A set of tags. Resource tags.
9182    :type tags: dict[str, str]
9183    :param peering_locations: A list of peering locations.
9184    :type peering_locations: list[str]
9185    :param bandwidths_offered: A list of bandwidths offered.
9186    :type bandwidths_offered:
9187     list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteServiceProviderBandwidthsOffered]
9188    :ivar provisioning_state: The provisioning state of the express route service provider
9189     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
9190    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
9191    """
9192
9193    _validation = {
9194        'name': {'readonly': True},
9195        'type': {'readonly': True},
9196        'provisioning_state': {'readonly': True},
9197    }
9198
9199    _attribute_map = {
9200        'id': {'key': 'id', 'type': 'str'},
9201        'name': {'key': 'name', 'type': 'str'},
9202        'type': {'key': 'type', 'type': 'str'},
9203        'location': {'key': 'location', 'type': 'str'},
9204        'tags': {'key': 'tags', 'type': '{str}'},
9205        'peering_locations': {'key': 'properties.peeringLocations', 'type': '[str]'},
9206        'bandwidths_offered': {'key': 'properties.bandwidthsOffered', 'type': '[ExpressRouteServiceProviderBandwidthsOffered]'},
9207        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9208    }
9209
9210    def __init__(
9211        self,
9212        *,
9213        id: Optional[str] = None,
9214        location: Optional[str] = None,
9215        tags: Optional[Dict[str, str]] = None,
9216        peering_locations: Optional[List[str]] = None,
9217        bandwidths_offered: Optional[List["ExpressRouteServiceProviderBandwidthsOffered"]] = None,
9218        **kwargs
9219    ):
9220        super(ExpressRouteServiceProvider, self).__init__(id=id, location=location, tags=tags, **kwargs)
9221        self.peering_locations = peering_locations
9222        self.bandwidths_offered = bandwidths_offered
9223        self.provisioning_state = None
9224
9225
9226class ExpressRouteServiceProviderBandwidthsOffered(msrest.serialization.Model):
9227    """Contains bandwidths offered in ExpressRouteServiceProvider resources.
9228
9229    :param offer_name: The OfferName.
9230    :type offer_name: str
9231    :param value_in_mbps: The ValueInMbps.
9232    :type value_in_mbps: int
9233    """
9234
9235    _attribute_map = {
9236        'offer_name': {'key': 'offerName', 'type': 'str'},
9237        'value_in_mbps': {'key': 'valueInMbps', 'type': 'int'},
9238    }
9239
9240    def __init__(
9241        self,
9242        *,
9243        offer_name: Optional[str] = None,
9244        value_in_mbps: Optional[int] = None,
9245        **kwargs
9246    ):
9247        super(ExpressRouteServiceProviderBandwidthsOffered, self).__init__(**kwargs)
9248        self.offer_name = offer_name
9249        self.value_in_mbps = value_in_mbps
9250
9251
9252class ExpressRouteServiceProviderListResult(msrest.serialization.Model):
9253    """Response for the ListExpressRouteServiceProvider API service call.
9254
9255    :param value: A list of ExpressRouteResourceProvider resources.
9256    :type value: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteServiceProvider]
9257    :param next_link: The URL to get the next set of results.
9258    :type next_link: str
9259    """
9260
9261    _attribute_map = {
9262        'value': {'key': 'value', 'type': '[ExpressRouteServiceProvider]'},
9263        'next_link': {'key': 'nextLink', 'type': 'str'},
9264    }
9265
9266    def __init__(
9267        self,
9268        *,
9269        value: Optional[List["ExpressRouteServiceProvider"]] = None,
9270        next_link: Optional[str] = None,
9271        **kwargs
9272    ):
9273        super(ExpressRouteServiceProviderListResult, self).__init__(**kwargs)
9274        self.value = value
9275        self.next_link = next_link
9276
9277
9278class FirewallPolicy(Resource):
9279    """FirewallPolicy Resource.
9280
9281    Variables are only populated by the server, and will be ignored when sending a request.
9282
9283    :param id: Resource ID.
9284    :type id: str
9285    :ivar name: Resource name.
9286    :vartype name: str
9287    :ivar type: Resource type.
9288    :vartype type: str
9289    :param location: Resource location.
9290    :type location: str
9291    :param tags: A set of tags. Resource tags.
9292    :type tags: dict[str, str]
9293    :ivar etag: A unique read-only string that changes whenever the resource is updated.
9294    :vartype etag: str
9295    :ivar rule_groups: List of references to FirewallPolicyRuleGroups.
9296    :vartype rule_groups: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
9297    :ivar provisioning_state: The provisioning state of the firewall policy resource. Possible
9298     values include: "Succeeded", "Updating", "Deleting", "Failed".
9299    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
9300    :param base_policy: The parent firewall policy from which rules are inherited.
9301    :type base_policy: ~azure.mgmt.network.v2019_12_01.models.SubResource
9302    :ivar firewalls: List of references to Azure Firewalls that this Firewall Policy is associated
9303     with.
9304    :vartype firewalls: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
9305    :ivar child_policies: List of references to Child Firewall Policies.
9306    :vartype child_policies: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
9307    :param threat_intel_mode: The operation mode for Threat Intelligence. Possible values include:
9308     "Alert", "Deny", "Off".
9309    :type threat_intel_mode: str or
9310     ~azure.mgmt.network.v2019_12_01.models.AzureFirewallThreatIntelMode
9311    """
9312
9313    _validation = {
9314        'name': {'readonly': True},
9315        'type': {'readonly': True},
9316        'etag': {'readonly': True},
9317        'rule_groups': {'readonly': True},
9318        'provisioning_state': {'readonly': True},
9319        'firewalls': {'readonly': True},
9320        'child_policies': {'readonly': True},
9321    }
9322
9323    _attribute_map = {
9324        'id': {'key': 'id', 'type': 'str'},
9325        'name': {'key': 'name', 'type': 'str'},
9326        'type': {'key': 'type', 'type': 'str'},
9327        'location': {'key': 'location', 'type': 'str'},
9328        'tags': {'key': 'tags', 'type': '{str}'},
9329        'etag': {'key': 'etag', 'type': 'str'},
9330        'rule_groups': {'key': 'properties.ruleGroups', 'type': '[SubResource]'},
9331        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9332        'base_policy': {'key': 'properties.basePolicy', 'type': 'SubResource'},
9333        'firewalls': {'key': 'properties.firewalls', 'type': '[SubResource]'},
9334        'child_policies': {'key': 'properties.childPolicies', 'type': '[SubResource]'},
9335        'threat_intel_mode': {'key': 'properties.threatIntelMode', 'type': 'str'},
9336    }
9337
9338    def __init__(
9339        self,
9340        *,
9341        id: Optional[str] = None,
9342        location: Optional[str] = None,
9343        tags: Optional[Dict[str, str]] = None,
9344        base_policy: Optional["SubResource"] = None,
9345        threat_intel_mode: Optional[Union[str, "AzureFirewallThreatIntelMode"]] = None,
9346        **kwargs
9347    ):
9348        super(FirewallPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs)
9349        self.etag = None
9350        self.rule_groups = None
9351        self.provisioning_state = None
9352        self.base_policy = base_policy
9353        self.firewalls = None
9354        self.child_policies = None
9355        self.threat_intel_mode = threat_intel_mode
9356
9357
9358class FirewallPolicyRule(msrest.serialization.Model):
9359    """Properties of the rule.
9360
9361    You probably want to use the sub-classes and not this class directly. Known
9362    sub-classes are: FirewallPolicyFilterRule, FirewallPolicyNatRule.
9363
9364    All required parameters must be populated in order to send to Azure.
9365
9366    :param rule_type: Required. The type of the rule.Constant filled by server.  Possible values
9367     include: "FirewallPolicyNatRule", "FirewallPolicyFilterRule".
9368    :type rule_type: str or ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleType
9369    :param name: The name of the rule.
9370    :type name: str
9371    :param priority: Priority of the Firewall Policy Rule resource.
9372    :type priority: int
9373    """
9374
9375    _validation = {
9376        'rule_type': {'required': True},
9377        'priority': {'maximum': 65000, 'minimum': 100},
9378    }
9379
9380    _attribute_map = {
9381        'rule_type': {'key': 'ruleType', 'type': 'str'},
9382        'name': {'key': 'name', 'type': 'str'},
9383        'priority': {'key': 'priority', 'type': 'int'},
9384    }
9385
9386    _subtype_map = {
9387        'rule_type': {'FirewallPolicyFilterRule': 'FirewallPolicyFilterRule', 'FirewallPolicyNatRule': 'FirewallPolicyNatRule'}
9388    }
9389
9390    def __init__(
9391        self,
9392        *,
9393        name: Optional[str] = None,
9394        priority: Optional[int] = None,
9395        **kwargs
9396    ):
9397        super(FirewallPolicyRule, self).__init__(**kwargs)
9398        self.rule_type = None  # type: Optional[str]
9399        self.name = name
9400        self.priority = priority
9401
9402
9403class FirewallPolicyFilterRule(FirewallPolicyRule):
9404    """Firewall Policy Filter Rule.
9405
9406    All required parameters must be populated in order to send to Azure.
9407
9408    :param rule_type: Required. The type of the rule.Constant filled by server.  Possible values
9409     include: "FirewallPolicyNatRule", "FirewallPolicyFilterRule".
9410    :type rule_type: str or ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleType
9411    :param name: The name of the rule.
9412    :type name: str
9413    :param priority: Priority of the Firewall Policy Rule resource.
9414    :type priority: int
9415    :param action: The action type of a Filter rule.
9416    :type action: ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyFilterRuleAction
9417    :param rule_conditions: Collection of rule conditions used by a rule.
9418    :type rule_conditions: list[~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleCondition]
9419    """
9420
9421    _validation = {
9422        'rule_type': {'required': True},
9423        'priority': {'maximum': 65000, 'minimum': 100},
9424    }
9425
9426    _attribute_map = {
9427        'rule_type': {'key': 'ruleType', 'type': 'str'},
9428        'name': {'key': 'name', 'type': 'str'},
9429        'priority': {'key': 'priority', 'type': 'int'},
9430        'action': {'key': 'action', 'type': 'FirewallPolicyFilterRuleAction'},
9431        'rule_conditions': {'key': 'ruleConditions', 'type': '[FirewallPolicyRuleCondition]'},
9432    }
9433
9434    def __init__(
9435        self,
9436        *,
9437        name: Optional[str] = None,
9438        priority: Optional[int] = None,
9439        action: Optional["FirewallPolicyFilterRuleAction"] = None,
9440        rule_conditions: Optional[List["FirewallPolicyRuleCondition"]] = None,
9441        **kwargs
9442    ):
9443        super(FirewallPolicyFilterRule, self).__init__(name=name, priority=priority, **kwargs)
9444        self.rule_type = 'FirewallPolicyFilterRule'  # type: str
9445        self.action = action
9446        self.rule_conditions = rule_conditions
9447
9448
9449class FirewallPolicyFilterRuleAction(msrest.serialization.Model):
9450    """Properties of the FirewallPolicyFilterRuleAction.
9451
9452    :param type: The type of action. Possible values include: "Allow", "Deny".
9453    :type type: str or ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyFilterRuleActionType
9454    """
9455
9456    _attribute_map = {
9457        'type': {'key': 'type', 'type': 'str'},
9458    }
9459
9460    def __init__(
9461        self,
9462        *,
9463        type: Optional[Union[str, "FirewallPolicyFilterRuleActionType"]] = None,
9464        **kwargs
9465    ):
9466        super(FirewallPolicyFilterRuleAction, self).__init__(**kwargs)
9467        self.type = type
9468
9469
9470class FirewallPolicyListResult(msrest.serialization.Model):
9471    """Response for ListFirewallPolicies API service call.
9472
9473    :param value: List of Firewall Policies in a resource group.
9474    :type value: list[~azure.mgmt.network.v2019_12_01.models.FirewallPolicy]
9475    :param next_link: URL to get the next set of results.
9476    :type next_link: str
9477    """
9478
9479    _attribute_map = {
9480        'value': {'key': 'value', 'type': '[FirewallPolicy]'},
9481        'next_link': {'key': 'nextLink', 'type': 'str'},
9482    }
9483
9484    def __init__(
9485        self,
9486        *,
9487        value: Optional[List["FirewallPolicy"]] = None,
9488        next_link: Optional[str] = None,
9489        **kwargs
9490    ):
9491        super(FirewallPolicyListResult, self).__init__(**kwargs)
9492        self.value = value
9493        self.next_link = next_link
9494
9495
9496class FirewallPolicyNatRule(FirewallPolicyRule):
9497    """Firewall Policy NAT Rule.
9498
9499    All required parameters must be populated in order to send to Azure.
9500
9501    :param rule_type: Required. The type of the rule.Constant filled by server.  Possible values
9502     include: "FirewallPolicyNatRule", "FirewallPolicyFilterRule".
9503    :type rule_type: str or ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleType
9504    :param name: The name of the rule.
9505    :type name: str
9506    :param priority: Priority of the Firewall Policy Rule resource.
9507    :type priority: int
9508    :param action: The action type of a Nat rule.
9509    :type action: ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyNatRuleAction
9510    :param translated_address: The translated address for this NAT rule.
9511    :type translated_address: str
9512    :param translated_port: The translated port for this NAT rule.
9513    :type translated_port: str
9514    :param rule_condition: The match conditions for incoming traffic.
9515    :type rule_condition: ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleCondition
9516    """
9517
9518    _validation = {
9519        'rule_type': {'required': True},
9520        'priority': {'maximum': 65000, 'minimum': 100},
9521    }
9522
9523    _attribute_map = {
9524        'rule_type': {'key': 'ruleType', 'type': 'str'},
9525        'name': {'key': 'name', 'type': 'str'},
9526        'priority': {'key': 'priority', 'type': 'int'},
9527        'action': {'key': 'action', 'type': 'FirewallPolicyNatRuleAction'},
9528        'translated_address': {'key': 'translatedAddress', 'type': 'str'},
9529        'translated_port': {'key': 'translatedPort', 'type': 'str'},
9530        'rule_condition': {'key': 'ruleCondition', 'type': 'FirewallPolicyRuleCondition'},
9531    }
9532
9533    def __init__(
9534        self,
9535        *,
9536        name: Optional[str] = None,
9537        priority: Optional[int] = None,
9538        action: Optional["FirewallPolicyNatRuleAction"] = None,
9539        translated_address: Optional[str] = None,
9540        translated_port: Optional[str] = None,
9541        rule_condition: Optional["FirewallPolicyRuleCondition"] = None,
9542        **kwargs
9543    ):
9544        super(FirewallPolicyNatRule, self).__init__(name=name, priority=priority, **kwargs)
9545        self.rule_type = 'FirewallPolicyNatRule'  # type: str
9546        self.action = action
9547        self.translated_address = translated_address
9548        self.translated_port = translated_port
9549        self.rule_condition = rule_condition
9550
9551
9552class FirewallPolicyNatRuleAction(msrest.serialization.Model):
9553    """Properties of the FirewallPolicyNatRuleAction.
9554
9555    :param type: The type of action. Possible values include: "DNAT".
9556    :type type: str or ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyNatRuleActionType
9557    """
9558
9559    _attribute_map = {
9560        'type': {'key': 'type', 'type': 'str'},
9561    }
9562
9563    def __init__(
9564        self,
9565        *,
9566        type: Optional[Union[str, "FirewallPolicyNatRuleActionType"]] = None,
9567        **kwargs
9568    ):
9569        super(FirewallPolicyNatRuleAction, self).__init__(**kwargs)
9570        self.type = type
9571
9572
9573class FirewallPolicyRuleConditionApplicationProtocol(msrest.serialization.Model):
9574    """Properties of the application rule protocol.
9575
9576    :param protocol_type: Protocol type. Possible values include: "Http", "Https".
9577    :type protocol_type: str or
9578     ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleConditionApplicationProtocolType
9579    :param port: Port number for the protocol, cannot be greater than 64000.
9580    :type port: int
9581    """
9582
9583    _validation = {
9584        'port': {'maximum': 64000, 'minimum': 0},
9585    }
9586
9587    _attribute_map = {
9588        'protocol_type': {'key': 'protocolType', 'type': 'str'},
9589        'port': {'key': 'port', 'type': 'int'},
9590    }
9591
9592    def __init__(
9593        self,
9594        *,
9595        protocol_type: Optional[Union[str, "FirewallPolicyRuleConditionApplicationProtocolType"]] = None,
9596        port: Optional[int] = None,
9597        **kwargs
9598    ):
9599        super(FirewallPolicyRuleConditionApplicationProtocol, self).__init__(**kwargs)
9600        self.protocol_type = protocol_type
9601        self.port = port
9602
9603
9604class FirewallPolicyRuleGroup(SubResource):
9605    """Rule Group resource.
9606
9607    Variables are only populated by the server, and will be ignored when sending a request.
9608
9609    :param id: Resource ID.
9610    :type id: str
9611    :param name: The name of the resource that is unique within a resource group. This name can be
9612     used to access the resource.
9613    :type name: str
9614    :ivar etag: A unique read-only string that changes whenever the resource is updated.
9615    :vartype etag: str
9616    :ivar type: Rule Group type.
9617    :vartype type: str
9618    :param priority: Priority of the Firewall Policy Rule Group resource.
9619    :type priority: int
9620    :param rules: Group of Firewall Policy rules.
9621    :type rules: list[~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRule]
9622    :ivar provisioning_state: The provisioning state of the firewall policy rule group resource.
9623     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
9624    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
9625    """
9626
9627    _validation = {
9628        'etag': {'readonly': True},
9629        'type': {'readonly': True},
9630        'priority': {'maximum': 65000, 'minimum': 100},
9631        'provisioning_state': {'readonly': True},
9632    }
9633
9634    _attribute_map = {
9635        'id': {'key': 'id', 'type': 'str'},
9636        'name': {'key': 'name', 'type': 'str'},
9637        'etag': {'key': 'etag', 'type': 'str'},
9638        'type': {'key': 'type', 'type': 'str'},
9639        'priority': {'key': 'properties.priority', 'type': 'int'},
9640        'rules': {'key': 'properties.rules', 'type': '[FirewallPolicyRule]'},
9641        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9642    }
9643
9644    def __init__(
9645        self,
9646        *,
9647        id: Optional[str] = None,
9648        name: Optional[str] = None,
9649        priority: Optional[int] = None,
9650        rules: Optional[List["FirewallPolicyRule"]] = None,
9651        **kwargs
9652    ):
9653        super(FirewallPolicyRuleGroup, self).__init__(id=id, **kwargs)
9654        self.name = name
9655        self.etag = None
9656        self.type = None
9657        self.priority = priority
9658        self.rules = rules
9659        self.provisioning_state = None
9660
9661
9662class FirewallPolicyRuleGroupListResult(msrest.serialization.Model):
9663    """Response for ListFirewallPolicyRuleGroups API service call.
9664
9665    :param value: List of FirewallPolicyRuleGroups in a FirewallPolicy.
9666    :type value: list[~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleGroup]
9667    :param next_link: URL to get the next set of results.
9668    :type next_link: str
9669    """
9670
9671    _attribute_map = {
9672        'value': {'key': 'value', 'type': '[FirewallPolicyRuleGroup]'},
9673        'next_link': {'key': 'nextLink', 'type': 'str'},
9674    }
9675
9676    def __init__(
9677        self,
9678        *,
9679        value: Optional[List["FirewallPolicyRuleGroup"]] = None,
9680        next_link: Optional[str] = None,
9681        **kwargs
9682    ):
9683        super(FirewallPolicyRuleGroupListResult, self).__init__(**kwargs)
9684        self.value = value
9685        self.next_link = next_link
9686
9687
9688class FlowLog(Resource):
9689    """A flow log resource.
9690
9691    Variables are only populated by the server, and will be ignored when sending a request.
9692
9693    :param id: Resource ID.
9694    :type id: str
9695    :ivar name: Resource name.
9696    :vartype name: str
9697    :ivar type: Resource type.
9698    :vartype type: str
9699    :param location: Resource location.
9700    :type location: str
9701    :param tags: A set of tags. Resource tags.
9702    :type tags: dict[str, str]
9703    :ivar etag: A unique read-only string that changes whenever the resource is updated.
9704    :vartype etag: str
9705    :param target_resource_id: ID of network security group to which flow log will be applied.
9706    :type target_resource_id: str
9707    :ivar target_resource_guid: Guid of network security group to which flow log will be applied.
9708    :vartype target_resource_guid: str
9709    :param storage_id: ID of the storage account which is used to store the flow log.
9710    :type storage_id: str
9711    :param enabled: Flag to enable/disable flow logging.
9712    :type enabled: bool
9713    :param retention_policy: Parameters that define the retention policy for flow log.
9714    :type retention_policy: ~azure.mgmt.network.v2019_12_01.models.RetentionPolicyParameters
9715    :param format: Parameters that define the flow log format.
9716    :type format: ~azure.mgmt.network.v2019_12_01.models.FlowLogFormatParameters
9717    :param flow_analytics_configuration: Parameters that define the configuration of traffic
9718     analytics.
9719    :type flow_analytics_configuration:
9720     ~azure.mgmt.network.v2019_12_01.models.TrafficAnalyticsProperties
9721    :ivar provisioning_state: The provisioning state of the flow log. Possible values include:
9722     "Succeeded", "Updating", "Deleting", "Failed".
9723    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
9724    """
9725
9726    _validation = {
9727        'name': {'readonly': True},
9728        'type': {'readonly': True},
9729        'etag': {'readonly': True},
9730        'target_resource_guid': {'readonly': True},
9731        'provisioning_state': {'readonly': True},
9732    }
9733
9734    _attribute_map = {
9735        'id': {'key': 'id', 'type': 'str'},
9736        'name': {'key': 'name', 'type': 'str'},
9737        'type': {'key': 'type', 'type': 'str'},
9738        'location': {'key': 'location', 'type': 'str'},
9739        'tags': {'key': 'tags', 'type': '{str}'},
9740        'etag': {'key': 'etag', 'type': 'str'},
9741        'target_resource_id': {'key': 'properties.targetResourceId', 'type': 'str'},
9742        'target_resource_guid': {'key': 'properties.targetResourceGuid', 'type': 'str'},
9743        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
9744        'enabled': {'key': 'properties.enabled', 'type': 'bool'},
9745        'retention_policy': {'key': 'properties.retentionPolicy', 'type': 'RetentionPolicyParameters'},
9746        'format': {'key': 'properties.format', 'type': 'FlowLogFormatParameters'},
9747        'flow_analytics_configuration': {'key': 'properties.flowAnalyticsConfiguration', 'type': 'TrafficAnalyticsProperties'},
9748        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9749    }
9750
9751    def __init__(
9752        self,
9753        *,
9754        id: Optional[str] = None,
9755        location: Optional[str] = None,
9756        tags: Optional[Dict[str, str]] = None,
9757        target_resource_id: Optional[str] = None,
9758        storage_id: Optional[str] = None,
9759        enabled: Optional[bool] = None,
9760        retention_policy: Optional["RetentionPolicyParameters"] = None,
9761        format: Optional["FlowLogFormatParameters"] = None,
9762        flow_analytics_configuration: Optional["TrafficAnalyticsProperties"] = None,
9763        **kwargs
9764    ):
9765        super(FlowLog, self).__init__(id=id, location=location, tags=tags, **kwargs)
9766        self.etag = None
9767        self.target_resource_id = target_resource_id
9768        self.target_resource_guid = None
9769        self.storage_id = storage_id
9770        self.enabled = enabled
9771        self.retention_policy = retention_policy
9772        self.format = format
9773        self.flow_analytics_configuration = flow_analytics_configuration
9774        self.provisioning_state = None
9775
9776
9777class FlowLogFormatParameters(msrest.serialization.Model):
9778    """Parameters that define the flow log format.
9779
9780    :param type: The file type of flow log. Possible values include: "JSON".
9781    :type type: str or ~azure.mgmt.network.v2019_12_01.models.FlowLogFormatType
9782    :param version: The version (revision) of the flow log.
9783    :type version: int
9784    """
9785
9786    _attribute_map = {
9787        'type': {'key': 'type', 'type': 'str'},
9788        'version': {'key': 'version', 'type': 'int'},
9789    }
9790
9791    def __init__(
9792        self,
9793        *,
9794        type: Optional[Union[str, "FlowLogFormatType"]] = None,
9795        version: Optional[int] = 0,
9796        **kwargs
9797    ):
9798        super(FlowLogFormatParameters, self).__init__(**kwargs)
9799        self.type = type
9800        self.version = version
9801
9802
9803class FlowLogInformation(msrest.serialization.Model):
9804    """Information on the configuration of flow log and traffic analytics (optional) .
9805
9806    All required parameters must be populated in order to send to Azure.
9807
9808    :param target_resource_id: Required. The ID of the resource to configure for flow log and
9809     traffic analytics (optional) .
9810    :type target_resource_id: str
9811    :param flow_analytics_configuration: Parameters that define the configuration of traffic
9812     analytics.
9813    :type flow_analytics_configuration:
9814     ~azure.mgmt.network.v2019_12_01.models.TrafficAnalyticsProperties
9815    :param storage_id: Required. ID of the storage account which is used to store the flow log.
9816    :type storage_id: str
9817    :param enabled: Required. Flag to enable/disable flow logging.
9818    :type enabled: bool
9819    :param retention_policy: Parameters that define the retention policy for flow log.
9820    :type retention_policy: ~azure.mgmt.network.v2019_12_01.models.RetentionPolicyParameters
9821    :param format: Parameters that define the flow log format.
9822    :type format: ~azure.mgmt.network.v2019_12_01.models.FlowLogFormatParameters
9823    """
9824
9825    _validation = {
9826        'target_resource_id': {'required': True},
9827        'storage_id': {'required': True},
9828        'enabled': {'required': True},
9829    }
9830
9831    _attribute_map = {
9832        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
9833        'flow_analytics_configuration': {'key': 'flowAnalyticsConfiguration', 'type': 'TrafficAnalyticsProperties'},
9834        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
9835        'enabled': {'key': 'properties.enabled', 'type': 'bool'},
9836        'retention_policy': {'key': 'properties.retentionPolicy', 'type': 'RetentionPolicyParameters'},
9837        'format': {'key': 'properties.format', 'type': 'FlowLogFormatParameters'},
9838    }
9839
9840    def __init__(
9841        self,
9842        *,
9843        target_resource_id: str,
9844        storage_id: str,
9845        enabled: bool,
9846        flow_analytics_configuration: Optional["TrafficAnalyticsProperties"] = None,
9847        retention_policy: Optional["RetentionPolicyParameters"] = None,
9848        format: Optional["FlowLogFormatParameters"] = None,
9849        **kwargs
9850    ):
9851        super(FlowLogInformation, self).__init__(**kwargs)
9852        self.target_resource_id = target_resource_id
9853        self.flow_analytics_configuration = flow_analytics_configuration
9854        self.storage_id = storage_id
9855        self.enabled = enabled
9856        self.retention_policy = retention_policy
9857        self.format = format
9858
9859
9860class FlowLogListResult(msrest.serialization.Model):
9861    """List of flow logs.
9862
9863    Variables are only populated by the server, and will be ignored when sending a request.
9864
9865    :param value: Information about flow log resource.
9866    :type value: list[~azure.mgmt.network.v2019_12_01.models.FlowLog]
9867    :ivar next_link: The URL to get the next set of results.
9868    :vartype next_link: str
9869    """
9870
9871    _validation = {
9872        'next_link': {'readonly': True},
9873    }
9874
9875    _attribute_map = {
9876        'value': {'key': 'value', 'type': '[FlowLog]'},
9877        'next_link': {'key': 'nextLink', 'type': 'str'},
9878    }
9879
9880    def __init__(
9881        self,
9882        *,
9883        value: Optional[List["FlowLog"]] = None,
9884        **kwargs
9885    ):
9886        super(FlowLogListResult, self).__init__(**kwargs)
9887        self.value = value
9888        self.next_link = None
9889
9890
9891class FlowLogStatusParameters(msrest.serialization.Model):
9892    """Parameters that define a resource to query flow log and traffic analytics (optional) status.
9893
9894    All required parameters must be populated in order to send to Azure.
9895
9896    :param target_resource_id: Required. The target resource where getting the flow log and traffic
9897     analytics (optional) status.
9898    :type target_resource_id: str
9899    """
9900
9901    _validation = {
9902        'target_resource_id': {'required': True},
9903    }
9904
9905    _attribute_map = {
9906        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
9907    }
9908
9909    def __init__(
9910        self,
9911        *,
9912        target_resource_id: str,
9913        **kwargs
9914    ):
9915        super(FlowLogStatusParameters, self).__init__(**kwargs)
9916        self.target_resource_id = target_resource_id
9917
9918
9919class FrontendIPConfiguration(SubResource):
9920    """Frontend IP address of the load balancer.
9921
9922    Variables are only populated by the server, and will be ignored when sending a request.
9923
9924    :param id: Resource ID.
9925    :type id: str
9926    :param name: The name of the resource that is unique within the set of frontend IP
9927     configurations used by the load balancer. This name can be used to access the resource.
9928    :type name: str
9929    :ivar etag: A unique read-only string that changes whenever the resource is updated.
9930    :vartype etag: str
9931    :ivar type: Type of the resource.
9932    :vartype type: str
9933    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
9934     come from.
9935    :type zones: list[str]
9936    :ivar inbound_nat_rules: An array of references to inbound rules that use this frontend IP.
9937    :vartype inbound_nat_rules: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
9938    :ivar inbound_nat_pools: An array of references to inbound pools that use this frontend IP.
9939    :vartype inbound_nat_pools: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
9940    :ivar outbound_rules: An array of references to outbound rules that use this frontend IP.
9941    :vartype outbound_rules: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
9942    :ivar load_balancing_rules: An array of references to load balancing rules that use this
9943     frontend IP.
9944    :vartype load_balancing_rules: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
9945    :param private_ip_address: The private IP address of the IP configuration.
9946    :type private_ip_address: str
9947    :param private_ip_allocation_method: The Private IP allocation method. Possible values include:
9948     "Static", "Dynamic".
9949    :type private_ip_allocation_method: str or
9950     ~azure.mgmt.network.v2019_12_01.models.IPAllocationMethod
9951    :param private_ip_address_version: Whether the specific ipconfiguration is IPv4 or IPv6.
9952     Default is taken as IPv4. Possible values include: "IPv4", "IPv6".
9953    :type private_ip_address_version: str or ~azure.mgmt.network.v2019_12_01.models.IPVersion
9954    :param subnet: The reference to the subnet resource.
9955    :type subnet: ~azure.mgmt.network.v2019_12_01.models.Subnet
9956    :param public_ip_address: The reference to the Public IP resource.
9957    :type public_ip_address: ~azure.mgmt.network.v2019_12_01.models.PublicIPAddress
9958    :param public_ip_prefix: The reference to the Public IP Prefix resource.
9959    :type public_ip_prefix: ~azure.mgmt.network.v2019_12_01.models.SubResource
9960    :ivar provisioning_state: The provisioning state of the frontend IP configuration resource.
9961     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
9962    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
9963    """
9964
9965    _validation = {
9966        'etag': {'readonly': True},
9967        'type': {'readonly': True},
9968        'inbound_nat_rules': {'readonly': True},
9969        'inbound_nat_pools': {'readonly': True},
9970        'outbound_rules': {'readonly': True},
9971        'load_balancing_rules': {'readonly': True},
9972        'provisioning_state': {'readonly': True},
9973    }
9974
9975    _attribute_map = {
9976        'id': {'key': 'id', 'type': 'str'},
9977        'name': {'key': 'name', 'type': 'str'},
9978        'etag': {'key': 'etag', 'type': 'str'},
9979        'type': {'key': 'type', 'type': 'str'},
9980        'zones': {'key': 'zones', 'type': '[str]'},
9981        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[SubResource]'},
9982        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[SubResource]'},
9983        'outbound_rules': {'key': 'properties.outboundRules', 'type': '[SubResource]'},
9984        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
9985        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
9986        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
9987        'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'},
9988        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
9989        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
9990        'public_ip_prefix': {'key': 'properties.publicIPPrefix', 'type': 'SubResource'},
9991        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9992    }
9993
9994    def __init__(
9995        self,
9996        *,
9997        id: Optional[str] = None,
9998        name: Optional[str] = None,
9999        zones: Optional[List[str]] = None,
10000        private_ip_address: Optional[str] = None,
10001        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
10002        private_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
10003        subnet: Optional["Subnet"] = None,
10004        public_ip_address: Optional["PublicIPAddress"] = None,
10005        public_ip_prefix: Optional["SubResource"] = None,
10006        **kwargs
10007    ):
10008        super(FrontendIPConfiguration, self).__init__(id=id, **kwargs)
10009        self.name = name
10010        self.etag = None
10011        self.type = None
10012        self.zones = zones
10013        self.inbound_nat_rules = None
10014        self.inbound_nat_pools = None
10015        self.outbound_rules = None
10016        self.load_balancing_rules = None
10017        self.private_ip_address = private_ip_address
10018        self.private_ip_allocation_method = private_ip_allocation_method
10019        self.private_ip_address_version = private_ip_address_version
10020        self.subnet = subnet
10021        self.public_ip_address = public_ip_address
10022        self.public_ip_prefix = public_ip_prefix
10023        self.provisioning_state = None
10024
10025
10026class GatewayRoute(msrest.serialization.Model):
10027    """Gateway routing details.
10028
10029    Variables are only populated by the server, and will be ignored when sending a request.
10030
10031    :ivar local_address: The gateway's local address.
10032    :vartype local_address: str
10033    :ivar network: The route's network prefix.
10034    :vartype network: str
10035    :ivar next_hop: The route's next hop.
10036    :vartype next_hop: str
10037    :ivar source_peer: The peer this route was learned from.
10038    :vartype source_peer: str
10039    :ivar origin: The source this route was learned from.
10040    :vartype origin: str
10041    :ivar as_path: The route's AS path sequence.
10042    :vartype as_path: str
10043    :ivar weight: The route's weight.
10044    :vartype weight: int
10045    """
10046
10047    _validation = {
10048        'local_address': {'readonly': True},
10049        'network': {'readonly': True},
10050        'next_hop': {'readonly': True},
10051        'source_peer': {'readonly': True},
10052        'origin': {'readonly': True},
10053        'as_path': {'readonly': True},
10054        'weight': {'readonly': True},
10055    }
10056
10057    _attribute_map = {
10058        'local_address': {'key': 'localAddress', 'type': 'str'},
10059        'network': {'key': 'network', 'type': 'str'},
10060        'next_hop': {'key': 'nextHop', 'type': 'str'},
10061        'source_peer': {'key': 'sourcePeer', 'type': 'str'},
10062        'origin': {'key': 'origin', 'type': 'str'},
10063        'as_path': {'key': 'asPath', 'type': 'str'},
10064        'weight': {'key': 'weight', 'type': 'int'},
10065    }
10066
10067    def __init__(
10068        self,
10069        **kwargs
10070    ):
10071        super(GatewayRoute, self).__init__(**kwargs)
10072        self.local_address = None
10073        self.network = None
10074        self.next_hop = None
10075        self.source_peer = None
10076        self.origin = None
10077        self.as_path = None
10078        self.weight = None
10079
10080
10081class GatewayRouteListResult(msrest.serialization.Model):
10082    """List of virtual network gateway routes.
10083
10084    :param value: List of gateway routes.
10085    :type value: list[~azure.mgmt.network.v2019_12_01.models.GatewayRoute]
10086    """
10087
10088    _attribute_map = {
10089        'value': {'key': 'value', 'type': '[GatewayRoute]'},
10090    }
10091
10092    def __init__(
10093        self,
10094        *,
10095        value: Optional[List["GatewayRoute"]] = None,
10096        **kwargs
10097    ):
10098        super(GatewayRouteListResult, self).__init__(**kwargs)
10099        self.value = value
10100
10101
10102class GetVpnSitesConfigurationRequest(msrest.serialization.Model):
10103    """List of Vpn-Sites.
10104
10105    All required parameters must be populated in order to send to Azure.
10106
10107    :param vpn_sites: List of resource-ids of the vpn-sites for which config is to be downloaded.
10108    :type vpn_sites: list[str]
10109    :param output_blob_sas_url: Required. The sas-url to download the configurations for vpn-sites.
10110    :type output_blob_sas_url: str
10111    """
10112
10113    _validation = {
10114        'output_blob_sas_url': {'required': True},
10115    }
10116
10117    _attribute_map = {
10118        'vpn_sites': {'key': 'vpnSites', 'type': '[str]'},
10119        'output_blob_sas_url': {'key': 'outputBlobSasUrl', 'type': 'str'},
10120    }
10121
10122    def __init__(
10123        self,
10124        *,
10125        output_blob_sas_url: str,
10126        vpn_sites: Optional[List[str]] = None,
10127        **kwargs
10128    ):
10129        super(GetVpnSitesConfigurationRequest, self).__init__(**kwargs)
10130        self.vpn_sites = vpn_sites
10131        self.output_blob_sas_url = output_blob_sas_url
10132
10133
10134class HTTPConfiguration(msrest.serialization.Model):
10135    """HTTP configuration of the connectivity check.
10136
10137    :param method: HTTP method. Possible values include: "Get".
10138    :type method: str or ~azure.mgmt.network.v2019_12_01.models.HTTPMethod
10139    :param headers: List of HTTP headers.
10140    :type headers: list[~azure.mgmt.network.v2019_12_01.models.HTTPHeader]
10141    :param valid_status_codes: Valid status codes.
10142    :type valid_status_codes: list[int]
10143    """
10144
10145    _attribute_map = {
10146        'method': {'key': 'method', 'type': 'str'},
10147        'headers': {'key': 'headers', 'type': '[HTTPHeader]'},
10148        'valid_status_codes': {'key': 'validStatusCodes', 'type': '[int]'},
10149    }
10150
10151    def __init__(
10152        self,
10153        *,
10154        method: Optional[Union[str, "HTTPMethod"]] = None,
10155        headers: Optional[List["HTTPHeader"]] = None,
10156        valid_status_codes: Optional[List[int]] = None,
10157        **kwargs
10158    ):
10159        super(HTTPConfiguration, self).__init__(**kwargs)
10160        self.method = method
10161        self.headers = headers
10162        self.valid_status_codes = valid_status_codes
10163
10164
10165class HTTPHeader(msrest.serialization.Model):
10166    """The HTTP header.
10167
10168    :param name: The name in HTTP header.
10169    :type name: str
10170    :param value: The value in HTTP header.
10171    :type value: str
10172    """
10173
10174    _attribute_map = {
10175        'name': {'key': 'name', 'type': 'str'},
10176        'value': {'key': 'value', 'type': 'str'},
10177    }
10178
10179    def __init__(
10180        self,
10181        *,
10182        name: Optional[str] = None,
10183        value: Optional[str] = None,
10184        **kwargs
10185    ):
10186        super(HTTPHeader, self).__init__(**kwargs)
10187        self.name = name
10188        self.value = value
10189
10190
10191class HubIPAddresses(msrest.serialization.Model):
10192    """IP addresses associated with azure firewall.
10193
10194    :param public_ip_addresses: List of Public IP addresses associated with azure firewall.
10195    :type public_ip_addresses:
10196     list[~azure.mgmt.network.v2019_12_01.models.AzureFirewallPublicIPAddress]
10197    :param private_ip_address: Private IP Address associated with azure firewall.
10198    :type private_ip_address: str
10199    """
10200
10201    _attribute_map = {
10202        'public_ip_addresses': {'key': 'publicIPAddresses', 'type': '[AzureFirewallPublicIPAddress]'},
10203        'private_ip_address': {'key': 'privateIPAddress', 'type': 'str'},
10204    }
10205
10206    def __init__(
10207        self,
10208        *,
10209        public_ip_addresses: Optional[List["AzureFirewallPublicIPAddress"]] = None,
10210        private_ip_address: Optional[str] = None,
10211        **kwargs
10212    ):
10213        super(HubIPAddresses, self).__init__(**kwargs)
10214        self.public_ip_addresses = public_ip_addresses
10215        self.private_ip_address = private_ip_address
10216
10217
10218class HubVirtualNetworkConnection(SubResource):
10219    """HubVirtualNetworkConnection Resource.
10220
10221    Variables are only populated by the server, and will be ignored when sending a request.
10222
10223    :param id: Resource ID.
10224    :type id: str
10225    :param name: The name of the resource that is unique within a resource group. This name can be
10226     used to access the resource.
10227    :type name: str
10228    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10229    :vartype etag: str
10230    :param remote_virtual_network: Reference to the remote virtual network.
10231    :type remote_virtual_network: ~azure.mgmt.network.v2019_12_01.models.SubResource
10232    :param allow_hub_to_remote_vnet_transit: VirtualHub to RemoteVnet transit to enabled or not.
10233    :type allow_hub_to_remote_vnet_transit: bool
10234    :param allow_remote_vnet_to_use_hub_vnet_gateways: Allow RemoteVnet to use Virtual Hub's
10235     gateways.
10236    :type allow_remote_vnet_to_use_hub_vnet_gateways: bool
10237    :param enable_internet_security: Enable internet security.
10238    :type enable_internet_security: bool
10239    :ivar provisioning_state: The provisioning state of the hub virtual network connection
10240     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
10241    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
10242    """
10243
10244    _validation = {
10245        'etag': {'readonly': True},
10246        'provisioning_state': {'readonly': True},
10247    }
10248
10249    _attribute_map = {
10250        'id': {'key': 'id', 'type': 'str'},
10251        'name': {'key': 'name', 'type': 'str'},
10252        'etag': {'key': 'etag', 'type': 'str'},
10253        'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'},
10254        'allow_hub_to_remote_vnet_transit': {'key': 'properties.allowHubToRemoteVnetTransit', 'type': 'bool'},
10255        'allow_remote_vnet_to_use_hub_vnet_gateways': {'key': 'properties.allowRemoteVnetToUseHubVnetGateways', 'type': 'bool'},
10256        'enable_internet_security': {'key': 'properties.enableInternetSecurity', 'type': 'bool'},
10257        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10258    }
10259
10260    def __init__(
10261        self,
10262        *,
10263        id: Optional[str] = None,
10264        name: Optional[str] = None,
10265        remote_virtual_network: Optional["SubResource"] = None,
10266        allow_hub_to_remote_vnet_transit: Optional[bool] = None,
10267        allow_remote_vnet_to_use_hub_vnet_gateways: Optional[bool] = None,
10268        enable_internet_security: Optional[bool] = None,
10269        **kwargs
10270    ):
10271        super(HubVirtualNetworkConnection, self).__init__(id=id, **kwargs)
10272        self.name = name
10273        self.etag = None
10274        self.remote_virtual_network = remote_virtual_network
10275        self.allow_hub_to_remote_vnet_transit = allow_hub_to_remote_vnet_transit
10276        self.allow_remote_vnet_to_use_hub_vnet_gateways = allow_remote_vnet_to_use_hub_vnet_gateways
10277        self.enable_internet_security = enable_internet_security
10278        self.provisioning_state = None
10279
10280
10281class InboundNatPool(SubResource):
10282    """Inbound NAT pool of the load balancer.
10283
10284    Variables are only populated by the server, and will be ignored when sending a request.
10285
10286    :param id: Resource ID.
10287    :type id: str
10288    :param name: The name of the resource that is unique within the set of inbound NAT pools used
10289     by the load balancer. This name can be used to access the resource.
10290    :type name: str
10291    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10292    :vartype etag: str
10293    :ivar type: Type of the resource.
10294    :vartype type: str
10295    :param frontend_ip_configuration: A reference to frontend IP addresses.
10296    :type frontend_ip_configuration: ~azure.mgmt.network.v2019_12_01.models.SubResource
10297    :param protocol: The reference to the transport protocol used by the inbound NAT pool. Possible
10298     values include: "Udp", "Tcp", "All".
10299    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.TransportProtocol
10300    :param frontend_port_range_start: The first port number in the range of external ports that
10301     will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values
10302     range between 1 and 65534.
10303    :type frontend_port_range_start: int
10304    :param frontend_port_range_end: The last port number in the range of external ports that will
10305     be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range
10306     between 1 and 65535.
10307    :type frontend_port_range_end: int
10308    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
10309     are between 1 and 65535.
10310    :type backend_port: int
10311    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
10312     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
10313     protocol is set to TCP.
10314    :type idle_timeout_in_minutes: int
10315    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
10316     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
10317     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
10318     after you create the endpoint.
10319    :type enable_floating_ip: bool
10320    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
10321     connection termination. This element is only used when the protocol is set to TCP.
10322    :type enable_tcp_reset: bool
10323    :ivar provisioning_state: The provisioning state of the inbound NAT pool resource. Possible
10324     values include: "Succeeded", "Updating", "Deleting", "Failed".
10325    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
10326    """
10327
10328    _validation = {
10329        'etag': {'readonly': True},
10330        'type': {'readonly': True},
10331        'provisioning_state': {'readonly': True},
10332    }
10333
10334    _attribute_map = {
10335        'id': {'key': 'id', 'type': 'str'},
10336        'name': {'key': 'name', 'type': 'str'},
10337        'etag': {'key': 'etag', 'type': 'str'},
10338        'type': {'key': 'type', 'type': 'str'},
10339        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
10340        'protocol': {'key': 'properties.protocol', 'type': 'str'},
10341        'frontend_port_range_start': {'key': 'properties.frontendPortRangeStart', 'type': 'int'},
10342        'frontend_port_range_end': {'key': 'properties.frontendPortRangeEnd', 'type': 'int'},
10343        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
10344        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
10345        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
10346        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
10347        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10348    }
10349
10350    def __init__(
10351        self,
10352        *,
10353        id: Optional[str] = None,
10354        name: Optional[str] = None,
10355        frontend_ip_configuration: Optional["SubResource"] = None,
10356        protocol: Optional[Union[str, "TransportProtocol"]] = None,
10357        frontend_port_range_start: Optional[int] = None,
10358        frontend_port_range_end: Optional[int] = None,
10359        backend_port: Optional[int] = None,
10360        idle_timeout_in_minutes: Optional[int] = None,
10361        enable_floating_ip: Optional[bool] = None,
10362        enable_tcp_reset: Optional[bool] = None,
10363        **kwargs
10364    ):
10365        super(InboundNatPool, self).__init__(id=id, **kwargs)
10366        self.name = name
10367        self.etag = None
10368        self.type = None
10369        self.frontend_ip_configuration = frontend_ip_configuration
10370        self.protocol = protocol
10371        self.frontend_port_range_start = frontend_port_range_start
10372        self.frontend_port_range_end = frontend_port_range_end
10373        self.backend_port = backend_port
10374        self.idle_timeout_in_minutes = idle_timeout_in_minutes
10375        self.enable_floating_ip = enable_floating_ip
10376        self.enable_tcp_reset = enable_tcp_reset
10377        self.provisioning_state = None
10378
10379
10380class InboundNatRule(SubResource):
10381    """Inbound NAT rule of the load balancer.
10382
10383    Variables are only populated by the server, and will be ignored when sending a request.
10384
10385    :param id: Resource ID.
10386    :type id: str
10387    :param name: The name of the resource that is unique within the set of inbound NAT rules used
10388     by the load balancer. This name can be used to access the resource.
10389    :type name: str
10390    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10391    :vartype etag: str
10392    :ivar type: Type of the resource.
10393    :vartype type: str
10394    :param frontend_ip_configuration: A reference to frontend IP addresses.
10395    :type frontend_ip_configuration: ~azure.mgmt.network.v2019_12_01.models.SubResource
10396    :ivar backend_ip_configuration: A reference to a private IP address defined on a network
10397     interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations
10398     is forwarded to the backend IP.
10399    :vartype backend_ip_configuration:
10400     ~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceIPConfiguration
10401    :param protocol: The reference to the transport protocol used by the load balancing rule.
10402     Possible values include: "Udp", "Tcp", "All".
10403    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.TransportProtocol
10404    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
10405     unique within the Load Balancer. Acceptable values range from 1 to 65534.
10406    :type frontend_port: int
10407    :param backend_port: The port used for the internal endpoint. Acceptable values range from 1 to
10408     65535.
10409    :type backend_port: int
10410    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
10411     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
10412     protocol is set to TCP.
10413    :type idle_timeout_in_minutes: int
10414    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
10415     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
10416     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
10417     after you create the endpoint.
10418    :type enable_floating_ip: bool
10419    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
10420     connection termination. This element is only used when the protocol is set to TCP.
10421    :type enable_tcp_reset: bool
10422    :ivar provisioning_state: The provisioning state of the inbound NAT rule resource. Possible
10423     values include: "Succeeded", "Updating", "Deleting", "Failed".
10424    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
10425    """
10426
10427    _validation = {
10428        'etag': {'readonly': True},
10429        'type': {'readonly': True},
10430        'backend_ip_configuration': {'readonly': True},
10431        'provisioning_state': {'readonly': True},
10432    }
10433
10434    _attribute_map = {
10435        'id': {'key': 'id', 'type': 'str'},
10436        'name': {'key': 'name', 'type': 'str'},
10437        'etag': {'key': 'etag', 'type': 'str'},
10438        'type': {'key': 'type', 'type': 'str'},
10439        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
10440        'backend_ip_configuration': {'key': 'properties.backendIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
10441        'protocol': {'key': 'properties.protocol', 'type': 'str'},
10442        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
10443        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
10444        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
10445        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
10446        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
10447        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10448    }
10449
10450    def __init__(
10451        self,
10452        *,
10453        id: Optional[str] = None,
10454        name: Optional[str] = None,
10455        frontend_ip_configuration: Optional["SubResource"] = None,
10456        protocol: Optional[Union[str, "TransportProtocol"]] = None,
10457        frontend_port: Optional[int] = None,
10458        backend_port: Optional[int] = None,
10459        idle_timeout_in_minutes: Optional[int] = None,
10460        enable_floating_ip: Optional[bool] = None,
10461        enable_tcp_reset: Optional[bool] = None,
10462        **kwargs
10463    ):
10464        super(InboundNatRule, self).__init__(id=id, **kwargs)
10465        self.name = name
10466        self.etag = None
10467        self.type = None
10468        self.frontend_ip_configuration = frontend_ip_configuration
10469        self.backend_ip_configuration = None
10470        self.protocol = protocol
10471        self.frontend_port = frontend_port
10472        self.backend_port = backend_port
10473        self.idle_timeout_in_minutes = idle_timeout_in_minutes
10474        self.enable_floating_ip = enable_floating_ip
10475        self.enable_tcp_reset = enable_tcp_reset
10476        self.provisioning_state = None
10477
10478
10479class InboundNatRuleListResult(msrest.serialization.Model):
10480    """Response for ListInboundNatRule API service call.
10481
10482    Variables are only populated by the server, and will be ignored when sending a request.
10483
10484    :param value: A list of inbound nat rules in a load balancer.
10485    :type value: list[~azure.mgmt.network.v2019_12_01.models.InboundNatRule]
10486    :ivar next_link: The URL to get the next set of results.
10487    :vartype next_link: str
10488    """
10489
10490    _validation = {
10491        'next_link': {'readonly': True},
10492    }
10493
10494    _attribute_map = {
10495        'value': {'key': 'value', 'type': '[InboundNatRule]'},
10496        'next_link': {'key': 'nextLink', 'type': 'str'},
10497    }
10498
10499    def __init__(
10500        self,
10501        *,
10502        value: Optional[List["InboundNatRule"]] = None,
10503        **kwargs
10504    ):
10505        super(InboundNatRuleListResult, self).__init__(**kwargs)
10506        self.value = value
10507        self.next_link = None
10508
10509
10510class IPAddressAvailabilityResult(msrest.serialization.Model):
10511    """Response for CheckIPAddressAvailability API service call.
10512
10513    :param available: Private IP address availability.
10514    :type available: bool
10515    :param available_ip_addresses: Contains other available private IP addresses if the asked for
10516     address is taken.
10517    :type available_ip_addresses: list[str]
10518    """
10519
10520    _attribute_map = {
10521        'available': {'key': 'available', 'type': 'bool'},
10522        'available_ip_addresses': {'key': 'availableIPAddresses', 'type': '[str]'},
10523    }
10524
10525    def __init__(
10526        self,
10527        *,
10528        available: Optional[bool] = None,
10529        available_ip_addresses: Optional[List[str]] = None,
10530        **kwargs
10531    ):
10532        super(IPAddressAvailabilityResult, self).__init__(**kwargs)
10533        self.available = available
10534        self.available_ip_addresses = available_ip_addresses
10535
10536
10537class IPConfiguration(SubResource):
10538    """IP configuration.
10539
10540    Variables are only populated by the server, and will be ignored when sending a request.
10541
10542    :param id: Resource ID.
10543    :type id: str
10544    :param name: The name of the resource that is unique within a resource group. This name can be
10545     used to access the resource.
10546    :type name: str
10547    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10548    :vartype etag: str
10549    :param private_ip_address: The private IP address of the IP configuration.
10550    :type private_ip_address: str
10551    :param private_ip_allocation_method: The private IP address allocation method. Possible values
10552     include: "Static", "Dynamic".
10553    :type private_ip_allocation_method: str or
10554     ~azure.mgmt.network.v2019_12_01.models.IPAllocationMethod
10555    :param subnet: The reference to the subnet resource.
10556    :type subnet: ~azure.mgmt.network.v2019_12_01.models.Subnet
10557    :param public_ip_address: The reference to the public IP resource.
10558    :type public_ip_address: ~azure.mgmt.network.v2019_12_01.models.PublicIPAddress
10559    :ivar provisioning_state: The provisioning state of the IP configuration resource. Possible
10560     values include: "Succeeded", "Updating", "Deleting", "Failed".
10561    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
10562    """
10563
10564    _validation = {
10565        'etag': {'readonly': True},
10566        'provisioning_state': {'readonly': True},
10567    }
10568
10569    _attribute_map = {
10570        'id': {'key': 'id', 'type': 'str'},
10571        'name': {'key': 'name', 'type': 'str'},
10572        'etag': {'key': 'etag', 'type': 'str'},
10573        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
10574        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
10575        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
10576        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
10577        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10578    }
10579
10580    def __init__(
10581        self,
10582        *,
10583        id: Optional[str] = None,
10584        name: Optional[str] = None,
10585        private_ip_address: Optional[str] = None,
10586        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
10587        subnet: Optional["Subnet"] = None,
10588        public_ip_address: Optional["PublicIPAddress"] = None,
10589        **kwargs
10590    ):
10591        super(IPConfiguration, self).__init__(id=id, **kwargs)
10592        self.name = name
10593        self.etag = None
10594        self.private_ip_address = private_ip_address
10595        self.private_ip_allocation_method = private_ip_allocation_method
10596        self.subnet = subnet
10597        self.public_ip_address = public_ip_address
10598        self.provisioning_state = None
10599
10600
10601class IPConfigurationBgpPeeringAddress(msrest.serialization.Model):
10602    """Properties of IPConfigurationBgpPeeringAddress.
10603
10604    Variables are only populated by the server, and will be ignored when sending a request.
10605
10606    :param ipconfiguration_id: The ID of IP configuration which belongs to gateway.
10607    :type ipconfiguration_id: str
10608    :ivar default_bgp_ip_addresses: The list of default BGP peering addresses which belong to IP
10609     configuration.
10610    :vartype default_bgp_ip_addresses: list[str]
10611    :param custom_bgp_ip_addresses: The list of custom BGP peering addresses which belong to IP
10612     configuration.
10613    :type custom_bgp_ip_addresses: list[str]
10614    :ivar tunnel_ip_addresses: The list of tunnel public IP addresses which belong to IP
10615     configuration.
10616    :vartype tunnel_ip_addresses: list[str]
10617    """
10618
10619    _validation = {
10620        'default_bgp_ip_addresses': {'readonly': True},
10621        'tunnel_ip_addresses': {'readonly': True},
10622    }
10623
10624    _attribute_map = {
10625        'ipconfiguration_id': {'key': 'ipconfigurationId', 'type': 'str'},
10626        'default_bgp_ip_addresses': {'key': 'defaultBgpIpAddresses', 'type': '[str]'},
10627        'custom_bgp_ip_addresses': {'key': 'customBgpIpAddresses', 'type': '[str]'},
10628        'tunnel_ip_addresses': {'key': 'tunnelIpAddresses', 'type': '[str]'},
10629    }
10630
10631    def __init__(
10632        self,
10633        *,
10634        ipconfiguration_id: Optional[str] = None,
10635        custom_bgp_ip_addresses: Optional[List[str]] = None,
10636        **kwargs
10637    ):
10638        super(IPConfigurationBgpPeeringAddress, self).__init__(**kwargs)
10639        self.ipconfiguration_id = ipconfiguration_id
10640        self.default_bgp_ip_addresses = None
10641        self.custom_bgp_ip_addresses = custom_bgp_ip_addresses
10642        self.tunnel_ip_addresses = None
10643
10644
10645class IPConfigurationProfile(SubResource):
10646    """IP configuration profile child resource.
10647
10648    Variables are only populated by the server, and will be ignored when sending a request.
10649
10650    :param id: Resource ID.
10651    :type id: str
10652    :param name: The name of the resource. This name can be used to access the resource.
10653    :type name: str
10654    :ivar type: Sub Resource type.
10655    :vartype type: str
10656    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10657    :vartype etag: str
10658    :param subnet: The reference to the subnet resource to create a container network interface ip
10659     configuration.
10660    :type subnet: ~azure.mgmt.network.v2019_12_01.models.Subnet
10661    :ivar provisioning_state: The provisioning state of the IP configuration profile resource.
10662     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
10663    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
10664    """
10665
10666    _validation = {
10667        'type': {'readonly': True},
10668        'etag': {'readonly': True},
10669        'provisioning_state': {'readonly': True},
10670    }
10671
10672    _attribute_map = {
10673        'id': {'key': 'id', 'type': 'str'},
10674        'name': {'key': 'name', 'type': 'str'},
10675        'type': {'key': 'type', 'type': 'str'},
10676        'etag': {'key': 'etag', 'type': 'str'},
10677        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
10678        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10679    }
10680
10681    def __init__(
10682        self,
10683        *,
10684        id: Optional[str] = None,
10685        name: Optional[str] = None,
10686        subnet: Optional["Subnet"] = None,
10687        **kwargs
10688    ):
10689        super(IPConfigurationProfile, self).__init__(id=id, **kwargs)
10690        self.name = name
10691        self.type = None
10692        self.etag = None
10693        self.subnet = subnet
10694        self.provisioning_state = None
10695
10696
10697class IpGroup(Resource):
10698    """The IpGroups resource information.
10699
10700    Variables are only populated by the server, and will be ignored when sending a request.
10701
10702    :param id: Resource ID.
10703    :type id: str
10704    :ivar name: Resource name.
10705    :vartype name: str
10706    :ivar type: Resource type.
10707    :vartype type: str
10708    :param location: Resource location.
10709    :type location: str
10710    :param tags: A set of tags. Resource tags.
10711    :type tags: dict[str, str]
10712    :ivar etag: A unique read-only string that changes whenever the resource is updated.
10713    :vartype etag: str
10714    :ivar provisioning_state: The provisioning state of the IpGroups resource. Possible values
10715     include: "Succeeded", "Updating", "Deleting", "Failed".
10716    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
10717    :param ip_addresses: IpAddresses/IpAddressPrefixes in the IpGroups resource.
10718    :type ip_addresses: list[str]
10719    :ivar firewalls: List of references to Azure resources that this IpGroups is associated with.
10720    :vartype firewalls: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
10721    """
10722
10723    _validation = {
10724        'name': {'readonly': True},
10725        'type': {'readonly': True},
10726        'etag': {'readonly': True},
10727        'provisioning_state': {'readonly': True},
10728        'firewalls': {'readonly': True},
10729    }
10730
10731    _attribute_map = {
10732        'id': {'key': 'id', 'type': 'str'},
10733        'name': {'key': 'name', 'type': 'str'},
10734        'type': {'key': 'type', 'type': 'str'},
10735        'location': {'key': 'location', 'type': 'str'},
10736        'tags': {'key': 'tags', 'type': '{str}'},
10737        'etag': {'key': 'etag', 'type': 'str'},
10738        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10739        'ip_addresses': {'key': 'properties.ipAddresses', 'type': '[str]'},
10740        'firewalls': {'key': 'properties.firewalls', 'type': '[SubResource]'},
10741    }
10742
10743    def __init__(
10744        self,
10745        *,
10746        id: Optional[str] = None,
10747        location: Optional[str] = None,
10748        tags: Optional[Dict[str, str]] = None,
10749        ip_addresses: Optional[List[str]] = None,
10750        **kwargs
10751    ):
10752        super(IpGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
10753        self.etag = None
10754        self.provisioning_state = None
10755        self.ip_addresses = ip_addresses
10756        self.firewalls = None
10757
10758
10759class IpGroupListResult(msrest.serialization.Model):
10760    """Response for the ListIpGroups API service call.
10761
10762    :param value: The list of IpGroups information resources.
10763    :type value: list[~azure.mgmt.network.v2019_12_01.models.IpGroup]
10764    :param next_link: URL to get the next set of results.
10765    :type next_link: str
10766    """
10767
10768    _attribute_map = {
10769        'value': {'key': 'value', 'type': '[IpGroup]'},
10770        'next_link': {'key': 'nextLink', 'type': 'str'},
10771    }
10772
10773    def __init__(
10774        self,
10775        *,
10776        value: Optional[List["IpGroup"]] = None,
10777        next_link: Optional[str] = None,
10778        **kwargs
10779    ):
10780        super(IpGroupListResult, self).__init__(**kwargs)
10781        self.value = value
10782        self.next_link = next_link
10783
10784
10785class IpsecPolicy(msrest.serialization.Model):
10786    """An IPSec Policy configuration for a virtual network gateway connection.
10787
10788    All required parameters must be populated in order to send to Azure.
10789
10790    :param sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode
10791     or Phase 2 SA) lifetime in seconds for a site to site VPN tunnel.
10792    :type sa_life_time_seconds: int
10793    :param sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode
10794     or Phase 2 SA) payload size in KB for a site to site VPN tunnel.
10795    :type sa_data_size_kilobytes: int
10796    :param ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible
10797     values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192",
10798     "GCMAES256".
10799    :type ipsec_encryption: str or ~azure.mgmt.network.v2019_12_01.models.IpsecEncryption
10800    :param ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values
10801     include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256".
10802    :type ipsec_integrity: str or ~azure.mgmt.network.v2019_12_01.models.IpsecIntegrity
10803    :param ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values
10804     include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128".
10805    :type ike_encryption: str or ~azure.mgmt.network.v2019_12_01.models.IkeEncryption
10806    :param ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values
10807     include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128".
10808    :type ike_integrity: str or ~azure.mgmt.network.v2019_12_01.models.IkeIntegrity
10809    :param dh_group: Required. The DH Group used in IKE Phase 1 for initial SA. Possible values
10810     include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384",
10811     "DHGroup24".
10812    :type dh_group: str or ~azure.mgmt.network.v2019_12_01.models.DhGroup
10813    :param pfs_group: Required. The Pfs Group used in IKE Phase 2 for new child SA. Possible values
10814     include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14", "PFSMM".
10815    :type pfs_group: str or ~azure.mgmt.network.v2019_12_01.models.PfsGroup
10816    """
10817
10818    _validation = {
10819        'sa_life_time_seconds': {'required': True},
10820        'sa_data_size_kilobytes': {'required': True},
10821        'ipsec_encryption': {'required': True},
10822        'ipsec_integrity': {'required': True},
10823        'ike_encryption': {'required': True},
10824        'ike_integrity': {'required': True},
10825        'dh_group': {'required': True},
10826        'pfs_group': {'required': True},
10827    }
10828
10829    _attribute_map = {
10830        'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'},
10831        'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'},
10832        'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'},
10833        'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'},
10834        'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'},
10835        'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'},
10836        'dh_group': {'key': 'dhGroup', 'type': 'str'},
10837        'pfs_group': {'key': 'pfsGroup', 'type': 'str'},
10838    }
10839
10840    def __init__(
10841        self,
10842        *,
10843        sa_life_time_seconds: int,
10844        sa_data_size_kilobytes: int,
10845        ipsec_encryption: Union[str, "IpsecEncryption"],
10846        ipsec_integrity: Union[str, "IpsecIntegrity"],
10847        ike_encryption: Union[str, "IkeEncryption"],
10848        ike_integrity: Union[str, "IkeIntegrity"],
10849        dh_group: Union[str, "DhGroup"],
10850        pfs_group: Union[str, "PfsGroup"],
10851        **kwargs
10852    ):
10853        super(IpsecPolicy, self).__init__(**kwargs)
10854        self.sa_life_time_seconds = sa_life_time_seconds
10855        self.sa_data_size_kilobytes = sa_data_size_kilobytes
10856        self.ipsec_encryption = ipsec_encryption
10857        self.ipsec_integrity = ipsec_integrity
10858        self.ike_encryption = ike_encryption
10859        self.ike_integrity = ike_integrity
10860        self.dh_group = dh_group
10861        self.pfs_group = pfs_group
10862
10863
10864class IpTag(msrest.serialization.Model):
10865    """Contains the IpTag associated with the object.
10866
10867    :param ip_tag_type: The IP tag type. Example: FirstPartyUsage.
10868    :type ip_tag_type: str
10869    :param tag: The value of the IP tag associated with the public IP. Example: SQL.
10870    :type tag: str
10871    """
10872
10873    _attribute_map = {
10874        'ip_tag_type': {'key': 'ipTagType', 'type': 'str'},
10875        'tag': {'key': 'tag', 'type': 'str'},
10876    }
10877
10878    def __init__(
10879        self,
10880        *,
10881        ip_tag_type: Optional[str] = None,
10882        tag: Optional[str] = None,
10883        **kwargs
10884    ):
10885        super(IpTag, self).__init__(**kwargs)
10886        self.ip_tag_type = ip_tag_type
10887        self.tag = tag
10888
10889
10890class Ipv6CircuitConnectionConfig(msrest.serialization.Model):
10891    """IPv6 Circuit Connection properties for global reach.
10892
10893    Variables are only populated by the server, and will be ignored when sending a request.
10894
10895    :param address_prefix: /125 IP address space to carve out customer addresses for global reach.
10896    :type address_prefix: str
10897    :ivar circuit_connection_status: Express Route Circuit connection state. Possible values
10898     include: "Connected", "Connecting", "Disconnected".
10899    :vartype circuit_connection_status: str or
10900     ~azure.mgmt.network.v2019_12_01.models.CircuitConnectionStatus
10901    """
10902
10903    _validation = {
10904        'circuit_connection_status': {'readonly': True},
10905    }
10906
10907    _attribute_map = {
10908        'address_prefix': {'key': 'addressPrefix', 'type': 'str'},
10909        'circuit_connection_status': {'key': 'circuitConnectionStatus', 'type': 'str'},
10910    }
10911
10912    def __init__(
10913        self,
10914        *,
10915        address_prefix: Optional[str] = None,
10916        **kwargs
10917    ):
10918        super(Ipv6CircuitConnectionConfig, self).__init__(**kwargs)
10919        self.address_prefix = address_prefix
10920        self.circuit_connection_status = None
10921
10922
10923class Ipv6ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
10924    """Contains IPv6 peering config.
10925
10926    :param primary_peer_address_prefix: The primary address prefix.
10927    :type primary_peer_address_prefix: str
10928    :param secondary_peer_address_prefix: The secondary address prefix.
10929    :type secondary_peer_address_prefix: str
10930    :param microsoft_peering_config: The Microsoft peering configuration.
10931    :type microsoft_peering_config:
10932     ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeeringConfig
10933    :param route_filter: The reference to the RouteFilter resource.
10934    :type route_filter: ~azure.mgmt.network.v2019_12_01.models.SubResource
10935    :param state: The state of peering. Possible values include: "Disabled", "Enabled".
10936    :type state: str or ~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeeringState
10937    """
10938
10939    _attribute_map = {
10940        'primary_peer_address_prefix': {'key': 'primaryPeerAddressPrefix', 'type': 'str'},
10941        'secondary_peer_address_prefix': {'key': 'secondaryPeerAddressPrefix', 'type': 'str'},
10942        'microsoft_peering_config': {'key': 'microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
10943        'route_filter': {'key': 'routeFilter', 'type': 'SubResource'},
10944        'state': {'key': 'state', 'type': 'str'},
10945    }
10946
10947    def __init__(
10948        self,
10949        *,
10950        primary_peer_address_prefix: Optional[str] = None,
10951        secondary_peer_address_prefix: Optional[str] = None,
10952        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
10953        route_filter: Optional["SubResource"] = None,
10954        state: Optional[Union[str, "ExpressRouteCircuitPeeringState"]] = None,
10955        **kwargs
10956    ):
10957        super(Ipv6ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
10958        self.primary_peer_address_prefix = primary_peer_address_prefix
10959        self.secondary_peer_address_prefix = secondary_peer_address_prefix
10960        self.microsoft_peering_config = microsoft_peering_config
10961        self.route_filter = route_filter
10962        self.state = state
10963
10964
10965class ListHubVirtualNetworkConnectionsResult(msrest.serialization.Model):
10966    """List of HubVirtualNetworkConnections and a URL nextLink to get the next set of results.
10967
10968    :param value: List of HubVirtualNetworkConnections.
10969    :type value: list[~azure.mgmt.network.v2019_12_01.models.HubVirtualNetworkConnection]
10970    :param next_link: URL to get the next set of operation list results if there are any.
10971    :type next_link: str
10972    """
10973
10974    _attribute_map = {
10975        'value': {'key': 'value', 'type': '[HubVirtualNetworkConnection]'},
10976        'next_link': {'key': 'nextLink', 'type': 'str'},
10977    }
10978
10979    def __init__(
10980        self,
10981        *,
10982        value: Optional[List["HubVirtualNetworkConnection"]] = None,
10983        next_link: Optional[str] = None,
10984        **kwargs
10985    ):
10986        super(ListHubVirtualNetworkConnectionsResult, self).__init__(**kwargs)
10987        self.value = value
10988        self.next_link = next_link
10989
10990
10991class ListP2SVpnGatewaysResult(msrest.serialization.Model):
10992    """Result of the request to list P2SVpnGateways. It contains a list of P2SVpnGateways and a URL nextLink to get the next set of results.
10993
10994    :param value: List of P2SVpnGateways.
10995    :type value: list[~azure.mgmt.network.v2019_12_01.models.P2SVpnGateway]
10996    :param next_link: URL to get the next set of operation list results if there are any.
10997    :type next_link: str
10998    """
10999
11000    _attribute_map = {
11001        'value': {'key': 'value', 'type': '[P2SVpnGateway]'},
11002        'next_link': {'key': 'nextLink', 'type': 'str'},
11003    }
11004
11005    def __init__(
11006        self,
11007        *,
11008        value: Optional[List["P2SVpnGateway"]] = None,
11009        next_link: Optional[str] = None,
11010        **kwargs
11011    ):
11012        super(ListP2SVpnGatewaysResult, self).__init__(**kwargs)
11013        self.value = value
11014        self.next_link = next_link
11015
11016
11017class ListVirtualHubRouteTableV2SResult(msrest.serialization.Model):
11018    """List of VirtualHubRouteTableV2s and a URL nextLink to get the next set of results.
11019
11020    :param value: List of VirtualHubRouteTableV2s.
11021    :type value: list[~azure.mgmt.network.v2019_12_01.models.VirtualHubRouteTableV2]
11022    :param next_link: URL to get the next set of operation list results if there are any.
11023    :type next_link: str
11024    """
11025
11026    _attribute_map = {
11027        'value': {'key': 'value', 'type': '[VirtualHubRouteTableV2]'},
11028        'next_link': {'key': 'nextLink', 'type': 'str'},
11029    }
11030
11031    def __init__(
11032        self,
11033        *,
11034        value: Optional[List["VirtualHubRouteTableV2"]] = None,
11035        next_link: Optional[str] = None,
11036        **kwargs
11037    ):
11038        super(ListVirtualHubRouteTableV2SResult, self).__init__(**kwargs)
11039        self.value = value
11040        self.next_link = next_link
11041
11042
11043class ListVirtualHubsResult(msrest.serialization.Model):
11044    """Result of the request to list VirtualHubs. It contains a list of VirtualHubs and a URL nextLink to get the next set of results.
11045
11046    :param value: List of VirtualHubs.
11047    :type value: list[~azure.mgmt.network.v2019_12_01.models.VirtualHub]
11048    :param next_link: URL to get the next set of operation list results if there are any.
11049    :type next_link: str
11050    """
11051
11052    _attribute_map = {
11053        'value': {'key': 'value', 'type': '[VirtualHub]'},
11054        'next_link': {'key': 'nextLink', 'type': 'str'},
11055    }
11056
11057    def __init__(
11058        self,
11059        *,
11060        value: Optional[List["VirtualHub"]] = None,
11061        next_link: Optional[str] = None,
11062        **kwargs
11063    ):
11064        super(ListVirtualHubsResult, self).__init__(**kwargs)
11065        self.value = value
11066        self.next_link = next_link
11067
11068
11069class ListVirtualWANsResult(msrest.serialization.Model):
11070    """Result of the request to list VirtualWANs. It contains a list of VirtualWANs and a URL nextLink to get the next set of results.
11071
11072    :param value: List of VirtualWANs.
11073    :type value: list[~azure.mgmt.network.v2019_12_01.models.VirtualWAN]
11074    :param next_link: URL to get the next set of operation list results if there are any.
11075    :type next_link: str
11076    """
11077
11078    _attribute_map = {
11079        'value': {'key': 'value', 'type': '[VirtualWAN]'},
11080        'next_link': {'key': 'nextLink', 'type': 'str'},
11081    }
11082
11083    def __init__(
11084        self,
11085        *,
11086        value: Optional[List["VirtualWAN"]] = None,
11087        next_link: Optional[str] = None,
11088        **kwargs
11089    ):
11090        super(ListVirtualWANsResult, self).__init__(**kwargs)
11091        self.value = value
11092        self.next_link = next_link
11093
11094
11095class ListVpnConnectionsResult(msrest.serialization.Model):
11096    """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.
11097
11098    :param value: List of Vpn Connections.
11099    :type value: list[~azure.mgmt.network.v2019_12_01.models.VpnConnection]
11100    :param next_link: URL to get the next set of operation list results if there are any.
11101    :type next_link: str
11102    """
11103
11104    _attribute_map = {
11105        'value': {'key': 'value', 'type': '[VpnConnection]'},
11106        'next_link': {'key': 'nextLink', 'type': 'str'},
11107    }
11108
11109    def __init__(
11110        self,
11111        *,
11112        value: Optional[List["VpnConnection"]] = None,
11113        next_link: Optional[str] = None,
11114        **kwargs
11115    ):
11116        super(ListVpnConnectionsResult, self).__init__(**kwargs)
11117        self.value = value
11118        self.next_link = next_link
11119
11120
11121class ListVpnGatewaysResult(msrest.serialization.Model):
11122    """Result of the request to list VpnGateways. It contains a list of VpnGateways and a URL nextLink to get the next set of results.
11123
11124    :param value: List of VpnGateways.
11125    :type value: list[~azure.mgmt.network.v2019_12_01.models.VpnGateway]
11126    :param next_link: URL to get the next set of operation list results if there are any.
11127    :type next_link: str
11128    """
11129
11130    _attribute_map = {
11131        'value': {'key': 'value', 'type': '[VpnGateway]'},
11132        'next_link': {'key': 'nextLink', 'type': 'str'},
11133    }
11134
11135    def __init__(
11136        self,
11137        *,
11138        value: Optional[List["VpnGateway"]] = None,
11139        next_link: Optional[str] = None,
11140        **kwargs
11141    ):
11142        super(ListVpnGatewaysResult, self).__init__(**kwargs)
11143        self.value = value
11144        self.next_link = next_link
11145
11146
11147class ListVpnServerConfigurationsResult(msrest.serialization.Model):
11148    """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.
11149
11150    :param value: List of VpnServerConfigurations.
11151    :type value: list[~azure.mgmt.network.v2019_12_01.models.VpnServerConfiguration]
11152    :param next_link: URL to get the next set of operation list results if there are any.
11153    :type next_link: str
11154    """
11155
11156    _attribute_map = {
11157        'value': {'key': 'value', 'type': '[VpnServerConfiguration]'},
11158        'next_link': {'key': 'nextLink', 'type': 'str'},
11159    }
11160
11161    def __init__(
11162        self,
11163        *,
11164        value: Optional[List["VpnServerConfiguration"]] = None,
11165        next_link: Optional[str] = None,
11166        **kwargs
11167    ):
11168        super(ListVpnServerConfigurationsResult, self).__init__(**kwargs)
11169        self.value = value
11170        self.next_link = next_link
11171
11172
11173class ListVpnSiteLinkConnectionsResult(msrest.serialization.Model):
11174    """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.
11175
11176    :param value: List of VpnSiteLinkConnections.
11177    :type value: list[~azure.mgmt.network.v2019_12_01.models.VpnSiteLinkConnection]
11178    :param next_link: URL to get the next set of operation list results if there are any.
11179    :type next_link: str
11180    """
11181
11182    _attribute_map = {
11183        'value': {'key': 'value', 'type': '[VpnSiteLinkConnection]'},
11184        'next_link': {'key': 'nextLink', 'type': 'str'},
11185    }
11186
11187    def __init__(
11188        self,
11189        *,
11190        value: Optional[List["VpnSiteLinkConnection"]] = None,
11191        next_link: Optional[str] = None,
11192        **kwargs
11193    ):
11194        super(ListVpnSiteLinkConnectionsResult, self).__init__(**kwargs)
11195        self.value = value
11196        self.next_link = next_link
11197
11198
11199class ListVpnSiteLinksResult(msrest.serialization.Model):
11200    """Result of the request to list VpnSiteLinks. It contains a list of VpnSiteLinks and a URL nextLink to get the next set of results.
11201
11202    :param value: List of VpnSitesLinks.
11203    :type value: list[~azure.mgmt.network.v2019_12_01.models.VpnSiteLink]
11204    :param next_link: URL to get the next set of operation list results if there are any.
11205    :type next_link: str
11206    """
11207
11208    _attribute_map = {
11209        'value': {'key': 'value', 'type': '[VpnSiteLink]'},
11210        'next_link': {'key': 'nextLink', 'type': 'str'},
11211    }
11212
11213    def __init__(
11214        self,
11215        *,
11216        value: Optional[List["VpnSiteLink"]] = None,
11217        next_link: Optional[str] = None,
11218        **kwargs
11219    ):
11220        super(ListVpnSiteLinksResult, self).__init__(**kwargs)
11221        self.value = value
11222        self.next_link = next_link
11223
11224
11225class ListVpnSitesResult(msrest.serialization.Model):
11226    """Result of the request to list VpnSites. It contains a list of VpnSites and a URL nextLink to get the next set of results.
11227
11228    :param value: List of VpnSites.
11229    :type value: list[~azure.mgmt.network.v2019_12_01.models.VpnSite]
11230    :param next_link: URL to get the next set of operation list results if there are any.
11231    :type next_link: str
11232    """
11233
11234    _attribute_map = {
11235        'value': {'key': 'value', 'type': '[VpnSite]'},
11236        'next_link': {'key': 'nextLink', 'type': 'str'},
11237    }
11238
11239    def __init__(
11240        self,
11241        *,
11242        value: Optional[List["VpnSite"]] = None,
11243        next_link: Optional[str] = None,
11244        **kwargs
11245    ):
11246        super(ListVpnSitesResult, self).__init__(**kwargs)
11247        self.value = value
11248        self.next_link = next_link
11249
11250
11251class LoadBalancer(Resource):
11252    """LoadBalancer resource.
11253
11254    Variables are only populated by the server, and will be ignored when sending a request.
11255
11256    :param id: Resource ID.
11257    :type id: str
11258    :ivar name: Resource name.
11259    :vartype name: str
11260    :ivar type: Resource type.
11261    :vartype type: str
11262    :param location: Resource location.
11263    :type location: str
11264    :param tags: A set of tags. Resource tags.
11265    :type tags: dict[str, str]
11266    :param sku: The load balancer SKU.
11267    :type sku: ~azure.mgmt.network.v2019_12_01.models.LoadBalancerSku
11268    :ivar etag: A unique read-only string that changes whenever the resource is updated.
11269    :vartype etag: str
11270    :param frontend_ip_configurations: Object representing the frontend IPs to be used for the load
11271     balancer.
11272    :type frontend_ip_configurations:
11273     list[~azure.mgmt.network.v2019_12_01.models.FrontendIPConfiguration]
11274    :param backend_address_pools: Collection of backend address pools used by a load balancer.
11275    :type backend_address_pools: list[~azure.mgmt.network.v2019_12_01.models.BackendAddressPool]
11276    :param load_balancing_rules: Object collection representing the load balancing rules Gets the
11277     provisioning.
11278    :type load_balancing_rules: list[~azure.mgmt.network.v2019_12_01.models.LoadBalancingRule]
11279    :param probes: Collection of probe objects used in the load balancer.
11280    :type probes: list[~azure.mgmt.network.v2019_12_01.models.Probe]
11281    :param inbound_nat_rules: Collection of inbound NAT Rules used by a load balancer. Defining
11282     inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT
11283     pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are
11284     associated with individual virtual machines cannot reference an Inbound NAT pool. They have to
11285     reference individual inbound NAT rules.
11286    :type inbound_nat_rules: list[~azure.mgmt.network.v2019_12_01.models.InboundNatRule]
11287    :param inbound_nat_pools: Defines an external port range for inbound NAT to a single backend
11288     port on NICs associated with a load balancer. Inbound NAT rules are created automatically for
11289     each NIC associated with the Load Balancer using an external port from this range. Defining an
11290     Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules.
11291     Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with
11292     individual virtual machines cannot reference an inbound NAT pool. They have to reference
11293     individual inbound NAT rules.
11294    :type inbound_nat_pools: list[~azure.mgmt.network.v2019_12_01.models.InboundNatPool]
11295    :param outbound_rules: The outbound rules.
11296    :type outbound_rules: list[~azure.mgmt.network.v2019_12_01.models.OutboundRule]
11297    :ivar resource_guid: The resource GUID property of the load balancer resource.
11298    :vartype resource_guid: str
11299    :ivar provisioning_state: The provisioning state of the load balancer resource. Possible values
11300     include: "Succeeded", "Updating", "Deleting", "Failed".
11301    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
11302    """
11303
11304    _validation = {
11305        'name': {'readonly': True},
11306        'type': {'readonly': True},
11307        'etag': {'readonly': True},
11308        'resource_guid': {'readonly': True},
11309        'provisioning_state': {'readonly': True},
11310    }
11311
11312    _attribute_map = {
11313        'id': {'key': 'id', 'type': 'str'},
11314        'name': {'key': 'name', 'type': 'str'},
11315        'type': {'key': 'type', 'type': 'str'},
11316        'location': {'key': 'location', 'type': 'str'},
11317        'tags': {'key': 'tags', 'type': '{str}'},
11318        'sku': {'key': 'sku', 'type': 'LoadBalancerSku'},
11319        'etag': {'key': 'etag', 'type': 'str'},
11320        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[FrontendIPConfiguration]'},
11321        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[BackendAddressPool]'},
11322        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[LoadBalancingRule]'},
11323        'probes': {'key': 'properties.probes', 'type': '[Probe]'},
11324        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[InboundNatRule]'},
11325        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[InboundNatPool]'},
11326        'outbound_rules': {'key': 'properties.outboundRules', 'type': '[OutboundRule]'},
11327        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
11328        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11329    }
11330
11331    def __init__(
11332        self,
11333        *,
11334        id: Optional[str] = None,
11335        location: Optional[str] = None,
11336        tags: Optional[Dict[str, str]] = None,
11337        sku: Optional["LoadBalancerSku"] = None,
11338        frontend_ip_configurations: Optional[List["FrontendIPConfiguration"]] = None,
11339        backend_address_pools: Optional[List["BackendAddressPool"]] = None,
11340        load_balancing_rules: Optional[List["LoadBalancingRule"]] = None,
11341        probes: Optional[List["Probe"]] = None,
11342        inbound_nat_rules: Optional[List["InboundNatRule"]] = None,
11343        inbound_nat_pools: Optional[List["InboundNatPool"]] = None,
11344        outbound_rules: Optional[List["OutboundRule"]] = None,
11345        **kwargs
11346    ):
11347        super(LoadBalancer, self).__init__(id=id, location=location, tags=tags, **kwargs)
11348        self.sku = sku
11349        self.etag = None
11350        self.frontend_ip_configurations = frontend_ip_configurations
11351        self.backend_address_pools = backend_address_pools
11352        self.load_balancing_rules = load_balancing_rules
11353        self.probes = probes
11354        self.inbound_nat_rules = inbound_nat_rules
11355        self.inbound_nat_pools = inbound_nat_pools
11356        self.outbound_rules = outbound_rules
11357        self.resource_guid = None
11358        self.provisioning_state = None
11359
11360
11361class LoadBalancerBackendAddressPoolListResult(msrest.serialization.Model):
11362    """Response for ListBackendAddressPool API service call.
11363
11364    Variables are only populated by the server, and will be ignored when sending a request.
11365
11366    :param value: A list of backend address pools in a load balancer.
11367    :type value: list[~azure.mgmt.network.v2019_12_01.models.BackendAddressPool]
11368    :ivar next_link: The URL to get the next set of results.
11369    :vartype next_link: str
11370    """
11371
11372    _validation = {
11373        'next_link': {'readonly': True},
11374    }
11375
11376    _attribute_map = {
11377        'value': {'key': 'value', 'type': '[BackendAddressPool]'},
11378        'next_link': {'key': 'nextLink', 'type': 'str'},
11379    }
11380
11381    def __init__(
11382        self,
11383        *,
11384        value: Optional[List["BackendAddressPool"]] = None,
11385        **kwargs
11386    ):
11387        super(LoadBalancerBackendAddressPoolListResult, self).__init__(**kwargs)
11388        self.value = value
11389        self.next_link = None
11390
11391
11392class LoadBalancerFrontendIPConfigurationListResult(msrest.serialization.Model):
11393    """Response for ListFrontendIPConfiguration API service call.
11394
11395    Variables are only populated by the server, and will be ignored when sending a request.
11396
11397    :param value: A list of frontend IP configurations in a load balancer.
11398    :type value: list[~azure.mgmt.network.v2019_12_01.models.FrontendIPConfiguration]
11399    :ivar next_link: The URL to get the next set of results.
11400    :vartype next_link: str
11401    """
11402
11403    _validation = {
11404        'next_link': {'readonly': True},
11405    }
11406
11407    _attribute_map = {
11408        'value': {'key': 'value', 'type': '[FrontendIPConfiguration]'},
11409        'next_link': {'key': 'nextLink', 'type': 'str'},
11410    }
11411
11412    def __init__(
11413        self,
11414        *,
11415        value: Optional[List["FrontendIPConfiguration"]] = None,
11416        **kwargs
11417    ):
11418        super(LoadBalancerFrontendIPConfigurationListResult, self).__init__(**kwargs)
11419        self.value = value
11420        self.next_link = None
11421
11422
11423class LoadBalancerListResult(msrest.serialization.Model):
11424    """Response for ListLoadBalancers API service call.
11425
11426    Variables are only populated by the server, and will be ignored when sending a request.
11427
11428    :param value: A list of load balancers in a resource group.
11429    :type value: list[~azure.mgmt.network.v2019_12_01.models.LoadBalancer]
11430    :ivar next_link: The URL to get the next set of results.
11431    :vartype next_link: str
11432    """
11433
11434    _validation = {
11435        'next_link': {'readonly': True},
11436    }
11437
11438    _attribute_map = {
11439        'value': {'key': 'value', 'type': '[LoadBalancer]'},
11440        'next_link': {'key': 'nextLink', 'type': 'str'},
11441    }
11442
11443    def __init__(
11444        self,
11445        *,
11446        value: Optional[List["LoadBalancer"]] = None,
11447        **kwargs
11448    ):
11449        super(LoadBalancerListResult, self).__init__(**kwargs)
11450        self.value = value
11451        self.next_link = None
11452
11453
11454class LoadBalancerLoadBalancingRuleListResult(msrest.serialization.Model):
11455    """Response for ListLoadBalancingRule API service call.
11456
11457    Variables are only populated by the server, and will be ignored when sending a request.
11458
11459    :param value: A list of load balancing rules in a load balancer.
11460    :type value: list[~azure.mgmt.network.v2019_12_01.models.LoadBalancingRule]
11461    :ivar next_link: The URL to get the next set of results.
11462    :vartype next_link: str
11463    """
11464
11465    _validation = {
11466        'next_link': {'readonly': True},
11467    }
11468
11469    _attribute_map = {
11470        'value': {'key': 'value', 'type': '[LoadBalancingRule]'},
11471        'next_link': {'key': 'nextLink', 'type': 'str'},
11472    }
11473
11474    def __init__(
11475        self,
11476        *,
11477        value: Optional[List["LoadBalancingRule"]] = None,
11478        **kwargs
11479    ):
11480        super(LoadBalancerLoadBalancingRuleListResult, self).__init__(**kwargs)
11481        self.value = value
11482        self.next_link = None
11483
11484
11485class LoadBalancerOutboundRuleListResult(msrest.serialization.Model):
11486    """Response for ListOutboundRule API service call.
11487
11488    Variables are only populated by the server, and will be ignored when sending a request.
11489
11490    :param value: A list of outbound rules in a load balancer.
11491    :type value: list[~azure.mgmt.network.v2019_12_01.models.OutboundRule]
11492    :ivar next_link: The URL to get the next set of results.
11493    :vartype next_link: str
11494    """
11495
11496    _validation = {
11497        'next_link': {'readonly': True},
11498    }
11499
11500    _attribute_map = {
11501        'value': {'key': 'value', 'type': '[OutboundRule]'},
11502        'next_link': {'key': 'nextLink', 'type': 'str'},
11503    }
11504
11505    def __init__(
11506        self,
11507        *,
11508        value: Optional[List["OutboundRule"]] = None,
11509        **kwargs
11510    ):
11511        super(LoadBalancerOutboundRuleListResult, self).__init__(**kwargs)
11512        self.value = value
11513        self.next_link = None
11514
11515
11516class LoadBalancerProbeListResult(msrest.serialization.Model):
11517    """Response for ListProbe API service call.
11518
11519    Variables are only populated by the server, and will be ignored when sending a request.
11520
11521    :param value: A list of probes in a load balancer.
11522    :type value: list[~azure.mgmt.network.v2019_12_01.models.Probe]
11523    :ivar next_link: The URL to get the next set of results.
11524    :vartype next_link: str
11525    """
11526
11527    _validation = {
11528        'next_link': {'readonly': True},
11529    }
11530
11531    _attribute_map = {
11532        'value': {'key': 'value', 'type': '[Probe]'},
11533        'next_link': {'key': 'nextLink', 'type': 'str'},
11534    }
11535
11536    def __init__(
11537        self,
11538        *,
11539        value: Optional[List["Probe"]] = None,
11540        **kwargs
11541    ):
11542        super(LoadBalancerProbeListResult, self).__init__(**kwargs)
11543        self.value = value
11544        self.next_link = None
11545
11546
11547class LoadBalancerSku(msrest.serialization.Model):
11548    """SKU of a load balancer.
11549
11550    :param name: Name of a load balancer SKU. Possible values include: "Basic", "Standard".
11551    :type name: str or ~azure.mgmt.network.v2019_12_01.models.LoadBalancerSkuName
11552    """
11553
11554    _attribute_map = {
11555        'name': {'key': 'name', 'type': 'str'},
11556    }
11557
11558    def __init__(
11559        self,
11560        *,
11561        name: Optional[Union[str, "LoadBalancerSkuName"]] = None,
11562        **kwargs
11563    ):
11564        super(LoadBalancerSku, self).__init__(**kwargs)
11565        self.name = name
11566
11567
11568class LoadBalancingRule(SubResource):
11569    """A load balancing rule for a load balancer.
11570
11571    Variables are only populated by the server, and will be ignored when sending a request.
11572
11573    :param id: Resource ID.
11574    :type id: str
11575    :param name: The name of the resource that is unique within the set of load balancing rules
11576     used by the load balancer. This name can be used to access the resource.
11577    :type name: str
11578    :ivar etag: A unique read-only string that changes whenever the resource is updated.
11579    :vartype etag: str
11580    :ivar type: Type of the resource.
11581    :vartype type: str
11582    :param frontend_ip_configuration: A reference to frontend IP addresses.
11583    :type frontend_ip_configuration: ~azure.mgmt.network.v2019_12_01.models.SubResource
11584    :param backend_address_pool: A reference to a pool of DIPs. Inbound traffic is randomly load
11585     balanced across IPs in the backend IPs.
11586    :type backend_address_pool: ~azure.mgmt.network.v2019_12_01.models.SubResource
11587    :param probe: The reference to the load balancer probe used by the load balancing rule.
11588    :type probe: ~azure.mgmt.network.v2019_12_01.models.SubResource
11589    :param protocol: The reference to the transport protocol used by the load balancing rule.
11590     Possible values include: "Udp", "Tcp", "All".
11591    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.TransportProtocol
11592    :param load_distribution: The load distribution policy for this rule. Possible values include:
11593     "Default", "SourceIP", "SourceIPProtocol".
11594    :type load_distribution: str or ~azure.mgmt.network.v2019_12_01.models.LoadDistribution
11595    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
11596     unique within the Load Balancer. Acceptable values are between 0 and 65534. Note that value 0
11597     enables "Any Port".
11598    :type frontend_port: int
11599    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
11600     are between 0 and 65535. Note that value 0 enables "Any Port".
11601    :type backend_port: int
11602    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
11603     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
11604     protocol is set to TCP.
11605    :type idle_timeout_in_minutes: int
11606    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
11607     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
11608     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
11609     after you create the endpoint.
11610    :type enable_floating_ip: bool
11611    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
11612     connection termination. This element is only used when the protocol is set to TCP.
11613    :type enable_tcp_reset: bool
11614    :param disable_outbound_snat: Configures SNAT for the VMs in the backend pool to use the
11615     publicIP address specified in the frontend of the load balancing rule.
11616    :type disable_outbound_snat: bool
11617    :ivar provisioning_state: The provisioning state of the load balancing rule resource. Possible
11618     values include: "Succeeded", "Updating", "Deleting", "Failed".
11619    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
11620    """
11621
11622    _validation = {
11623        'etag': {'readonly': True},
11624        'type': {'readonly': True},
11625        'provisioning_state': {'readonly': True},
11626    }
11627
11628    _attribute_map = {
11629        'id': {'key': 'id', 'type': 'str'},
11630        'name': {'key': 'name', 'type': 'str'},
11631        'etag': {'key': 'etag', 'type': 'str'},
11632        'type': {'key': 'type', 'type': 'str'},
11633        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
11634        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
11635        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
11636        'protocol': {'key': 'properties.protocol', 'type': 'str'},
11637        'load_distribution': {'key': 'properties.loadDistribution', 'type': 'str'},
11638        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
11639        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
11640        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
11641        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
11642        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
11643        'disable_outbound_snat': {'key': 'properties.disableOutboundSnat', 'type': 'bool'},
11644        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11645    }
11646
11647    def __init__(
11648        self,
11649        *,
11650        id: Optional[str] = None,
11651        name: Optional[str] = None,
11652        frontend_ip_configuration: Optional["SubResource"] = None,
11653        backend_address_pool: Optional["SubResource"] = None,
11654        probe: Optional["SubResource"] = None,
11655        protocol: Optional[Union[str, "TransportProtocol"]] = None,
11656        load_distribution: Optional[Union[str, "LoadDistribution"]] = None,
11657        frontend_port: Optional[int] = None,
11658        backend_port: Optional[int] = None,
11659        idle_timeout_in_minutes: Optional[int] = None,
11660        enable_floating_ip: Optional[bool] = None,
11661        enable_tcp_reset: Optional[bool] = None,
11662        disable_outbound_snat: Optional[bool] = None,
11663        **kwargs
11664    ):
11665        super(LoadBalancingRule, self).__init__(id=id, **kwargs)
11666        self.name = name
11667        self.etag = None
11668        self.type = None
11669        self.frontend_ip_configuration = frontend_ip_configuration
11670        self.backend_address_pool = backend_address_pool
11671        self.probe = probe
11672        self.protocol = protocol
11673        self.load_distribution = load_distribution
11674        self.frontend_port = frontend_port
11675        self.backend_port = backend_port
11676        self.idle_timeout_in_minutes = idle_timeout_in_minutes
11677        self.enable_floating_ip = enable_floating_ip
11678        self.enable_tcp_reset = enable_tcp_reset
11679        self.disable_outbound_snat = disable_outbound_snat
11680        self.provisioning_state = None
11681
11682
11683class LocalNetworkGateway(Resource):
11684    """A common class for general resource information.
11685
11686    Variables are only populated by the server, and will be ignored when sending a request.
11687
11688    :param id: Resource ID.
11689    :type id: str
11690    :ivar name: Resource name.
11691    :vartype name: str
11692    :ivar type: Resource type.
11693    :vartype type: str
11694    :param location: Resource location.
11695    :type location: str
11696    :param tags: A set of tags. Resource tags.
11697    :type tags: dict[str, str]
11698    :ivar etag: A unique read-only string that changes whenever the resource is updated.
11699    :vartype etag: str
11700    :param local_network_address_space: Local network site address space.
11701    :type local_network_address_space: ~azure.mgmt.network.v2019_12_01.models.AddressSpace
11702    :param gateway_ip_address: IP address of local network gateway.
11703    :type gateway_ip_address: str
11704    :param fqdn: FQDN of local network gateway.
11705    :type fqdn: str
11706    :param bgp_settings: Local network gateway's BGP speaker settings.
11707    :type bgp_settings: ~azure.mgmt.network.v2019_12_01.models.BgpSettings
11708    :ivar resource_guid: The resource GUID property of the local network gateway resource.
11709    :vartype resource_guid: str
11710    :ivar provisioning_state: The provisioning state of the local network gateway resource.
11711     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
11712    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
11713    """
11714
11715    _validation = {
11716        'name': {'readonly': True},
11717        'type': {'readonly': True},
11718        'etag': {'readonly': True},
11719        'resource_guid': {'readonly': True},
11720        'provisioning_state': {'readonly': True},
11721    }
11722
11723    _attribute_map = {
11724        'id': {'key': 'id', 'type': 'str'},
11725        'name': {'key': 'name', 'type': 'str'},
11726        'type': {'key': 'type', 'type': 'str'},
11727        'location': {'key': 'location', 'type': 'str'},
11728        'tags': {'key': 'tags', 'type': '{str}'},
11729        'etag': {'key': 'etag', 'type': 'str'},
11730        'local_network_address_space': {'key': 'properties.localNetworkAddressSpace', 'type': 'AddressSpace'},
11731        'gateway_ip_address': {'key': 'properties.gatewayIpAddress', 'type': 'str'},
11732        'fqdn': {'key': 'properties.fqdn', 'type': 'str'},
11733        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
11734        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
11735        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11736    }
11737
11738    def __init__(
11739        self,
11740        *,
11741        id: Optional[str] = None,
11742        location: Optional[str] = None,
11743        tags: Optional[Dict[str, str]] = None,
11744        local_network_address_space: Optional["AddressSpace"] = None,
11745        gateway_ip_address: Optional[str] = None,
11746        fqdn: Optional[str] = None,
11747        bgp_settings: Optional["BgpSettings"] = None,
11748        **kwargs
11749    ):
11750        super(LocalNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
11751        self.etag = None
11752        self.local_network_address_space = local_network_address_space
11753        self.gateway_ip_address = gateway_ip_address
11754        self.fqdn = fqdn
11755        self.bgp_settings = bgp_settings
11756        self.resource_guid = None
11757        self.provisioning_state = None
11758
11759
11760class LocalNetworkGatewayListResult(msrest.serialization.Model):
11761    """Response for ListLocalNetworkGateways API service call.
11762
11763    Variables are only populated by the server, and will be ignored when sending a request.
11764
11765    :param value: A list of local network gateways that exists in a resource group.
11766    :type value: list[~azure.mgmt.network.v2019_12_01.models.LocalNetworkGateway]
11767    :ivar next_link: The URL to get the next set of results.
11768    :vartype next_link: str
11769    """
11770
11771    _validation = {
11772        'next_link': {'readonly': True},
11773    }
11774
11775    _attribute_map = {
11776        'value': {'key': 'value', 'type': '[LocalNetworkGateway]'},
11777        'next_link': {'key': 'nextLink', 'type': 'str'},
11778    }
11779
11780    def __init__(
11781        self,
11782        *,
11783        value: Optional[List["LocalNetworkGateway"]] = None,
11784        **kwargs
11785    ):
11786        super(LocalNetworkGatewayListResult, self).__init__(**kwargs)
11787        self.value = value
11788        self.next_link = None
11789
11790
11791class LogSpecification(msrest.serialization.Model):
11792    """Description of logging specification.
11793
11794    :param name: The name of the specification.
11795    :type name: str
11796    :param display_name: The display name of the specification.
11797    :type display_name: str
11798    :param blob_duration: Duration of the blob.
11799    :type blob_duration: str
11800    """
11801
11802    _attribute_map = {
11803        'name': {'key': 'name', 'type': 'str'},
11804        'display_name': {'key': 'displayName', 'type': 'str'},
11805        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
11806    }
11807
11808    def __init__(
11809        self,
11810        *,
11811        name: Optional[str] = None,
11812        display_name: Optional[str] = None,
11813        blob_duration: Optional[str] = None,
11814        **kwargs
11815    ):
11816        super(LogSpecification, self).__init__(**kwargs)
11817        self.name = name
11818        self.display_name = display_name
11819        self.blob_duration = blob_duration
11820
11821
11822class ManagedRuleGroupOverride(msrest.serialization.Model):
11823    """Defines a managed rule group override setting.
11824
11825    All required parameters must be populated in order to send to Azure.
11826
11827    :param rule_group_name: Required. The managed rule group to override.
11828    :type rule_group_name: str
11829    :param rules: List of rules that will be disabled. If none specified, all rules in the group
11830     will be disabled.
11831    :type rules: list[~azure.mgmt.network.v2019_12_01.models.ManagedRuleOverride]
11832    """
11833
11834    _validation = {
11835        'rule_group_name': {'required': True},
11836    }
11837
11838    _attribute_map = {
11839        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
11840        'rules': {'key': 'rules', 'type': '[ManagedRuleOverride]'},
11841    }
11842
11843    def __init__(
11844        self,
11845        *,
11846        rule_group_name: str,
11847        rules: Optional[List["ManagedRuleOverride"]] = None,
11848        **kwargs
11849    ):
11850        super(ManagedRuleGroupOverride, self).__init__(**kwargs)
11851        self.rule_group_name = rule_group_name
11852        self.rules = rules
11853
11854
11855class ManagedRuleOverride(msrest.serialization.Model):
11856    """Defines a managed rule group override setting.
11857
11858    All required parameters must be populated in order to send to Azure.
11859
11860    :param rule_id: Required. Identifier for the managed rule.
11861    :type rule_id: str
11862    :param state: The state of the managed rule. Defaults to Disabled if not specified. Possible
11863     values include: "Disabled".
11864    :type state: str or ~azure.mgmt.network.v2019_12_01.models.ManagedRuleEnabledState
11865    """
11866
11867    _validation = {
11868        'rule_id': {'required': True},
11869    }
11870
11871    _attribute_map = {
11872        'rule_id': {'key': 'ruleId', 'type': 'str'},
11873        'state': {'key': 'state', 'type': 'str'},
11874    }
11875
11876    def __init__(
11877        self,
11878        *,
11879        rule_id: str,
11880        state: Optional[Union[str, "ManagedRuleEnabledState"]] = None,
11881        **kwargs
11882    ):
11883        super(ManagedRuleOverride, self).__init__(**kwargs)
11884        self.rule_id = rule_id
11885        self.state = state
11886
11887
11888class ManagedRulesDefinition(msrest.serialization.Model):
11889    """Allow to exclude some variable satisfy the condition for the WAF check.
11890
11891    All required parameters must be populated in order to send to Azure.
11892
11893    :param exclusions: The Exclusions that are applied on the policy.
11894    :type exclusions: list[~azure.mgmt.network.v2019_12_01.models.OwaspCrsExclusionEntry]
11895    :param managed_rule_sets: Required. The managed rule sets that are associated with the policy.
11896    :type managed_rule_sets: list[~azure.mgmt.network.v2019_12_01.models.ManagedRuleSet]
11897    """
11898
11899    _validation = {
11900        'managed_rule_sets': {'required': True},
11901    }
11902
11903    _attribute_map = {
11904        'exclusions': {'key': 'exclusions', 'type': '[OwaspCrsExclusionEntry]'},
11905        'managed_rule_sets': {'key': 'managedRuleSets', 'type': '[ManagedRuleSet]'},
11906    }
11907
11908    def __init__(
11909        self,
11910        *,
11911        managed_rule_sets: List["ManagedRuleSet"],
11912        exclusions: Optional[List["OwaspCrsExclusionEntry"]] = None,
11913        **kwargs
11914    ):
11915        super(ManagedRulesDefinition, self).__init__(**kwargs)
11916        self.exclusions = exclusions
11917        self.managed_rule_sets = managed_rule_sets
11918
11919
11920class ManagedRuleSet(msrest.serialization.Model):
11921    """Defines a managed rule set.
11922
11923    All required parameters must be populated in order to send to Azure.
11924
11925    :param rule_set_type: Required. Defines the rule set type to use.
11926    :type rule_set_type: str
11927    :param rule_set_version: Required. Defines the version of the rule set to use.
11928    :type rule_set_version: str
11929    :param rule_group_overrides: Defines the rule group overrides to apply to the rule set.
11930    :type rule_group_overrides:
11931     list[~azure.mgmt.network.v2019_12_01.models.ManagedRuleGroupOverride]
11932    """
11933
11934    _validation = {
11935        'rule_set_type': {'required': True},
11936        'rule_set_version': {'required': True},
11937    }
11938
11939    _attribute_map = {
11940        'rule_set_type': {'key': 'ruleSetType', 'type': 'str'},
11941        'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'},
11942        'rule_group_overrides': {'key': 'ruleGroupOverrides', 'type': '[ManagedRuleGroupOverride]'},
11943    }
11944
11945    def __init__(
11946        self,
11947        *,
11948        rule_set_type: str,
11949        rule_set_version: str,
11950        rule_group_overrides: Optional[List["ManagedRuleGroupOverride"]] = None,
11951        **kwargs
11952    ):
11953        super(ManagedRuleSet, self).__init__(**kwargs)
11954        self.rule_set_type = rule_set_type
11955        self.rule_set_version = rule_set_version
11956        self.rule_group_overrides = rule_group_overrides
11957
11958
11959class ManagedServiceIdentity(msrest.serialization.Model):
11960    """Identity for the resource.
11961
11962    Variables are only populated by the server, and will be ignored when sending a request.
11963
11964    :ivar principal_id: The principal id of the system assigned identity. This property will only
11965     be provided for a system assigned identity.
11966    :vartype principal_id: str
11967    :ivar tenant_id: The tenant id of the system assigned identity. This property will only be
11968     provided for a system assigned identity.
11969    :vartype tenant_id: str
11970    :param type: The type of identity used for the resource. The type 'SystemAssigned,
11971     UserAssigned' includes both an implicitly created identity and a set of user assigned
11972     identities. The type 'None' will remove any identities from the virtual machine. Possible
11973     values include: "SystemAssigned", "UserAssigned", "SystemAssigned, UserAssigned", "None".
11974    :type type: str or ~azure.mgmt.network.v2019_12_01.models.ResourceIdentityType
11975    :param user_assigned_identities: The list of user identities associated with resource. The user
11976     identity dictionary key references will be ARM resource ids in the form:
11977     '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
11978    :type user_assigned_identities: dict[str,
11979     ~azure.mgmt.network.v2019_12_01.models.Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties]
11980    """
11981
11982    _validation = {
11983        'principal_id': {'readonly': True},
11984        'tenant_id': {'readonly': True},
11985    }
11986
11987    _attribute_map = {
11988        'principal_id': {'key': 'principalId', 'type': 'str'},
11989        'tenant_id': {'key': 'tenantId', 'type': 'str'},
11990        'type': {'key': 'type', 'type': 'str'},
11991        'user_assigned_identities': {'key': 'userAssignedIdentities', 'type': '{Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties}'},
11992    }
11993
11994    def __init__(
11995        self,
11996        *,
11997        type: Optional[Union[str, "ResourceIdentityType"]] = None,
11998        user_assigned_identities: Optional[Dict[str, "Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties"]] = None,
11999        **kwargs
12000    ):
12001        super(ManagedServiceIdentity, self).__init__(**kwargs)
12002        self.principal_id = None
12003        self.tenant_id = None
12004        self.type = type
12005        self.user_assigned_identities = user_assigned_identities
12006
12007
12008class MatchCondition(msrest.serialization.Model):
12009    """Define match conditions.
12010
12011    All required parameters must be populated in order to send to Azure.
12012
12013    :param match_variables: Required. List of match variables.
12014    :type match_variables: list[~azure.mgmt.network.v2019_12_01.models.MatchVariable]
12015    :param operator: Required. The operator to be matched. Possible values include: "IPMatch",
12016     "Equal", "Contains", "LessThan", "GreaterThan", "LessThanOrEqual", "GreaterThanOrEqual",
12017     "BeginsWith", "EndsWith", "Regex", "GeoMatch".
12018    :type operator: str or ~azure.mgmt.network.v2019_12_01.models.WebApplicationFirewallOperator
12019    :param negation_conditon: Whether this is negate condition or not.
12020    :type negation_conditon: bool
12021    :param match_values: Required. Match value.
12022    :type match_values: list[str]
12023    :param transforms: List of transforms.
12024    :type transforms: list[str or
12025     ~azure.mgmt.network.v2019_12_01.models.WebApplicationFirewallTransform]
12026    """
12027
12028    _validation = {
12029        'match_variables': {'required': True},
12030        'operator': {'required': True},
12031        'match_values': {'required': True},
12032    }
12033
12034    _attribute_map = {
12035        'match_variables': {'key': 'matchVariables', 'type': '[MatchVariable]'},
12036        'operator': {'key': 'operator', 'type': 'str'},
12037        'negation_conditon': {'key': 'negationConditon', 'type': 'bool'},
12038        'match_values': {'key': 'matchValues', 'type': '[str]'},
12039        'transforms': {'key': 'transforms', 'type': '[str]'},
12040    }
12041
12042    def __init__(
12043        self,
12044        *,
12045        match_variables: List["MatchVariable"],
12046        operator: Union[str, "WebApplicationFirewallOperator"],
12047        match_values: List[str],
12048        negation_conditon: Optional[bool] = None,
12049        transforms: Optional[List[Union[str, "WebApplicationFirewallTransform"]]] = None,
12050        **kwargs
12051    ):
12052        super(MatchCondition, self).__init__(**kwargs)
12053        self.match_variables = match_variables
12054        self.operator = operator
12055        self.negation_conditon = negation_conditon
12056        self.match_values = match_values
12057        self.transforms = transforms
12058
12059
12060class MatchedRule(msrest.serialization.Model):
12061    """Matched rule.
12062
12063    :param rule_name: Name of the matched network security rule.
12064    :type rule_name: str
12065    :param action: The network traffic is allowed or denied. Possible values are 'Allow' and
12066     'Deny'.
12067    :type action: str
12068    """
12069
12070    _attribute_map = {
12071        'rule_name': {'key': 'ruleName', 'type': 'str'},
12072        'action': {'key': 'action', 'type': 'str'},
12073    }
12074
12075    def __init__(
12076        self,
12077        *,
12078        rule_name: Optional[str] = None,
12079        action: Optional[str] = None,
12080        **kwargs
12081    ):
12082        super(MatchedRule, self).__init__(**kwargs)
12083        self.rule_name = rule_name
12084        self.action = action
12085
12086
12087class MatchVariable(msrest.serialization.Model):
12088    """Define match variables.
12089
12090    All required parameters must be populated in order to send to Azure.
12091
12092    :param variable_name: Required. Match Variable. Possible values include: "RemoteAddr",
12093     "RequestMethod", "QueryString", "PostArgs", "RequestUri", "RequestHeaders", "RequestBody",
12094     "RequestCookies".
12095    :type variable_name: str or
12096     ~azure.mgmt.network.v2019_12_01.models.WebApplicationFirewallMatchVariable
12097    :param selector: The selector of match variable.
12098    :type selector: str
12099    """
12100
12101    _validation = {
12102        'variable_name': {'required': True},
12103    }
12104
12105    _attribute_map = {
12106        'variable_name': {'key': 'variableName', 'type': 'str'},
12107        'selector': {'key': 'selector', 'type': 'str'},
12108    }
12109
12110    def __init__(
12111        self,
12112        *,
12113        variable_name: Union[str, "WebApplicationFirewallMatchVariable"],
12114        selector: Optional[str] = None,
12115        **kwargs
12116    ):
12117        super(MatchVariable, self).__init__(**kwargs)
12118        self.variable_name = variable_name
12119        self.selector = selector
12120
12121
12122class MetricSpecification(msrest.serialization.Model):
12123    """Description of metrics specification.
12124
12125    :param name: The name of the metric.
12126    :type name: str
12127    :param display_name: The display name of the metric.
12128    :type display_name: str
12129    :param display_description: The description of the metric.
12130    :type display_description: str
12131    :param unit: Units the metric to be displayed in.
12132    :type unit: str
12133    :param aggregation_type: The aggregation type.
12134    :type aggregation_type: str
12135    :param availabilities: List of availability.
12136    :type availabilities: list[~azure.mgmt.network.v2019_12_01.models.Availability]
12137    :param enable_regional_mdm_account: Whether regional MDM account enabled.
12138    :type enable_regional_mdm_account: bool
12139    :param fill_gap_with_zero: Whether gaps would be filled with zeros.
12140    :type fill_gap_with_zero: bool
12141    :param metric_filter_pattern: Pattern for the filter of the metric.
12142    :type metric_filter_pattern: str
12143    :param dimensions: List of dimensions.
12144    :type dimensions: list[~azure.mgmt.network.v2019_12_01.models.Dimension]
12145    :param is_internal: Whether the metric is internal.
12146    :type is_internal: bool
12147    :param source_mdm_account: The source MDM account.
12148    :type source_mdm_account: str
12149    :param source_mdm_namespace: The source MDM namespace.
12150    :type source_mdm_namespace: str
12151    :param resource_id_dimension_name_override: The resource Id dimension name override.
12152    :type resource_id_dimension_name_override: str
12153    """
12154
12155    _attribute_map = {
12156        'name': {'key': 'name', 'type': 'str'},
12157        'display_name': {'key': 'displayName', 'type': 'str'},
12158        'display_description': {'key': 'displayDescription', 'type': 'str'},
12159        'unit': {'key': 'unit', 'type': 'str'},
12160        'aggregation_type': {'key': 'aggregationType', 'type': 'str'},
12161        'availabilities': {'key': 'availabilities', 'type': '[Availability]'},
12162        'enable_regional_mdm_account': {'key': 'enableRegionalMdmAccount', 'type': 'bool'},
12163        'fill_gap_with_zero': {'key': 'fillGapWithZero', 'type': 'bool'},
12164        'metric_filter_pattern': {'key': 'metricFilterPattern', 'type': 'str'},
12165        'dimensions': {'key': 'dimensions', 'type': '[Dimension]'},
12166        'is_internal': {'key': 'isInternal', 'type': 'bool'},
12167        'source_mdm_account': {'key': 'sourceMdmAccount', 'type': 'str'},
12168        'source_mdm_namespace': {'key': 'sourceMdmNamespace', 'type': 'str'},
12169        'resource_id_dimension_name_override': {'key': 'resourceIdDimensionNameOverride', 'type': 'str'},
12170    }
12171
12172    def __init__(
12173        self,
12174        *,
12175        name: Optional[str] = None,
12176        display_name: Optional[str] = None,
12177        display_description: Optional[str] = None,
12178        unit: Optional[str] = None,
12179        aggregation_type: Optional[str] = None,
12180        availabilities: Optional[List["Availability"]] = None,
12181        enable_regional_mdm_account: Optional[bool] = None,
12182        fill_gap_with_zero: Optional[bool] = None,
12183        metric_filter_pattern: Optional[str] = None,
12184        dimensions: Optional[List["Dimension"]] = None,
12185        is_internal: Optional[bool] = None,
12186        source_mdm_account: Optional[str] = None,
12187        source_mdm_namespace: Optional[str] = None,
12188        resource_id_dimension_name_override: Optional[str] = None,
12189        **kwargs
12190    ):
12191        super(MetricSpecification, self).__init__(**kwargs)
12192        self.name = name
12193        self.display_name = display_name
12194        self.display_description = display_description
12195        self.unit = unit
12196        self.aggregation_type = aggregation_type
12197        self.availabilities = availabilities
12198        self.enable_regional_mdm_account = enable_regional_mdm_account
12199        self.fill_gap_with_zero = fill_gap_with_zero
12200        self.metric_filter_pattern = metric_filter_pattern
12201        self.dimensions = dimensions
12202        self.is_internal = is_internal
12203        self.source_mdm_account = source_mdm_account
12204        self.source_mdm_namespace = source_mdm_namespace
12205        self.resource_id_dimension_name_override = resource_id_dimension_name_override
12206
12207
12208class NatGateway(Resource):
12209    """Nat Gateway resource.
12210
12211    Variables are only populated by the server, and will be ignored when sending a request.
12212
12213    :param id: Resource ID.
12214    :type id: str
12215    :ivar name: Resource name.
12216    :vartype name: str
12217    :ivar type: Resource type.
12218    :vartype type: str
12219    :param location: Resource location.
12220    :type location: str
12221    :param tags: A set of tags. Resource tags.
12222    :type tags: dict[str, str]
12223    :param sku: The nat gateway SKU.
12224    :type sku: ~azure.mgmt.network.v2019_12_01.models.NatGatewaySku
12225    :param zones: A list of availability zones denoting the zone in which Nat Gateway should be
12226     deployed.
12227    :type zones: list[str]
12228    :ivar etag: A unique read-only string that changes whenever the resource is updated.
12229    :vartype etag: str
12230    :param idle_timeout_in_minutes: The idle timeout of the nat gateway.
12231    :type idle_timeout_in_minutes: int
12232    :param public_ip_addresses: An array of public ip addresses associated with the nat gateway
12233     resource.
12234    :type public_ip_addresses: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
12235    :param public_ip_prefixes: An array of public ip prefixes associated with the nat gateway
12236     resource.
12237    :type public_ip_prefixes: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
12238    :ivar subnets: An array of references to the subnets using this nat gateway resource.
12239    :vartype subnets: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
12240    :ivar resource_guid: The resource GUID property of the NAT gateway resource.
12241    :vartype resource_guid: str
12242    :ivar provisioning_state: The provisioning state of the NAT gateway resource. Possible values
12243     include: "Succeeded", "Updating", "Deleting", "Failed".
12244    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
12245    """
12246
12247    _validation = {
12248        'name': {'readonly': True},
12249        'type': {'readonly': True},
12250        'etag': {'readonly': True},
12251        'subnets': {'readonly': True},
12252        'resource_guid': {'readonly': True},
12253        'provisioning_state': {'readonly': True},
12254    }
12255
12256    _attribute_map = {
12257        'id': {'key': 'id', 'type': 'str'},
12258        'name': {'key': 'name', 'type': 'str'},
12259        'type': {'key': 'type', 'type': 'str'},
12260        'location': {'key': 'location', 'type': 'str'},
12261        'tags': {'key': 'tags', 'type': '{str}'},
12262        'sku': {'key': 'sku', 'type': 'NatGatewaySku'},
12263        'zones': {'key': 'zones', 'type': '[str]'},
12264        'etag': {'key': 'etag', 'type': 'str'},
12265        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
12266        'public_ip_addresses': {'key': 'properties.publicIpAddresses', 'type': '[SubResource]'},
12267        'public_ip_prefixes': {'key': 'properties.publicIpPrefixes', 'type': '[SubResource]'},
12268        'subnets': {'key': 'properties.subnets', 'type': '[SubResource]'},
12269        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
12270        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
12271    }
12272
12273    def __init__(
12274        self,
12275        *,
12276        id: Optional[str] = None,
12277        location: Optional[str] = None,
12278        tags: Optional[Dict[str, str]] = None,
12279        sku: Optional["NatGatewaySku"] = None,
12280        zones: Optional[List[str]] = None,
12281        idle_timeout_in_minutes: Optional[int] = None,
12282        public_ip_addresses: Optional[List["SubResource"]] = None,
12283        public_ip_prefixes: Optional[List["SubResource"]] = None,
12284        **kwargs
12285    ):
12286        super(NatGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
12287        self.sku = sku
12288        self.zones = zones
12289        self.etag = None
12290        self.idle_timeout_in_minutes = idle_timeout_in_minutes
12291        self.public_ip_addresses = public_ip_addresses
12292        self.public_ip_prefixes = public_ip_prefixes
12293        self.subnets = None
12294        self.resource_guid = None
12295        self.provisioning_state = None
12296
12297
12298class NatGatewayListResult(msrest.serialization.Model):
12299    """Response for ListNatGateways API service call.
12300
12301    :param value: A list of Nat Gateways that exists in a resource group.
12302    :type value: list[~azure.mgmt.network.v2019_12_01.models.NatGateway]
12303    :param next_link: The URL to get the next set of results.
12304    :type next_link: str
12305    """
12306
12307    _attribute_map = {
12308        'value': {'key': 'value', 'type': '[NatGateway]'},
12309        'next_link': {'key': 'nextLink', 'type': 'str'},
12310    }
12311
12312    def __init__(
12313        self,
12314        *,
12315        value: Optional[List["NatGateway"]] = None,
12316        next_link: Optional[str] = None,
12317        **kwargs
12318    ):
12319        super(NatGatewayListResult, self).__init__(**kwargs)
12320        self.value = value
12321        self.next_link = next_link
12322
12323
12324class NatGatewaySku(msrest.serialization.Model):
12325    """SKU of nat gateway.
12326
12327    :param name: Name of Nat Gateway SKU. Possible values include: "Standard".
12328    :type name: str or ~azure.mgmt.network.v2019_12_01.models.NatGatewaySkuName
12329    """
12330
12331    _attribute_map = {
12332        'name': {'key': 'name', 'type': 'str'},
12333    }
12334
12335    def __init__(
12336        self,
12337        *,
12338        name: Optional[Union[str, "NatGatewaySkuName"]] = None,
12339        **kwargs
12340    ):
12341        super(NatGatewaySku, self).__init__(**kwargs)
12342        self.name = name
12343
12344
12345class NatRuleCondition(FirewallPolicyRuleCondition):
12346    """Rule condition of type nat.
12347
12348    All required parameters must be populated in order to send to Azure.
12349
12350    :param name: Name of the rule condition.
12351    :type name: str
12352    :param description: Description of the rule condition.
12353    :type description: str
12354    :param rule_condition_type: Required. Rule Condition Type.Constant filled by server.  Possible
12355     values include: "ApplicationRuleCondition", "NetworkRuleCondition", "NatRuleCondition".
12356    :type rule_condition_type: str or
12357     ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleConditionType
12358    :param ip_protocols: Array of FirewallPolicyRuleConditionNetworkProtocols.
12359    :type ip_protocols: list[str or
12360     ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleConditionNetworkProtocol]
12361    :param source_addresses: List of source IP addresses for this rule.
12362    :type source_addresses: list[str]
12363    :param destination_addresses: List of destination IP addresses or Service Tags.
12364    :type destination_addresses: list[str]
12365    :param destination_ports: List of destination ports.
12366    :type destination_ports: list[str]
12367    :param source_ip_groups: List of source IpGroups for this rule.
12368    :type source_ip_groups: list[str]
12369    """
12370
12371    _validation = {
12372        'rule_condition_type': {'required': True},
12373    }
12374
12375    _attribute_map = {
12376        'name': {'key': 'name', 'type': 'str'},
12377        'description': {'key': 'description', 'type': 'str'},
12378        'rule_condition_type': {'key': 'ruleConditionType', 'type': 'str'},
12379        'ip_protocols': {'key': 'ipProtocols', 'type': '[str]'},
12380        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
12381        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
12382        'destination_ports': {'key': 'destinationPorts', 'type': '[str]'},
12383        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
12384    }
12385
12386    def __init__(
12387        self,
12388        *,
12389        name: Optional[str] = None,
12390        description: Optional[str] = None,
12391        ip_protocols: Optional[List[Union[str, "FirewallPolicyRuleConditionNetworkProtocol"]]] = None,
12392        source_addresses: Optional[List[str]] = None,
12393        destination_addresses: Optional[List[str]] = None,
12394        destination_ports: Optional[List[str]] = None,
12395        source_ip_groups: Optional[List[str]] = None,
12396        **kwargs
12397    ):
12398        super(NatRuleCondition, self).__init__(name=name, description=description, **kwargs)
12399        self.rule_condition_type = 'NatRuleCondition'  # type: str
12400        self.ip_protocols = ip_protocols
12401        self.source_addresses = source_addresses
12402        self.destination_addresses = destination_addresses
12403        self.destination_ports = destination_ports
12404        self.source_ip_groups = source_ip_groups
12405
12406
12407class NetworkConfigurationDiagnosticParameters(msrest.serialization.Model):
12408    """Parameters to get network configuration diagnostic.
12409
12410    All required parameters must be populated in order to send to Azure.
12411
12412    :param target_resource_id: Required. The ID of the target resource to perform network
12413     configuration diagnostic. Valid options are VM, NetworkInterface, VMSS/NetworkInterface and
12414     Application Gateway.
12415    :type target_resource_id: str
12416    :param verbosity_level: Verbosity level. Possible values include: "Normal", "Minimum", "Full".
12417    :type verbosity_level: str or ~azure.mgmt.network.v2019_12_01.models.VerbosityLevel
12418    :param profiles: Required. List of network configuration diagnostic profiles.
12419    :type profiles:
12420     list[~azure.mgmt.network.v2019_12_01.models.NetworkConfigurationDiagnosticProfile]
12421    """
12422
12423    _validation = {
12424        'target_resource_id': {'required': True},
12425        'profiles': {'required': True},
12426    }
12427
12428    _attribute_map = {
12429        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
12430        'verbosity_level': {'key': 'verbosityLevel', 'type': 'str'},
12431        'profiles': {'key': 'profiles', 'type': '[NetworkConfigurationDiagnosticProfile]'},
12432    }
12433
12434    def __init__(
12435        self,
12436        *,
12437        target_resource_id: str,
12438        profiles: List["NetworkConfigurationDiagnosticProfile"],
12439        verbosity_level: Optional[Union[str, "VerbosityLevel"]] = None,
12440        **kwargs
12441    ):
12442        super(NetworkConfigurationDiagnosticParameters, self).__init__(**kwargs)
12443        self.target_resource_id = target_resource_id
12444        self.verbosity_level = verbosity_level
12445        self.profiles = profiles
12446
12447
12448class NetworkConfigurationDiagnosticProfile(msrest.serialization.Model):
12449    """Parameters to compare with network configuration.
12450
12451    All required parameters must be populated in order to send to Azure.
12452
12453    :param direction: Required. The direction of the traffic. Possible values include: "Inbound",
12454     "Outbound".
12455    :type direction: str or ~azure.mgmt.network.v2019_12_01.models.Direction
12456    :param protocol: Required. Protocol to be verified on. Accepted values are '*', TCP, UDP.
12457    :type protocol: str
12458    :param source: Required. Traffic source. Accepted values are '*', IP Address/CIDR, Service Tag.
12459    :type source: str
12460    :param destination: Required. Traffic destination. Accepted values are: '*', IP Address/CIDR,
12461     Service Tag.
12462    :type destination: str
12463    :param destination_port: Required. Traffic destination port. Accepted values are '*' and a
12464     single port in the range (0 - 65535).
12465    :type destination_port: str
12466    """
12467
12468    _validation = {
12469        'direction': {'required': True},
12470        'protocol': {'required': True},
12471        'source': {'required': True},
12472        'destination': {'required': True},
12473        'destination_port': {'required': True},
12474    }
12475
12476    _attribute_map = {
12477        'direction': {'key': 'direction', 'type': 'str'},
12478        'protocol': {'key': 'protocol', 'type': 'str'},
12479        'source': {'key': 'source', 'type': 'str'},
12480        'destination': {'key': 'destination', 'type': 'str'},
12481        'destination_port': {'key': 'destinationPort', 'type': 'str'},
12482    }
12483
12484    def __init__(
12485        self,
12486        *,
12487        direction: Union[str, "Direction"],
12488        protocol: str,
12489        source: str,
12490        destination: str,
12491        destination_port: str,
12492        **kwargs
12493    ):
12494        super(NetworkConfigurationDiagnosticProfile, self).__init__(**kwargs)
12495        self.direction = direction
12496        self.protocol = protocol
12497        self.source = source
12498        self.destination = destination
12499        self.destination_port = destination_port
12500
12501
12502class NetworkConfigurationDiagnosticResponse(msrest.serialization.Model):
12503    """Results of network configuration diagnostic on the target resource.
12504
12505    Variables are only populated by the server, and will be ignored when sending a request.
12506
12507    :ivar results: List of network configuration diagnostic results.
12508    :vartype results:
12509     list[~azure.mgmt.network.v2019_12_01.models.NetworkConfigurationDiagnosticResult]
12510    """
12511
12512    _validation = {
12513        'results': {'readonly': True},
12514    }
12515
12516    _attribute_map = {
12517        'results': {'key': 'results', 'type': '[NetworkConfigurationDiagnosticResult]'},
12518    }
12519
12520    def __init__(
12521        self,
12522        **kwargs
12523    ):
12524        super(NetworkConfigurationDiagnosticResponse, self).__init__(**kwargs)
12525        self.results = None
12526
12527
12528class NetworkConfigurationDiagnosticResult(msrest.serialization.Model):
12529    """Network configuration diagnostic result corresponded to provided traffic query.
12530
12531    :param profile: Network configuration diagnostic profile.
12532    :type profile: ~azure.mgmt.network.v2019_12_01.models.NetworkConfigurationDiagnosticProfile
12533    :param network_security_group_result: Network security group result.
12534    :type network_security_group_result:
12535     ~azure.mgmt.network.v2019_12_01.models.NetworkSecurityGroupResult
12536    """
12537
12538    _attribute_map = {
12539        'profile': {'key': 'profile', 'type': 'NetworkConfigurationDiagnosticProfile'},
12540        'network_security_group_result': {'key': 'networkSecurityGroupResult', 'type': 'NetworkSecurityGroupResult'},
12541    }
12542
12543    def __init__(
12544        self,
12545        *,
12546        profile: Optional["NetworkConfigurationDiagnosticProfile"] = None,
12547        network_security_group_result: Optional["NetworkSecurityGroupResult"] = None,
12548        **kwargs
12549    ):
12550        super(NetworkConfigurationDiagnosticResult, self).__init__(**kwargs)
12551        self.profile = profile
12552        self.network_security_group_result = network_security_group_result
12553
12554
12555class NetworkIntentPolicy(Resource):
12556    """Network Intent Policy resource.
12557
12558    Variables are only populated by the server, and will be ignored when sending a request.
12559
12560    :param id: Resource ID.
12561    :type id: str
12562    :ivar name: Resource name.
12563    :vartype name: str
12564    :ivar type: Resource type.
12565    :vartype type: str
12566    :param location: Resource location.
12567    :type location: str
12568    :param tags: A set of tags. Resource tags.
12569    :type tags: dict[str, str]
12570    :ivar etag: A unique read-only string that changes whenever the resource is updated.
12571    :vartype etag: str
12572    """
12573
12574    _validation = {
12575        'name': {'readonly': True},
12576        'type': {'readonly': True},
12577        'etag': {'readonly': True},
12578    }
12579
12580    _attribute_map = {
12581        'id': {'key': 'id', 'type': 'str'},
12582        'name': {'key': 'name', 'type': 'str'},
12583        'type': {'key': 'type', 'type': 'str'},
12584        'location': {'key': 'location', 'type': 'str'},
12585        'tags': {'key': 'tags', 'type': '{str}'},
12586        'etag': {'key': 'etag', 'type': 'str'},
12587    }
12588
12589    def __init__(
12590        self,
12591        *,
12592        id: Optional[str] = None,
12593        location: Optional[str] = None,
12594        tags: Optional[Dict[str, str]] = None,
12595        **kwargs
12596    ):
12597        super(NetworkIntentPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs)
12598        self.etag = None
12599
12600
12601class NetworkIntentPolicyConfiguration(msrest.serialization.Model):
12602    """Details of NetworkIntentPolicyConfiguration for PrepareNetworkPoliciesRequest.
12603
12604    :param network_intent_policy_name: The name of the Network Intent Policy for storing in target
12605     subscription.
12606    :type network_intent_policy_name: str
12607    :param source_network_intent_policy: Source network intent policy.
12608    :type source_network_intent_policy: ~azure.mgmt.network.v2019_12_01.models.NetworkIntentPolicy
12609    """
12610
12611    _attribute_map = {
12612        'network_intent_policy_name': {'key': 'networkIntentPolicyName', 'type': 'str'},
12613        'source_network_intent_policy': {'key': 'sourceNetworkIntentPolicy', 'type': 'NetworkIntentPolicy'},
12614    }
12615
12616    def __init__(
12617        self,
12618        *,
12619        network_intent_policy_name: Optional[str] = None,
12620        source_network_intent_policy: Optional["NetworkIntentPolicy"] = None,
12621        **kwargs
12622    ):
12623        super(NetworkIntentPolicyConfiguration, self).__init__(**kwargs)
12624        self.network_intent_policy_name = network_intent_policy_name
12625        self.source_network_intent_policy = source_network_intent_policy
12626
12627
12628class NetworkInterface(Resource):
12629    """A network interface in a resource group.
12630
12631    Variables are only populated by the server, and will be ignored when sending a request.
12632
12633    :param id: Resource ID.
12634    :type id: str
12635    :ivar name: Resource name.
12636    :vartype name: str
12637    :ivar type: Resource type.
12638    :vartype type: str
12639    :param location: Resource location.
12640    :type location: str
12641    :param tags: A set of tags. Resource tags.
12642    :type tags: dict[str, str]
12643    :ivar etag: A unique read-only string that changes whenever the resource is updated.
12644    :vartype etag: str
12645    :ivar virtual_machine: The reference to a virtual machine.
12646    :vartype virtual_machine: ~azure.mgmt.network.v2019_12_01.models.SubResource
12647    :param network_security_group: The reference to the NetworkSecurityGroup resource.
12648    :type network_security_group: ~azure.mgmt.network.v2019_12_01.models.NetworkSecurityGroup
12649    :ivar private_endpoint: A reference to the private endpoint to which the network interface is
12650     linked.
12651    :vartype private_endpoint: ~azure.mgmt.network.v2019_12_01.models.PrivateEndpoint
12652    :param ip_configurations: A list of IPConfigurations of the network interface.
12653    :type ip_configurations:
12654     list[~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceIPConfiguration]
12655    :ivar tap_configurations: A list of TapConfigurations of the network interface.
12656    :vartype tap_configurations:
12657     list[~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceTapConfiguration]
12658    :param dns_settings: The DNS settings in network interface.
12659    :type dns_settings: ~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceDnsSettings
12660    :ivar mac_address: The MAC address of the network interface.
12661    :vartype mac_address: str
12662    :ivar primary: Whether this is a primary network interface on a virtual machine.
12663    :vartype primary: bool
12664    :param enable_accelerated_networking: If the network interface is accelerated networking
12665     enabled.
12666    :type enable_accelerated_networking: bool
12667    :param enable_ip_forwarding: Indicates whether IP forwarding is enabled on this network
12668     interface.
12669    :type enable_ip_forwarding: bool
12670    :ivar hosted_workloads: A list of references to linked BareMetal resources.
12671    :vartype hosted_workloads: list[str]
12672    :ivar resource_guid: The resource GUID property of the network interface resource.
12673    :vartype resource_guid: str
12674    :ivar provisioning_state: The provisioning state of the network interface resource. Possible
12675     values include: "Succeeded", "Updating", "Deleting", "Failed".
12676    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
12677    """
12678
12679    _validation = {
12680        'name': {'readonly': True},
12681        'type': {'readonly': True},
12682        'etag': {'readonly': True},
12683        'virtual_machine': {'readonly': True},
12684        'private_endpoint': {'readonly': True},
12685        'tap_configurations': {'readonly': True},
12686        'mac_address': {'readonly': True},
12687        'primary': {'readonly': True},
12688        'hosted_workloads': {'readonly': True},
12689        'resource_guid': {'readonly': True},
12690        'provisioning_state': {'readonly': True},
12691    }
12692
12693    _attribute_map = {
12694        'id': {'key': 'id', 'type': 'str'},
12695        'name': {'key': 'name', 'type': 'str'},
12696        'type': {'key': 'type', 'type': 'str'},
12697        'location': {'key': 'location', 'type': 'str'},
12698        'tags': {'key': 'tags', 'type': '{str}'},
12699        'etag': {'key': 'etag', 'type': 'str'},
12700        'virtual_machine': {'key': 'properties.virtualMachine', 'type': 'SubResource'},
12701        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
12702        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpoint'},
12703        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
12704        'tap_configurations': {'key': 'properties.tapConfigurations', 'type': '[NetworkInterfaceTapConfiguration]'},
12705        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'NetworkInterfaceDnsSettings'},
12706        'mac_address': {'key': 'properties.macAddress', 'type': 'str'},
12707        'primary': {'key': 'properties.primary', 'type': 'bool'},
12708        'enable_accelerated_networking': {'key': 'properties.enableAcceleratedNetworking', 'type': 'bool'},
12709        'enable_ip_forwarding': {'key': 'properties.enableIPForwarding', 'type': 'bool'},
12710        'hosted_workloads': {'key': 'properties.hostedWorkloads', 'type': '[str]'},
12711        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
12712        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
12713    }
12714
12715    def __init__(
12716        self,
12717        *,
12718        id: Optional[str] = None,
12719        location: Optional[str] = None,
12720        tags: Optional[Dict[str, str]] = None,
12721        network_security_group: Optional["NetworkSecurityGroup"] = None,
12722        ip_configurations: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
12723        dns_settings: Optional["NetworkInterfaceDnsSettings"] = None,
12724        enable_accelerated_networking: Optional[bool] = None,
12725        enable_ip_forwarding: Optional[bool] = None,
12726        **kwargs
12727    ):
12728        super(NetworkInterface, self).__init__(id=id, location=location, tags=tags, **kwargs)
12729        self.etag = None
12730        self.virtual_machine = None
12731        self.network_security_group = network_security_group
12732        self.private_endpoint = None
12733        self.ip_configurations = ip_configurations
12734        self.tap_configurations = None
12735        self.dns_settings = dns_settings
12736        self.mac_address = None
12737        self.primary = None
12738        self.enable_accelerated_networking = enable_accelerated_networking
12739        self.enable_ip_forwarding = enable_ip_forwarding
12740        self.hosted_workloads = None
12741        self.resource_guid = None
12742        self.provisioning_state = None
12743
12744
12745class NetworkInterfaceAssociation(msrest.serialization.Model):
12746    """Network interface and its custom security rules.
12747
12748    Variables are only populated by the server, and will be ignored when sending a request.
12749
12750    :ivar id: Network interface ID.
12751    :vartype id: str
12752    :param security_rules: Collection of custom security rules.
12753    :type security_rules: list[~azure.mgmt.network.v2019_12_01.models.SecurityRule]
12754    """
12755
12756    _validation = {
12757        'id': {'readonly': True},
12758    }
12759
12760    _attribute_map = {
12761        'id': {'key': 'id', 'type': 'str'},
12762        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
12763    }
12764
12765    def __init__(
12766        self,
12767        *,
12768        security_rules: Optional[List["SecurityRule"]] = None,
12769        **kwargs
12770    ):
12771        super(NetworkInterfaceAssociation, self).__init__(**kwargs)
12772        self.id = None
12773        self.security_rules = security_rules
12774
12775
12776class NetworkInterfaceDnsSettings(msrest.serialization.Model):
12777    """DNS settings of a network interface.
12778
12779    Variables are only populated by the server, and will be ignored when sending a request.
12780
12781    :param dns_servers: List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure
12782     provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it must be
12783     the only value in dnsServers collection.
12784    :type dns_servers: list[str]
12785    :ivar applied_dns_servers: If the VM that uses this NIC is part of an Availability Set, then
12786     this list will have the union of all DNS servers from all NICs that are part of the
12787     Availability Set. This property is what is configured on each of those VMs.
12788    :vartype applied_dns_servers: list[str]
12789    :param internal_dns_name_label: Relative DNS name for this NIC used for internal communications
12790     between VMs in the same virtual network.
12791    :type internal_dns_name_label: str
12792    :ivar internal_fqdn: Fully qualified DNS name supporting internal communications between VMs in
12793     the same virtual network.
12794    :vartype internal_fqdn: str
12795    :ivar internal_domain_name_suffix: Even if internalDnsNameLabel is not specified, a DNS entry
12796     is created for the primary NIC of the VM. This DNS name can be constructed by concatenating the
12797     VM name with the value of internalDomainNameSuffix.
12798    :vartype internal_domain_name_suffix: str
12799    """
12800
12801    _validation = {
12802        'applied_dns_servers': {'readonly': True},
12803        'internal_fqdn': {'readonly': True},
12804        'internal_domain_name_suffix': {'readonly': True},
12805    }
12806
12807    _attribute_map = {
12808        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
12809        'applied_dns_servers': {'key': 'appliedDnsServers', 'type': '[str]'},
12810        'internal_dns_name_label': {'key': 'internalDnsNameLabel', 'type': 'str'},
12811        'internal_fqdn': {'key': 'internalFqdn', 'type': 'str'},
12812        'internal_domain_name_suffix': {'key': 'internalDomainNameSuffix', 'type': 'str'},
12813    }
12814
12815    def __init__(
12816        self,
12817        *,
12818        dns_servers: Optional[List[str]] = None,
12819        internal_dns_name_label: Optional[str] = None,
12820        **kwargs
12821    ):
12822        super(NetworkInterfaceDnsSettings, self).__init__(**kwargs)
12823        self.dns_servers = dns_servers
12824        self.applied_dns_servers = None
12825        self.internal_dns_name_label = internal_dns_name_label
12826        self.internal_fqdn = None
12827        self.internal_domain_name_suffix = None
12828
12829
12830class NetworkInterfaceIPConfiguration(SubResource):
12831    """IPConfiguration in a network interface.
12832
12833    Variables are only populated by the server, and will be ignored when sending a request.
12834
12835    :param id: Resource ID.
12836    :type id: str
12837    :param name: The name of the resource that is unique within a resource group. This name can be
12838     used to access the resource.
12839    :type name: str
12840    :ivar etag: A unique read-only string that changes whenever the resource is updated.
12841    :vartype etag: str
12842    :param virtual_network_taps: The reference to Virtual Network Taps.
12843    :type virtual_network_taps: list[~azure.mgmt.network.v2019_12_01.models.VirtualNetworkTap]
12844    :param application_gateway_backend_address_pools: The reference to
12845     ApplicationGatewayBackendAddressPool resource.
12846    :type application_gateway_backend_address_pools:
12847     list[~azure.mgmt.network.v2019_12_01.models.ApplicationGatewayBackendAddressPool]
12848    :param load_balancer_backend_address_pools: The reference to LoadBalancerBackendAddressPool
12849     resource.
12850    :type load_balancer_backend_address_pools:
12851     list[~azure.mgmt.network.v2019_12_01.models.BackendAddressPool]
12852    :param load_balancer_inbound_nat_rules: A list of references of LoadBalancerInboundNatRules.
12853    :type load_balancer_inbound_nat_rules:
12854     list[~azure.mgmt.network.v2019_12_01.models.InboundNatRule]
12855    :param private_ip_address: Private IP address of the IP configuration.
12856    :type private_ip_address: str
12857    :param private_ip_allocation_method: The private IP address allocation method. Possible values
12858     include: "Static", "Dynamic".
12859    :type private_ip_allocation_method: str or
12860     ~azure.mgmt.network.v2019_12_01.models.IPAllocationMethod
12861    :param private_ip_address_version: Whether the specific IP configuration is IPv4 or IPv6.
12862     Default is IPv4. Possible values include: "IPv4", "IPv6".
12863    :type private_ip_address_version: str or ~azure.mgmt.network.v2019_12_01.models.IPVersion
12864    :param subnet: Subnet bound to the IP configuration.
12865    :type subnet: ~azure.mgmt.network.v2019_12_01.models.Subnet
12866    :param primary: Whether this is a primary customer address on the network interface.
12867    :type primary: bool
12868    :param public_ip_address: Public IP address bound to the IP configuration.
12869    :type public_ip_address: ~azure.mgmt.network.v2019_12_01.models.PublicIPAddress
12870    :param application_security_groups: Application security groups in which the IP configuration
12871     is included.
12872    :type application_security_groups:
12873     list[~azure.mgmt.network.v2019_12_01.models.ApplicationSecurityGroup]
12874    :ivar provisioning_state: The provisioning state of the network interface IP configuration.
12875     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
12876    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
12877    :ivar private_link_connection_properties: PrivateLinkConnection properties for the network
12878     interface.
12879    :vartype private_link_connection_properties:
12880     ~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties
12881    """
12882
12883    _validation = {
12884        'etag': {'readonly': True},
12885        'provisioning_state': {'readonly': True},
12886        'private_link_connection_properties': {'readonly': True},
12887    }
12888
12889    _attribute_map = {
12890        'id': {'key': 'id', 'type': 'str'},
12891        'name': {'key': 'name', 'type': 'str'},
12892        'etag': {'key': 'etag', 'type': 'str'},
12893        'virtual_network_taps': {'key': 'properties.virtualNetworkTaps', 'type': '[VirtualNetworkTap]'},
12894        'application_gateway_backend_address_pools': {'key': 'properties.applicationGatewayBackendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
12895        'load_balancer_backend_address_pools': {'key': 'properties.loadBalancerBackendAddressPools', 'type': '[BackendAddressPool]'},
12896        'load_balancer_inbound_nat_rules': {'key': 'properties.loadBalancerInboundNatRules', 'type': '[InboundNatRule]'},
12897        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
12898        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
12899        'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'},
12900        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
12901        'primary': {'key': 'properties.primary', 'type': 'bool'},
12902        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
12903        'application_security_groups': {'key': 'properties.applicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
12904        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
12905        'private_link_connection_properties': {'key': 'properties.privateLinkConnectionProperties', 'type': 'NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties'},
12906    }
12907
12908    def __init__(
12909        self,
12910        *,
12911        id: Optional[str] = None,
12912        name: Optional[str] = None,
12913        virtual_network_taps: Optional[List["VirtualNetworkTap"]] = None,
12914        application_gateway_backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None,
12915        load_balancer_backend_address_pools: Optional[List["BackendAddressPool"]] = None,
12916        load_balancer_inbound_nat_rules: Optional[List["InboundNatRule"]] = None,
12917        private_ip_address: Optional[str] = None,
12918        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
12919        private_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
12920        subnet: Optional["Subnet"] = None,
12921        primary: Optional[bool] = None,
12922        public_ip_address: Optional["PublicIPAddress"] = None,
12923        application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
12924        **kwargs
12925    ):
12926        super(NetworkInterfaceIPConfiguration, self).__init__(id=id, **kwargs)
12927        self.name = name
12928        self.etag = None
12929        self.virtual_network_taps = virtual_network_taps
12930        self.application_gateway_backend_address_pools = application_gateway_backend_address_pools
12931        self.load_balancer_backend_address_pools = load_balancer_backend_address_pools
12932        self.load_balancer_inbound_nat_rules = load_balancer_inbound_nat_rules
12933        self.private_ip_address = private_ip_address
12934        self.private_ip_allocation_method = private_ip_allocation_method
12935        self.private_ip_address_version = private_ip_address_version
12936        self.subnet = subnet
12937        self.primary = primary
12938        self.public_ip_address = public_ip_address
12939        self.application_security_groups = application_security_groups
12940        self.provisioning_state = None
12941        self.private_link_connection_properties = None
12942
12943
12944class NetworkInterfaceIPConfigurationListResult(msrest.serialization.Model):
12945    """Response for list ip configurations API service call.
12946
12947    Variables are only populated by the server, and will be ignored when sending a request.
12948
12949    :param value: A list of ip configurations.
12950    :type value: list[~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceIPConfiguration]
12951    :ivar next_link: The URL to get the next set of results.
12952    :vartype next_link: str
12953    """
12954
12955    _validation = {
12956        'next_link': {'readonly': True},
12957    }
12958
12959    _attribute_map = {
12960        'value': {'key': 'value', 'type': '[NetworkInterfaceIPConfiguration]'},
12961        'next_link': {'key': 'nextLink', 'type': 'str'},
12962    }
12963
12964    def __init__(
12965        self,
12966        *,
12967        value: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
12968        **kwargs
12969    ):
12970        super(NetworkInterfaceIPConfigurationListResult, self).__init__(**kwargs)
12971        self.value = value
12972        self.next_link = None
12973
12974
12975class NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties(msrest.serialization.Model):
12976    """PrivateLinkConnection properties for the network interface.
12977
12978    Variables are only populated by the server, and will be ignored when sending a request.
12979
12980    :ivar group_id: The group ID for current private link connection.
12981    :vartype group_id: str
12982    :ivar required_member_name: The required member name for current private link connection.
12983    :vartype required_member_name: str
12984    :ivar fqdns: List of FQDNs for current private link connection.
12985    :vartype fqdns: list[str]
12986    """
12987
12988    _validation = {
12989        'group_id': {'readonly': True},
12990        'required_member_name': {'readonly': True},
12991        'fqdns': {'readonly': True},
12992    }
12993
12994    _attribute_map = {
12995        'group_id': {'key': 'groupId', 'type': 'str'},
12996        'required_member_name': {'key': 'requiredMemberName', 'type': 'str'},
12997        'fqdns': {'key': 'fqdns', 'type': '[str]'},
12998    }
12999
13000    def __init__(
13001        self,
13002        **kwargs
13003    ):
13004        super(NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties, self).__init__(**kwargs)
13005        self.group_id = None
13006        self.required_member_name = None
13007        self.fqdns = None
13008
13009
13010class NetworkInterfaceListResult(msrest.serialization.Model):
13011    """Response for the ListNetworkInterface API service call.
13012
13013    Variables are only populated by the server, and will be ignored when sending a request.
13014
13015    :param value: A list of network interfaces in a resource group.
13016    :type value: list[~azure.mgmt.network.v2019_12_01.models.NetworkInterface]
13017    :ivar next_link: The URL to get the next set of results.
13018    :vartype next_link: str
13019    """
13020
13021    _validation = {
13022        'next_link': {'readonly': True},
13023    }
13024
13025    _attribute_map = {
13026        'value': {'key': 'value', 'type': '[NetworkInterface]'},
13027        'next_link': {'key': 'nextLink', 'type': 'str'},
13028    }
13029
13030    def __init__(
13031        self,
13032        *,
13033        value: Optional[List["NetworkInterface"]] = None,
13034        **kwargs
13035    ):
13036        super(NetworkInterfaceListResult, self).__init__(**kwargs)
13037        self.value = value
13038        self.next_link = None
13039
13040
13041class NetworkInterfaceLoadBalancerListResult(msrest.serialization.Model):
13042    """Response for list ip configurations API service call.
13043
13044    Variables are only populated by the server, and will be ignored when sending a request.
13045
13046    :param value: A list of load balancers.
13047    :type value: list[~azure.mgmt.network.v2019_12_01.models.LoadBalancer]
13048    :ivar next_link: The URL to get the next set of results.
13049    :vartype next_link: str
13050    """
13051
13052    _validation = {
13053        'next_link': {'readonly': True},
13054    }
13055
13056    _attribute_map = {
13057        'value': {'key': 'value', 'type': '[LoadBalancer]'},
13058        'next_link': {'key': 'nextLink', 'type': 'str'},
13059    }
13060
13061    def __init__(
13062        self,
13063        *,
13064        value: Optional[List["LoadBalancer"]] = None,
13065        **kwargs
13066    ):
13067        super(NetworkInterfaceLoadBalancerListResult, self).__init__(**kwargs)
13068        self.value = value
13069        self.next_link = None
13070
13071
13072class NetworkInterfaceTapConfiguration(SubResource):
13073    """Tap configuration in a Network Interface.
13074
13075    Variables are only populated by the server, and will be ignored when sending a request.
13076
13077    :param id: Resource ID.
13078    :type id: str
13079    :param name: The name of the resource that is unique within a resource group. This name can be
13080     used to access the resource.
13081    :type name: str
13082    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13083    :vartype etag: str
13084    :ivar type: Sub Resource type.
13085    :vartype type: str
13086    :param virtual_network_tap: The reference to the Virtual Network Tap resource.
13087    :type virtual_network_tap: ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkTap
13088    :ivar provisioning_state: The provisioning state of the network interface tap configuration
13089     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
13090    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
13091    """
13092
13093    _validation = {
13094        'etag': {'readonly': True},
13095        'type': {'readonly': True},
13096        'provisioning_state': {'readonly': True},
13097    }
13098
13099    _attribute_map = {
13100        'id': {'key': 'id', 'type': 'str'},
13101        'name': {'key': 'name', 'type': 'str'},
13102        'etag': {'key': 'etag', 'type': 'str'},
13103        'type': {'key': 'type', 'type': 'str'},
13104        'virtual_network_tap': {'key': 'properties.virtualNetworkTap', 'type': 'VirtualNetworkTap'},
13105        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13106    }
13107
13108    def __init__(
13109        self,
13110        *,
13111        id: Optional[str] = None,
13112        name: Optional[str] = None,
13113        virtual_network_tap: Optional["VirtualNetworkTap"] = None,
13114        **kwargs
13115    ):
13116        super(NetworkInterfaceTapConfiguration, self).__init__(id=id, **kwargs)
13117        self.name = name
13118        self.etag = None
13119        self.type = None
13120        self.virtual_network_tap = virtual_network_tap
13121        self.provisioning_state = None
13122
13123
13124class NetworkInterfaceTapConfigurationListResult(msrest.serialization.Model):
13125    """Response for list tap configurations API service call.
13126
13127    Variables are only populated by the server, and will be ignored when sending a request.
13128
13129    :param value: A list of tap configurations.
13130    :type value: list[~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceTapConfiguration]
13131    :ivar next_link: The URL to get the next set of results.
13132    :vartype next_link: str
13133    """
13134
13135    _validation = {
13136        'next_link': {'readonly': True},
13137    }
13138
13139    _attribute_map = {
13140        'value': {'key': 'value', 'type': '[NetworkInterfaceTapConfiguration]'},
13141        'next_link': {'key': 'nextLink', 'type': 'str'},
13142    }
13143
13144    def __init__(
13145        self,
13146        *,
13147        value: Optional[List["NetworkInterfaceTapConfiguration"]] = None,
13148        **kwargs
13149    ):
13150        super(NetworkInterfaceTapConfigurationListResult, self).__init__(**kwargs)
13151        self.value = value
13152        self.next_link = None
13153
13154
13155class NetworkProfile(Resource):
13156    """Network profile resource.
13157
13158    Variables are only populated by the server, and will be ignored when sending a request.
13159
13160    :param id: Resource ID.
13161    :type id: str
13162    :ivar name: Resource name.
13163    :vartype name: str
13164    :ivar type: Resource type.
13165    :vartype type: str
13166    :param location: Resource location.
13167    :type location: str
13168    :param tags: A set of tags. Resource tags.
13169    :type tags: dict[str, str]
13170    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13171    :vartype etag: str
13172    :ivar container_network_interfaces: List of child container network interfaces.
13173    :vartype container_network_interfaces:
13174     list[~azure.mgmt.network.v2019_12_01.models.ContainerNetworkInterface]
13175    :param container_network_interface_configurations: List of chid container network interface
13176     configurations.
13177    :type container_network_interface_configurations:
13178     list[~azure.mgmt.network.v2019_12_01.models.ContainerNetworkInterfaceConfiguration]
13179    :ivar resource_guid: The resource GUID property of the network profile resource.
13180    :vartype resource_guid: str
13181    :ivar provisioning_state: The provisioning state of the network profile resource. Possible
13182     values include: "Succeeded", "Updating", "Deleting", "Failed".
13183    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
13184    """
13185
13186    _validation = {
13187        'name': {'readonly': True},
13188        'type': {'readonly': True},
13189        'etag': {'readonly': True},
13190        'container_network_interfaces': {'readonly': True},
13191        'resource_guid': {'readonly': True},
13192        'provisioning_state': {'readonly': True},
13193    }
13194
13195    _attribute_map = {
13196        'id': {'key': 'id', 'type': 'str'},
13197        'name': {'key': 'name', 'type': 'str'},
13198        'type': {'key': 'type', 'type': 'str'},
13199        'location': {'key': 'location', 'type': 'str'},
13200        'tags': {'key': 'tags', 'type': '{str}'},
13201        'etag': {'key': 'etag', 'type': 'str'},
13202        'container_network_interfaces': {'key': 'properties.containerNetworkInterfaces', 'type': '[ContainerNetworkInterface]'},
13203        'container_network_interface_configurations': {'key': 'properties.containerNetworkInterfaceConfigurations', 'type': '[ContainerNetworkInterfaceConfiguration]'},
13204        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
13205        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13206    }
13207
13208    def __init__(
13209        self,
13210        *,
13211        id: Optional[str] = None,
13212        location: Optional[str] = None,
13213        tags: Optional[Dict[str, str]] = None,
13214        container_network_interface_configurations: Optional[List["ContainerNetworkInterfaceConfiguration"]] = None,
13215        **kwargs
13216    ):
13217        super(NetworkProfile, self).__init__(id=id, location=location, tags=tags, **kwargs)
13218        self.etag = None
13219        self.container_network_interfaces = None
13220        self.container_network_interface_configurations = container_network_interface_configurations
13221        self.resource_guid = None
13222        self.provisioning_state = None
13223
13224
13225class NetworkProfileListResult(msrest.serialization.Model):
13226    """Response for ListNetworkProfiles API service call.
13227
13228    :param value: A list of network profiles that exist in a resource group.
13229    :type value: list[~azure.mgmt.network.v2019_12_01.models.NetworkProfile]
13230    :param next_link: The URL to get the next set of results.
13231    :type next_link: str
13232    """
13233
13234    _attribute_map = {
13235        'value': {'key': 'value', 'type': '[NetworkProfile]'},
13236        'next_link': {'key': 'nextLink', 'type': 'str'},
13237    }
13238
13239    def __init__(
13240        self,
13241        *,
13242        value: Optional[List["NetworkProfile"]] = None,
13243        next_link: Optional[str] = None,
13244        **kwargs
13245    ):
13246        super(NetworkProfileListResult, self).__init__(**kwargs)
13247        self.value = value
13248        self.next_link = next_link
13249
13250
13251class NetworkRuleCondition(FirewallPolicyRuleCondition):
13252    """Rule condition of type network.
13253
13254    All required parameters must be populated in order to send to Azure.
13255
13256    :param name: Name of the rule condition.
13257    :type name: str
13258    :param description: Description of the rule condition.
13259    :type description: str
13260    :param rule_condition_type: Required. Rule Condition Type.Constant filled by server.  Possible
13261     values include: "ApplicationRuleCondition", "NetworkRuleCondition", "NatRuleCondition".
13262    :type rule_condition_type: str or
13263     ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleConditionType
13264    :param ip_protocols: Array of FirewallPolicyRuleConditionNetworkProtocols.
13265    :type ip_protocols: list[str or
13266     ~azure.mgmt.network.v2019_12_01.models.FirewallPolicyRuleConditionNetworkProtocol]
13267    :param source_addresses: List of source IP addresses for this rule.
13268    :type source_addresses: list[str]
13269    :param destination_addresses: List of destination IP addresses or Service Tags.
13270    :type destination_addresses: list[str]
13271    :param destination_ports: List of destination ports.
13272    :type destination_ports: list[str]
13273    :param source_ip_groups: List of source IpGroups for this rule.
13274    :type source_ip_groups: list[str]
13275    :param destination_ip_groups: List of destination IpGroups for this rule.
13276    :type destination_ip_groups: list[str]
13277    """
13278
13279    _validation = {
13280        'rule_condition_type': {'required': True},
13281    }
13282
13283    _attribute_map = {
13284        'name': {'key': 'name', 'type': 'str'},
13285        'description': {'key': 'description', 'type': 'str'},
13286        'rule_condition_type': {'key': 'ruleConditionType', 'type': 'str'},
13287        'ip_protocols': {'key': 'ipProtocols', 'type': '[str]'},
13288        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
13289        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
13290        'destination_ports': {'key': 'destinationPorts', 'type': '[str]'},
13291        'source_ip_groups': {'key': 'sourceIpGroups', 'type': '[str]'},
13292        'destination_ip_groups': {'key': 'destinationIpGroups', 'type': '[str]'},
13293    }
13294
13295    def __init__(
13296        self,
13297        *,
13298        name: Optional[str] = None,
13299        description: Optional[str] = None,
13300        ip_protocols: Optional[List[Union[str, "FirewallPolicyRuleConditionNetworkProtocol"]]] = None,
13301        source_addresses: Optional[List[str]] = None,
13302        destination_addresses: Optional[List[str]] = None,
13303        destination_ports: Optional[List[str]] = None,
13304        source_ip_groups: Optional[List[str]] = None,
13305        destination_ip_groups: Optional[List[str]] = None,
13306        **kwargs
13307    ):
13308        super(NetworkRuleCondition, self).__init__(name=name, description=description, **kwargs)
13309        self.rule_condition_type = 'NetworkRuleCondition'  # type: str
13310        self.ip_protocols = ip_protocols
13311        self.source_addresses = source_addresses
13312        self.destination_addresses = destination_addresses
13313        self.destination_ports = destination_ports
13314        self.source_ip_groups = source_ip_groups
13315        self.destination_ip_groups = destination_ip_groups
13316
13317
13318class NetworkSecurityGroup(Resource):
13319    """NetworkSecurityGroup resource.
13320
13321    Variables are only populated by the server, and will be ignored when sending a request.
13322
13323    :param id: Resource ID.
13324    :type id: str
13325    :ivar name: Resource name.
13326    :vartype name: str
13327    :ivar type: Resource type.
13328    :vartype type: str
13329    :param location: Resource location.
13330    :type location: str
13331    :param tags: A set of tags. Resource tags.
13332    :type tags: dict[str, str]
13333    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13334    :vartype etag: str
13335    :param security_rules: A collection of security rules of the network security group.
13336    :type security_rules: list[~azure.mgmt.network.v2019_12_01.models.SecurityRule]
13337    :ivar default_security_rules: The default security rules of network security group.
13338    :vartype default_security_rules: list[~azure.mgmt.network.v2019_12_01.models.SecurityRule]
13339    :ivar network_interfaces: A collection of references to network interfaces.
13340    :vartype network_interfaces: list[~azure.mgmt.network.v2019_12_01.models.NetworkInterface]
13341    :ivar subnets: A collection of references to subnets.
13342    :vartype subnets: list[~azure.mgmt.network.v2019_12_01.models.Subnet]
13343    :ivar flow_logs: A collection of references to flow log resources.
13344    :vartype flow_logs: list[~azure.mgmt.network.v2019_12_01.models.FlowLog]
13345    :ivar resource_guid: The resource GUID property of the network security group resource.
13346    :vartype resource_guid: str
13347    :ivar provisioning_state: The provisioning state of the network security group resource.
13348     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
13349    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
13350    """
13351
13352    _validation = {
13353        'name': {'readonly': True},
13354        'type': {'readonly': True},
13355        'etag': {'readonly': True},
13356        'default_security_rules': {'readonly': True},
13357        'network_interfaces': {'readonly': True},
13358        'subnets': {'readonly': True},
13359        'flow_logs': {'readonly': True},
13360        'resource_guid': {'readonly': True},
13361        'provisioning_state': {'readonly': True},
13362    }
13363
13364    _attribute_map = {
13365        'id': {'key': 'id', 'type': 'str'},
13366        'name': {'key': 'name', 'type': 'str'},
13367        'type': {'key': 'type', 'type': 'str'},
13368        'location': {'key': 'location', 'type': 'str'},
13369        'tags': {'key': 'tags', 'type': '{str}'},
13370        'etag': {'key': 'etag', 'type': 'str'},
13371        'security_rules': {'key': 'properties.securityRules', 'type': '[SecurityRule]'},
13372        'default_security_rules': {'key': 'properties.defaultSecurityRules', 'type': '[SecurityRule]'},
13373        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
13374        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
13375        'flow_logs': {'key': 'properties.flowLogs', 'type': '[FlowLog]'},
13376        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
13377        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13378    }
13379
13380    def __init__(
13381        self,
13382        *,
13383        id: Optional[str] = None,
13384        location: Optional[str] = None,
13385        tags: Optional[Dict[str, str]] = None,
13386        security_rules: Optional[List["SecurityRule"]] = None,
13387        **kwargs
13388    ):
13389        super(NetworkSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
13390        self.etag = None
13391        self.security_rules = security_rules
13392        self.default_security_rules = None
13393        self.network_interfaces = None
13394        self.subnets = None
13395        self.flow_logs = None
13396        self.resource_guid = None
13397        self.provisioning_state = None
13398
13399
13400class NetworkSecurityGroupListResult(msrest.serialization.Model):
13401    """Response for ListNetworkSecurityGroups API service call.
13402
13403    :param value: A list of NetworkSecurityGroup resources.
13404    :type value: list[~azure.mgmt.network.v2019_12_01.models.NetworkSecurityGroup]
13405    :param next_link: The URL to get the next set of results.
13406    :type next_link: str
13407    """
13408
13409    _attribute_map = {
13410        'value': {'key': 'value', 'type': '[NetworkSecurityGroup]'},
13411        'next_link': {'key': 'nextLink', 'type': 'str'},
13412    }
13413
13414    def __init__(
13415        self,
13416        *,
13417        value: Optional[List["NetworkSecurityGroup"]] = None,
13418        next_link: Optional[str] = None,
13419        **kwargs
13420    ):
13421        super(NetworkSecurityGroupListResult, self).__init__(**kwargs)
13422        self.value = value
13423        self.next_link = next_link
13424
13425
13426class NetworkSecurityGroupResult(msrest.serialization.Model):
13427    """Network configuration diagnostic result corresponded provided traffic query.
13428
13429    Variables are only populated by the server, and will be ignored when sending a request.
13430
13431    :param security_rule_access_result: The network traffic is allowed or denied. Possible values
13432     include: "Allow", "Deny".
13433    :type security_rule_access_result: str or
13434     ~azure.mgmt.network.v2019_12_01.models.SecurityRuleAccess
13435    :ivar evaluated_network_security_groups: List of results network security groups diagnostic.
13436    :vartype evaluated_network_security_groups:
13437     list[~azure.mgmt.network.v2019_12_01.models.EvaluatedNetworkSecurityGroup]
13438    """
13439
13440    _validation = {
13441        'evaluated_network_security_groups': {'readonly': True},
13442    }
13443
13444    _attribute_map = {
13445        'security_rule_access_result': {'key': 'securityRuleAccessResult', 'type': 'str'},
13446        'evaluated_network_security_groups': {'key': 'evaluatedNetworkSecurityGroups', 'type': '[EvaluatedNetworkSecurityGroup]'},
13447    }
13448
13449    def __init__(
13450        self,
13451        *,
13452        security_rule_access_result: Optional[Union[str, "SecurityRuleAccess"]] = None,
13453        **kwargs
13454    ):
13455        super(NetworkSecurityGroupResult, self).__init__(**kwargs)
13456        self.security_rule_access_result = security_rule_access_result
13457        self.evaluated_network_security_groups = None
13458
13459
13460class NetworkSecurityRulesEvaluationResult(msrest.serialization.Model):
13461    """Network security rules evaluation result.
13462
13463    :param name: Name of the network security rule.
13464    :type name: str
13465    :param protocol_matched: Value indicating whether protocol is matched.
13466    :type protocol_matched: bool
13467    :param source_matched: Value indicating whether source is matched.
13468    :type source_matched: bool
13469    :param source_port_matched: Value indicating whether source port is matched.
13470    :type source_port_matched: bool
13471    :param destination_matched: Value indicating whether destination is matched.
13472    :type destination_matched: bool
13473    :param destination_port_matched: Value indicating whether destination port is matched.
13474    :type destination_port_matched: bool
13475    """
13476
13477    _attribute_map = {
13478        'name': {'key': 'name', 'type': 'str'},
13479        'protocol_matched': {'key': 'protocolMatched', 'type': 'bool'},
13480        'source_matched': {'key': 'sourceMatched', 'type': 'bool'},
13481        'source_port_matched': {'key': 'sourcePortMatched', 'type': 'bool'},
13482        'destination_matched': {'key': 'destinationMatched', 'type': 'bool'},
13483        'destination_port_matched': {'key': 'destinationPortMatched', 'type': 'bool'},
13484    }
13485
13486    def __init__(
13487        self,
13488        *,
13489        name: Optional[str] = None,
13490        protocol_matched: Optional[bool] = None,
13491        source_matched: Optional[bool] = None,
13492        source_port_matched: Optional[bool] = None,
13493        destination_matched: Optional[bool] = None,
13494        destination_port_matched: Optional[bool] = None,
13495        **kwargs
13496    ):
13497        super(NetworkSecurityRulesEvaluationResult, self).__init__(**kwargs)
13498        self.name = name
13499        self.protocol_matched = protocol_matched
13500        self.source_matched = source_matched
13501        self.source_port_matched = source_port_matched
13502        self.destination_matched = destination_matched
13503        self.destination_port_matched = destination_port_matched
13504
13505
13506class NetworkVirtualAppliance(Resource):
13507    """NetworkVirtualAppliance Resource.
13508
13509    Variables are only populated by the server, and will be ignored when sending a request.
13510
13511    :param id: Resource ID.
13512    :type id: str
13513    :ivar name: Resource name.
13514    :vartype name: str
13515    :ivar type: Resource type.
13516    :vartype type: str
13517    :param location: Resource location.
13518    :type location: str
13519    :param tags: A set of tags. Resource tags.
13520    :type tags: dict[str, str]
13521    :param identity: The service principal that has read access to cloud-init and config blob.
13522    :type identity: ~azure.mgmt.network.v2019_12_01.models.ManagedServiceIdentity
13523    :param sku: Network Virtual Appliance SKU.
13524    :type sku: ~azure.mgmt.network.v2019_12_01.models.VirtualApplianceSkuProperties
13525    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13526    :vartype etag: str
13527    :param boot_strap_configuration_blob: BootStrapConfigurationBlob storage URLs.
13528    :type boot_strap_configuration_blob: list[str]
13529    :param virtual_hub: The Virtual Hub where Network Virtual Appliance is being deployed.
13530    :type virtual_hub: ~azure.mgmt.network.v2019_12_01.models.SubResource
13531    :param cloud_init_configuration_blob: CloudInitConfigurationBlob storage URLs.
13532    :type cloud_init_configuration_blob: list[str]
13533    :param virtual_appliance_asn: VirtualAppliance ASN.
13534    :type virtual_appliance_asn: long
13535    :ivar virtual_appliance_nics: List of Virtual Appliance Network Interfaces.
13536    :vartype virtual_appliance_nics:
13537     list[~azure.mgmt.network.v2019_12_01.models.VirtualApplianceNicProperties]
13538    :ivar provisioning_state: The provisioning state of the resource. Possible values include:
13539     "Succeeded", "Updating", "Deleting", "Failed".
13540    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
13541    """
13542
13543    _validation = {
13544        'name': {'readonly': True},
13545        'type': {'readonly': True},
13546        'etag': {'readonly': True},
13547        'virtual_appliance_asn': {'maximum': 4294967295, 'minimum': 0},
13548        'virtual_appliance_nics': {'readonly': True},
13549        'provisioning_state': {'readonly': True},
13550    }
13551
13552    _attribute_map = {
13553        'id': {'key': 'id', 'type': 'str'},
13554        'name': {'key': 'name', 'type': 'str'},
13555        'type': {'key': 'type', 'type': 'str'},
13556        'location': {'key': 'location', 'type': 'str'},
13557        'tags': {'key': 'tags', 'type': '{str}'},
13558        'identity': {'key': 'identity', 'type': 'ManagedServiceIdentity'},
13559        'sku': {'key': 'sku', 'type': 'VirtualApplianceSkuProperties'},
13560        'etag': {'key': 'etag', 'type': 'str'},
13561        'boot_strap_configuration_blob': {'key': 'properties.bootStrapConfigurationBlob', 'type': '[str]'},
13562        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
13563        'cloud_init_configuration_blob': {'key': 'properties.cloudInitConfigurationBlob', 'type': '[str]'},
13564        'virtual_appliance_asn': {'key': 'properties.virtualApplianceAsn', 'type': 'long'},
13565        'virtual_appliance_nics': {'key': 'properties.virtualApplianceNics', 'type': '[VirtualApplianceNicProperties]'},
13566        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13567    }
13568
13569    def __init__(
13570        self,
13571        *,
13572        id: Optional[str] = None,
13573        location: Optional[str] = None,
13574        tags: Optional[Dict[str, str]] = None,
13575        identity: Optional["ManagedServiceIdentity"] = None,
13576        sku: Optional["VirtualApplianceSkuProperties"] = None,
13577        boot_strap_configuration_blob: Optional[List[str]] = None,
13578        virtual_hub: Optional["SubResource"] = None,
13579        cloud_init_configuration_blob: Optional[List[str]] = None,
13580        virtual_appliance_asn: Optional[int] = None,
13581        **kwargs
13582    ):
13583        super(NetworkVirtualAppliance, self).__init__(id=id, location=location, tags=tags, **kwargs)
13584        self.identity = identity
13585        self.sku = sku
13586        self.etag = None
13587        self.boot_strap_configuration_blob = boot_strap_configuration_blob
13588        self.virtual_hub = virtual_hub
13589        self.cloud_init_configuration_blob = cloud_init_configuration_blob
13590        self.virtual_appliance_asn = virtual_appliance_asn
13591        self.virtual_appliance_nics = None
13592        self.provisioning_state = None
13593
13594
13595class NetworkVirtualApplianceListResult(msrest.serialization.Model):
13596    """Response for ListNetworkVirtualAppliances API service call.
13597
13598    :param value: List of Network Virtual Appliances.
13599    :type value: list[~azure.mgmt.network.v2019_12_01.models.NetworkVirtualAppliance]
13600    :param next_link: URL to get the next set of results.
13601    :type next_link: str
13602    """
13603
13604    _attribute_map = {
13605        'value': {'key': 'value', 'type': '[NetworkVirtualAppliance]'},
13606        'next_link': {'key': 'nextLink', 'type': 'str'},
13607    }
13608
13609    def __init__(
13610        self,
13611        *,
13612        value: Optional[List["NetworkVirtualAppliance"]] = None,
13613        next_link: Optional[str] = None,
13614        **kwargs
13615    ):
13616        super(NetworkVirtualApplianceListResult, self).__init__(**kwargs)
13617        self.value = value
13618        self.next_link = next_link
13619
13620
13621class NetworkWatcher(Resource):
13622    """Network watcher in a resource group.
13623
13624    Variables are only populated by the server, and will be ignored when sending a request.
13625
13626    :param id: Resource ID.
13627    :type id: str
13628    :ivar name: Resource name.
13629    :vartype name: str
13630    :ivar type: Resource type.
13631    :vartype type: str
13632    :param location: Resource location.
13633    :type location: str
13634    :param tags: A set of tags. Resource tags.
13635    :type tags: dict[str, str]
13636    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13637    :vartype etag: str
13638    :ivar provisioning_state: The provisioning state of the network watcher resource. Possible
13639     values include: "Succeeded", "Updating", "Deleting", "Failed".
13640    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
13641    """
13642
13643    _validation = {
13644        'name': {'readonly': True},
13645        'type': {'readonly': True},
13646        'etag': {'readonly': True},
13647        'provisioning_state': {'readonly': True},
13648    }
13649
13650    _attribute_map = {
13651        'id': {'key': 'id', 'type': 'str'},
13652        'name': {'key': 'name', 'type': 'str'},
13653        'type': {'key': 'type', 'type': 'str'},
13654        'location': {'key': 'location', 'type': 'str'},
13655        'tags': {'key': 'tags', 'type': '{str}'},
13656        'etag': {'key': 'etag', 'type': 'str'},
13657        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13658    }
13659
13660    def __init__(
13661        self,
13662        *,
13663        id: Optional[str] = None,
13664        location: Optional[str] = None,
13665        tags: Optional[Dict[str, str]] = None,
13666        **kwargs
13667    ):
13668        super(NetworkWatcher, self).__init__(id=id, location=location, tags=tags, **kwargs)
13669        self.etag = None
13670        self.provisioning_state = None
13671
13672
13673class NetworkWatcherListResult(msrest.serialization.Model):
13674    """Response for ListNetworkWatchers API service call.
13675
13676    :param value: List of network watcher resources.
13677    :type value: list[~azure.mgmt.network.v2019_12_01.models.NetworkWatcher]
13678    """
13679
13680    _attribute_map = {
13681        'value': {'key': 'value', 'type': '[NetworkWatcher]'},
13682    }
13683
13684    def __init__(
13685        self,
13686        *,
13687        value: Optional[List["NetworkWatcher"]] = None,
13688        **kwargs
13689    ):
13690        super(NetworkWatcherListResult, self).__init__(**kwargs)
13691        self.value = value
13692
13693
13694class NextHopParameters(msrest.serialization.Model):
13695    """Parameters that define the source and destination endpoint.
13696
13697    All required parameters must be populated in order to send to Azure.
13698
13699    :param target_resource_id: Required. The resource identifier of the target resource against
13700     which the action is to be performed.
13701    :type target_resource_id: str
13702    :param source_ip_address: Required. The source IP address.
13703    :type source_ip_address: str
13704    :param destination_ip_address: Required. The destination IP address.
13705    :type destination_ip_address: str
13706    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
13707     enabled on any of the nics, then this parameter must be specified. Otherwise optional).
13708    :type target_nic_resource_id: str
13709    """
13710
13711    _validation = {
13712        'target_resource_id': {'required': True},
13713        'source_ip_address': {'required': True},
13714        'destination_ip_address': {'required': True},
13715    }
13716
13717    _attribute_map = {
13718        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
13719        'source_ip_address': {'key': 'sourceIPAddress', 'type': 'str'},
13720        'destination_ip_address': {'key': 'destinationIPAddress', 'type': 'str'},
13721        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
13722    }
13723
13724    def __init__(
13725        self,
13726        *,
13727        target_resource_id: str,
13728        source_ip_address: str,
13729        destination_ip_address: str,
13730        target_nic_resource_id: Optional[str] = None,
13731        **kwargs
13732    ):
13733        super(NextHopParameters, self).__init__(**kwargs)
13734        self.target_resource_id = target_resource_id
13735        self.source_ip_address = source_ip_address
13736        self.destination_ip_address = destination_ip_address
13737        self.target_nic_resource_id = target_nic_resource_id
13738
13739
13740class NextHopResult(msrest.serialization.Model):
13741    """The information about next hop from the specified VM.
13742
13743    :param next_hop_type: Next hop type. Possible values include: "Internet", "VirtualAppliance",
13744     "VirtualNetworkGateway", "VnetLocal", "HyperNetGateway", "None".
13745    :type next_hop_type: str or ~azure.mgmt.network.v2019_12_01.models.NextHopType
13746    :param next_hop_ip_address: Next hop IP Address.
13747    :type next_hop_ip_address: str
13748    :param route_table_id: The resource identifier for the route table associated with the route
13749     being returned. If the route being returned does not correspond to any user created routes then
13750     this field will be the string 'System Route'.
13751    :type route_table_id: str
13752    """
13753
13754    _attribute_map = {
13755        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
13756        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'},
13757        'route_table_id': {'key': 'routeTableId', 'type': 'str'},
13758    }
13759
13760    def __init__(
13761        self,
13762        *,
13763        next_hop_type: Optional[Union[str, "NextHopType"]] = None,
13764        next_hop_ip_address: Optional[str] = None,
13765        route_table_id: Optional[str] = None,
13766        **kwargs
13767    ):
13768        super(NextHopResult, self).__init__(**kwargs)
13769        self.next_hop_type = next_hop_type
13770        self.next_hop_ip_address = next_hop_ip_address
13771        self.route_table_id = route_table_id
13772
13773
13774class Operation(msrest.serialization.Model):
13775    """Network REST API operation definition.
13776
13777    :param name: Operation name: {provider}/{resource}/{operation}.
13778    :type name: str
13779    :param display: Display metadata associated with the operation.
13780    :type display: ~azure.mgmt.network.v2019_12_01.models.OperationDisplay
13781    :param origin: Origin of the operation.
13782    :type origin: str
13783    :param service_specification: Specification of the service.
13784    :type service_specification:
13785     ~azure.mgmt.network.v2019_12_01.models.OperationPropertiesFormatServiceSpecification
13786    """
13787
13788    _attribute_map = {
13789        'name': {'key': 'name', 'type': 'str'},
13790        'display': {'key': 'display', 'type': 'OperationDisplay'},
13791        'origin': {'key': 'origin', 'type': 'str'},
13792        'service_specification': {'key': 'properties.serviceSpecification', 'type': 'OperationPropertiesFormatServiceSpecification'},
13793    }
13794
13795    def __init__(
13796        self,
13797        *,
13798        name: Optional[str] = None,
13799        display: Optional["OperationDisplay"] = None,
13800        origin: Optional[str] = None,
13801        service_specification: Optional["OperationPropertiesFormatServiceSpecification"] = None,
13802        **kwargs
13803    ):
13804        super(Operation, self).__init__(**kwargs)
13805        self.name = name
13806        self.display = display
13807        self.origin = origin
13808        self.service_specification = service_specification
13809
13810
13811class OperationDisplay(msrest.serialization.Model):
13812    """Display metadata associated with the operation.
13813
13814    :param provider: Service provider: Microsoft Network.
13815    :type provider: str
13816    :param resource: Resource on which the operation is performed.
13817    :type resource: str
13818    :param operation: Type of the operation: get, read, delete, etc.
13819    :type operation: str
13820    :param description: Description of the operation.
13821    :type description: str
13822    """
13823
13824    _attribute_map = {
13825        'provider': {'key': 'provider', 'type': 'str'},
13826        'resource': {'key': 'resource', 'type': 'str'},
13827        'operation': {'key': 'operation', 'type': 'str'},
13828        'description': {'key': 'description', 'type': 'str'},
13829    }
13830
13831    def __init__(
13832        self,
13833        *,
13834        provider: Optional[str] = None,
13835        resource: Optional[str] = None,
13836        operation: Optional[str] = None,
13837        description: Optional[str] = None,
13838        **kwargs
13839    ):
13840        super(OperationDisplay, self).__init__(**kwargs)
13841        self.provider = provider
13842        self.resource = resource
13843        self.operation = operation
13844        self.description = description
13845
13846
13847class OperationListResult(msrest.serialization.Model):
13848    """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.
13849
13850    :param value: List of Network operations supported by the Network resource provider.
13851    :type value: list[~azure.mgmt.network.v2019_12_01.models.Operation]
13852    :param next_link: URL to get the next set of operation list results if there are any.
13853    :type next_link: str
13854    """
13855
13856    _attribute_map = {
13857        'value': {'key': 'value', 'type': '[Operation]'},
13858        'next_link': {'key': 'nextLink', 'type': 'str'},
13859    }
13860
13861    def __init__(
13862        self,
13863        *,
13864        value: Optional[List["Operation"]] = None,
13865        next_link: Optional[str] = None,
13866        **kwargs
13867    ):
13868        super(OperationListResult, self).__init__(**kwargs)
13869        self.value = value
13870        self.next_link = next_link
13871
13872
13873class OperationPropertiesFormatServiceSpecification(msrest.serialization.Model):
13874    """Specification of the service.
13875
13876    :param metric_specifications: Operation service specification.
13877    :type metric_specifications: list[~azure.mgmt.network.v2019_12_01.models.MetricSpecification]
13878    :param log_specifications: Operation log specification.
13879    :type log_specifications: list[~azure.mgmt.network.v2019_12_01.models.LogSpecification]
13880    """
13881
13882    _attribute_map = {
13883        'metric_specifications': {'key': 'metricSpecifications', 'type': '[MetricSpecification]'},
13884        'log_specifications': {'key': 'logSpecifications', 'type': '[LogSpecification]'},
13885    }
13886
13887    def __init__(
13888        self,
13889        *,
13890        metric_specifications: Optional[List["MetricSpecification"]] = None,
13891        log_specifications: Optional[List["LogSpecification"]] = None,
13892        **kwargs
13893    ):
13894        super(OperationPropertiesFormatServiceSpecification, self).__init__(**kwargs)
13895        self.metric_specifications = metric_specifications
13896        self.log_specifications = log_specifications
13897
13898
13899class OutboundRule(SubResource):
13900    """Outbound rule of the load balancer.
13901
13902    Variables are only populated by the server, and will be ignored when sending a request.
13903
13904    :param id: Resource ID.
13905    :type id: str
13906    :param name: The name of the resource that is unique within the set of outbound rules used by
13907     the load balancer. This name can be used to access the resource.
13908    :type name: str
13909    :ivar etag: A unique read-only string that changes whenever the resource is updated.
13910    :vartype etag: str
13911    :ivar type: Type of the resource.
13912    :vartype type: str
13913    :param allocated_outbound_ports: The number of outbound ports to be used for NAT.
13914    :type allocated_outbound_ports: int
13915    :param frontend_ip_configurations: The Frontend IP addresses of the load balancer.
13916    :type frontend_ip_configurations: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
13917    :param backend_address_pool: A reference to a pool of DIPs. Outbound traffic is randomly load
13918     balanced across IPs in the backend IPs.
13919    :type backend_address_pool: ~azure.mgmt.network.v2019_12_01.models.SubResource
13920    :ivar provisioning_state: The provisioning state of the outbound rule resource. Possible values
13921     include: "Succeeded", "Updating", "Deleting", "Failed".
13922    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
13923    :param protocol: The protocol for the outbound rule in load balancer. Possible values include:
13924     "Tcp", "Udp", "All".
13925    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.LoadBalancerOutboundRuleProtocol
13926    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
13927     connection termination. This element is only used when the protocol is set to TCP.
13928    :type enable_tcp_reset: bool
13929    :param idle_timeout_in_minutes: The timeout for the TCP idle connection.
13930    :type idle_timeout_in_minutes: int
13931    """
13932
13933    _validation = {
13934        'etag': {'readonly': True},
13935        'type': {'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        'etag': {'key': 'etag', 'type': 'str'},
13943        'type': {'key': 'type', 'type': 'str'},
13944        'allocated_outbound_ports': {'key': 'properties.allocatedOutboundPorts', 'type': 'int'},
13945        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[SubResource]'},
13946        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
13947        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
13948        'protocol': {'key': 'properties.protocol', 'type': 'str'},
13949        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
13950        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
13951    }
13952
13953    def __init__(
13954        self,
13955        *,
13956        id: Optional[str] = None,
13957        name: Optional[str] = None,
13958        allocated_outbound_ports: Optional[int] = None,
13959        frontend_ip_configurations: Optional[List["SubResource"]] = None,
13960        backend_address_pool: Optional["SubResource"] = None,
13961        protocol: Optional[Union[str, "LoadBalancerOutboundRuleProtocol"]] = None,
13962        enable_tcp_reset: Optional[bool] = None,
13963        idle_timeout_in_minutes: Optional[int] = None,
13964        **kwargs
13965    ):
13966        super(OutboundRule, self).__init__(id=id, **kwargs)
13967        self.name = name
13968        self.etag = None
13969        self.type = None
13970        self.allocated_outbound_ports = allocated_outbound_ports
13971        self.frontend_ip_configurations = frontend_ip_configurations
13972        self.backend_address_pool = backend_address_pool
13973        self.provisioning_state = None
13974        self.protocol = protocol
13975        self.enable_tcp_reset = enable_tcp_reset
13976        self.idle_timeout_in_minutes = idle_timeout_in_minutes
13977
13978
13979class OwaspCrsExclusionEntry(msrest.serialization.Model):
13980    """Allow to exclude some variable satisfy the condition for the WAF check.
13981
13982    All required parameters must be populated in order to send to Azure.
13983
13984    :param match_variable: Required. The variable to be excluded. Possible values include:
13985     "RequestHeaderNames", "RequestCookieNames", "RequestArgNames".
13986    :type match_variable: str or
13987     ~azure.mgmt.network.v2019_12_01.models.OwaspCrsExclusionEntryMatchVariable
13988    :param selector_match_operator: Required. When matchVariable is a collection, operate on the
13989     selector to specify which elements in the collection this exclusion applies to. Possible values
13990     include: "Equals", "Contains", "StartsWith", "EndsWith", "EqualsAny".
13991    :type selector_match_operator: str or
13992     ~azure.mgmt.network.v2019_12_01.models.OwaspCrsExclusionEntrySelectorMatchOperator
13993    :param selector: Required. When matchVariable is a collection, operator used to specify which
13994     elements in the collection this exclusion applies to.
13995    :type selector: str
13996    """
13997
13998    _validation = {
13999        'match_variable': {'required': True},
14000        'selector_match_operator': {'required': True},
14001        'selector': {'required': True},
14002    }
14003
14004    _attribute_map = {
14005        'match_variable': {'key': 'matchVariable', 'type': 'str'},
14006        'selector_match_operator': {'key': 'selectorMatchOperator', 'type': 'str'},
14007        'selector': {'key': 'selector', 'type': 'str'},
14008    }
14009
14010    def __init__(
14011        self,
14012        *,
14013        match_variable: Union[str, "OwaspCrsExclusionEntryMatchVariable"],
14014        selector_match_operator: Union[str, "OwaspCrsExclusionEntrySelectorMatchOperator"],
14015        selector: str,
14016        **kwargs
14017    ):
14018        super(OwaspCrsExclusionEntry, self).__init__(**kwargs)
14019        self.match_variable = match_variable
14020        self.selector_match_operator = selector_match_operator
14021        self.selector = selector
14022
14023
14024class P2SConnectionConfiguration(SubResource):
14025    """P2SConnectionConfiguration Resource.
14026
14027    Variables are only populated by the server, and will be ignored when sending a request.
14028
14029    :param id: Resource ID.
14030    :type id: str
14031    :param name: The name of the resource that is unique within a resource group. This name can be
14032     used to access the resource.
14033    :type name: str
14034    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14035    :vartype etag: str
14036    :param vpn_client_address_pool: The reference to the address space resource which represents
14037     Address space for P2S VpnClient.
14038    :type vpn_client_address_pool: ~azure.mgmt.network.v2019_12_01.models.AddressSpace
14039    :ivar provisioning_state: The provisioning state of the P2SConnectionConfiguration resource.
14040     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
14041    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
14042    """
14043
14044    _validation = {
14045        'etag': {'readonly': True},
14046        'provisioning_state': {'readonly': True},
14047    }
14048
14049    _attribute_map = {
14050        'id': {'key': 'id', 'type': 'str'},
14051        'name': {'key': 'name', 'type': 'str'},
14052        'etag': {'key': 'etag', 'type': 'str'},
14053        'vpn_client_address_pool': {'key': 'properties.vpnClientAddressPool', 'type': 'AddressSpace'},
14054        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14055    }
14056
14057    def __init__(
14058        self,
14059        *,
14060        id: Optional[str] = None,
14061        name: Optional[str] = None,
14062        vpn_client_address_pool: Optional["AddressSpace"] = None,
14063        **kwargs
14064    ):
14065        super(P2SConnectionConfiguration, self).__init__(id=id, **kwargs)
14066        self.name = name
14067        self.etag = None
14068        self.vpn_client_address_pool = vpn_client_address_pool
14069        self.provisioning_state = None
14070
14071
14072class P2SVpnConnectionHealth(msrest.serialization.Model):
14073    """P2S Vpn connection detailed health written to sas url.
14074
14075    :param sas_url: Returned sas url of the blob to which the p2s vpn connection detailed health
14076     will be written.
14077    :type sas_url: str
14078    """
14079
14080    _attribute_map = {
14081        'sas_url': {'key': 'sasUrl', 'type': 'str'},
14082    }
14083
14084    def __init__(
14085        self,
14086        *,
14087        sas_url: Optional[str] = None,
14088        **kwargs
14089    ):
14090        super(P2SVpnConnectionHealth, self).__init__(**kwargs)
14091        self.sas_url = sas_url
14092
14093
14094class P2SVpnConnectionHealthRequest(msrest.serialization.Model):
14095    """List of P2S Vpn connection health request.
14096
14097    :param vpn_user_names_filter: The list of p2s vpn user names whose p2s vpn connection detailed
14098     health to retrieve for.
14099    :type vpn_user_names_filter: list[str]
14100    :param output_blob_sas_url: The sas-url to download the P2S Vpn connection health detail.
14101    :type output_blob_sas_url: str
14102    """
14103
14104    _attribute_map = {
14105        'vpn_user_names_filter': {'key': 'vpnUserNamesFilter', 'type': '[str]'},
14106        'output_blob_sas_url': {'key': 'outputBlobSasUrl', 'type': 'str'},
14107    }
14108
14109    def __init__(
14110        self,
14111        *,
14112        vpn_user_names_filter: Optional[List[str]] = None,
14113        output_blob_sas_url: Optional[str] = None,
14114        **kwargs
14115    ):
14116        super(P2SVpnConnectionHealthRequest, self).__init__(**kwargs)
14117        self.vpn_user_names_filter = vpn_user_names_filter
14118        self.output_blob_sas_url = output_blob_sas_url
14119
14120
14121class P2SVpnConnectionRequest(msrest.serialization.Model):
14122    """List of p2s vpn connections to be disconnected.
14123
14124    :param vpn_connection_ids: List of p2s vpn connection Ids.
14125    :type vpn_connection_ids: list[str]
14126    """
14127
14128    _attribute_map = {
14129        'vpn_connection_ids': {'key': 'vpnConnectionIds', 'type': '[str]'},
14130    }
14131
14132    def __init__(
14133        self,
14134        *,
14135        vpn_connection_ids: Optional[List[str]] = None,
14136        **kwargs
14137    ):
14138        super(P2SVpnConnectionRequest, self).__init__(**kwargs)
14139        self.vpn_connection_ids = vpn_connection_ids
14140
14141
14142class P2SVpnGateway(Resource):
14143    """P2SVpnGateway Resource.
14144
14145    Variables are only populated by the server, and will be ignored when sending a request.
14146
14147    :param id: Resource ID.
14148    :type id: str
14149    :ivar name: Resource name.
14150    :vartype name: str
14151    :ivar type: Resource type.
14152    :vartype type: str
14153    :param location: Resource location.
14154    :type location: str
14155    :param tags: A set of tags. Resource tags.
14156    :type tags: dict[str, str]
14157    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14158    :vartype etag: str
14159    :param virtual_hub: The VirtualHub to which the gateway belongs.
14160    :type virtual_hub: ~azure.mgmt.network.v2019_12_01.models.SubResource
14161    :param p2_s_connection_configurations: List of all p2s connection configurations of the
14162     gateway.
14163    :type p2_s_connection_configurations:
14164     list[~azure.mgmt.network.v2019_12_01.models.P2SConnectionConfiguration]
14165    :ivar provisioning_state: The provisioning state of the P2S VPN gateway resource. Possible
14166     values include: "Succeeded", "Updating", "Deleting", "Failed".
14167    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
14168    :param vpn_gateway_scale_unit: The scale unit for this p2s vpn gateway.
14169    :type vpn_gateway_scale_unit: int
14170    :param vpn_server_configuration: The VpnServerConfiguration to which the p2sVpnGateway is
14171     attached to.
14172    :type vpn_server_configuration: ~azure.mgmt.network.v2019_12_01.models.SubResource
14173    :ivar vpn_client_connection_health: All P2S VPN clients' connection health status.
14174    :vartype vpn_client_connection_health:
14175     ~azure.mgmt.network.v2019_12_01.models.VpnClientConnectionHealth
14176    """
14177
14178    _validation = {
14179        'name': {'readonly': True},
14180        'type': {'readonly': True},
14181        'etag': {'readonly': True},
14182        'provisioning_state': {'readonly': True},
14183        'vpn_client_connection_health': {'readonly': True},
14184    }
14185
14186    _attribute_map = {
14187        'id': {'key': 'id', 'type': 'str'},
14188        'name': {'key': 'name', 'type': 'str'},
14189        'type': {'key': 'type', 'type': 'str'},
14190        'location': {'key': 'location', 'type': 'str'},
14191        'tags': {'key': 'tags', 'type': '{str}'},
14192        'etag': {'key': 'etag', 'type': 'str'},
14193        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
14194        'p2_s_connection_configurations': {'key': 'properties.p2SConnectionConfigurations', 'type': '[P2SConnectionConfiguration]'},
14195        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14196        'vpn_gateway_scale_unit': {'key': 'properties.vpnGatewayScaleUnit', 'type': 'int'},
14197        'vpn_server_configuration': {'key': 'properties.vpnServerConfiguration', 'type': 'SubResource'},
14198        'vpn_client_connection_health': {'key': 'properties.vpnClientConnectionHealth', 'type': 'VpnClientConnectionHealth'},
14199    }
14200
14201    def __init__(
14202        self,
14203        *,
14204        id: Optional[str] = None,
14205        location: Optional[str] = None,
14206        tags: Optional[Dict[str, str]] = None,
14207        virtual_hub: Optional["SubResource"] = None,
14208        p2_s_connection_configurations: Optional[List["P2SConnectionConfiguration"]] = None,
14209        vpn_gateway_scale_unit: Optional[int] = None,
14210        vpn_server_configuration: Optional["SubResource"] = None,
14211        **kwargs
14212    ):
14213        super(P2SVpnGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
14214        self.etag = None
14215        self.virtual_hub = virtual_hub
14216        self.p2_s_connection_configurations = p2_s_connection_configurations
14217        self.provisioning_state = None
14218        self.vpn_gateway_scale_unit = vpn_gateway_scale_unit
14219        self.vpn_server_configuration = vpn_server_configuration
14220        self.vpn_client_connection_health = None
14221
14222
14223class P2SVpnProfileParameters(msrest.serialization.Model):
14224    """Vpn Client Parameters for package generation.
14225
14226    :param authentication_method: VPN client authentication method. Possible values include:
14227     "EAPTLS", "EAPMSCHAPv2".
14228    :type authentication_method: str or ~azure.mgmt.network.v2019_12_01.models.AuthenticationMethod
14229    """
14230
14231    _attribute_map = {
14232        'authentication_method': {'key': 'authenticationMethod', 'type': 'str'},
14233    }
14234
14235    def __init__(
14236        self,
14237        *,
14238        authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None,
14239        **kwargs
14240    ):
14241        super(P2SVpnProfileParameters, self).__init__(**kwargs)
14242        self.authentication_method = authentication_method
14243
14244
14245class PacketCapture(msrest.serialization.Model):
14246    """Parameters that define the create packet capture operation.
14247
14248    All required parameters must be populated in order to send to Azure.
14249
14250    :param target: Required. The ID of the targeted resource, only VM is currently supported.
14251    :type target: str
14252    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
14253     are truncated.
14254    :type bytes_to_capture_per_packet: int
14255    :param total_bytes_per_session: Maximum size of the capture output.
14256    :type total_bytes_per_session: int
14257    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
14258    :type time_limit_in_seconds: int
14259    :param storage_location: Required. The storage location for a packet capture session.
14260    :type storage_location: ~azure.mgmt.network.v2019_12_01.models.PacketCaptureStorageLocation
14261    :param filters: A list of packet capture filters.
14262    :type filters: list[~azure.mgmt.network.v2019_12_01.models.PacketCaptureFilter]
14263    """
14264
14265    _validation = {
14266        'target': {'required': True},
14267        'storage_location': {'required': True},
14268    }
14269
14270    _attribute_map = {
14271        'target': {'key': 'properties.target', 'type': 'str'},
14272        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
14273        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
14274        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
14275        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
14276        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
14277    }
14278
14279    def __init__(
14280        self,
14281        *,
14282        target: str,
14283        storage_location: "PacketCaptureStorageLocation",
14284        bytes_to_capture_per_packet: Optional[int] = 0,
14285        total_bytes_per_session: Optional[int] = 1073741824,
14286        time_limit_in_seconds: Optional[int] = 18000,
14287        filters: Optional[List["PacketCaptureFilter"]] = None,
14288        **kwargs
14289    ):
14290        super(PacketCapture, self).__init__(**kwargs)
14291        self.target = target
14292        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
14293        self.total_bytes_per_session = total_bytes_per_session
14294        self.time_limit_in_seconds = time_limit_in_seconds
14295        self.storage_location = storage_location
14296        self.filters = filters
14297
14298
14299class PacketCaptureFilter(msrest.serialization.Model):
14300    """Filter that is applied to packet capture request. Multiple filters can be applied.
14301
14302    :param protocol: Protocol to be filtered on. Possible values include: "TCP", "UDP", "Any".
14303     Default value: "Any".
14304    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.PcProtocol
14305    :param local_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
14306     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple entries.
14307     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
14308     supported. Default = null.
14309    :type local_ip_address: str
14310    :param remote_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
14311     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple entries.
14312     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
14313     supported. Default = null.
14314    :type remote_ip_address: str
14315    :param local_port: Local port to be filtered on. Notation: "80" for single port entry."80-85"
14316     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
14317     ranges with multiple entries not currently supported. Default = null.
14318    :type local_port: str
14319    :param remote_port: Remote port to be filtered on. Notation: "80" for single port entry."80-85"
14320     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
14321     ranges with multiple entries not currently supported. Default = null.
14322    :type remote_port: str
14323    """
14324
14325    _attribute_map = {
14326        'protocol': {'key': 'protocol', 'type': 'str'},
14327        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
14328        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
14329        'local_port': {'key': 'localPort', 'type': 'str'},
14330        'remote_port': {'key': 'remotePort', 'type': 'str'},
14331    }
14332
14333    def __init__(
14334        self,
14335        *,
14336        protocol: Optional[Union[str, "PcProtocol"]] = "Any",
14337        local_ip_address: Optional[str] = None,
14338        remote_ip_address: Optional[str] = None,
14339        local_port: Optional[str] = None,
14340        remote_port: Optional[str] = None,
14341        **kwargs
14342    ):
14343        super(PacketCaptureFilter, self).__init__(**kwargs)
14344        self.protocol = protocol
14345        self.local_ip_address = local_ip_address
14346        self.remote_ip_address = remote_ip_address
14347        self.local_port = local_port
14348        self.remote_port = remote_port
14349
14350
14351class PacketCaptureListResult(msrest.serialization.Model):
14352    """List of packet capture sessions.
14353
14354    :param value: Information about packet capture sessions.
14355    :type value: list[~azure.mgmt.network.v2019_12_01.models.PacketCaptureResult]
14356    """
14357
14358    _attribute_map = {
14359        'value': {'key': 'value', 'type': '[PacketCaptureResult]'},
14360    }
14361
14362    def __init__(
14363        self,
14364        *,
14365        value: Optional[List["PacketCaptureResult"]] = None,
14366        **kwargs
14367    ):
14368        super(PacketCaptureListResult, self).__init__(**kwargs)
14369        self.value = value
14370
14371
14372class PacketCaptureParameters(msrest.serialization.Model):
14373    """Parameters that define the create packet capture operation.
14374
14375    All required parameters must be populated in order to send to Azure.
14376
14377    :param target: Required. The ID of the targeted resource, only VM is currently supported.
14378    :type target: str
14379    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
14380     are truncated.
14381    :type bytes_to_capture_per_packet: int
14382    :param total_bytes_per_session: Maximum size of the capture output.
14383    :type total_bytes_per_session: int
14384    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
14385    :type time_limit_in_seconds: int
14386    :param storage_location: Required. The storage location for a packet capture session.
14387    :type storage_location: ~azure.mgmt.network.v2019_12_01.models.PacketCaptureStorageLocation
14388    :param filters: A list of packet capture filters.
14389    :type filters: list[~azure.mgmt.network.v2019_12_01.models.PacketCaptureFilter]
14390    """
14391
14392    _validation = {
14393        'target': {'required': True},
14394        'storage_location': {'required': True},
14395    }
14396
14397    _attribute_map = {
14398        'target': {'key': 'target', 'type': 'str'},
14399        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
14400        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
14401        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
14402        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
14403        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
14404    }
14405
14406    def __init__(
14407        self,
14408        *,
14409        target: str,
14410        storage_location: "PacketCaptureStorageLocation",
14411        bytes_to_capture_per_packet: Optional[int] = 0,
14412        total_bytes_per_session: Optional[int] = 1073741824,
14413        time_limit_in_seconds: Optional[int] = 18000,
14414        filters: Optional[List["PacketCaptureFilter"]] = None,
14415        **kwargs
14416    ):
14417        super(PacketCaptureParameters, self).__init__(**kwargs)
14418        self.target = target
14419        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
14420        self.total_bytes_per_session = total_bytes_per_session
14421        self.time_limit_in_seconds = time_limit_in_seconds
14422        self.storage_location = storage_location
14423        self.filters = filters
14424
14425
14426class PacketCaptureQueryStatusResult(msrest.serialization.Model):
14427    """Status of packet capture session.
14428
14429    :param name: The name of the packet capture resource.
14430    :type name: str
14431    :param id: The ID of the packet capture resource.
14432    :type id: str
14433    :param capture_start_time: The start time of the packet capture session.
14434    :type capture_start_time: ~datetime.datetime
14435    :param packet_capture_status: The status of the packet capture session. Possible values
14436     include: "NotStarted", "Running", "Stopped", "Error", "Unknown".
14437    :type packet_capture_status: str or ~azure.mgmt.network.v2019_12_01.models.PcStatus
14438    :param stop_reason: The reason the current packet capture session was stopped.
14439    :type stop_reason: str
14440    :param packet_capture_error: List of errors of packet capture session.
14441    :type packet_capture_error: list[str or ~azure.mgmt.network.v2019_12_01.models.PcError]
14442    """
14443
14444    _attribute_map = {
14445        'name': {'key': 'name', 'type': 'str'},
14446        'id': {'key': 'id', 'type': 'str'},
14447        'capture_start_time': {'key': 'captureStartTime', 'type': 'iso-8601'},
14448        'packet_capture_status': {'key': 'packetCaptureStatus', 'type': 'str'},
14449        'stop_reason': {'key': 'stopReason', 'type': 'str'},
14450        'packet_capture_error': {'key': 'packetCaptureError', 'type': '[str]'},
14451    }
14452
14453    def __init__(
14454        self,
14455        *,
14456        name: Optional[str] = None,
14457        id: Optional[str] = None,
14458        capture_start_time: Optional[datetime.datetime] = None,
14459        packet_capture_status: Optional[Union[str, "PcStatus"]] = None,
14460        stop_reason: Optional[str] = None,
14461        packet_capture_error: Optional[List[Union[str, "PcError"]]] = None,
14462        **kwargs
14463    ):
14464        super(PacketCaptureQueryStatusResult, self).__init__(**kwargs)
14465        self.name = name
14466        self.id = id
14467        self.capture_start_time = capture_start_time
14468        self.packet_capture_status = packet_capture_status
14469        self.stop_reason = stop_reason
14470        self.packet_capture_error = packet_capture_error
14471
14472
14473class PacketCaptureResult(msrest.serialization.Model):
14474    """Information about packet capture session.
14475
14476    Variables are only populated by the server, and will be ignored when sending a request.
14477
14478    :ivar name: Name of the packet capture session.
14479    :vartype name: str
14480    :ivar id: ID of the packet capture operation.
14481    :vartype id: str
14482    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14483    :vartype etag: str
14484    :param target: The ID of the targeted resource, only VM is currently supported.
14485    :type target: str
14486    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
14487     are truncated.
14488    :type bytes_to_capture_per_packet: int
14489    :param total_bytes_per_session: Maximum size of the capture output.
14490    :type total_bytes_per_session: int
14491    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
14492    :type time_limit_in_seconds: int
14493    :param storage_location: The storage location for a packet capture session.
14494    :type storage_location: ~azure.mgmt.network.v2019_12_01.models.PacketCaptureStorageLocation
14495    :param filters: A list of packet capture filters.
14496    :type filters: list[~azure.mgmt.network.v2019_12_01.models.PacketCaptureFilter]
14497    :ivar provisioning_state: The provisioning state of the packet capture session. Possible values
14498     include: "Succeeded", "Updating", "Deleting", "Failed".
14499    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
14500    """
14501
14502    _validation = {
14503        'name': {'readonly': True},
14504        'id': {'readonly': True},
14505        'etag': {'readonly': True},
14506        'provisioning_state': {'readonly': True},
14507    }
14508
14509    _attribute_map = {
14510        'name': {'key': 'name', 'type': 'str'},
14511        'id': {'key': 'id', 'type': 'str'},
14512        'etag': {'key': 'etag', 'type': 'str'},
14513        'target': {'key': 'properties.target', 'type': 'str'},
14514        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
14515        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
14516        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
14517        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
14518        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
14519        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14520    }
14521
14522    def __init__(
14523        self,
14524        *,
14525        target: Optional[str] = None,
14526        bytes_to_capture_per_packet: Optional[int] = 0,
14527        total_bytes_per_session: Optional[int] = 1073741824,
14528        time_limit_in_seconds: Optional[int] = 18000,
14529        storage_location: Optional["PacketCaptureStorageLocation"] = None,
14530        filters: Optional[List["PacketCaptureFilter"]] = None,
14531        **kwargs
14532    ):
14533        super(PacketCaptureResult, self).__init__(**kwargs)
14534        self.name = None
14535        self.id = None
14536        self.etag = None
14537        self.target = target
14538        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
14539        self.total_bytes_per_session = total_bytes_per_session
14540        self.time_limit_in_seconds = time_limit_in_seconds
14541        self.storage_location = storage_location
14542        self.filters = filters
14543        self.provisioning_state = None
14544
14545
14546class PacketCaptureResultProperties(PacketCaptureParameters):
14547    """The properties of a packet capture session.
14548
14549    Variables are only populated by the server, and will be ignored when sending a request.
14550
14551    All required parameters must be populated in order to send to Azure.
14552
14553    :param target: Required. The ID of the targeted resource, only VM is currently supported.
14554    :type target: str
14555    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
14556     are truncated.
14557    :type bytes_to_capture_per_packet: int
14558    :param total_bytes_per_session: Maximum size of the capture output.
14559    :type total_bytes_per_session: int
14560    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
14561    :type time_limit_in_seconds: int
14562    :param storage_location: Required. The storage location for a packet capture session.
14563    :type storage_location: ~azure.mgmt.network.v2019_12_01.models.PacketCaptureStorageLocation
14564    :param filters: A list of packet capture filters.
14565    :type filters: list[~azure.mgmt.network.v2019_12_01.models.PacketCaptureFilter]
14566    :ivar provisioning_state: The provisioning state of the packet capture session. Possible values
14567     include: "Succeeded", "Updating", "Deleting", "Failed".
14568    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
14569    """
14570
14571    _validation = {
14572        'target': {'required': True},
14573        'storage_location': {'required': True},
14574        'provisioning_state': {'readonly': True},
14575    }
14576
14577    _attribute_map = {
14578        'target': {'key': 'target', 'type': 'str'},
14579        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
14580        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
14581        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
14582        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
14583        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
14584        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
14585    }
14586
14587    def __init__(
14588        self,
14589        *,
14590        target: str,
14591        storage_location: "PacketCaptureStorageLocation",
14592        bytes_to_capture_per_packet: Optional[int] = 0,
14593        total_bytes_per_session: Optional[int] = 1073741824,
14594        time_limit_in_seconds: Optional[int] = 18000,
14595        filters: Optional[List["PacketCaptureFilter"]] = None,
14596        **kwargs
14597    ):
14598        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)
14599        self.provisioning_state = None
14600
14601
14602class PacketCaptureStorageLocation(msrest.serialization.Model):
14603    """The storage location for a packet capture session.
14604
14605    :param storage_id: The ID of the storage account to save the packet capture session. Required
14606     if no local file path is provided.
14607    :type storage_id: str
14608    :param storage_path: The URI of the storage path to save the packet capture. Must be a
14609     well-formed URI describing the location to save the packet capture.
14610    :type storage_path: str
14611    :param file_path: A valid local path on the targeting VM. Must include the name of the capture
14612     file (*.cap). For linux virtual machine it must start with /var/captures. Required if no
14613     storage ID is provided, otherwise optional.
14614    :type file_path: str
14615    """
14616
14617    _attribute_map = {
14618        'storage_id': {'key': 'storageId', 'type': 'str'},
14619        'storage_path': {'key': 'storagePath', 'type': 'str'},
14620        'file_path': {'key': 'filePath', 'type': 'str'},
14621    }
14622
14623    def __init__(
14624        self,
14625        *,
14626        storage_id: Optional[str] = None,
14627        storage_path: Optional[str] = None,
14628        file_path: Optional[str] = None,
14629        **kwargs
14630    ):
14631        super(PacketCaptureStorageLocation, self).__init__(**kwargs)
14632        self.storage_id = storage_id
14633        self.storage_path = storage_path
14634        self.file_path = file_path
14635
14636
14637class PatchRouteFilter(SubResource):
14638    """Route Filter Resource.
14639
14640    Variables are only populated by the server, and will be ignored when sending a request.
14641
14642    :param id: Resource ID.
14643    :type id: str
14644    :ivar name: The name of the resource that is unique within a resource group. This name can be
14645     used to access the resource.
14646    :vartype name: str
14647    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14648    :vartype etag: str
14649    :ivar type: Resource type.
14650    :vartype type: str
14651    :param tags: A set of tags. Resource tags.
14652    :type tags: dict[str, str]
14653    :param rules: Collection of RouteFilterRules contained within a route filter.
14654    :type rules: list[~azure.mgmt.network.v2019_12_01.models.RouteFilterRule]
14655    :ivar peerings: A collection of references to express route circuit peerings.
14656    :vartype peerings: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeering]
14657    :ivar ipv6_peerings: A collection of references to express route circuit ipv6 peerings.
14658    :vartype ipv6_peerings: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeering]
14659    :ivar provisioning_state: The provisioning state of the route filter resource. Possible values
14660     include: "Succeeded", "Updating", "Deleting", "Failed".
14661    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
14662    """
14663
14664    _validation = {
14665        'name': {'readonly': True},
14666        'etag': {'readonly': True},
14667        'type': {'readonly': True},
14668        'peerings': {'readonly': True},
14669        'ipv6_peerings': {'readonly': True},
14670        'provisioning_state': {'readonly': True},
14671    }
14672
14673    _attribute_map = {
14674        'id': {'key': 'id', 'type': 'str'},
14675        'name': {'key': 'name', 'type': 'str'},
14676        'etag': {'key': 'etag', 'type': 'str'},
14677        'type': {'key': 'type', 'type': 'str'},
14678        'tags': {'key': 'tags', 'type': '{str}'},
14679        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
14680        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
14681        'ipv6_peerings': {'key': 'properties.ipv6Peerings', 'type': '[ExpressRouteCircuitPeering]'},
14682        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14683    }
14684
14685    def __init__(
14686        self,
14687        *,
14688        id: Optional[str] = None,
14689        tags: Optional[Dict[str, str]] = None,
14690        rules: Optional[List["RouteFilterRule"]] = None,
14691        **kwargs
14692    ):
14693        super(PatchRouteFilter, self).__init__(id=id, **kwargs)
14694        self.name = None
14695        self.etag = None
14696        self.type = None
14697        self.tags = tags
14698        self.rules = rules
14699        self.peerings = None
14700        self.ipv6_peerings = None
14701        self.provisioning_state = None
14702
14703
14704class PatchRouteFilterRule(SubResource):
14705    """Route Filter Rule Resource.
14706
14707    Variables are only populated by the server, and will be ignored when sending a request.
14708
14709    :param id: Resource ID.
14710    :type id: str
14711    :ivar name: The name of the resource that is unique within a resource group. This name can be
14712     used to access the resource.
14713    :vartype name: str
14714    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14715    :vartype etag: str
14716    :param access: The access type of the rule. Possible values include: "Allow", "Deny".
14717    :type access: str or ~azure.mgmt.network.v2019_12_01.models.Access
14718    :param route_filter_rule_type: The rule type of the rule. Possible values include: "Community".
14719    :type route_filter_rule_type: str or ~azure.mgmt.network.v2019_12_01.models.RouteFilterRuleType
14720    :param communities: The collection for bgp community values to filter on. e.g.
14721     ['12076:5010','12076:5020'].
14722    :type communities: list[str]
14723    :ivar provisioning_state: The provisioning state of the route filter rule resource. Possible
14724     values include: "Succeeded", "Updating", "Deleting", "Failed".
14725    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
14726    """
14727
14728    _validation = {
14729        'name': {'readonly': True},
14730        'etag': {'readonly': True},
14731        'provisioning_state': {'readonly': True},
14732    }
14733
14734    _attribute_map = {
14735        'id': {'key': 'id', 'type': 'str'},
14736        'name': {'key': 'name', 'type': 'str'},
14737        'etag': {'key': 'etag', 'type': 'str'},
14738        'access': {'key': 'properties.access', 'type': 'str'},
14739        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
14740        'communities': {'key': 'properties.communities', 'type': '[str]'},
14741        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14742    }
14743
14744    def __init__(
14745        self,
14746        *,
14747        id: Optional[str] = None,
14748        access: Optional[Union[str, "Access"]] = None,
14749        route_filter_rule_type: Optional[Union[str, "RouteFilterRuleType"]] = None,
14750        communities: Optional[List[str]] = None,
14751        **kwargs
14752    ):
14753        super(PatchRouteFilterRule, self).__init__(id=id, **kwargs)
14754        self.name = None
14755        self.etag = None
14756        self.access = access
14757        self.route_filter_rule_type = route_filter_rule_type
14758        self.communities = communities
14759        self.provisioning_state = None
14760
14761
14762class PeerExpressRouteCircuitConnection(SubResource):
14763    """Peer Express Route Circuit Connection in an ExpressRouteCircuitPeering resource.
14764
14765    Variables are only populated by the server, and will be ignored when sending a request.
14766
14767    :param id: Resource ID.
14768    :type id: str
14769    :param name: The name of the resource that is unique within a resource group. This name can be
14770     used to access the resource.
14771    :type name: str
14772    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14773    :vartype etag: str
14774    :ivar type: Type of the resource.
14775    :vartype type: str
14776    :param express_route_circuit_peering: Reference to Express Route Circuit Private Peering
14777     Resource of the circuit.
14778    :type express_route_circuit_peering: ~azure.mgmt.network.v2019_12_01.models.SubResource
14779    :param peer_express_route_circuit_peering: Reference to Express Route Circuit Private Peering
14780     Resource of the peered circuit.
14781    :type peer_express_route_circuit_peering: ~azure.mgmt.network.v2019_12_01.models.SubResource
14782    :param address_prefix: /29 IP address space to carve out Customer addresses for tunnels.
14783    :type address_prefix: str
14784    :ivar circuit_connection_status: Express Route Circuit connection state. Possible values
14785     include: "Connected", "Connecting", "Disconnected".
14786    :vartype circuit_connection_status: str or
14787     ~azure.mgmt.network.v2019_12_01.models.CircuitConnectionStatus
14788    :param connection_name: The name of the express route circuit connection resource.
14789    :type connection_name: str
14790    :param auth_resource_guid: The resource guid of the authorization used for the express route
14791     circuit connection.
14792    :type auth_resource_guid: str
14793    :ivar provisioning_state: The provisioning state of the peer express route circuit connection
14794     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
14795    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
14796    """
14797
14798    _validation = {
14799        'etag': {'readonly': True},
14800        'type': {'readonly': True},
14801        'circuit_connection_status': {'readonly': True},
14802        'provisioning_state': {'readonly': True},
14803    }
14804
14805    _attribute_map = {
14806        'id': {'key': 'id', 'type': 'str'},
14807        'name': {'key': 'name', 'type': 'str'},
14808        'etag': {'key': 'etag', 'type': 'str'},
14809        'type': {'key': 'type', 'type': 'str'},
14810        'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'SubResource'},
14811        'peer_express_route_circuit_peering': {'key': 'properties.peerExpressRouteCircuitPeering', 'type': 'SubResource'},
14812        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
14813        'circuit_connection_status': {'key': 'properties.circuitConnectionStatus', 'type': 'str'},
14814        'connection_name': {'key': 'properties.connectionName', 'type': 'str'},
14815        'auth_resource_guid': {'key': 'properties.authResourceGuid', 'type': 'str'},
14816        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14817    }
14818
14819    def __init__(
14820        self,
14821        *,
14822        id: Optional[str] = None,
14823        name: Optional[str] = None,
14824        express_route_circuit_peering: Optional["SubResource"] = None,
14825        peer_express_route_circuit_peering: Optional["SubResource"] = None,
14826        address_prefix: Optional[str] = None,
14827        connection_name: Optional[str] = None,
14828        auth_resource_guid: Optional[str] = None,
14829        **kwargs
14830    ):
14831        super(PeerExpressRouteCircuitConnection, self).__init__(id=id, **kwargs)
14832        self.name = name
14833        self.etag = None
14834        self.type = None
14835        self.express_route_circuit_peering = express_route_circuit_peering
14836        self.peer_express_route_circuit_peering = peer_express_route_circuit_peering
14837        self.address_prefix = address_prefix
14838        self.circuit_connection_status = None
14839        self.connection_name = connection_name
14840        self.auth_resource_guid = auth_resource_guid
14841        self.provisioning_state = None
14842
14843
14844class PeerExpressRouteCircuitConnectionListResult(msrest.serialization.Model):
14845    """Response for ListPeeredConnections API service call retrieves all global reach peer circuit connections that belongs to a Private Peering for an ExpressRouteCircuit.
14846
14847    :param value: The global reach peer circuit connection associated with Private Peering in an
14848     ExpressRoute Circuit.
14849    :type value: list[~azure.mgmt.network.v2019_12_01.models.PeerExpressRouteCircuitConnection]
14850    :param next_link: The URL to get the next set of results.
14851    :type next_link: str
14852    """
14853
14854    _attribute_map = {
14855        'value': {'key': 'value', 'type': '[PeerExpressRouteCircuitConnection]'},
14856        'next_link': {'key': 'nextLink', 'type': 'str'},
14857    }
14858
14859    def __init__(
14860        self,
14861        *,
14862        value: Optional[List["PeerExpressRouteCircuitConnection"]] = None,
14863        next_link: Optional[str] = None,
14864        **kwargs
14865    ):
14866        super(PeerExpressRouteCircuitConnectionListResult, self).__init__(**kwargs)
14867        self.value = value
14868        self.next_link = next_link
14869
14870
14871class PolicySettings(msrest.serialization.Model):
14872    """Defines contents of a web application firewall global configuration.
14873
14874    :param state: The state of the policy. Possible values include: "Disabled", "Enabled".
14875    :type state: str or ~azure.mgmt.network.v2019_12_01.models.WebApplicationFirewallEnabledState
14876    :param mode: The mode of the policy. Possible values include: "Prevention", "Detection".
14877    :type mode: str or ~azure.mgmt.network.v2019_12_01.models.WebApplicationFirewallMode
14878    :param request_body_check: Whether to allow WAF to check request Body.
14879    :type request_body_check: bool
14880    :param max_request_body_size_in_kb: Maximum request body size in Kb for WAF.
14881    :type max_request_body_size_in_kb: int
14882    :param file_upload_limit_in_mb: Maximum file upload size in Mb for WAF.
14883    :type file_upload_limit_in_mb: int
14884    """
14885
14886    _validation = {
14887        'max_request_body_size_in_kb': {'maximum': 128, 'minimum': 8},
14888        'file_upload_limit_in_mb': {'minimum': 0},
14889    }
14890
14891    _attribute_map = {
14892        'state': {'key': 'state', 'type': 'str'},
14893        'mode': {'key': 'mode', 'type': 'str'},
14894        'request_body_check': {'key': 'requestBodyCheck', 'type': 'bool'},
14895        'max_request_body_size_in_kb': {'key': 'maxRequestBodySizeInKb', 'type': 'int'},
14896        'file_upload_limit_in_mb': {'key': 'fileUploadLimitInMb', 'type': 'int'},
14897    }
14898
14899    def __init__(
14900        self,
14901        *,
14902        state: Optional[Union[str, "WebApplicationFirewallEnabledState"]] = None,
14903        mode: Optional[Union[str, "WebApplicationFirewallMode"]] = None,
14904        request_body_check: Optional[bool] = None,
14905        max_request_body_size_in_kb: Optional[int] = None,
14906        file_upload_limit_in_mb: Optional[int] = None,
14907        **kwargs
14908    ):
14909        super(PolicySettings, self).__init__(**kwargs)
14910        self.state = state
14911        self.mode = mode
14912        self.request_body_check = request_body_check
14913        self.max_request_body_size_in_kb = max_request_body_size_in_kb
14914        self.file_upload_limit_in_mb = file_upload_limit_in_mb
14915
14916
14917class PrepareNetworkPoliciesRequest(msrest.serialization.Model):
14918    """Details of PrepareNetworkPolicies for Subnet.
14919
14920    :param service_name: The name of the service for which subnet is being prepared for.
14921    :type service_name: str
14922    :param network_intent_policy_configurations: A list of NetworkIntentPolicyConfiguration.
14923    :type network_intent_policy_configurations:
14924     list[~azure.mgmt.network.v2019_12_01.models.NetworkIntentPolicyConfiguration]
14925    """
14926
14927    _attribute_map = {
14928        'service_name': {'key': 'serviceName', 'type': 'str'},
14929        'network_intent_policy_configurations': {'key': 'networkIntentPolicyConfigurations', 'type': '[NetworkIntentPolicyConfiguration]'},
14930    }
14931
14932    def __init__(
14933        self,
14934        *,
14935        service_name: Optional[str] = None,
14936        network_intent_policy_configurations: Optional[List["NetworkIntentPolicyConfiguration"]] = None,
14937        **kwargs
14938    ):
14939        super(PrepareNetworkPoliciesRequest, self).__init__(**kwargs)
14940        self.service_name = service_name
14941        self.network_intent_policy_configurations = network_intent_policy_configurations
14942
14943
14944class PrivateEndpoint(Resource):
14945    """Private endpoint resource.
14946
14947    Variables are only populated by the server, and will be ignored when sending a request.
14948
14949    :param id: Resource ID.
14950    :type id: str
14951    :ivar name: Resource name.
14952    :vartype name: str
14953    :ivar type: Resource type.
14954    :vartype type: str
14955    :param location: Resource location.
14956    :type location: str
14957    :param tags: A set of tags. Resource tags.
14958    :type tags: dict[str, str]
14959    :ivar etag: A unique read-only string that changes whenever the resource is updated.
14960    :vartype etag: str
14961    :param subnet: The ID of the subnet from which the private IP will be allocated.
14962    :type subnet: ~azure.mgmt.network.v2019_12_01.models.Subnet
14963    :ivar network_interfaces: An array of references to the network interfaces created for this
14964     private endpoint.
14965    :vartype network_interfaces: list[~azure.mgmt.network.v2019_12_01.models.NetworkInterface]
14966    :ivar provisioning_state: The provisioning state of the private endpoint resource. Possible
14967     values include: "Succeeded", "Updating", "Deleting", "Failed".
14968    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
14969    :param private_link_service_connections: A grouping of information about the connection to the
14970     remote resource.
14971    :type private_link_service_connections:
14972     list[~azure.mgmt.network.v2019_12_01.models.PrivateLinkServiceConnection]
14973    :param manual_private_link_service_connections: A grouping of information about the connection
14974     to the remote resource. Used when the network admin does not have access to approve connections
14975     to the remote resource.
14976    :type manual_private_link_service_connections:
14977     list[~azure.mgmt.network.v2019_12_01.models.PrivateLinkServiceConnection]
14978    """
14979
14980    _validation = {
14981        'name': {'readonly': True},
14982        'type': {'readonly': True},
14983        'etag': {'readonly': True},
14984        'network_interfaces': {'readonly': True},
14985        'provisioning_state': {'readonly': True},
14986    }
14987
14988    _attribute_map = {
14989        'id': {'key': 'id', 'type': 'str'},
14990        'name': {'key': 'name', 'type': 'str'},
14991        'type': {'key': 'type', 'type': 'str'},
14992        'location': {'key': 'location', 'type': 'str'},
14993        'tags': {'key': 'tags', 'type': '{str}'},
14994        'etag': {'key': 'etag', 'type': 'str'},
14995        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
14996        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
14997        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
14998        'private_link_service_connections': {'key': 'properties.privateLinkServiceConnections', 'type': '[PrivateLinkServiceConnection]'},
14999        'manual_private_link_service_connections': {'key': 'properties.manualPrivateLinkServiceConnections', 'type': '[PrivateLinkServiceConnection]'},
15000    }
15001
15002    def __init__(
15003        self,
15004        *,
15005        id: Optional[str] = None,
15006        location: Optional[str] = None,
15007        tags: Optional[Dict[str, str]] = None,
15008        subnet: Optional["Subnet"] = None,
15009        private_link_service_connections: Optional[List["PrivateLinkServiceConnection"]] = None,
15010        manual_private_link_service_connections: Optional[List["PrivateLinkServiceConnection"]] = None,
15011        **kwargs
15012    ):
15013        super(PrivateEndpoint, self).__init__(id=id, location=location, tags=tags, **kwargs)
15014        self.etag = None
15015        self.subnet = subnet
15016        self.network_interfaces = None
15017        self.provisioning_state = None
15018        self.private_link_service_connections = private_link_service_connections
15019        self.manual_private_link_service_connections = manual_private_link_service_connections
15020
15021
15022class PrivateEndpointConnection(SubResource):
15023    """PrivateEndpointConnection resource.
15024
15025    Variables are only populated by the server, and will be ignored when sending a request.
15026
15027    :param id: Resource ID.
15028    :type id: str
15029    :param name: The name of the resource that is unique within a resource group. This name can be
15030     used to access the resource.
15031    :type name: str
15032    :ivar type: The resource type.
15033    :vartype type: str
15034    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15035    :vartype etag: str
15036    :ivar private_endpoint: The resource of private end point.
15037    :vartype private_endpoint: ~azure.mgmt.network.v2019_12_01.models.PrivateEndpoint
15038    :param private_link_service_connection_state: A collection of information about the state of
15039     the connection between service consumer and provider.
15040    :type private_link_service_connection_state:
15041     ~azure.mgmt.network.v2019_12_01.models.PrivateLinkServiceConnectionState
15042    :ivar provisioning_state: The provisioning state of the private endpoint connection resource.
15043     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
15044    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
15045    :ivar link_identifier: The consumer link id.
15046    :vartype link_identifier: str
15047    """
15048
15049    _validation = {
15050        'type': {'readonly': True},
15051        'etag': {'readonly': True},
15052        'private_endpoint': {'readonly': True},
15053        'provisioning_state': {'readonly': True},
15054        'link_identifier': {'readonly': True},
15055    }
15056
15057    _attribute_map = {
15058        'id': {'key': 'id', 'type': 'str'},
15059        'name': {'key': 'name', 'type': 'str'},
15060        'type': {'key': 'type', 'type': 'str'},
15061        'etag': {'key': 'etag', 'type': 'str'},
15062        'private_endpoint': {'key': 'properties.privateEndpoint', 'type': 'PrivateEndpoint'},
15063        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'},
15064        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15065        'link_identifier': {'key': 'properties.linkIdentifier', 'type': 'str'},
15066    }
15067
15068    def __init__(
15069        self,
15070        *,
15071        id: Optional[str] = None,
15072        name: Optional[str] = None,
15073        private_link_service_connection_state: Optional["PrivateLinkServiceConnectionState"] = None,
15074        **kwargs
15075    ):
15076        super(PrivateEndpointConnection, self).__init__(id=id, **kwargs)
15077        self.name = name
15078        self.type = None
15079        self.etag = None
15080        self.private_endpoint = None
15081        self.private_link_service_connection_state = private_link_service_connection_state
15082        self.provisioning_state = None
15083        self.link_identifier = None
15084
15085
15086class PrivateEndpointConnectionListResult(msrest.serialization.Model):
15087    """Response for the ListPrivateEndpointConnection API service call.
15088
15089    Variables are only populated by the server, and will be ignored when sending a request.
15090
15091    :param value: A list of PrivateEndpointConnection resources for a specific private link
15092     service.
15093    :type value: list[~azure.mgmt.network.v2019_12_01.models.PrivateEndpointConnection]
15094    :ivar next_link: The URL to get the next set of results.
15095    :vartype next_link: str
15096    """
15097
15098    _validation = {
15099        'next_link': {'readonly': True},
15100    }
15101
15102    _attribute_map = {
15103        'value': {'key': 'value', 'type': '[PrivateEndpointConnection]'},
15104        'next_link': {'key': 'nextLink', 'type': 'str'},
15105    }
15106
15107    def __init__(
15108        self,
15109        *,
15110        value: Optional[List["PrivateEndpointConnection"]] = None,
15111        **kwargs
15112    ):
15113        super(PrivateEndpointConnectionListResult, self).__init__(**kwargs)
15114        self.value = value
15115        self.next_link = None
15116
15117
15118class PrivateEndpointListResult(msrest.serialization.Model):
15119    """Response for the ListPrivateEndpoints API service call.
15120
15121    Variables are only populated by the server, and will be ignored when sending a request.
15122
15123    :param value: A list of private endpoint resources in a resource group.
15124    :type value: list[~azure.mgmt.network.v2019_12_01.models.PrivateEndpoint]
15125    :ivar next_link: The URL to get the next set of results.
15126    :vartype next_link: str
15127    """
15128
15129    _validation = {
15130        'next_link': {'readonly': True},
15131    }
15132
15133    _attribute_map = {
15134        'value': {'key': 'value', 'type': '[PrivateEndpoint]'},
15135        'next_link': {'key': 'nextLink', 'type': 'str'},
15136    }
15137
15138    def __init__(
15139        self,
15140        *,
15141        value: Optional[List["PrivateEndpoint"]] = None,
15142        **kwargs
15143    ):
15144        super(PrivateEndpointListResult, self).__init__(**kwargs)
15145        self.value = value
15146        self.next_link = None
15147
15148
15149class PrivateLinkService(Resource):
15150    """Private link service resource.
15151
15152    Variables are only populated by the server, and will be ignored when sending a request.
15153
15154    :param id: Resource ID.
15155    :type id: str
15156    :ivar name: Resource name.
15157    :vartype name: str
15158    :ivar type: Resource type.
15159    :vartype type: str
15160    :param location: Resource location.
15161    :type location: str
15162    :param tags: A set of tags. Resource tags.
15163    :type tags: dict[str, str]
15164    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15165    :vartype etag: str
15166    :param load_balancer_frontend_ip_configurations: An array of references to the load balancer IP
15167     configurations.
15168    :type load_balancer_frontend_ip_configurations:
15169     list[~azure.mgmt.network.v2019_12_01.models.FrontendIPConfiguration]
15170    :param ip_configurations: An array of private link service IP configurations.
15171    :type ip_configurations:
15172     list[~azure.mgmt.network.v2019_12_01.models.PrivateLinkServiceIpConfiguration]
15173    :ivar network_interfaces: An array of references to the network interfaces created for this
15174     private link service.
15175    :vartype network_interfaces: list[~azure.mgmt.network.v2019_12_01.models.NetworkInterface]
15176    :ivar provisioning_state: The provisioning state of the private link service resource. Possible
15177     values include: "Succeeded", "Updating", "Deleting", "Failed".
15178    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
15179    :ivar private_endpoint_connections: An array of list about connections to the private endpoint.
15180    :vartype private_endpoint_connections:
15181     list[~azure.mgmt.network.v2019_12_01.models.PrivateEndpointConnection]
15182    :param visibility: The visibility list of the private link service.
15183    :type visibility: ~azure.mgmt.network.v2019_12_01.models.PrivateLinkServicePropertiesVisibility
15184    :param auto_approval: The auto-approval list of the private link service.
15185    :type auto_approval:
15186     ~azure.mgmt.network.v2019_12_01.models.PrivateLinkServicePropertiesAutoApproval
15187    :param fqdns: The list of Fqdn.
15188    :type fqdns: list[str]
15189    :ivar alias: The alias of the private link service.
15190    :vartype alias: str
15191    :param enable_proxy_protocol: Whether the private link service is enabled for proxy protocol or
15192     not.
15193    :type enable_proxy_protocol: bool
15194    """
15195
15196    _validation = {
15197        'name': {'readonly': True},
15198        'type': {'readonly': True},
15199        'etag': {'readonly': True},
15200        'network_interfaces': {'readonly': True},
15201        'provisioning_state': {'readonly': True},
15202        'private_endpoint_connections': {'readonly': True},
15203        'alias': {'readonly': True},
15204    }
15205
15206    _attribute_map = {
15207        'id': {'key': 'id', 'type': 'str'},
15208        'name': {'key': 'name', 'type': 'str'},
15209        'type': {'key': 'type', 'type': 'str'},
15210        'location': {'key': 'location', 'type': 'str'},
15211        'tags': {'key': 'tags', 'type': '{str}'},
15212        'etag': {'key': 'etag', 'type': 'str'},
15213        'load_balancer_frontend_ip_configurations': {'key': 'properties.loadBalancerFrontendIpConfigurations', 'type': '[FrontendIPConfiguration]'},
15214        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[PrivateLinkServiceIpConfiguration]'},
15215        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
15216        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15217        'private_endpoint_connections': {'key': 'properties.privateEndpointConnections', 'type': '[PrivateEndpointConnection]'},
15218        'visibility': {'key': 'properties.visibility', 'type': 'PrivateLinkServicePropertiesVisibility'},
15219        'auto_approval': {'key': 'properties.autoApproval', 'type': 'PrivateLinkServicePropertiesAutoApproval'},
15220        'fqdns': {'key': 'properties.fqdns', 'type': '[str]'},
15221        'alias': {'key': 'properties.alias', 'type': 'str'},
15222        'enable_proxy_protocol': {'key': 'properties.enableProxyProtocol', 'type': 'bool'},
15223    }
15224
15225    def __init__(
15226        self,
15227        *,
15228        id: Optional[str] = None,
15229        location: Optional[str] = None,
15230        tags: Optional[Dict[str, str]] = None,
15231        load_balancer_frontend_ip_configurations: Optional[List["FrontendIPConfiguration"]] = None,
15232        ip_configurations: Optional[List["PrivateLinkServiceIpConfiguration"]] = None,
15233        visibility: Optional["PrivateLinkServicePropertiesVisibility"] = None,
15234        auto_approval: Optional["PrivateLinkServicePropertiesAutoApproval"] = None,
15235        fqdns: Optional[List[str]] = None,
15236        enable_proxy_protocol: Optional[bool] = None,
15237        **kwargs
15238    ):
15239        super(PrivateLinkService, self).__init__(id=id, location=location, tags=tags, **kwargs)
15240        self.etag = None
15241        self.load_balancer_frontend_ip_configurations = load_balancer_frontend_ip_configurations
15242        self.ip_configurations = ip_configurations
15243        self.network_interfaces = None
15244        self.provisioning_state = None
15245        self.private_endpoint_connections = None
15246        self.visibility = visibility
15247        self.auto_approval = auto_approval
15248        self.fqdns = fqdns
15249        self.alias = None
15250        self.enable_proxy_protocol = enable_proxy_protocol
15251
15252
15253class PrivateLinkServiceConnection(SubResource):
15254    """PrivateLinkServiceConnection resource.
15255
15256    Variables are only populated by the server, and will be ignored when sending a request.
15257
15258    :param id: Resource ID.
15259    :type id: str
15260    :param name: The name of the resource that is unique within a resource group. This name can be
15261     used to access the resource.
15262    :type name: str
15263    :ivar type: The resource type.
15264    :vartype type: str
15265    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15266    :vartype etag: str
15267    :ivar provisioning_state: The provisioning state of the private link service connection
15268     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
15269    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
15270    :param private_link_service_id: The resource id of private link service.
15271    :type private_link_service_id: str
15272    :param group_ids: The ID(s) of the group(s) obtained from the remote resource that this private
15273     endpoint should connect to.
15274    :type group_ids: list[str]
15275    :param request_message: A message passed to the owner of the remote resource with this
15276     connection request. Restricted to 140 chars.
15277    :type request_message: str
15278    :param private_link_service_connection_state: A collection of read-only information about the
15279     state of the connection to the remote resource.
15280    :type private_link_service_connection_state:
15281     ~azure.mgmt.network.v2019_12_01.models.PrivateLinkServiceConnectionState
15282    """
15283
15284    _validation = {
15285        'type': {'readonly': True},
15286        'etag': {'readonly': True},
15287        'provisioning_state': {'readonly': True},
15288    }
15289
15290    _attribute_map = {
15291        'id': {'key': 'id', 'type': 'str'},
15292        'name': {'key': 'name', 'type': 'str'},
15293        'type': {'key': 'type', 'type': 'str'},
15294        'etag': {'key': 'etag', 'type': 'str'},
15295        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15296        'private_link_service_id': {'key': 'properties.privateLinkServiceId', 'type': 'str'},
15297        'group_ids': {'key': 'properties.groupIds', 'type': '[str]'},
15298        'request_message': {'key': 'properties.requestMessage', 'type': 'str'},
15299        'private_link_service_connection_state': {'key': 'properties.privateLinkServiceConnectionState', 'type': 'PrivateLinkServiceConnectionState'},
15300    }
15301
15302    def __init__(
15303        self,
15304        *,
15305        id: Optional[str] = None,
15306        name: Optional[str] = None,
15307        private_link_service_id: Optional[str] = None,
15308        group_ids: Optional[List[str]] = None,
15309        request_message: Optional[str] = None,
15310        private_link_service_connection_state: Optional["PrivateLinkServiceConnectionState"] = None,
15311        **kwargs
15312    ):
15313        super(PrivateLinkServiceConnection, self).__init__(id=id, **kwargs)
15314        self.name = name
15315        self.type = None
15316        self.etag = None
15317        self.provisioning_state = None
15318        self.private_link_service_id = private_link_service_id
15319        self.group_ids = group_ids
15320        self.request_message = request_message
15321        self.private_link_service_connection_state = private_link_service_connection_state
15322
15323
15324class PrivateLinkServiceConnectionState(msrest.serialization.Model):
15325    """A collection of information about the state of the connection between service consumer and provider.
15326
15327    :param status: Indicates whether the connection has been Approved/Rejected/Removed by the owner
15328     of the service.
15329    :type status: str
15330    :param description: The reason for approval/rejection of the connection.
15331    :type description: str
15332    :param actions_required: A message indicating if changes on the service provider require any
15333     updates on the consumer.
15334    :type actions_required: str
15335    """
15336
15337    _attribute_map = {
15338        'status': {'key': 'status', 'type': 'str'},
15339        'description': {'key': 'description', 'type': 'str'},
15340        'actions_required': {'key': 'actionsRequired', 'type': 'str'},
15341    }
15342
15343    def __init__(
15344        self,
15345        *,
15346        status: Optional[str] = None,
15347        description: Optional[str] = None,
15348        actions_required: Optional[str] = None,
15349        **kwargs
15350    ):
15351        super(PrivateLinkServiceConnectionState, self).__init__(**kwargs)
15352        self.status = status
15353        self.description = description
15354        self.actions_required = actions_required
15355
15356
15357class PrivateLinkServiceIpConfiguration(SubResource):
15358    """The private link service ip configuration.
15359
15360    Variables are only populated by the server, and will be ignored when sending a request.
15361
15362    :param id: Resource ID.
15363    :type id: str
15364    :param name: The name of private link service ip configuration.
15365    :type name: str
15366    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15367    :vartype etag: str
15368    :ivar type: The resource type.
15369    :vartype type: str
15370    :param private_ip_address: The private IP address of the IP configuration.
15371    :type private_ip_address: str
15372    :param private_ip_allocation_method: The private IP address allocation method. Possible values
15373     include: "Static", "Dynamic".
15374    :type private_ip_allocation_method: str or
15375     ~azure.mgmt.network.v2019_12_01.models.IPAllocationMethod
15376    :param subnet: The reference to the subnet resource.
15377    :type subnet: ~azure.mgmt.network.v2019_12_01.models.Subnet
15378    :param primary: Whether the ip configuration is primary or not.
15379    :type primary: bool
15380    :ivar provisioning_state: The provisioning state of the private link service IP configuration
15381     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
15382    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
15383    :param private_ip_address_version: Whether the specific IP configuration is IPv4 or IPv6.
15384     Default is IPv4. Possible values include: "IPv4", "IPv6".
15385    :type private_ip_address_version: str or ~azure.mgmt.network.v2019_12_01.models.IPVersion
15386    """
15387
15388    _validation = {
15389        'etag': {'readonly': True},
15390        'type': {'readonly': True},
15391        'provisioning_state': {'readonly': True},
15392    }
15393
15394    _attribute_map = {
15395        'id': {'key': 'id', 'type': 'str'},
15396        'name': {'key': 'name', 'type': 'str'},
15397        'etag': {'key': 'etag', 'type': 'str'},
15398        'type': {'key': 'type', 'type': 'str'},
15399        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
15400        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
15401        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
15402        'primary': {'key': 'properties.primary', 'type': 'bool'},
15403        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15404        'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'},
15405    }
15406
15407    def __init__(
15408        self,
15409        *,
15410        id: Optional[str] = None,
15411        name: Optional[str] = None,
15412        private_ip_address: Optional[str] = None,
15413        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
15414        subnet: Optional["Subnet"] = None,
15415        primary: Optional[bool] = None,
15416        private_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
15417        **kwargs
15418    ):
15419        super(PrivateLinkServiceIpConfiguration, self).__init__(id=id, **kwargs)
15420        self.name = name
15421        self.etag = None
15422        self.type = None
15423        self.private_ip_address = private_ip_address
15424        self.private_ip_allocation_method = private_ip_allocation_method
15425        self.subnet = subnet
15426        self.primary = primary
15427        self.provisioning_state = None
15428        self.private_ip_address_version = private_ip_address_version
15429
15430
15431class PrivateLinkServiceListResult(msrest.serialization.Model):
15432    """Response for the ListPrivateLinkService API service call.
15433
15434    Variables are only populated by the server, and will be ignored when sending a request.
15435
15436    :param value: A list of PrivateLinkService resources in a resource group.
15437    :type value: list[~azure.mgmt.network.v2019_12_01.models.PrivateLinkService]
15438    :ivar next_link: The URL to get the next set of results.
15439    :vartype next_link: str
15440    """
15441
15442    _validation = {
15443        'next_link': {'readonly': True},
15444    }
15445
15446    _attribute_map = {
15447        'value': {'key': 'value', 'type': '[PrivateLinkService]'},
15448        'next_link': {'key': 'nextLink', 'type': 'str'},
15449    }
15450
15451    def __init__(
15452        self,
15453        *,
15454        value: Optional[List["PrivateLinkService"]] = None,
15455        **kwargs
15456    ):
15457        super(PrivateLinkServiceListResult, self).__init__(**kwargs)
15458        self.value = value
15459        self.next_link = None
15460
15461
15462class ResourceSet(msrest.serialization.Model):
15463    """The base resource set for visibility and auto-approval.
15464
15465    :param subscriptions: The list of subscriptions.
15466    :type subscriptions: list[str]
15467    """
15468
15469    _attribute_map = {
15470        'subscriptions': {'key': 'subscriptions', 'type': '[str]'},
15471    }
15472
15473    def __init__(
15474        self,
15475        *,
15476        subscriptions: Optional[List[str]] = None,
15477        **kwargs
15478    ):
15479        super(ResourceSet, self).__init__(**kwargs)
15480        self.subscriptions = subscriptions
15481
15482
15483class PrivateLinkServicePropertiesAutoApproval(ResourceSet):
15484    """The auto-approval list of the private link service.
15485
15486    :param subscriptions: The list of subscriptions.
15487    :type subscriptions: list[str]
15488    """
15489
15490    _attribute_map = {
15491        'subscriptions': {'key': 'subscriptions', 'type': '[str]'},
15492    }
15493
15494    def __init__(
15495        self,
15496        *,
15497        subscriptions: Optional[List[str]] = None,
15498        **kwargs
15499    ):
15500        super(PrivateLinkServicePropertiesAutoApproval, self).__init__(subscriptions=subscriptions, **kwargs)
15501
15502
15503class PrivateLinkServicePropertiesVisibility(ResourceSet):
15504    """The visibility list of the private link service.
15505
15506    :param subscriptions: The list of subscriptions.
15507    :type subscriptions: list[str]
15508    """
15509
15510    _attribute_map = {
15511        'subscriptions': {'key': 'subscriptions', 'type': '[str]'},
15512    }
15513
15514    def __init__(
15515        self,
15516        *,
15517        subscriptions: Optional[List[str]] = None,
15518        **kwargs
15519    ):
15520        super(PrivateLinkServicePropertiesVisibility, self).__init__(subscriptions=subscriptions, **kwargs)
15521
15522
15523class PrivateLinkServiceVisibility(msrest.serialization.Model):
15524    """Response for the CheckPrivateLinkServiceVisibility API service call.
15525
15526    :param visible: Private Link Service Visibility (True/False).
15527    :type visible: bool
15528    """
15529
15530    _attribute_map = {
15531        'visible': {'key': 'visible', 'type': 'bool'},
15532    }
15533
15534    def __init__(
15535        self,
15536        *,
15537        visible: Optional[bool] = None,
15538        **kwargs
15539    ):
15540        super(PrivateLinkServiceVisibility, self).__init__(**kwargs)
15541        self.visible = visible
15542
15543
15544class Probe(SubResource):
15545    """A load balancer probe.
15546
15547    Variables are only populated by the server, and will be ignored when sending a request.
15548
15549    :param id: Resource ID.
15550    :type id: str
15551    :param name: The name of the resource that is unique within the set of probes used by the load
15552     balancer. This name can be used to access the resource.
15553    :type name: str
15554    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15555    :vartype etag: str
15556    :ivar type: Type of the resource.
15557    :vartype type: str
15558    :ivar load_balancing_rules: The load balancer rules that use this probe.
15559    :vartype load_balancing_rules: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
15560    :param protocol: The protocol of the end point. If 'Tcp' is specified, a received ACK is
15561     required for the probe to be successful. If 'Http' or 'Https' is specified, a 200 OK response
15562     from the specifies URI is required for the probe to be successful. Possible values include:
15563     "Http", "Tcp", "Https".
15564    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.ProbeProtocol
15565    :param port: The port for communicating the probe. Possible values range from 1 to 65535,
15566     inclusive.
15567    :type port: int
15568    :param interval_in_seconds: The interval, in seconds, for how frequently to probe the endpoint
15569     for health status. Typically, the interval is slightly less than half the allocated timeout
15570     period (in seconds) which allows two full probes before taking the instance out of rotation.
15571     The default value is 15, the minimum value is 5.
15572    :type interval_in_seconds: int
15573    :param number_of_probes: The number of probes where if no response, will result in stopping
15574     further traffic from being delivered to the endpoint. This values allows endpoints to be taken
15575     out of rotation faster or slower than the typical times used in Azure.
15576    :type number_of_probes: int
15577    :param request_path: The URI used for requesting health status from the VM. Path is required if
15578     a protocol is set to http. Otherwise, it is not allowed. There is no default value.
15579    :type request_path: str
15580    :ivar provisioning_state: The provisioning state of the probe resource. Possible values
15581     include: "Succeeded", "Updating", "Deleting", "Failed".
15582    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
15583    """
15584
15585    _validation = {
15586        'etag': {'readonly': True},
15587        'type': {'readonly': True},
15588        'load_balancing_rules': {'readonly': True},
15589        'provisioning_state': {'readonly': True},
15590    }
15591
15592    _attribute_map = {
15593        'id': {'key': 'id', 'type': 'str'},
15594        'name': {'key': 'name', 'type': 'str'},
15595        'etag': {'key': 'etag', 'type': 'str'},
15596        'type': {'key': 'type', 'type': 'str'},
15597        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
15598        'protocol': {'key': 'properties.protocol', 'type': 'str'},
15599        'port': {'key': 'properties.port', 'type': 'int'},
15600        'interval_in_seconds': {'key': 'properties.intervalInSeconds', 'type': 'int'},
15601        'number_of_probes': {'key': 'properties.numberOfProbes', 'type': 'int'},
15602        'request_path': {'key': 'properties.requestPath', 'type': 'str'},
15603        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15604    }
15605
15606    def __init__(
15607        self,
15608        *,
15609        id: Optional[str] = None,
15610        name: Optional[str] = None,
15611        protocol: Optional[Union[str, "ProbeProtocol"]] = None,
15612        port: Optional[int] = None,
15613        interval_in_seconds: Optional[int] = None,
15614        number_of_probes: Optional[int] = None,
15615        request_path: Optional[str] = None,
15616        **kwargs
15617    ):
15618        super(Probe, self).__init__(id=id, **kwargs)
15619        self.name = name
15620        self.etag = None
15621        self.type = None
15622        self.load_balancing_rules = None
15623        self.protocol = protocol
15624        self.port = port
15625        self.interval_in_seconds = interval_in_seconds
15626        self.number_of_probes = number_of_probes
15627        self.request_path = request_path
15628        self.provisioning_state = None
15629
15630
15631class ProtocolConfiguration(msrest.serialization.Model):
15632    """Configuration of the protocol.
15633
15634    :param http_configuration: HTTP configuration of the connectivity check.
15635    :type http_configuration: ~azure.mgmt.network.v2019_12_01.models.HTTPConfiguration
15636    """
15637
15638    _attribute_map = {
15639        'http_configuration': {'key': 'HTTPConfiguration', 'type': 'HTTPConfiguration'},
15640    }
15641
15642    def __init__(
15643        self,
15644        *,
15645        http_configuration: Optional["HTTPConfiguration"] = None,
15646        **kwargs
15647    ):
15648        super(ProtocolConfiguration, self).__init__(**kwargs)
15649        self.http_configuration = http_configuration
15650
15651
15652class ProtocolCustomSettingsFormat(msrest.serialization.Model):
15653    """DDoS custom policy properties.
15654
15655    :param protocol: The protocol for which the DDoS protection policy is being customized.
15656     Possible values include: "Tcp", "Udp", "Syn".
15657    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.DdosCustomPolicyProtocol
15658    :param trigger_rate_override: The customized DDoS protection trigger rate.
15659    :type trigger_rate_override: str
15660    :param source_rate_override: The customized DDoS protection source rate.
15661    :type source_rate_override: str
15662    :param trigger_sensitivity_override: The customized DDoS protection trigger rate sensitivity
15663     degrees. High: Trigger rate set with most sensitivity w.r.t. normal traffic. Default: Trigger
15664     rate set with moderate sensitivity w.r.t. normal traffic. Low: Trigger rate set with less
15665     sensitivity w.r.t. normal traffic. Relaxed: Trigger rate set with least sensitivity w.r.t.
15666     normal traffic. Possible values include: "Relaxed", "Low", "Default", "High".
15667    :type trigger_sensitivity_override: str or
15668     ~azure.mgmt.network.v2019_12_01.models.DdosCustomPolicyTriggerSensitivityOverride
15669    """
15670
15671    _attribute_map = {
15672        'protocol': {'key': 'protocol', 'type': 'str'},
15673        'trigger_rate_override': {'key': 'triggerRateOverride', 'type': 'str'},
15674        'source_rate_override': {'key': 'sourceRateOverride', 'type': 'str'},
15675        'trigger_sensitivity_override': {'key': 'triggerSensitivityOverride', 'type': 'str'},
15676    }
15677
15678    def __init__(
15679        self,
15680        *,
15681        protocol: Optional[Union[str, "DdosCustomPolicyProtocol"]] = None,
15682        trigger_rate_override: Optional[str] = None,
15683        source_rate_override: Optional[str] = None,
15684        trigger_sensitivity_override: Optional[Union[str, "DdosCustomPolicyTriggerSensitivityOverride"]] = None,
15685        **kwargs
15686    ):
15687        super(ProtocolCustomSettingsFormat, self).__init__(**kwargs)
15688        self.protocol = protocol
15689        self.trigger_rate_override = trigger_rate_override
15690        self.source_rate_override = source_rate_override
15691        self.trigger_sensitivity_override = trigger_sensitivity_override
15692
15693
15694class PublicIPAddress(Resource):
15695    """Public IP address resource.
15696
15697    Variables are only populated by the server, and will be ignored when sending a request.
15698
15699    :param id: Resource ID.
15700    :type id: str
15701    :ivar name: Resource name.
15702    :vartype name: str
15703    :ivar type: Resource type.
15704    :vartype type: str
15705    :param location: Resource location.
15706    :type location: str
15707    :param tags: A set of tags. Resource tags.
15708    :type tags: dict[str, str]
15709    :param sku: The public IP address SKU.
15710    :type sku: ~azure.mgmt.network.v2019_12_01.models.PublicIPAddressSku
15711    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15712    :vartype etag: str
15713    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
15714     come from.
15715    :type zones: list[str]
15716    :param public_ip_allocation_method: The public IP address allocation method. Possible values
15717     include: "Static", "Dynamic".
15718    :type public_ip_allocation_method: str or
15719     ~azure.mgmt.network.v2019_12_01.models.IPAllocationMethod
15720    :param public_ip_address_version: The public IP address version. Possible values include:
15721     "IPv4", "IPv6".
15722    :type public_ip_address_version: str or ~azure.mgmt.network.v2019_12_01.models.IPVersion
15723    :ivar ip_configuration: The IP configuration associated with the public IP address.
15724    :vartype ip_configuration: ~azure.mgmt.network.v2019_12_01.models.IPConfiguration
15725    :param dns_settings: The FQDN of the DNS record associated with the public IP address.
15726    :type dns_settings: ~azure.mgmt.network.v2019_12_01.models.PublicIPAddressDnsSettings
15727    :param ddos_settings: The DDoS protection custom policy associated with the public IP address.
15728    :type ddos_settings: ~azure.mgmt.network.v2019_12_01.models.DdosSettings
15729    :param ip_tags: The list of tags associated with the public IP address.
15730    :type ip_tags: list[~azure.mgmt.network.v2019_12_01.models.IpTag]
15731    :param ip_address: The IP address associated with the public IP address resource.
15732    :type ip_address: str
15733    :param public_ip_prefix: The Public IP Prefix this Public IP Address should be allocated from.
15734    :type public_ip_prefix: ~azure.mgmt.network.v2019_12_01.models.SubResource
15735    :param idle_timeout_in_minutes: The idle timeout of the public IP address.
15736    :type idle_timeout_in_minutes: int
15737    :ivar resource_guid: The resource GUID property of the public IP address resource.
15738    :vartype resource_guid: str
15739    :ivar provisioning_state: The provisioning state of the public IP address resource. Possible
15740     values include: "Succeeded", "Updating", "Deleting", "Failed".
15741    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
15742    """
15743
15744    _validation = {
15745        'name': {'readonly': True},
15746        'type': {'readonly': True},
15747        'etag': {'readonly': True},
15748        'ip_configuration': {'readonly': True},
15749        'resource_guid': {'readonly': True},
15750        'provisioning_state': {'readonly': True},
15751    }
15752
15753    _attribute_map = {
15754        'id': {'key': 'id', 'type': 'str'},
15755        'name': {'key': 'name', 'type': 'str'},
15756        'type': {'key': 'type', 'type': 'str'},
15757        'location': {'key': 'location', 'type': 'str'},
15758        'tags': {'key': 'tags', 'type': '{str}'},
15759        'sku': {'key': 'sku', 'type': 'PublicIPAddressSku'},
15760        'etag': {'key': 'etag', 'type': 'str'},
15761        'zones': {'key': 'zones', 'type': '[str]'},
15762        'public_ip_allocation_method': {'key': 'properties.publicIPAllocationMethod', 'type': 'str'},
15763        'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'},
15764        'ip_configuration': {'key': 'properties.ipConfiguration', 'type': 'IPConfiguration'},
15765        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'PublicIPAddressDnsSettings'},
15766        'ddos_settings': {'key': 'properties.ddosSettings', 'type': 'DdosSettings'},
15767        'ip_tags': {'key': 'properties.ipTags', 'type': '[IpTag]'},
15768        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
15769        'public_ip_prefix': {'key': 'properties.publicIPPrefix', 'type': 'SubResource'},
15770        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
15771        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
15772        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15773    }
15774
15775    def __init__(
15776        self,
15777        *,
15778        id: Optional[str] = None,
15779        location: Optional[str] = None,
15780        tags: Optional[Dict[str, str]] = None,
15781        sku: Optional["PublicIPAddressSku"] = None,
15782        zones: Optional[List[str]] = None,
15783        public_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
15784        public_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
15785        dns_settings: Optional["PublicIPAddressDnsSettings"] = None,
15786        ddos_settings: Optional["DdosSettings"] = None,
15787        ip_tags: Optional[List["IpTag"]] = None,
15788        ip_address: Optional[str] = None,
15789        public_ip_prefix: Optional["SubResource"] = None,
15790        idle_timeout_in_minutes: Optional[int] = None,
15791        **kwargs
15792    ):
15793        super(PublicIPAddress, self).__init__(id=id, location=location, tags=tags, **kwargs)
15794        self.sku = sku
15795        self.etag = None
15796        self.zones = zones
15797        self.public_ip_allocation_method = public_ip_allocation_method
15798        self.public_ip_address_version = public_ip_address_version
15799        self.ip_configuration = None
15800        self.dns_settings = dns_settings
15801        self.ddos_settings = ddos_settings
15802        self.ip_tags = ip_tags
15803        self.ip_address = ip_address
15804        self.public_ip_prefix = public_ip_prefix
15805        self.idle_timeout_in_minutes = idle_timeout_in_minutes
15806        self.resource_guid = None
15807        self.provisioning_state = None
15808
15809
15810class PublicIPAddressDnsSettings(msrest.serialization.Model):
15811    """Contains FQDN of the DNS record associated with the public IP address.
15812
15813    :param domain_name_label: The domain name label. The concatenation of the domain name label and
15814     the regionalized DNS zone make up the fully qualified domain name associated with the public IP
15815     address. If a domain name label is specified, an A DNS record is created for the public IP in
15816     the Microsoft Azure DNS system.
15817    :type domain_name_label: str
15818    :param fqdn: The Fully Qualified Domain Name of the A DNS record associated with the public IP.
15819     This is the concatenation of the domainNameLabel and the regionalized DNS zone.
15820    :type fqdn: str
15821    :param reverse_fqdn: The reverse FQDN. A user-visible, fully qualified domain name that
15822     resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record is
15823     created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN.
15824    :type reverse_fqdn: str
15825    """
15826
15827    _attribute_map = {
15828        'domain_name_label': {'key': 'domainNameLabel', 'type': 'str'},
15829        'fqdn': {'key': 'fqdn', 'type': 'str'},
15830        'reverse_fqdn': {'key': 'reverseFqdn', 'type': 'str'},
15831    }
15832
15833    def __init__(
15834        self,
15835        *,
15836        domain_name_label: Optional[str] = None,
15837        fqdn: Optional[str] = None,
15838        reverse_fqdn: Optional[str] = None,
15839        **kwargs
15840    ):
15841        super(PublicIPAddressDnsSettings, self).__init__(**kwargs)
15842        self.domain_name_label = domain_name_label
15843        self.fqdn = fqdn
15844        self.reverse_fqdn = reverse_fqdn
15845
15846
15847class PublicIPAddressListResult(msrest.serialization.Model):
15848    """Response for ListPublicIpAddresses API service call.
15849
15850    :param value: A list of public IP addresses that exists in a resource group.
15851    :type value: list[~azure.mgmt.network.v2019_12_01.models.PublicIPAddress]
15852    :param next_link: The URL to get the next set of results.
15853    :type next_link: str
15854    """
15855
15856    _attribute_map = {
15857        'value': {'key': 'value', 'type': '[PublicIPAddress]'},
15858        'next_link': {'key': 'nextLink', 'type': 'str'},
15859    }
15860
15861    def __init__(
15862        self,
15863        *,
15864        value: Optional[List["PublicIPAddress"]] = None,
15865        next_link: Optional[str] = None,
15866        **kwargs
15867    ):
15868        super(PublicIPAddressListResult, self).__init__(**kwargs)
15869        self.value = value
15870        self.next_link = next_link
15871
15872
15873class PublicIPAddressSku(msrest.serialization.Model):
15874    """SKU of a public IP address.
15875
15876    :param name: Name of a public IP address SKU. Possible values include: "Basic", "Standard".
15877    :type name: str or ~azure.mgmt.network.v2019_12_01.models.PublicIPAddressSkuName
15878    """
15879
15880    _attribute_map = {
15881        'name': {'key': 'name', 'type': 'str'},
15882    }
15883
15884    def __init__(
15885        self,
15886        *,
15887        name: Optional[Union[str, "PublicIPAddressSkuName"]] = None,
15888        **kwargs
15889    ):
15890        super(PublicIPAddressSku, self).__init__(**kwargs)
15891        self.name = name
15892
15893
15894class PublicIPPrefix(Resource):
15895    """Public IP prefix resource.
15896
15897    Variables are only populated by the server, and will be ignored when sending a request.
15898
15899    :param id: Resource ID.
15900    :type id: str
15901    :ivar name: Resource name.
15902    :vartype name: str
15903    :ivar type: Resource type.
15904    :vartype type: str
15905    :param location: Resource location.
15906    :type location: str
15907    :param tags: A set of tags. Resource tags.
15908    :type tags: dict[str, str]
15909    :param sku: The public IP prefix SKU.
15910    :type sku: ~azure.mgmt.network.v2019_12_01.models.PublicIPPrefixSku
15911    :ivar etag: A unique read-only string that changes whenever the resource is updated.
15912    :vartype etag: str
15913    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
15914     come from.
15915    :type zones: list[str]
15916    :param public_ip_address_version: The public IP address version. Possible values include:
15917     "IPv4", "IPv6".
15918    :type public_ip_address_version: str or ~azure.mgmt.network.v2019_12_01.models.IPVersion
15919    :param ip_tags: The list of tags associated with the public IP prefix.
15920    :type ip_tags: list[~azure.mgmt.network.v2019_12_01.models.IpTag]
15921    :param prefix_length: The Length of the Public IP Prefix.
15922    :type prefix_length: int
15923    :ivar ip_prefix: The allocated Prefix.
15924    :vartype ip_prefix: str
15925    :ivar public_ip_addresses: The list of all referenced PublicIPAddresses.
15926    :vartype public_ip_addresses:
15927     list[~azure.mgmt.network.v2019_12_01.models.ReferencedPublicIpAddress]
15928    :ivar load_balancer_frontend_ip_configuration: The reference to load balancer frontend IP
15929     configuration associated with the public IP prefix.
15930    :vartype load_balancer_frontend_ip_configuration:
15931     ~azure.mgmt.network.v2019_12_01.models.SubResource
15932    :ivar resource_guid: The resource GUID property of the public IP prefix resource.
15933    :vartype resource_guid: str
15934    :ivar provisioning_state: The provisioning state of the public IP prefix resource. Possible
15935     values include: "Succeeded", "Updating", "Deleting", "Failed".
15936    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
15937    """
15938
15939    _validation = {
15940        'name': {'readonly': True},
15941        'type': {'readonly': True},
15942        'etag': {'readonly': True},
15943        'ip_prefix': {'readonly': True},
15944        'public_ip_addresses': {'readonly': True},
15945        'load_balancer_frontend_ip_configuration': {'readonly': True},
15946        'resource_guid': {'readonly': True},
15947        'provisioning_state': {'readonly': True},
15948    }
15949
15950    _attribute_map = {
15951        'id': {'key': 'id', 'type': 'str'},
15952        'name': {'key': 'name', 'type': 'str'},
15953        'type': {'key': 'type', 'type': 'str'},
15954        'location': {'key': 'location', 'type': 'str'},
15955        'tags': {'key': 'tags', 'type': '{str}'},
15956        'sku': {'key': 'sku', 'type': 'PublicIPPrefixSku'},
15957        'etag': {'key': 'etag', 'type': 'str'},
15958        'zones': {'key': 'zones', 'type': '[str]'},
15959        'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'},
15960        'ip_tags': {'key': 'properties.ipTags', 'type': '[IpTag]'},
15961        'prefix_length': {'key': 'properties.prefixLength', 'type': 'int'},
15962        'ip_prefix': {'key': 'properties.ipPrefix', 'type': 'str'},
15963        'public_ip_addresses': {'key': 'properties.publicIPAddresses', 'type': '[ReferencedPublicIpAddress]'},
15964        'load_balancer_frontend_ip_configuration': {'key': 'properties.loadBalancerFrontendIpConfiguration', 'type': 'SubResource'},
15965        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
15966        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
15967    }
15968
15969    def __init__(
15970        self,
15971        *,
15972        id: Optional[str] = None,
15973        location: Optional[str] = None,
15974        tags: Optional[Dict[str, str]] = None,
15975        sku: Optional["PublicIPPrefixSku"] = None,
15976        zones: Optional[List[str]] = None,
15977        public_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
15978        ip_tags: Optional[List["IpTag"]] = None,
15979        prefix_length: Optional[int] = None,
15980        **kwargs
15981    ):
15982        super(PublicIPPrefix, self).__init__(id=id, location=location, tags=tags, **kwargs)
15983        self.sku = sku
15984        self.etag = None
15985        self.zones = zones
15986        self.public_ip_address_version = public_ip_address_version
15987        self.ip_tags = ip_tags
15988        self.prefix_length = prefix_length
15989        self.ip_prefix = None
15990        self.public_ip_addresses = None
15991        self.load_balancer_frontend_ip_configuration = None
15992        self.resource_guid = None
15993        self.provisioning_state = None
15994
15995
15996class PublicIPPrefixListResult(msrest.serialization.Model):
15997    """Response for ListPublicIpPrefixes API service call.
15998
15999    :param value: A list of public IP prefixes that exists in a resource group.
16000    :type value: list[~azure.mgmt.network.v2019_12_01.models.PublicIPPrefix]
16001    :param next_link: The URL to get the next set of results.
16002    :type next_link: str
16003    """
16004
16005    _attribute_map = {
16006        'value': {'key': 'value', 'type': '[PublicIPPrefix]'},
16007        'next_link': {'key': 'nextLink', 'type': 'str'},
16008    }
16009
16010    def __init__(
16011        self,
16012        *,
16013        value: Optional[List["PublicIPPrefix"]] = None,
16014        next_link: Optional[str] = None,
16015        **kwargs
16016    ):
16017        super(PublicIPPrefixListResult, self).__init__(**kwargs)
16018        self.value = value
16019        self.next_link = next_link
16020
16021
16022class PublicIPPrefixSku(msrest.serialization.Model):
16023    """SKU of a public IP prefix.
16024
16025    :param name: Name of a public IP prefix SKU. Possible values include: "Standard".
16026    :type name: str or ~azure.mgmt.network.v2019_12_01.models.PublicIPPrefixSkuName
16027    """
16028
16029    _attribute_map = {
16030        'name': {'key': 'name', 'type': 'str'},
16031    }
16032
16033    def __init__(
16034        self,
16035        *,
16036        name: Optional[Union[str, "PublicIPPrefixSkuName"]] = None,
16037        **kwargs
16038    ):
16039        super(PublicIPPrefixSku, self).__init__(**kwargs)
16040        self.name = name
16041
16042
16043class QueryTroubleshootingParameters(msrest.serialization.Model):
16044    """Parameters that define the resource to query the troubleshooting result.
16045
16046    All required parameters must be populated in order to send to Azure.
16047
16048    :param target_resource_id: Required. The target resource ID to query the troubleshooting
16049     result.
16050    :type target_resource_id: str
16051    """
16052
16053    _validation = {
16054        'target_resource_id': {'required': True},
16055    }
16056
16057    _attribute_map = {
16058        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
16059    }
16060
16061    def __init__(
16062        self,
16063        *,
16064        target_resource_id: str,
16065        **kwargs
16066    ):
16067        super(QueryTroubleshootingParameters, self).__init__(**kwargs)
16068        self.target_resource_id = target_resource_id
16069
16070
16071class ReferencedPublicIpAddress(msrest.serialization.Model):
16072    """Reference to a public IP address.
16073
16074    :param id: The PublicIPAddress Reference.
16075    :type id: str
16076    """
16077
16078    _attribute_map = {
16079        'id': {'key': 'id', 'type': 'str'},
16080    }
16081
16082    def __init__(
16083        self,
16084        *,
16085        id: Optional[str] = None,
16086        **kwargs
16087    ):
16088        super(ReferencedPublicIpAddress, self).__init__(**kwargs)
16089        self.id = id
16090
16091
16092class ResourceNavigationLink(SubResource):
16093    """ResourceNavigationLink resource.
16094
16095    Variables are only populated by the server, and will be ignored when sending a request.
16096
16097    :param id: Resource ID.
16098    :type id: str
16099    :param name: Name of the resource that is unique within a resource group. This name can be used
16100     to access the resource.
16101    :type name: str
16102    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16103    :vartype etag: str
16104    :ivar type: Resource type.
16105    :vartype type: str
16106    :param linked_resource_type: Resource type of the linked resource.
16107    :type linked_resource_type: str
16108    :param link: Link to the external resource.
16109    :type link: str
16110    :ivar provisioning_state: The provisioning state of the resource navigation link resource.
16111     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
16112    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
16113    """
16114
16115    _validation = {
16116        'etag': {'readonly': True},
16117        'type': {'readonly': True},
16118        'provisioning_state': {'readonly': True},
16119    }
16120
16121    _attribute_map = {
16122        'id': {'key': 'id', 'type': 'str'},
16123        'name': {'key': 'name', 'type': 'str'},
16124        'etag': {'key': 'etag', 'type': 'str'},
16125        'type': {'key': 'type', 'type': 'str'},
16126        'linked_resource_type': {'key': 'properties.linkedResourceType', 'type': 'str'},
16127        'link': {'key': 'properties.link', 'type': 'str'},
16128        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16129    }
16130
16131    def __init__(
16132        self,
16133        *,
16134        id: Optional[str] = None,
16135        name: Optional[str] = None,
16136        linked_resource_type: Optional[str] = None,
16137        link: Optional[str] = None,
16138        **kwargs
16139    ):
16140        super(ResourceNavigationLink, self).__init__(id=id, **kwargs)
16141        self.name = name
16142        self.etag = None
16143        self.type = None
16144        self.linked_resource_type = linked_resource_type
16145        self.link = link
16146        self.provisioning_state = None
16147
16148
16149class ResourceNavigationLinksListResult(msrest.serialization.Model):
16150    """Response for ResourceNavigationLinks_List operation.
16151
16152    Variables are only populated by the server, and will be ignored when sending a request.
16153
16154    :param value: The resource navigation links in a subnet.
16155    :type value: list[~azure.mgmt.network.v2019_12_01.models.ResourceNavigationLink]
16156    :ivar next_link: The URL to get the next set of results.
16157    :vartype next_link: str
16158    """
16159
16160    _validation = {
16161        'next_link': {'readonly': True},
16162    }
16163
16164    _attribute_map = {
16165        'value': {'key': 'value', 'type': '[ResourceNavigationLink]'},
16166        'next_link': {'key': 'nextLink', 'type': 'str'},
16167    }
16168
16169    def __init__(
16170        self,
16171        *,
16172        value: Optional[List["ResourceNavigationLink"]] = None,
16173        **kwargs
16174    ):
16175        super(ResourceNavigationLinksListResult, self).__init__(**kwargs)
16176        self.value = value
16177        self.next_link = None
16178
16179
16180class RetentionPolicyParameters(msrest.serialization.Model):
16181    """Parameters that define the retention policy for flow log.
16182
16183    :param days: Number of days to retain flow log records.
16184    :type days: int
16185    :param enabled: Flag to enable/disable retention.
16186    :type enabled: bool
16187    """
16188
16189    _attribute_map = {
16190        'days': {'key': 'days', 'type': 'int'},
16191        'enabled': {'key': 'enabled', 'type': 'bool'},
16192    }
16193
16194    def __init__(
16195        self,
16196        *,
16197        days: Optional[int] = 0,
16198        enabled: Optional[bool] = False,
16199        **kwargs
16200    ):
16201        super(RetentionPolicyParameters, self).__init__(**kwargs)
16202        self.days = days
16203        self.enabled = enabled
16204
16205
16206class Route(SubResource):
16207    """Route resource.
16208
16209    Variables are only populated by the server, and will be ignored when sending a request.
16210
16211    :param id: Resource ID.
16212    :type id: str
16213    :param name: The name of the resource that is unique within a resource group. This name can be
16214     used to access the resource.
16215    :type name: str
16216    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16217    :vartype etag: str
16218    :param address_prefix: The destination CIDR to which the route applies.
16219    :type address_prefix: str
16220    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values
16221     include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
16222    :type next_hop_type: str or ~azure.mgmt.network.v2019_12_01.models.RouteNextHopType
16223    :param next_hop_ip_address: The IP address packets should be forwarded to. Next hop values are
16224     only allowed in routes where the next hop type is VirtualAppliance.
16225    :type next_hop_ip_address: str
16226    :ivar provisioning_state: The provisioning state of the route resource. Possible values
16227     include: "Succeeded", "Updating", "Deleting", "Failed".
16228    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
16229    """
16230
16231    _validation = {
16232        'etag': {'readonly': True},
16233        'provisioning_state': {'readonly': True},
16234    }
16235
16236    _attribute_map = {
16237        'id': {'key': 'id', 'type': 'str'},
16238        'name': {'key': 'name', 'type': 'str'},
16239        'etag': {'key': 'etag', 'type': 'str'},
16240        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
16241        'next_hop_type': {'key': 'properties.nextHopType', 'type': 'str'},
16242        'next_hop_ip_address': {'key': 'properties.nextHopIpAddress', 'type': 'str'},
16243        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16244    }
16245
16246    def __init__(
16247        self,
16248        *,
16249        id: Optional[str] = None,
16250        name: Optional[str] = None,
16251        address_prefix: Optional[str] = None,
16252        next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None,
16253        next_hop_ip_address: Optional[str] = None,
16254        **kwargs
16255    ):
16256        super(Route, self).__init__(id=id, **kwargs)
16257        self.name = name
16258        self.etag = None
16259        self.address_prefix = address_prefix
16260        self.next_hop_type = next_hop_type
16261        self.next_hop_ip_address = next_hop_ip_address
16262        self.provisioning_state = None
16263
16264
16265class RouteFilter(Resource):
16266    """Route Filter Resource.
16267
16268    Variables are only populated by the server, and will be ignored when sending a request.
16269
16270    :param id: Resource ID.
16271    :type id: str
16272    :ivar name: Resource name.
16273    :vartype name: str
16274    :ivar type: Resource type.
16275    :vartype type: str
16276    :param location: Resource location.
16277    :type location: str
16278    :param tags: A set of tags. Resource tags.
16279    :type tags: dict[str, str]
16280    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16281    :vartype etag: str
16282    :param rules: Collection of RouteFilterRules contained within a route filter.
16283    :type rules: list[~azure.mgmt.network.v2019_12_01.models.RouteFilterRule]
16284    :ivar peerings: A collection of references to express route circuit peerings.
16285    :vartype peerings: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeering]
16286    :ivar ipv6_peerings: A collection of references to express route circuit ipv6 peerings.
16287    :vartype ipv6_peerings: list[~azure.mgmt.network.v2019_12_01.models.ExpressRouteCircuitPeering]
16288    :ivar provisioning_state: The provisioning state of the route filter resource. Possible values
16289     include: "Succeeded", "Updating", "Deleting", "Failed".
16290    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
16291    """
16292
16293    _validation = {
16294        'name': {'readonly': True},
16295        'type': {'readonly': True},
16296        'etag': {'readonly': True},
16297        'peerings': {'readonly': True},
16298        'ipv6_peerings': {'readonly': True},
16299        'provisioning_state': {'readonly': True},
16300    }
16301
16302    _attribute_map = {
16303        'id': {'key': 'id', 'type': 'str'},
16304        'name': {'key': 'name', 'type': 'str'},
16305        'type': {'key': 'type', 'type': 'str'},
16306        'location': {'key': 'location', 'type': 'str'},
16307        'tags': {'key': 'tags', 'type': '{str}'},
16308        'etag': {'key': 'etag', 'type': 'str'},
16309        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
16310        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
16311        'ipv6_peerings': {'key': 'properties.ipv6Peerings', 'type': '[ExpressRouteCircuitPeering]'},
16312        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16313    }
16314
16315    def __init__(
16316        self,
16317        *,
16318        id: Optional[str] = None,
16319        location: Optional[str] = None,
16320        tags: Optional[Dict[str, str]] = None,
16321        rules: Optional[List["RouteFilterRule"]] = None,
16322        **kwargs
16323    ):
16324        super(RouteFilter, self).__init__(id=id, location=location, tags=tags, **kwargs)
16325        self.etag = None
16326        self.rules = rules
16327        self.peerings = None
16328        self.ipv6_peerings = None
16329        self.provisioning_state = None
16330
16331
16332class RouteFilterListResult(msrest.serialization.Model):
16333    """Response for the ListRouteFilters API service call.
16334
16335    :param value: A list of route filters in a resource group.
16336    :type value: list[~azure.mgmt.network.v2019_12_01.models.RouteFilter]
16337    :param next_link: The URL to get the next set of results.
16338    :type next_link: str
16339    """
16340
16341    _attribute_map = {
16342        'value': {'key': 'value', 'type': '[RouteFilter]'},
16343        'next_link': {'key': 'nextLink', 'type': 'str'},
16344    }
16345
16346    def __init__(
16347        self,
16348        *,
16349        value: Optional[List["RouteFilter"]] = None,
16350        next_link: Optional[str] = None,
16351        **kwargs
16352    ):
16353        super(RouteFilterListResult, self).__init__(**kwargs)
16354        self.value = value
16355        self.next_link = next_link
16356
16357
16358class RouteFilterRule(SubResource):
16359    """Route Filter Rule Resource.
16360
16361    Variables are only populated by the server, and will be ignored when sending a request.
16362
16363    :param id: Resource ID.
16364    :type id: str
16365    :param name: The name of the resource that is unique within a resource group. This name can be
16366     used to access the resource.
16367    :type name: str
16368    :param location: Resource location.
16369    :type location: str
16370    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16371    :vartype etag: str
16372    :param access: The access type of the rule. Possible values include: "Allow", "Deny".
16373    :type access: str or ~azure.mgmt.network.v2019_12_01.models.Access
16374    :param route_filter_rule_type: The rule type of the rule. Possible values include: "Community".
16375    :type route_filter_rule_type: str or ~azure.mgmt.network.v2019_12_01.models.RouteFilterRuleType
16376    :param communities: The collection for bgp community values to filter on. e.g.
16377     ['12076:5010','12076:5020'].
16378    :type communities: list[str]
16379    :ivar provisioning_state: The provisioning state of the route filter rule resource. Possible
16380     values include: "Succeeded", "Updating", "Deleting", "Failed".
16381    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
16382    """
16383
16384    _validation = {
16385        'etag': {'readonly': True},
16386        'provisioning_state': {'readonly': True},
16387    }
16388
16389    _attribute_map = {
16390        'id': {'key': 'id', 'type': 'str'},
16391        'name': {'key': 'name', 'type': 'str'},
16392        'location': {'key': 'location', 'type': 'str'},
16393        'etag': {'key': 'etag', 'type': 'str'},
16394        'access': {'key': 'properties.access', 'type': 'str'},
16395        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
16396        'communities': {'key': 'properties.communities', 'type': '[str]'},
16397        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16398    }
16399
16400    def __init__(
16401        self,
16402        *,
16403        id: Optional[str] = None,
16404        name: Optional[str] = None,
16405        location: Optional[str] = None,
16406        access: Optional[Union[str, "Access"]] = None,
16407        route_filter_rule_type: Optional[Union[str, "RouteFilterRuleType"]] = None,
16408        communities: Optional[List[str]] = None,
16409        **kwargs
16410    ):
16411        super(RouteFilterRule, self).__init__(id=id, **kwargs)
16412        self.name = name
16413        self.location = location
16414        self.etag = None
16415        self.access = access
16416        self.route_filter_rule_type = route_filter_rule_type
16417        self.communities = communities
16418        self.provisioning_state = None
16419
16420
16421class RouteFilterRuleListResult(msrest.serialization.Model):
16422    """Response for the ListRouteFilterRules API service call.
16423
16424    :param value: A list of RouteFilterRules in a resource group.
16425    :type value: list[~azure.mgmt.network.v2019_12_01.models.RouteFilterRule]
16426    :param next_link: The URL to get the next set of results.
16427    :type next_link: str
16428    """
16429
16430    _attribute_map = {
16431        'value': {'key': 'value', 'type': '[RouteFilterRule]'},
16432        'next_link': {'key': 'nextLink', 'type': 'str'},
16433    }
16434
16435    def __init__(
16436        self,
16437        *,
16438        value: Optional[List["RouteFilterRule"]] = None,
16439        next_link: Optional[str] = None,
16440        **kwargs
16441    ):
16442        super(RouteFilterRuleListResult, self).__init__(**kwargs)
16443        self.value = value
16444        self.next_link = next_link
16445
16446
16447class RouteListResult(msrest.serialization.Model):
16448    """Response for the ListRoute API service call.
16449
16450    :param value: A list of routes in a resource group.
16451    :type value: list[~azure.mgmt.network.v2019_12_01.models.Route]
16452    :param next_link: The URL to get the next set of results.
16453    :type next_link: str
16454    """
16455
16456    _attribute_map = {
16457        'value': {'key': 'value', 'type': '[Route]'},
16458        'next_link': {'key': 'nextLink', 'type': 'str'},
16459    }
16460
16461    def __init__(
16462        self,
16463        *,
16464        value: Optional[List["Route"]] = None,
16465        next_link: Optional[str] = None,
16466        **kwargs
16467    ):
16468        super(RouteListResult, self).__init__(**kwargs)
16469        self.value = value
16470        self.next_link = next_link
16471
16472
16473class RouteTable(Resource):
16474    """Route table resource.
16475
16476    Variables are only populated by the server, and will be ignored when sending a request.
16477
16478    :param id: Resource ID.
16479    :type id: str
16480    :ivar name: Resource name.
16481    :vartype name: str
16482    :ivar type: Resource type.
16483    :vartype type: str
16484    :param location: Resource location.
16485    :type location: str
16486    :param tags: A set of tags. Resource tags.
16487    :type tags: dict[str, str]
16488    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16489    :vartype etag: str
16490    :param routes: Collection of routes contained within a route table.
16491    :type routes: list[~azure.mgmt.network.v2019_12_01.models.Route]
16492    :ivar subnets: A collection of references to subnets.
16493    :vartype subnets: list[~azure.mgmt.network.v2019_12_01.models.Subnet]
16494    :param disable_bgp_route_propagation: Whether to disable the routes learned by BGP on that
16495     route table. True means disable.
16496    :type disable_bgp_route_propagation: bool
16497    :ivar provisioning_state: The provisioning state of the route table resource. Possible values
16498     include: "Succeeded", "Updating", "Deleting", "Failed".
16499    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
16500    """
16501
16502    _validation = {
16503        'name': {'readonly': True},
16504        'type': {'readonly': True},
16505        'etag': {'readonly': True},
16506        'subnets': {'readonly': True},
16507        'provisioning_state': {'readonly': True},
16508    }
16509
16510    _attribute_map = {
16511        'id': {'key': 'id', 'type': 'str'},
16512        'name': {'key': 'name', 'type': 'str'},
16513        'type': {'key': 'type', 'type': 'str'},
16514        'location': {'key': 'location', 'type': 'str'},
16515        'tags': {'key': 'tags', 'type': '{str}'},
16516        'etag': {'key': 'etag', 'type': 'str'},
16517        'routes': {'key': 'properties.routes', 'type': '[Route]'},
16518        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
16519        'disable_bgp_route_propagation': {'key': 'properties.disableBgpRoutePropagation', 'type': 'bool'},
16520        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16521    }
16522
16523    def __init__(
16524        self,
16525        *,
16526        id: Optional[str] = None,
16527        location: Optional[str] = None,
16528        tags: Optional[Dict[str, str]] = None,
16529        routes: Optional[List["Route"]] = None,
16530        disable_bgp_route_propagation: Optional[bool] = None,
16531        **kwargs
16532    ):
16533        super(RouteTable, self).__init__(id=id, location=location, tags=tags, **kwargs)
16534        self.etag = None
16535        self.routes = routes
16536        self.subnets = None
16537        self.disable_bgp_route_propagation = disable_bgp_route_propagation
16538        self.provisioning_state = None
16539
16540
16541class RouteTableListResult(msrest.serialization.Model):
16542    """Response for the ListRouteTable API service call.
16543
16544    :param value: A list of route tables in a resource group.
16545    :type value: list[~azure.mgmt.network.v2019_12_01.models.RouteTable]
16546    :param next_link: The URL to get the next set of results.
16547    :type next_link: str
16548    """
16549
16550    _attribute_map = {
16551        'value': {'key': 'value', 'type': '[RouteTable]'},
16552        'next_link': {'key': 'nextLink', 'type': 'str'},
16553    }
16554
16555    def __init__(
16556        self,
16557        *,
16558        value: Optional[List["RouteTable"]] = None,
16559        next_link: Optional[str] = None,
16560        **kwargs
16561    ):
16562        super(RouteTableListResult, self).__init__(**kwargs)
16563        self.value = value
16564        self.next_link = next_link
16565
16566
16567class SecurityGroupNetworkInterface(msrest.serialization.Model):
16568    """Network interface and all its associated security rules.
16569
16570    :param id: ID of the network interface.
16571    :type id: str
16572    :param security_rule_associations: All security rules associated with the network interface.
16573    :type security_rule_associations:
16574     ~azure.mgmt.network.v2019_12_01.models.SecurityRuleAssociations
16575    """
16576
16577    _attribute_map = {
16578        'id': {'key': 'id', 'type': 'str'},
16579        'security_rule_associations': {'key': 'securityRuleAssociations', 'type': 'SecurityRuleAssociations'},
16580    }
16581
16582    def __init__(
16583        self,
16584        *,
16585        id: Optional[str] = None,
16586        security_rule_associations: Optional["SecurityRuleAssociations"] = None,
16587        **kwargs
16588    ):
16589        super(SecurityGroupNetworkInterface, self).__init__(**kwargs)
16590        self.id = id
16591        self.security_rule_associations = security_rule_associations
16592
16593
16594class SecurityGroupViewParameters(msrest.serialization.Model):
16595    """Parameters that define the VM to check security groups for.
16596
16597    All required parameters must be populated in order to send to Azure.
16598
16599    :param target_resource_id: Required. ID of the target VM.
16600    :type target_resource_id: str
16601    """
16602
16603    _validation = {
16604        'target_resource_id': {'required': True},
16605    }
16606
16607    _attribute_map = {
16608        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
16609    }
16610
16611    def __init__(
16612        self,
16613        *,
16614        target_resource_id: str,
16615        **kwargs
16616    ):
16617        super(SecurityGroupViewParameters, self).__init__(**kwargs)
16618        self.target_resource_id = target_resource_id
16619
16620
16621class SecurityGroupViewResult(msrest.serialization.Model):
16622    """The information about security rules applied to the specified VM.
16623
16624    :param network_interfaces: List of network interfaces on the specified VM.
16625    :type network_interfaces:
16626     list[~azure.mgmt.network.v2019_12_01.models.SecurityGroupNetworkInterface]
16627    """
16628
16629    _attribute_map = {
16630        'network_interfaces': {'key': 'networkInterfaces', 'type': '[SecurityGroupNetworkInterface]'},
16631    }
16632
16633    def __init__(
16634        self,
16635        *,
16636        network_interfaces: Optional[List["SecurityGroupNetworkInterface"]] = None,
16637        **kwargs
16638    ):
16639        super(SecurityGroupViewResult, self).__init__(**kwargs)
16640        self.network_interfaces = network_interfaces
16641
16642
16643class SecurityRule(SubResource):
16644    """Network security rule.
16645
16646    Variables are only populated by the server, and will be ignored when sending a request.
16647
16648    :param id: Resource ID.
16649    :type id: str
16650    :param name: The name of the resource that is unique within a resource group. This name can be
16651     used to access the resource.
16652    :type name: str
16653    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16654    :vartype etag: str
16655    :param description: A description for this rule. Restricted to 140 chars.
16656    :type description: str
16657    :param protocol: Network protocol this rule applies to. Possible values include: "Tcp", "Udp",
16658     "Icmp", "Esp", "*", "Ah".
16659    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.SecurityRuleProtocol
16660    :param source_port_range: The source port or range. Integer or range between 0 and 65535.
16661     Asterisk '*' can also be used to match all ports.
16662    :type source_port_range: str
16663    :param destination_port_range: The destination port or range. Integer or range between 0 and
16664     65535. Asterisk '*' can also be used to match all ports.
16665    :type destination_port_range: str
16666    :param source_address_prefix: The CIDR or source IP range. Asterisk '*' can also be used to
16667     match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet'
16668     can also be used. If this is an ingress rule, specifies where network traffic originates from.
16669    :type source_address_prefix: str
16670    :param source_address_prefixes: The CIDR or source IP ranges.
16671    :type source_address_prefixes: list[str]
16672    :param source_application_security_groups: The application security group specified as source.
16673    :type source_application_security_groups:
16674     list[~azure.mgmt.network.v2019_12_01.models.ApplicationSecurityGroup]
16675    :param destination_address_prefix: The destination address prefix. CIDR or destination IP
16676     range. Asterisk '*' can also be used to match all source IPs. Default tags such as
16677     'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
16678    :type destination_address_prefix: str
16679    :param destination_address_prefixes: The destination address prefixes. CIDR or destination IP
16680     ranges.
16681    :type destination_address_prefixes: list[str]
16682    :param destination_application_security_groups: The application security group specified as
16683     destination.
16684    :type destination_application_security_groups:
16685     list[~azure.mgmt.network.v2019_12_01.models.ApplicationSecurityGroup]
16686    :param source_port_ranges: The source port ranges.
16687    :type source_port_ranges: list[str]
16688    :param destination_port_ranges: The destination port ranges.
16689    :type destination_port_ranges: list[str]
16690    :param access: The network traffic is allowed or denied. Possible values include: "Allow",
16691     "Deny".
16692    :type access: str or ~azure.mgmt.network.v2019_12_01.models.SecurityRuleAccess
16693    :param priority: The priority of the rule. The value can be between 100 and 4096. The priority
16694     number must be unique for each rule in the collection. The lower the priority number, the
16695     higher the priority of the rule.
16696    :type priority: int
16697    :param direction: The direction of the rule. The direction specifies if rule will be evaluated
16698     on incoming or outgoing traffic. Possible values include: "Inbound", "Outbound".
16699    :type direction: str or ~azure.mgmt.network.v2019_12_01.models.SecurityRuleDirection
16700    :ivar provisioning_state: The provisioning state of the security rule resource. Possible values
16701     include: "Succeeded", "Updating", "Deleting", "Failed".
16702    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
16703    """
16704
16705    _validation = {
16706        'etag': {'readonly': True},
16707        'provisioning_state': {'readonly': True},
16708    }
16709
16710    _attribute_map = {
16711        'id': {'key': 'id', 'type': 'str'},
16712        'name': {'key': 'name', 'type': 'str'},
16713        'etag': {'key': 'etag', 'type': 'str'},
16714        'description': {'key': 'properties.description', 'type': 'str'},
16715        'protocol': {'key': 'properties.protocol', 'type': 'str'},
16716        'source_port_range': {'key': 'properties.sourcePortRange', 'type': 'str'},
16717        'destination_port_range': {'key': 'properties.destinationPortRange', 'type': 'str'},
16718        'source_address_prefix': {'key': 'properties.sourceAddressPrefix', 'type': 'str'},
16719        'source_address_prefixes': {'key': 'properties.sourceAddressPrefixes', 'type': '[str]'},
16720        'source_application_security_groups': {'key': 'properties.sourceApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
16721        'destination_address_prefix': {'key': 'properties.destinationAddressPrefix', 'type': 'str'},
16722        'destination_address_prefixes': {'key': 'properties.destinationAddressPrefixes', 'type': '[str]'},
16723        'destination_application_security_groups': {'key': 'properties.destinationApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
16724        'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'},
16725        'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'},
16726        'access': {'key': 'properties.access', 'type': 'str'},
16727        'priority': {'key': 'properties.priority', 'type': 'int'},
16728        'direction': {'key': 'properties.direction', 'type': 'str'},
16729        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16730    }
16731
16732    def __init__(
16733        self,
16734        *,
16735        id: Optional[str] = None,
16736        name: Optional[str] = None,
16737        description: Optional[str] = None,
16738        protocol: Optional[Union[str, "SecurityRuleProtocol"]] = None,
16739        source_port_range: Optional[str] = None,
16740        destination_port_range: Optional[str] = None,
16741        source_address_prefix: Optional[str] = None,
16742        source_address_prefixes: Optional[List[str]] = None,
16743        source_application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
16744        destination_address_prefix: Optional[str] = None,
16745        destination_address_prefixes: Optional[List[str]] = None,
16746        destination_application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
16747        source_port_ranges: Optional[List[str]] = None,
16748        destination_port_ranges: Optional[List[str]] = None,
16749        access: Optional[Union[str, "SecurityRuleAccess"]] = None,
16750        priority: Optional[int] = None,
16751        direction: Optional[Union[str, "SecurityRuleDirection"]] = None,
16752        **kwargs
16753    ):
16754        super(SecurityRule, self).__init__(id=id, **kwargs)
16755        self.name = name
16756        self.etag = None
16757        self.description = description
16758        self.protocol = protocol
16759        self.source_port_range = source_port_range
16760        self.destination_port_range = destination_port_range
16761        self.source_address_prefix = source_address_prefix
16762        self.source_address_prefixes = source_address_prefixes
16763        self.source_application_security_groups = source_application_security_groups
16764        self.destination_address_prefix = destination_address_prefix
16765        self.destination_address_prefixes = destination_address_prefixes
16766        self.destination_application_security_groups = destination_application_security_groups
16767        self.source_port_ranges = source_port_ranges
16768        self.destination_port_ranges = destination_port_ranges
16769        self.access = access
16770        self.priority = priority
16771        self.direction = direction
16772        self.provisioning_state = None
16773
16774
16775class SecurityRuleAssociations(msrest.serialization.Model):
16776    """All security rules associated with the network interface.
16777
16778    :param network_interface_association: Network interface and it's custom security rules.
16779    :type network_interface_association:
16780     ~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceAssociation
16781    :param subnet_association: Subnet and it's custom security rules.
16782    :type subnet_association: ~azure.mgmt.network.v2019_12_01.models.SubnetAssociation
16783    :param default_security_rules: Collection of default security rules of the network security
16784     group.
16785    :type default_security_rules: list[~azure.mgmt.network.v2019_12_01.models.SecurityRule]
16786    :param effective_security_rules: Collection of effective security rules.
16787    :type effective_security_rules:
16788     list[~azure.mgmt.network.v2019_12_01.models.EffectiveNetworkSecurityRule]
16789    """
16790
16791    _attribute_map = {
16792        'network_interface_association': {'key': 'networkInterfaceAssociation', 'type': 'NetworkInterfaceAssociation'},
16793        'subnet_association': {'key': 'subnetAssociation', 'type': 'SubnetAssociation'},
16794        'default_security_rules': {'key': 'defaultSecurityRules', 'type': '[SecurityRule]'},
16795        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
16796    }
16797
16798    def __init__(
16799        self,
16800        *,
16801        network_interface_association: Optional["NetworkInterfaceAssociation"] = None,
16802        subnet_association: Optional["SubnetAssociation"] = None,
16803        default_security_rules: Optional[List["SecurityRule"]] = None,
16804        effective_security_rules: Optional[List["EffectiveNetworkSecurityRule"]] = None,
16805        **kwargs
16806    ):
16807        super(SecurityRuleAssociations, self).__init__(**kwargs)
16808        self.network_interface_association = network_interface_association
16809        self.subnet_association = subnet_association
16810        self.default_security_rules = default_security_rules
16811        self.effective_security_rules = effective_security_rules
16812
16813
16814class SecurityRuleListResult(msrest.serialization.Model):
16815    """Response for ListSecurityRule API service call. Retrieves all security rules that belongs to a network security group.
16816
16817    :param value: The security rules in a network security group.
16818    :type value: list[~azure.mgmt.network.v2019_12_01.models.SecurityRule]
16819    :param next_link: The URL to get the next set of results.
16820    :type next_link: str
16821    """
16822
16823    _attribute_map = {
16824        'value': {'key': 'value', 'type': '[SecurityRule]'},
16825        'next_link': {'key': 'nextLink', 'type': 'str'},
16826    }
16827
16828    def __init__(
16829        self,
16830        *,
16831        value: Optional[List["SecurityRule"]] = None,
16832        next_link: Optional[str] = None,
16833        **kwargs
16834    ):
16835        super(SecurityRuleListResult, self).__init__(**kwargs)
16836        self.value = value
16837        self.next_link = next_link
16838
16839
16840class ServiceAssociationLink(SubResource):
16841    """ServiceAssociationLink resource.
16842
16843    Variables are only populated by the server, and will be ignored when sending a request.
16844
16845    :param id: Resource ID.
16846    :type id: str
16847    :param name: Name of the resource that is unique within a resource group. This name can be used
16848     to access the resource.
16849    :type name: str
16850    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16851    :vartype etag: str
16852    :ivar type: Resource type.
16853    :vartype type: str
16854    :param linked_resource_type: Resource type of the linked resource.
16855    :type linked_resource_type: str
16856    :param link: Link to the external resource.
16857    :type link: str
16858    :ivar provisioning_state: The provisioning state of the service association link resource.
16859     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
16860    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
16861    :param allow_delete: If true, the resource can be deleted.
16862    :type allow_delete: bool
16863    :param locations: A list of locations.
16864    :type locations: list[str]
16865    """
16866
16867    _validation = {
16868        'etag': {'readonly': True},
16869        'type': {'readonly': True},
16870        'provisioning_state': {'readonly': True},
16871    }
16872
16873    _attribute_map = {
16874        'id': {'key': 'id', 'type': 'str'},
16875        'name': {'key': 'name', 'type': 'str'},
16876        'etag': {'key': 'etag', 'type': 'str'},
16877        'type': {'key': 'type', 'type': 'str'},
16878        'linked_resource_type': {'key': 'properties.linkedResourceType', 'type': 'str'},
16879        'link': {'key': 'properties.link', 'type': 'str'},
16880        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16881        'allow_delete': {'key': 'properties.allowDelete', 'type': 'bool'},
16882        'locations': {'key': 'properties.locations', 'type': '[str]'},
16883    }
16884
16885    def __init__(
16886        self,
16887        *,
16888        id: Optional[str] = None,
16889        name: Optional[str] = None,
16890        linked_resource_type: Optional[str] = None,
16891        link: Optional[str] = None,
16892        allow_delete: Optional[bool] = None,
16893        locations: Optional[List[str]] = None,
16894        **kwargs
16895    ):
16896        super(ServiceAssociationLink, self).__init__(id=id, **kwargs)
16897        self.name = name
16898        self.etag = None
16899        self.type = None
16900        self.linked_resource_type = linked_resource_type
16901        self.link = link
16902        self.provisioning_state = None
16903        self.allow_delete = allow_delete
16904        self.locations = locations
16905
16906
16907class ServiceAssociationLinksListResult(msrest.serialization.Model):
16908    """Response for ServiceAssociationLinks_List operation.
16909
16910    Variables are only populated by the server, and will be ignored when sending a request.
16911
16912    :param value: The service association links in a subnet.
16913    :type value: list[~azure.mgmt.network.v2019_12_01.models.ServiceAssociationLink]
16914    :ivar next_link: The URL to get the next set of results.
16915    :vartype next_link: str
16916    """
16917
16918    _validation = {
16919        'next_link': {'readonly': True},
16920    }
16921
16922    _attribute_map = {
16923        'value': {'key': 'value', 'type': '[ServiceAssociationLink]'},
16924        'next_link': {'key': 'nextLink', 'type': 'str'},
16925    }
16926
16927    def __init__(
16928        self,
16929        *,
16930        value: Optional[List["ServiceAssociationLink"]] = None,
16931        **kwargs
16932    ):
16933        super(ServiceAssociationLinksListResult, self).__init__(**kwargs)
16934        self.value = value
16935        self.next_link = None
16936
16937
16938class ServiceEndpointPolicy(Resource):
16939    """Service End point policy resource.
16940
16941    Variables are only populated by the server, and will be ignored when sending a request.
16942
16943    :param id: Resource ID.
16944    :type id: str
16945    :ivar name: Resource name.
16946    :vartype name: str
16947    :ivar type: Resource type.
16948    :vartype type: str
16949    :param location: Resource location.
16950    :type location: str
16951    :param tags: A set of tags. Resource tags.
16952    :type tags: dict[str, str]
16953    :ivar etag: A unique read-only string that changes whenever the resource is updated.
16954    :vartype etag: str
16955    :param service_endpoint_policy_definitions: A collection of service endpoint policy definitions
16956     of the service endpoint policy.
16957    :type service_endpoint_policy_definitions:
16958     list[~azure.mgmt.network.v2019_12_01.models.ServiceEndpointPolicyDefinition]
16959    :ivar subnets: A collection of references to subnets.
16960    :vartype subnets: list[~azure.mgmt.network.v2019_12_01.models.Subnet]
16961    :ivar resource_guid: The resource GUID property of the service endpoint policy resource.
16962    :vartype resource_guid: str
16963    :ivar provisioning_state: The provisioning state of the service endpoint policy resource.
16964     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
16965    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
16966    """
16967
16968    _validation = {
16969        'name': {'readonly': True},
16970        'type': {'readonly': True},
16971        'etag': {'readonly': True},
16972        'subnets': {'readonly': True},
16973        'resource_guid': {'readonly': True},
16974        'provisioning_state': {'readonly': True},
16975    }
16976
16977    _attribute_map = {
16978        'id': {'key': 'id', 'type': 'str'},
16979        'name': {'key': 'name', 'type': 'str'},
16980        'type': {'key': 'type', 'type': 'str'},
16981        'location': {'key': 'location', 'type': 'str'},
16982        'tags': {'key': 'tags', 'type': '{str}'},
16983        'etag': {'key': 'etag', 'type': 'str'},
16984        'service_endpoint_policy_definitions': {'key': 'properties.serviceEndpointPolicyDefinitions', 'type': '[ServiceEndpointPolicyDefinition]'},
16985        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
16986        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
16987        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
16988    }
16989
16990    def __init__(
16991        self,
16992        *,
16993        id: Optional[str] = None,
16994        location: Optional[str] = None,
16995        tags: Optional[Dict[str, str]] = None,
16996        service_endpoint_policy_definitions: Optional[List["ServiceEndpointPolicyDefinition"]] = None,
16997        **kwargs
16998    ):
16999        super(ServiceEndpointPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs)
17000        self.etag = None
17001        self.service_endpoint_policy_definitions = service_endpoint_policy_definitions
17002        self.subnets = None
17003        self.resource_guid = None
17004        self.provisioning_state = None
17005
17006
17007class ServiceEndpointPolicyDefinition(SubResource):
17008    """Service Endpoint policy definitions.
17009
17010    Variables are only populated by the server, and will be ignored when sending a request.
17011
17012    :param id: Resource ID.
17013    :type id: str
17014    :param name: The name of the resource that is unique within a resource group. This name can be
17015     used to access the resource.
17016    :type name: str
17017    :ivar etag: A unique read-only string that changes whenever the resource is updated.
17018    :vartype etag: str
17019    :param description: A description for this rule. Restricted to 140 chars.
17020    :type description: str
17021    :param service: Service endpoint name.
17022    :type service: str
17023    :param service_resources: A list of service resources.
17024    :type service_resources: list[str]
17025    :ivar provisioning_state: The provisioning state of the service endpoint policy definition
17026     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
17027    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
17028    """
17029
17030    _validation = {
17031        'etag': {'readonly': True},
17032        'provisioning_state': {'readonly': True},
17033    }
17034
17035    _attribute_map = {
17036        'id': {'key': 'id', 'type': 'str'},
17037        'name': {'key': 'name', 'type': 'str'},
17038        'etag': {'key': 'etag', 'type': 'str'},
17039        'description': {'key': 'properties.description', 'type': 'str'},
17040        'service': {'key': 'properties.service', 'type': 'str'},
17041        'service_resources': {'key': 'properties.serviceResources', 'type': '[str]'},
17042        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
17043    }
17044
17045    def __init__(
17046        self,
17047        *,
17048        id: Optional[str] = None,
17049        name: Optional[str] = None,
17050        description: Optional[str] = None,
17051        service: Optional[str] = None,
17052        service_resources: Optional[List[str]] = None,
17053        **kwargs
17054    ):
17055        super(ServiceEndpointPolicyDefinition, self).__init__(id=id, **kwargs)
17056        self.name = name
17057        self.etag = None
17058        self.description = description
17059        self.service = service
17060        self.service_resources = service_resources
17061        self.provisioning_state = None
17062
17063
17064class ServiceEndpointPolicyDefinitionListResult(msrest.serialization.Model):
17065    """Response for ListServiceEndpointPolicyDefinition API service call. Retrieves all service endpoint policy definition that belongs to a service endpoint policy.
17066
17067    :param value: The service endpoint policy definition in a service endpoint policy.
17068    :type value: list[~azure.mgmt.network.v2019_12_01.models.ServiceEndpointPolicyDefinition]
17069    :param next_link: The URL to get the next set of results.
17070    :type next_link: str
17071    """
17072
17073    _attribute_map = {
17074        'value': {'key': 'value', 'type': '[ServiceEndpointPolicyDefinition]'},
17075        'next_link': {'key': 'nextLink', 'type': 'str'},
17076    }
17077
17078    def __init__(
17079        self,
17080        *,
17081        value: Optional[List["ServiceEndpointPolicyDefinition"]] = None,
17082        next_link: Optional[str] = None,
17083        **kwargs
17084    ):
17085        super(ServiceEndpointPolicyDefinitionListResult, self).__init__(**kwargs)
17086        self.value = value
17087        self.next_link = next_link
17088
17089
17090class ServiceEndpointPolicyListResult(msrest.serialization.Model):
17091    """Response for ListServiceEndpointPolicies API service call.
17092
17093    Variables are only populated by the server, and will be ignored when sending a request.
17094
17095    :param value: A list of ServiceEndpointPolicy resources.
17096    :type value: list[~azure.mgmt.network.v2019_12_01.models.ServiceEndpointPolicy]
17097    :ivar next_link: The URL to get the next set of results.
17098    :vartype next_link: str
17099    """
17100
17101    _validation = {
17102        'next_link': {'readonly': True},
17103    }
17104
17105    _attribute_map = {
17106        'value': {'key': 'value', 'type': '[ServiceEndpointPolicy]'},
17107        'next_link': {'key': 'nextLink', 'type': 'str'},
17108    }
17109
17110    def __init__(
17111        self,
17112        *,
17113        value: Optional[List["ServiceEndpointPolicy"]] = None,
17114        **kwargs
17115    ):
17116        super(ServiceEndpointPolicyListResult, self).__init__(**kwargs)
17117        self.value = value
17118        self.next_link = None
17119
17120
17121class ServiceEndpointPropertiesFormat(msrest.serialization.Model):
17122    """The service endpoint properties.
17123
17124    Variables are only populated by the server, and will be ignored when sending a request.
17125
17126    :param service: The type of the endpoint service.
17127    :type service: str
17128    :param locations: A list of locations.
17129    :type locations: list[str]
17130    :ivar provisioning_state: The provisioning state of the service endpoint resource. Possible
17131     values include: "Succeeded", "Updating", "Deleting", "Failed".
17132    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
17133    """
17134
17135    _validation = {
17136        'provisioning_state': {'readonly': True},
17137    }
17138
17139    _attribute_map = {
17140        'service': {'key': 'service', 'type': 'str'},
17141        'locations': {'key': 'locations', 'type': '[str]'},
17142        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
17143    }
17144
17145    def __init__(
17146        self,
17147        *,
17148        service: Optional[str] = None,
17149        locations: Optional[List[str]] = None,
17150        **kwargs
17151    ):
17152        super(ServiceEndpointPropertiesFormat, self).__init__(**kwargs)
17153        self.service = service
17154        self.locations = locations
17155        self.provisioning_state = None
17156
17157
17158class ServiceTagInformation(msrest.serialization.Model):
17159    """The service tag information.
17160
17161    Variables are only populated by the server, and will be ignored when sending a request.
17162
17163    :ivar properties: Properties of the service tag information.
17164    :vartype properties:
17165     ~azure.mgmt.network.v2019_12_01.models.ServiceTagInformationPropertiesFormat
17166    :ivar name: The name of service tag.
17167    :vartype name: str
17168    :ivar id: The ID of service tag.
17169    :vartype id: str
17170    """
17171
17172    _validation = {
17173        'properties': {'readonly': True},
17174        'name': {'readonly': True},
17175        'id': {'readonly': True},
17176    }
17177
17178    _attribute_map = {
17179        'properties': {'key': 'properties', 'type': 'ServiceTagInformationPropertiesFormat'},
17180        'name': {'key': 'name', 'type': 'str'},
17181        'id': {'key': 'id', 'type': 'str'},
17182    }
17183
17184    def __init__(
17185        self,
17186        **kwargs
17187    ):
17188        super(ServiceTagInformation, self).__init__(**kwargs)
17189        self.properties = None
17190        self.name = None
17191        self.id = None
17192
17193
17194class ServiceTagInformationPropertiesFormat(msrest.serialization.Model):
17195    """Properties of the service tag information.
17196
17197    Variables are only populated by the server, and will be ignored when sending a request.
17198
17199    :ivar change_number: The iteration number of service tag.
17200    :vartype change_number: str
17201    :ivar region: The region of service tag.
17202    :vartype region: str
17203    :ivar system_service: The name of system service.
17204    :vartype system_service: str
17205    :ivar address_prefixes: The list of IP address prefixes.
17206    :vartype address_prefixes: list[str]
17207    """
17208
17209    _validation = {
17210        'change_number': {'readonly': True},
17211        'region': {'readonly': True},
17212        'system_service': {'readonly': True},
17213        'address_prefixes': {'readonly': True},
17214    }
17215
17216    _attribute_map = {
17217        'change_number': {'key': 'changeNumber', 'type': 'str'},
17218        'region': {'key': 'region', 'type': 'str'},
17219        'system_service': {'key': 'systemService', 'type': 'str'},
17220        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
17221    }
17222
17223    def __init__(
17224        self,
17225        **kwargs
17226    ):
17227        super(ServiceTagInformationPropertiesFormat, self).__init__(**kwargs)
17228        self.change_number = None
17229        self.region = None
17230        self.system_service = None
17231        self.address_prefixes = None
17232
17233
17234class ServiceTagsListResult(msrest.serialization.Model):
17235    """Response for the ListServiceTags API service call.
17236
17237    Variables are only populated by the server, and will be ignored when sending a request.
17238
17239    :ivar name: The name of the cloud.
17240    :vartype name: str
17241    :ivar id: The ID of the cloud.
17242    :vartype id: str
17243    :ivar type: The azure resource type.
17244    :vartype type: str
17245    :ivar change_number: The iteration number.
17246    :vartype change_number: str
17247    :ivar cloud: The name of the cloud.
17248    :vartype cloud: str
17249    :ivar values: The list of service tag information resources.
17250    :vartype values: list[~azure.mgmt.network.v2019_12_01.models.ServiceTagInformation]
17251    """
17252
17253    _validation = {
17254        'name': {'readonly': True},
17255        'id': {'readonly': True},
17256        'type': {'readonly': True},
17257        'change_number': {'readonly': True},
17258        'cloud': {'readonly': True},
17259        'values': {'readonly': True},
17260    }
17261
17262    _attribute_map = {
17263        'name': {'key': 'name', 'type': 'str'},
17264        'id': {'key': 'id', 'type': 'str'},
17265        'type': {'key': 'type', 'type': 'str'},
17266        'change_number': {'key': 'changeNumber', 'type': 'str'},
17267        'cloud': {'key': 'cloud', 'type': 'str'},
17268        'values': {'key': 'values', 'type': '[ServiceTagInformation]'},
17269    }
17270
17271    def __init__(
17272        self,
17273        **kwargs
17274    ):
17275        super(ServiceTagsListResult, self).__init__(**kwargs)
17276        self.name = None
17277        self.id = None
17278        self.type = None
17279        self.change_number = None
17280        self.cloud = None
17281        self.values = None
17282
17283
17284class SessionIds(msrest.serialization.Model):
17285    """List of session IDs.
17286
17287    :param session_ids: List of session IDs.
17288    :type session_ids: list[str]
17289    """
17290
17291    _attribute_map = {
17292        'session_ids': {'key': 'sessionIds', 'type': '[str]'},
17293    }
17294
17295    def __init__(
17296        self,
17297        *,
17298        session_ids: Optional[List[str]] = None,
17299        **kwargs
17300    ):
17301        super(SessionIds, self).__init__(**kwargs)
17302        self.session_ids = session_ids
17303
17304
17305class Subnet(SubResource):
17306    """Subnet in a virtual network resource.
17307
17308    Variables are only populated by the server, and will be ignored when sending a request.
17309
17310    :param id: Resource ID.
17311    :type id: str
17312    :param name: The name of the resource that is unique within a resource group. This name can be
17313     used to access the resource.
17314    :type name: str
17315    :ivar etag: A unique read-only string that changes whenever the resource is updated.
17316    :vartype etag: str
17317    :param address_prefix: The address prefix for the subnet.
17318    :type address_prefix: str
17319    :param address_prefixes: List of address prefixes for the subnet.
17320    :type address_prefixes: list[str]
17321    :param network_security_group: The reference to the NetworkSecurityGroup resource.
17322    :type network_security_group: ~azure.mgmt.network.v2019_12_01.models.NetworkSecurityGroup
17323    :param route_table: The reference to the RouteTable resource.
17324    :type route_table: ~azure.mgmt.network.v2019_12_01.models.RouteTable
17325    :param nat_gateway: Nat gateway associated with this subnet.
17326    :type nat_gateway: ~azure.mgmt.network.v2019_12_01.models.SubResource
17327    :param service_endpoints: An array of service endpoints.
17328    :type service_endpoints:
17329     list[~azure.mgmt.network.v2019_12_01.models.ServiceEndpointPropertiesFormat]
17330    :param service_endpoint_policies: An array of service endpoint policies.
17331    :type service_endpoint_policies:
17332     list[~azure.mgmt.network.v2019_12_01.models.ServiceEndpointPolicy]
17333    :ivar private_endpoints: An array of references to private endpoints.
17334    :vartype private_endpoints: list[~azure.mgmt.network.v2019_12_01.models.PrivateEndpoint]
17335    :ivar ip_configurations: An array of references to the network interface IP configurations
17336     using subnet.
17337    :vartype ip_configurations: list[~azure.mgmt.network.v2019_12_01.models.IPConfiguration]
17338    :ivar ip_configuration_profiles: Array of IP configuration profiles which reference this
17339     subnet.
17340    :vartype ip_configuration_profiles:
17341     list[~azure.mgmt.network.v2019_12_01.models.IPConfigurationProfile]
17342    :ivar resource_navigation_links: An array of references to the external resources using subnet.
17343    :vartype resource_navigation_links:
17344     list[~azure.mgmt.network.v2019_12_01.models.ResourceNavigationLink]
17345    :ivar service_association_links: An array of references to services injecting into this subnet.
17346    :vartype service_association_links:
17347     list[~azure.mgmt.network.v2019_12_01.models.ServiceAssociationLink]
17348    :param delegations: An array of references to the delegations on the subnet.
17349    :type delegations: list[~azure.mgmt.network.v2019_12_01.models.Delegation]
17350    :ivar purpose: A read-only string identifying the intention of use for this subnet based on
17351     delegations and other user-defined properties.
17352    :vartype purpose: str
17353    :ivar provisioning_state: The provisioning state of the subnet resource. Possible values
17354     include: "Succeeded", "Updating", "Deleting", "Failed".
17355    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
17356    :param private_endpoint_network_policies: Enable or Disable apply network policies on private
17357     end point in the subnet.
17358    :type private_endpoint_network_policies: str
17359    :param private_link_service_network_policies: Enable or Disable apply network policies on
17360     private link service in the subnet.
17361    :type private_link_service_network_policies: str
17362    """
17363
17364    _validation = {
17365        'etag': {'readonly': True},
17366        'private_endpoints': {'readonly': True},
17367        'ip_configurations': {'readonly': True},
17368        'ip_configuration_profiles': {'readonly': True},
17369        'resource_navigation_links': {'readonly': True},
17370        'service_association_links': {'readonly': True},
17371        'purpose': {'readonly': True},
17372        'provisioning_state': {'readonly': True},
17373    }
17374
17375    _attribute_map = {
17376        'id': {'key': 'id', 'type': 'str'},
17377        'name': {'key': 'name', 'type': 'str'},
17378        'etag': {'key': 'etag', 'type': 'str'},
17379        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
17380        'address_prefixes': {'key': 'properties.addressPrefixes', 'type': '[str]'},
17381        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
17382        'route_table': {'key': 'properties.routeTable', 'type': 'RouteTable'},
17383        'nat_gateway': {'key': 'properties.natGateway', 'type': 'SubResource'},
17384        'service_endpoints': {'key': 'properties.serviceEndpoints', 'type': '[ServiceEndpointPropertiesFormat]'},
17385        'service_endpoint_policies': {'key': 'properties.serviceEndpointPolicies', 'type': '[ServiceEndpointPolicy]'},
17386        'private_endpoints': {'key': 'properties.privateEndpoints', 'type': '[PrivateEndpoint]'},
17387        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfiguration]'},
17388        'ip_configuration_profiles': {'key': 'properties.ipConfigurationProfiles', 'type': '[IPConfigurationProfile]'},
17389        'resource_navigation_links': {'key': 'properties.resourceNavigationLinks', 'type': '[ResourceNavigationLink]'},
17390        'service_association_links': {'key': 'properties.serviceAssociationLinks', 'type': '[ServiceAssociationLink]'},
17391        'delegations': {'key': 'properties.delegations', 'type': '[Delegation]'},
17392        'purpose': {'key': 'properties.purpose', 'type': 'str'},
17393        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
17394        'private_endpoint_network_policies': {'key': 'properties.privateEndpointNetworkPolicies', 'type': 'str'},
17395        'private_link_service_network_policies': {'key': 'properties.privateLinkServiceNetworkPolicies', 'type': 'str'},
17396    }
17397
17398    def __init__(
17399        self,
17400        *,
17401        id: Optional[str] = None,
17402        name: Optional[str] = None,
17403        address_prefix: Optional[str] = None,
17404        address_prefixes: Optional[List[str]] = None,
17405        network_security_group: Optional["NetworkSecurityGroup"] = None,
17406        route_table: Optional["RouteTable"] = None,
17407        nat_gateway: Optional["SubResource"] = None,
17408        service_endpoints: Optional[List["ServiceEndpointPropertiesFormat"]] = None,
17409        service_endpoint_policies: Optional[List["ServiceEndpointPolicy"]] = None,
17410        delegations: Optional[List["Delegation"]] = None,
17411        private_endpoint_network_policies: Optional[str] = None,
17412        private_link_service_network_policies: Optional[str] = None,
17413        **kwargs
17414    ):
17415        super(Subnet, self).__init__(id=id, **kwargs)
17416        self.name = name
17417        self.etag = None
17418        self.address_prefix = address_prefix
17419        self.address_prefixes = address_prefixes
17420        self.network_security_group = network_security_group
17421        self.route_table = route_table
17422        self.nat_gateway = nat_gateway
17423        self.service_endpoints = service_endpoints
17424        self.service_endpoint_policies = service_endpoint_policies
17425        self.private_endpoints = None
17426        self.ip_configurations = None
17427        self.ip_configuration_profiles = None
17428        self.resource_navigation_links = None
17429        self.service_association_links = None
17430        self.delegations = delegations
17431        self.purpose = None
17432        self.provisioning_state = None
17433        self.private_endpoint_network_policies = private_endpoint_network_policies
17434        self.private_link_service_network_policies = private_link_service_network_policies
17435
17436
17437class SubnetAssociation(msrest.serialization.Model):
17438    """Subnet and it's custom security rules.
17439
17440    Variables are only populated by the server, and will be ignored when sending a request.
17441
17442    :ivar id: Subnet ID.
17443    :vartype id: str
17444    :param security_rules: Collection of custom security rules.
17445    :type security_rules: list[~azure.mgmt.network.v2019_12_01.models.SecurityRule]
17446    """
17447
17448    _validation = {
17449        'id': {'readonly': True},
17450    }
17451
17452    _attribute_map = {
17453        'id': {'key': 'id', 'type': 'str'},
17454        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
17455    }
17456
17457    def __init__(
17458        self,
17459        *,
17460        security_rules: Optional[List["SecurityRule"]] = None,
17461        **kwargs
17462    ):
17463        super(SubnetAssociation, self).__init__(**kwargs)
17464        self.id = None
17465        self.security_rules = security_rules
17466
17467
17468class SubnetListResult(msrest.serialization.Model):
17469    """Response for ListSubnets API service callRetrieves all subnet that belongs to a virtual network.
17470
17471    :param value: The subnets in a virtual network.
17472    :type value: list[~azure.mgmt.network.v2019_12_01.models.Subnet]
17473    :param next_link: The URL to get the next set of results.
17474    :type next_link: str
17475    """
17476
17477    _attribute_map = {
17478        'value': {'key': 'value', 'type': '[Subnet]'},
17479        'next_link': {'key': 'nextLink', 'type': 'str'},
17480    }
17481
17482    def __init__(
17483        self,
17484        *,
17485        value: Optional[List["Subnet"]] = None,
17486        next_link: Optional[str] = None,
17487        **kwargs
17488    ):
17489        super(SubnetListResult, self).__init__(**kwargs)
17490        self.value = value
17491        self.next_link = next_link
17492
17493
17494class TagsObject(msrest.serialization.Model):
17495    """Tags object for patch operations.
17496
17497    :param tags: A set of tags. Resource tags.
17498    :type tags: dict[str, str]
17499    """
17500
17501    _attribute_map = {
17502        'tags': {'key': 'tags', 'type': '{str}'},
17503    }
17504
17505    def __init__(
17506        self,
17507        *,
17508        tags: Optional[Dict[str, str]] = None,
17509        **kwargs
17510    ):
17511        super(TagsObject, self).__init__(**kwargs)
17512        self.tags = tags
17513
17514
17515class Topology(msrest.serialization.Model):
17516    """Topology of the specified resource group.
17517
17518    Variables are only populated by the server, and will be ignored when sending a request.
17519
17520    :ivar id: GUID representing the operation id.
17521    :vartype id: str
17522    :ivar created_date_time: The datetime when the topology was initially created for the resource
17523     group.
17524    :vartype created_date_time: ~datetime.datetime
17525    :ivar last_modified: The datetime when the topology was last modified.
17526    :vartype last_modified: ~datetime.datetime
17527    :param resources: A list of topology resources.
17528    :type resources: list[~azure.mgmt.network.v2019_12_01.models.TopologyResource]
17529    """
17530
17531    _validation = {
17532        'id': {'readonly': True},
17533        'created_date_time': {'readonly': True},
17534        'last_modified': {'readonly': True},
17535    }
17536
17537    _attribute_map = {
17538        'id': {'key': 'id', 'type': 'str'},
17539        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
17540        'last_modified': {'key': 'lastModified', 'type': 'iso-8601'},
17541        'resources': {'key': 'resources', 'type': '[TopologyResource]'},
17542    }
17543
17544    def __init__(
17545        self,
17546        *,
17547        resources: Optional[List["TopologyResource"]] = None,
17548        **kwargs
17549    ):
17550        super(Topology, self).__init__(**kwargs)
17551        self.id = None
17552        self.created_date_time = None
17553        self.last_modified = None
17554        self.resources = resources
17555
17556
17557class TopologyAssociation(msrest.serialization.Model):
17558    """Resources that have an association with the parent resource.
17559
17560    :param name: The name of the resource that is associated with the parent resource.
17561    :type name: str
17562    :param resource_id: The ID of the resource that is associated with the parent resource.
17563    :type resource_id: str
17564    :param association_type: The association type of the child resource to the parent resource.
17565     Possible values include: "Associated", "Contains".
17566    :type association_type: str or ~azure.mgmt.network.v2019_12_01.models.AssociationType
17567    """
17568
17569    _attribute_map = {
17570        'name': {'key': 'name', 'type': 'str'},
17571        'resource_id': {'key': 'resourceId', 'type': 'str'},
17572        'association_type': {'key': 'associationType', 'type': 'str'},
17573    }
17574
17575    def __init__(
17576        self,
17577        *,
17578        name: Optional[str] = None,
17579        resource_id: Optional[str] = None,
17580        association_type: Optional[Union[str, "AssociationType"]] = None,
17581        **kwargs
17582    ):
17583        super(TopologyAssociation, self).__init__(**kwargs)
17584        self.name = name
17585        self.resource_id = resource_id
17586        self.association_type = association_type
17587
17588
17589class TopologyParameters(msrest.serialization.Model):
17590    """Parameters that define the representation of topology.
17591
17592    :param target_resource_group_name: The name of the target resource group to perform topology
17593     on.
17594    :type target_resource_group_name: str
17595    :param target_virtual_network: The reference to the Virtual Network resource.
17596    :type target_virtual_network: ~azure.mgmt.network.v2019_12_01.models.SubResource
17597    :param target_subnet: The reference to the Subnet resource.
17598    :type target_subnet: ~azure.mgmt.network.v2019_12_01.models.SubResource
17599    """
17600
17601    _attribute_map = {
17602        'target_resource_group_name': {'key': 'targetResourceGroupName', 'type': 'str'},
17603        'target_virtual_network': {'key': 'targetVirtualNetwork', 'type': 'SubResource'},
17604        'target_subnet': {'key': 'targetSubnet', 'type': 'SubResource'},
17605    }
17606
17607    def __init__(
17608        self,
17609        *,
17610        target_resource_group_name: Optional[str] = None,
17611        target_virtual_network: Optional["SubResource"] = None,
17612        target_subnet: Optional["SubResource"] = None,
17613        **kwargs
17614    ):
17615        super(TopologyParameters, self).__init__(**kwargs)
17616        self.target_resource_group_name = target_resource_group_name
17617        self.target_virtual_network = target_virtual_network
17618        self.target_subnet = target_subnet
17619
17620
17621class TopologyResource(msrest.serialization.Model):
17622    """The network resource topology information for the given resource group.
17623
17624    :param name: Name of the resource.
17625    :type name: str
17626    :param id: ID of the resource.
17627    :type id: str
17628    :param location: Resource location.
17629    :type location: str
17630    :param associations: Holds the associations the resource has with other resources in the
17631     resource group.
17632    :type associations: list[~azure.mgmt.network.v2019_12_01.models.TopologyAssociation]
17633    """
17634
17635    _attribute_map = {
17636        'name': {'key': 'name', 'type': 'str'},
17637        'id': {'key': 'id', 'type': 'str'},
17638        'location': {'key': 'location', 'type': 'str'},
17639        'associations': {'key': 'associations', 'type': '[TopologyAssociation]'},
17640    }
17641
17642    def __init__(
17643        self,
17644        *,
17645        name: Optional[str] = None,
17646        id: Optional[str] = None,
17647        location: Optional[str] = None,
17648        associations: Optional[List["TopologyAssociation"]] = None,
17649        **kwargs
17650    ):
17651        super(TopologyResource, self).__init__(**kwargs)
17652        self.name = name
17653        self.id = id
17654        self.location = location
17655        self.associations = associations
17656
17657
17658class TrafficAnalyticsConfigurationProperties(msrest.serialization.Model):
17659    """Parameters that define the configuration of traffic analytics.
17660
17661    :param enabled: Flag to enable/disable traffic analytics.
17662    :type enabled: bool
17663    :param workspace_id: The resource guid of the attached workspace.
17664    :type workspace_id: str
17665    :param workspace_region: The location of the attached workspace.
17666    :type workspace_region: str
17667    :param workspace_resource_id: Resource Id of the attached workspace.
17668    :type workspace_resource_id: str
17669    :param traffic_analytics_interval: The interval in minutes which would decide how frequently TA
17670     service should do flow analytics.
17671    :type traffic_analytics_interval: int
17672    """
17673
17674    _attribute_map = {
17675        'enabled': {'key': 'enabled', 'type': 'bool'},
17676        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
17677        'workspace_region': {'key': 'workspaceRegion', 'type': 'str'},
17678        'workspace_resource_id': {'key': 'workspaceResourceId', 'type': 'str'},
17679        'traffic_analytics_interval': {'key': 'trafficAnalyticsInterval', 'type': 'int'},
17680    }
17681
17682    def __init__(
17683        self,
17684        *,
17685        enabled: Optional[bool] = None,
17686        workspace_id: Optional[str] = None,
17687        workspace_region: Optional[str] = None,
17688        workspace_resource_id: Optional[str] = None,
17689        traffic_analytics_interval: Optional[int] = None,
17690        **kwargs
17691    ):
17692        super(TrafficAnalyticsConfigurationProperties, self).__init__(**kwargs)
17693        self.enabled = enabled
17694        self.workspace_id = workspace_id
17695        self.workspace_region = workspace_region
17696        self.workspace_resource_id = workspace_resource_id
17697        self.traffic_analytics_interval = traffic_analytics_interval
17698
17699
17700class TrafficAnalyticsProperties(msrest.serialization.Model):
17701    """Parameters that define the configuration of traffic analytics.
17702
17703    :param network_watcher_flow_analytics_configuration: Parameters that define the configuration
17704     of traffic analytics.
17705    :type network_watcher_flow_analytics_configuration:
17706     ~azure.mgmt.network.v2019_12_01.models.TrafficAnalyticsConfigurationProperties
17707    """
17708
17709    _attribute_map = {
17710        'network_watcher_flow_analytics_configuration': {'key': 'networkWatcherFlowAnalyticsConfiguration', 'type': 'TrafficAnalyticsConfigurationProperties'},
17711    }
17712
17713    def __init__(
17714        self,
17715        *,
17716        network_watcher_flow_analytics_configuration: Optional["TrafficAnalyticsConfigurationProperties"] = None,
17717        **kwargs
17718    ):
17719        super(TrafficAnalyticsProperties, self).__init__(**kwargs)
17720        self.network_watcher_flow_analytics_configuration = network_watcher_flow_analytics_configuration
17721
17722
17723class TrafficSelectorPolicy(msrest.serialization.Model):
17724    """An traffic selector policy for a virtual network gateway connection.
17725
17726    All required parameters must be populated in order to send to Azure.
17727
17728    :param local_address_ranges: Required. A collection of local address spaces in CIDR format.
17729    :type local_address_ranges: list[str]
17730    :param remote_address_ranges: Required. A collection of remote address spaces in CIDR format.
17731    :type remote_address_ranges: list[str]
17732    """
17733
17734    _validation = {
17735        'local_address_ranges': {'required': True},
17736        'remote_address_ranges': {'required': True},
17737    }
17738
17739    _attribute_map = {
17740        'local_address_ranges': {'key': 'localAddressRanges', 'type': '[str]'},
17741        'remote_address_ranges': {'key': 'remoteAddressRanges', 'type': '[str]'},
17742    }
17743
17744    def __init__(
17745        self,
17746        *,
17747        local_address_ranges: List[str],
17748        remote_address_ranges: List[str],
17749        **kwargs
17750    ):
17751        super(TrafficSelectorPolicy, self).__init__(**kwargs)
17752        self.local_address_ranges = local_address_ranges
17753        self.remote_address_ranges = remote_address_ranges
17754
17755
17756class TroubleshootingDetails(msrest.serialization.Model):
17757    """Information gained from troubleshooting of specified resource.
17758
17759    :param id: The id of the get troubleshoot operation.
17760    :type id: str
17761    :param reason_type: Reason type of failure.
17762    :type reason_type: str
17763    :param summary: A summary of troubleshooting.
17764    :type summary: str
17765    :param detail: Details on troubleshooting results.
17766    :type detail: str
17767    :param recommended_actions: List of recommended actions.
17768    :type recommended_actions:
17769     list[~azure.mgmt.network.v2019_12_01.models.TroubleshootingRecommendedActions]
17770    """
17771
17772    _attribute_map = {
17773        'id': {'key': 'id', 'type': 'str'},
17774        'reason_type': {'key': 'reasonType', 'type': 'str'},
17775        'summary': {'key': 'summary', 'type': 'str'},
17776        'detail': {'key': 'detail', 'type': 'str'},
17777        'recommended_actions': {'key': 'recommendedActions', 'type': '[TroubleshootingRecommendedActions]'},
17778    }
17779
17780    def __init__(
17781        self,
17782        *,
17783        id: Optional[str] = None,
17784        reason_type: Optional[str] = None,
17785        summary: Optional[str] = None,
17786        detail: Optional[str] = None,
17787        recommended_actions: Optional[List["TroubleshootingRecommendedActions"]] = None,
17788        **kwargs
17789    ):
17790        super(TroubleshootingDetails, self).__init__(**kwargs)
17791        self.id = id
17792        self.reason_type = reason_type
17793        self.summary = summary
17794        self.detail = detail
17795        self.recommended_actions = recommended_actions
17796
17797
17798class TroubleshootingParameters(msrest.serialization.Model):
17799    """Parameters that define the resource to troubleshoot.
17800
17801    All required parameters must be populated in order to send to Azure.
17802
17803    :param target_resource_id: Required. The target resource to troubleshoot.
17804    :type target_resource_id: str
17805    :param storage_id: Required. The ID for the storage account to save the troubleshoot result.
17806    :type storage_id: str
17807    :param storage_path: Required. The path to the blob to save the troubleshoot result in.
17808    :type storage_path: str
17809    """
17810
17811    _validation = {
17812        'target_resource_id': {'required': True},
17813        'storage_id': {'required': True},
17814        'storage_path': {'required': True},
17815    }
17816
17817    _attribute_map = {
17818        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
17819        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
17820        'storage_path': {'key': 'properties.storagePath', 'type': 'str'},
17821    }
17822
17823    def __init__(
17824        self,
17825        *,
17826        target_resource_id: str,
17827        storage_id: str,
17828        storage_path: str,
17829        **kwargs
17830    ):
17831        super(TroubleshootingParameters, self).__init__(**kwargs)
17832        self.target_resource_id = target_resource_id
17833        self.storage_id = storage_id
17834        self.storage_path = storage_path
17835
17836
17837class TroubleshootingRecommendedActions(msrest.serialization.Model):
17838    """Recommended actions based on discovered issues.
17839
17840    :param action_id: ID of the recommended action.
17841    :type action_id: str
17842    :param action_text: Description of recommended actions.
17843    :type action_text: str
17844    :param action_uri: The uri linking to a documentation for the recommended troubleshooting
17845     actions.
17846    :type action_uri: str
17847    :param action_uri_text: The information from the URI for the recommended troubleshooting
17848     actions.
17849    :type action_uri_text: str
17850    """
17851
17852    _attribute_map = {
17853        'action_id': {'key': 'actionId', 'type': 'str'},
17854        'action_text': {'key': 'actionText', 'type': 'str'},
17855        'action_uri': {'key': 'actionUri', 'type': 'str'},
17856        'action_uri_text': {'key': 'actionUriText', 'type': 'str'},
17857    }
17858
17859    def __init__(
17860        self,
17861        *,
17862        action_id: Optional[str] = None,
17863        action_text: Optional[str] = None,
17864        action_uri: Optional[str] = None,
17865        action_uri_text: Optional[str] = None,
17866        **kwargs
17867    ):
17868        super(TroubleshootingRecommendedActions, self).__init__(**kwargs)
17869        self.action_id = action_id
17870        self.action_text = action_text
17871        self.action_uri = action_uri
17872        self.action_uri_text = action_uri_text
17873
17874
17875class TroubleshootingResult(msrest.serialization.Model):
17876    """Troubleshooting information gained from specified resource.
17877
17878    :param start_time: The start time of the troubleshooting.
17879    :type start_time: ~datetime.datetime
17880    :param end_time: The end time of the troubleshooting.
17881    :type end_time: ~datetime.datetime
17882    :param code: The result code of the troubleshooting.
17883    :type code: str
17884    :param results: Information from troubleshooting.
17885    :type results: list[~azure.mgmt.network.v2019_12_01.models.TroubleshootingDetails]
17886    """
17887
17888    _attribute_map = {
17889        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
17890        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
17891        'code': {'key': 'code', 'type': 'str'},
17892        'results': {'key': 'results', 'type': '[TroubleshootingDetails]'},
17893    }
17894
17895    def __init__(
17896        self,
17897        *,
17898        start_time: Optional[datetime.datetime] = None,
17899        end_time: Optional[datetime.datetime] = None,
17900        code: Optional[str] = None,
17901        results: Optional[List["TroubleshootingDetails"]] = None,
17902        **kwargs
17903    ):
17904        super(TroubleshootingResult, self).__init__(**kwargs)
17905        self.start_time = start_time
17906        self.end_time = end_time
17907        self.code = code
17908        self.results = results
17909
17910
17911class TunnelConnectionHealth(msrest.serialization.Model):
17912    """VirtualNetworkGatewayConnection properties.
17913
17914    Variables are only populated by the server, and will be ignored when sending a request.
17915
17916    :ivar tunnel: Tunnel name.
17917    :vartype tunnel: str
17918    :ivar connection_status: Virtual Network Gateway connection status. Possible values include:
17919     "Unknown", "Connecting", "Connected", "NotConnected".
17920    :vartype connection_status: str or
17921     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnectionStatus
17922    :ivar ingress_bytes_transferred: The Ingress Bytes Transferred in this connection.
17923    :vartype ingress_bytes_transferred: long
17924    :ivar egress_bytes_transferred: The Egress Bytes Transferred in this connection.
17925    :vartype egress_bytes_transferred: long
17926    :ivar last_connection_established_utc_time: The time at which connection was established in Utc
17927     format.
17928    :vartype last_connection_established_utc_time: str
17929    """
17930
17931    _validation = {
17932        'tunnel': {'readonly': True},
17933        'connection_status': {'readonly': True},
17934        'ingress_bytes_transferred': {'readonly': True},
17935        'egress_bytes_transferred': {'readonly': True},
17936        'last_connection_established_utc_time': {'readonly': True},
17937    }
17938
17939    _attribute_map = {
17940        'tunnel': {'key': 'tunnel', 'type': 'str'},
17941        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
17942        'ingress_bytes_transferred': {'key': 'ingressBytesTransferred', 'type': 'long'},
17943        'egress_bytes_transferred': {'key': 'egressBytesTransferred', 'type': 'long'},
17944        'last_connection_established_utc_time': {'key': 'lastConnectionEstablishedUtcTime', 'type': 'str'},
17945    }
17946
17947    def __init__(
17948        self,
17949        **kwargs
17950    ):
17951        super(TunnelConnectionHealth, self).__init__(**kwargs)
17952        self.tunnel = None
17953        self.connection_status = None
17954        self.ingress_bytes_transferred = None
17955        self.egress_bytes_transferred = None
17956        self.last_connection_established_utc_time = None
17957
17958
17959class UnprepareNetworkPoliciesRequest(msrest.serialization.Model):
17960    """Details of UnprepareNetworkPolicies for Subnet.
17961
17962    :param service_name: The name of the service for which subnet is being unprepared for.
17963    :type service_name: str
17964    """
17965
17966    _attribute_map = {
17967        'service_name': {'key': 'serviceName', 'type': 'str'},
17968    }
17969
17970    def __init__(
17971        self,
17972        *,
17973        service_name: Optional[str] = None,
17974        **kwargs
17975    ):
17976        super(UnprepareNetworkPoliciesRequest, self).__init__(**kwargs)
17977        self.service_name = service_name
17978
17979
17980class Usage(msrest.serialization.Model):
17981    """The network resource usage.
17982
17983    Variables are only populated by the server, and will be ignored when sending a request.
17984
17985    All required parameters must be populated in order to send to Azure.
17986
17987    :ivar id: Resource identifier.
17988    :vartype id: str
17989    :param unit: Required. An enum describing the unit of measurement. Possible values include:
17990     "Count".
17991    :type unit: str or ~azure.mgmt.network.v2019_12_01.models.UsageUnit
17992    :param current_value: Required. The current value of the usage.
17993    :type current_value: long
17994    :param limit: Required. The limit of usage.
17995    :type limit: long
17996    :param name: Required. The name of the type of usage.
17997    :type name: ~azure.mgmt.network.v2019_12_01.models.UsageName
17998    """
17999
18000    _validation = {
18001        'id': {'readonly': True},
18002        'unit': {'required': True},
18003        'current_value': {'required': True},
18004        'limit': {'required': True},
18005        'name': {'required': True},
18006    }
18007
18008    _attribute_map = {
18009        'id': {'key': 'id', 'type': 'str'},
18010        'unit': {'key': 'unit', 'type': 'str'},
18011        'current_value': {'key': 'currentValue', 'type': 'long'},
18012        'limit': {'key': 'limit', 'type': 'long'},
18013        'name': {'key': 'name', 'type': 'UsageName'},
18014    }
18015
18016    def __init__(
18017        self,
18018        *,
18019        unit: Union[str, "UsageUnit"],
18020        current_value: int,
18021        limit: int,
18022        name: "UsageName",
18023        **kwargs
18024    ):
18025        super(Usage, self).__init__(**kwargs)
18026        self.id = None
18027        self.unit = unit
18028        self.current_value = current_value
18029        self.limit = limit
18030        self.name = name
18031
18032
18033class UsageName(msrest.serialization.Model):
18034    """The usage names.
18035
18036    :param value: A string describing the resource name.
18037    :type value: str
18038    :param localized_value: A localized string describing the resource name.
18039    :type localized_value: str
18040    """
18041
18042    _attribute_map = {
18043        'value': {'key': 'value', 'type': 'str'},
18044        'localized_value': {'key': 'localizedValue', 'type': 'str'},
18045    }
18046
18047    def __init__(
18048        self,
18049        *,
18050        value: Optional[str] = None,
18051        localized_value: Optional[str] = None,
18052        **kwargs
18053    ):
18054        super(UsageName, self).__init__(**kwargs)
18055        self.value = value
18056        self.localized_value = localized_value
18057
18058
18059class UsagesListResult(msrest.serialization.Model):
18060    """The list usages operation response.
18061
18062    :param value: The list network resource usages.
18063    :type value: list[~azure.mgmt.network.v2019_12_01.models.Usage]
18064    :param next_link: URL to get the next set of results.
18065    :type next_link: str
18066    """
18067
18068    _attribute_map = {
18069        'value': {'key': 'value', 'type': '[Usage]'},
18070        'next_link': {'key': 'nextLink', 'type': 'str'},
18071    }
18072
18073    def __init__(
18074        self,
18075        *,
18076        value: Optional[List["Usage"]] = None,
18077        next_link: Optional[str] = None,
18078        **kwargs
18079    ):
18080        super(UsagesListResult, self).__init__(**kwargs)
18081        self.value = value
18082        self.next_link = next_link
18083
18084
18085class VerificationIPFlowParameters(msrest.serialization.Model):
18086    """Parameters that define the IP flow to be verified.
18087
18088    All required parameters must be populated in order to send to Azure.
18089
18090    :param target_resource_id: Required. The ID of the target resource to perform next-hop on.
18091    :type target_resource_id: str
18092    :param direction: Required. The direction of the packet represented as a 5-tuple. Possible
18093     values include: "Inbound", "Outbound".
18094    :type direction: str or ~azure.mgmt.network.v2019_12_01.models.Direction
18095    :param protocol: Required. Protocol to be verified on. Possible values include: "TCP", "UDP".
18096    :type protocol: str or ~azure.mgmt.network.v2019_12_01.models.IpFlowProtocol
18097    :param local_port: Required. The local port. Acceptable values are a single integer in the
18098     range (0-65535). Support for * for the source port, which depends on the direction.
18099    :type local_port: str
18100    :param remote_port: Required. The remote port. Acceptable values are a single integer in the
18101     range (0-65535). Support for * for the source port, which depends on the direction.
18102    :type remote_port: str
18103    :param local_ip_address: Required. The local IP address. Acceptable values are valid IPv4
18104     addresses.
18105    :type local_ip_address: str
18106    :param remote_ip_address: Required. The remote IP address. Acceptable values are valid IPv4
18107     addresses.
18108    :type remote_ip_address: str
18109    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
18110     enabled on any of them, then this parameter must be specified. Otherwise optional).
18111    :type target_nic_resource_id: str
18112    """
18113
18114    _validation = {
18115        'target_resource_id': {'required': True},
18116        'direction': {'required': True},
18117        'protocol': {'required': True},
18118        'local_port': {'required': True},
18119        'remote_port': {'required': True},
18120        'local_ip_address': {'required': True},
18121        'remote_ip_address': {'required': True},
18122    }
18123
18124    _attribute_map = {
18125        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
18126        'direction': {'key': 'direction', 'type': 'str'},
18127        'protocol': {'key': 'protocol', 'type': 'str'},
18128        'local_port': {'key': 'localPort', 'type': 'str'},
18129        'remote_port': {'key': 'remotePort', 'type': 'str'},
18130        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
18131        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
18132        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
18133    }
18134
18135    def __init__(
18136        self,
18137        *,
18138        target_resource_id: str,
18139        direction: Union[str, "Direction"],
18140        protocol: Union[str, "IpFlowProtocol"],
18141        local_port: str,
18142        remote_port: str,
18143        local_ip_address: str,
18144        remote_ip_address: str,
18145        target_nic_resource_id: Optional[str] = None,
18146        **kwargs
18147    ):
18148        super(VerificationIPFlowParameters, self).__init__(**kwargs)
18149        self.target_resource_id = target_resource_id
18150        self.direction = direction
18151        self.protocol = protocol
18152        self.local_port = local_port
18153        self.remote_port = remote_port
18154        self.local_ip_address = local_ip_address
18155        self.remote_ip_address = remote_ip_address
18156        self.target_nic_resource_id = target_nic_resource_id
18157
18158
18159class VerificationIPFlowResult(msrest.serialization.Model):
18160    """Results of IP flow verification on the target resource.
18161
18162    :param access: Indicates whether the traffic is allowed or denied. Possible values include:
18163     "Allow", "Deny".
18164    :type access: str or ~azure.mgmt.network.v2019_12_01.models.Access
18165    :param rule_name: Name of the rule. If input is not matched against any security rule, it is
18166     not displayed.
18167    :type rule_name: str
18168    """
18169
18170    _attribute_map = {
18171        'access': {'key': 'access', 'type': 'str'},
18172        'rule_name': {'key': 'ruleName', 'type': 'str'},
18173    }
18174
18175    def __init__(
18176        self,
18177        *,
18178        access: Optional[Union[str, "Access"]] = None,
18179        rule_name: Optional[str] = None,
18180        **kwargs
18181    ):
18182        super(VerificationIPFlowResult, self).__init__(**kwargs)
18183        self.access = access
18184        self.rule_name = rule_name
18185
18186
18187class VirtualApplianceNicProperties(msrest.serialization.Model):
18188    """Network Virtual Appliance NIC properties.
18189
18190    Variables are only populated by the server, and will be ignored when sending a request.
18191
18192    :ivar name: NIC name.
18193    :vartype name: str
18194    :ivar public_ip_address: Public IP address.
18195    :vartype public_ip_address: str
18196    :ivar private_ip_address: Private IP address.
18197    :vartype private_ip_address: str
18198    """
18199
18200    _validation = {
18201        'name': {'readonly': True},
18202        'public_ip_address': {'readonly': True},
18203        'private_ip_address': {'readonly': True},
18204    }
18205
18206    _attribute_map = {
18207        'name': {'key': 'name', 'type': 'str'},
18208        'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'},
18209        'private_ip_address': {'key': 'privateIpAddress', 'type': 'str'},
18210    }
18211
18212    def __init__(
18213        self,
18214        **kwargs
18215    ):
18216        super(VirtualApplianceNicProperties, self).__init__(**kwargs)
18217        self.name = None
18218        self.public_ip_address = None
18219        self.private_ip_address = None
18220
18221
18222class VirtualApplianceSkuProperties(msrest.serialization.Model):
18223    """Network Virtual Appliance Sku Properties.
18224
18225    :param vendor: Virtual Appliance Vendor.
18226    :type vendor: str
18227    :param bundled_scale_unit: Virtual Appliance Scale Unit.
18228    :type bundled_scale_unit: str
18229    :param market_place_version: Virtual Appliance Version.
18230    :type market_place_version: str
18231    """
18232
18233    _attribute_map = {
18234        'vendor': {'key': 'vendor', 'type': 'str'},
18235        'bundled_scale_unit': {'key': 'bundledScaleUnit', 'type': 'str'},
18236        'market_place_version': {'key': 'marketPlaceVersion', 'type': 'str'},
18237    }
18238
18239    def __init__(
18240        self,
18241        *,
18242        vendor: Optional[str] = None,
18243        bundled_scale_unit: Optional[str] = None,
18244        market_place_version: Optional[str] = None,
18245        **kwargs
18246    ):
18247        super(VirtualApplianceSkuProperties, self).__init__(**kwargs)
18248        self.vendor = vendor
18249        self.bundled_scale_unit = bundled_scale_unit
18250        self.market_place_version = market_place_version
18251
18252
18253class VirtualHub(Resource):
18254    """VirtualHub Resource.
18255
18256    Variables are only populated by the server, and will be ignored when sending a request.
18257
18258    :param id: Resource ID.
18259    :type id: str
18260    :ivar name: Resource name.
18261    :vartype name: str
18262    :ivar type: Resource type.
18263    :vartype type: str
18264    :param location: Resource location.
18265    :type location: str
18266    :param tags: A set of tags. Resource tags.
18267    :type tags: dict[str, str]
18268    :ivar etag: A unique read-only string that changes whenever the resource is updated.
18269    :vartype etag: str
18270    :param virtual_wan: The VirtualWAN to which the VirtualHub belongs.
18271    :type virtual_wan: ~azure.mgmt.network.v2019_12_01.models.SubResource
18272    :param vpn_gateway: The VpnGateway associated with this VirtualHub.
18273    :type vpn_gateway: ~azure.mgmt.network.v2019_12_01.models.SubResource
18274    :param p2_s_vpn_gateway: The P2SVpnGateway associated with this VirtualHub.
18275    :type p2_s_vpn_gateway: ~azure.mgmt.network.v2019_12_01.models.SubResource
18276    :param express_route_gateway: The expressRouteGateway associated with this VirtualHub.
18277    :type express_route_gateway: ~azure.mgmt.network.v2019_12_01.models.SubResource
18278    :param azure_firewall: The azureFirewall associated with this VirtualHub.
18279    :type azure_firewall: ~azure.mgmt.network.v2019_12_01.models.SubResource
18280    :param virtual_network_connections: List of all vnet connections with this VirtualHub.
18281    :type virtual_network_connections:
18282     list[~azure.mgmt.network.v2019_12_01.models.HubVirtualNetworkConnection]
18283    :param address_prefix: Address-prefix for this VirtualHub.
18284    :type address_prefix: str
18285    :param route_table: The routeTable associated with this virtual hub.
18286    :type route_table: ~azure.mgmt.network.v2019_12_01.models.VirtualHubRouteTable
18287    :ivar provisioning_state: The provisioning state of the virtual hub resource. Possible values
18288     include: "Succeeded", "Updating", "Deleting", "Failed".
18289    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
18290    :param security_provider_name: The Security Provider name.
18291    :type security_provider_name: str
18292    :param virtual_hub_route_table_v2_s: List of all virtual hub route table v2s associated with
18293     this VirtualHub.
18294    :type virtual_hub_route_table_v2_s:
18295     list[~azure.mgmt.network.v2019_12_01.models.VirtualHubRouteTableV2]
18296    :param sku: The sku of this VirtualHub.
18297    :type sku: str
18298    """
18299
18300    _validation = {
18301        'name': {'readonly': True},
18302        'type': {'readonly': True},
18303        'etag': {'readonly': True},
18304        'provisioning_state': {'readonly': True},
18305    }
18306
18307    _attribute_map = {
18308        'id': {'key': 'id', 'type': 'str'},
18309        'name': {'key': 'name', 'type': 'str'},
18310        'type': {'key': 'type', 'type': 'str'},
18311        'location': {'key': 'location', 'type': 'str'},
18312        'tags': {'key': 'tags', 'type': '{str}'},
18313        'etag': {'key': 'etag', 'type': 'str'},
18314        'virtual_wan': {'key': 'properties.virtualWan', 'type': 'SubResource'},
18315        'vpn_gateway': {'key': 'properties.vpnGateway', 'type': 'SubResource'},
18316        'p2_s_vpn_gateway': {'key': 'properties.p2SVpnGateway', 'type': 'SubResource'},
18317        'express_route_gateway': {'key': 'properties.expressRouteGateway', 'type': 'SubResource'},
18318        'azure_firewall': {'key': 'properties.azureFirewall', 'type': 'SubResource'},
18319        'virtual_network_connections': {'key': 'properties.virtualNetworkConnections', 'type': '[HubVirtualNetworkConnection]'},
18320        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
18321        'route_table': {'key': 'properties.routeTable', 'type': 'VirtualHubRouteTable'},
18322        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
18323        'security_provider_name': {'key': 'properties.securityProviderName', 'type': 'str'},
18324        'virtual_hub_route_table_v2_s': {'key': 'properties.virtualHubRouteTableV2s', 'type': '[VirtualHubRouteTableV2]'},
18325        'sku': {'key': 'properties.sku', 'type': 'str'},
18326    }
18327
18328    def __init__(
18329        self,
18330        *,
18331        id: Optional[str] = None,
18332        location: Optional[str] = None,
18333        tags: Optional[Dict[str, str]] = None,
18334        virtual_wan: Optional["SubResource"] = None,
18335        vpn_gateway: Optional["SubResource"] = None,
18336        p2_s_vpn_gateway: Optional["SubResource"] = None,
18337        express_route_gateway: Optional["SubResource"] = None,
18338        azure_firewall: Optional["SubResource"] = None,
18339        virtual_network_connections: Optional[List["HubVirtualNetworkConnection"]] = None,
18340        address_prefix: Optional[str] = None,
18341        route_table: Optional["VirtualHubRouteTable"] = None,
18342        security_provider_name: Optional[str] = None,
18343        virtual_hub_route_table_v2_s: Optional[List["VirtualHubRouteTableV2"]] = None,
18344        sku: Optional[str] = None,
18345        **kwargs
18346    ):
18347        super(VirtualHub, self).__init__(id=id, location=location, tags=tags, **kwargs)
18348        self.etag = None
18349        self.virtual_wan = virtual_wan
18350        self.vpn_gateway = vpn_gateway
18351        self.p2_s_vpn_gateway = p2_s_vpn_gateway
18352        self.express_route_gateway = express_route_gateway
18353        self.azure_firewall = azure_firewall
18354        self.virtual_network_connections = virtual_network_connections
18355        self.address_prefix = address_prefix
18356        self.route_table = route_table
18357        self.provisioning_state = None
18358        self.security_provider_name = security_provider_name
18359        self.virtual_hub_route_table_v2_s = virtual_hub_route_table_v2_s
18360        self.sku = sku
18361
18362
18363class VirtualHubId(msrest.serialization.Model):
18364    """Virtual Hub identifier.
18365
18366    :param id: The resource URI for the Virtual Hub where the ExpressRoute gateway is or will be
18367     deployed. The Virtual Hub resource and the ExpressRoute gateway resource reside in the same
18368     subscription.
18369    :type id: str
18370    """
18371
18372    _attribute_map = {
18373        'id': {'key': 'id', 'type': 'str'},
18374    }
18375
18376    def __init__(
18377        self,
18378        *,
18379        id: Optional[str] = None,
18380        **kwargs
18381    ):
18382        super(VirtualHubId, self).__init__(**kwargs)
18383        self.id = id
18384
18385
18386class VirtualHubRoute(msrest.serialization.Model):
18387    """VirtualHub route.
18388
18389    :param address_prefixes: List of all addressPrefixes.
18390    :type address_prefixes: list[str]
18391    :param next_hop_ip_address: NextHop ip address.
18392    :type next_hop_ip_address: str
18393    """
18394
18395    _attribute_map = {
18396        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
18397        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'},
18398    }
18399
18400    def __init__(
18401        self,
18402        *,
18403        address_prefixes: Optional[List[str]] = None,
18404        next_hop_ip_address: Optional[str] = None,
18405        **kwargs
18406    ):
18407        super(VirtualHubRoute, self).__init__(**kwargs)
18408        self.address_prefixes = address_prefixes
18409        self.next_hop_ip_address = next_hop_ip_address
18410
18411
18412class VirtualHubRouteTable(msrest.serialization.Model):
18413    """VirtualHub route table.
18414
18415    :param routes: List of all routes.
18416    :type routes: list[~azure.mgmt.network.v2019_12_01.models.VirtualHubRoute]
18417    """
18418
18419    _attribute_map = {
18420        'routes': {'key': 'routes', 'type': '[VirtualHubRoute]'},
18421    }
18422
18423    def __init__(
18424        self,
18425        *,
18426        routes: Optional[List["VirtualHubRoute"]] = None,
18427        **kwargs
18428    ):
18429        super(VirtualHubRouteTable, self).__init__(**kwargs)
18430        self.routes = routes
18431
18432
18433class VirtualHubRouteTableV2(SubResource):
18434    """VirtualHubRouteTableV2 Resource.
18435
18436    Variables are only populated by the server, and will be ignored when sending a request.
18437
18438    :param id: Resource ID.
18439    :type id: str
18440    :param name: The name of the resource that is unique within a resource group. This name can be
18441     used to access the resource.
18442    :type name: str
18443    :ivar etag: A unique read-only string that changes whenever the resource is updated.
18444    :vartype etag: str
18445    :param routes: List of all routes.
18446    :type routes: list[~azure.mgmt.network.v2019_12_01.models.VirtualHubRouteV2]
18447    :param attached_connections: List of all connections attached to this route table v2.
18448    :type attached_connections: list[str]
18449    :ivar provisioning_state: The provisioning state of the virtual hub route table v2 resource.
18450     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
18451    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
18452    """
18453
18454    _validation = {
18455        'etag': {'readonly': True},
18456        'provisioning_state': {'readonly': True},
18457    }
18458
18459    _attribute_map = {
18460        'id': {'key': 'id', 'type': 'str'},
18461        'name': {'key': 'name', 'type': 'str'},
18462        'etag': {'key': 'etag', 'type': 'str'},
18463        'routes': {'key': 'properties.routes', 'type': '[VirtualHubRouteV2]'},
18464        'attached_connections': {'key': 'properties.attachedConnections', 'type': '[str]'},
18465        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
18466    }
18467
18468    def __init__(
18469        self,
18470        *,
18471        id: Optional[str] = None,
18472        name: Optional[str] = None,
18473        routes: Optional[List["VirtualHubRouteV2"]] = None,
18474        attached_connections: Optional[List[str]] = None,
18475        **kwargs
18476    ):
18477        super(VirtualHubRouteTableV2, self).__init__(id=id, **kwargs)
18478        self.name = name
18479        self.etag = None
18480        self.routes = routes
18481        self.attached_connections = attached_connections
18482        self.provisioning_state = None
18483
18484
18485class VirtualHubRouteV2(msrest.serialization.Model):
18486    """VirtualHubRouteTableV2 route.
18487
18488    :param destination_type: The type of destinations.
18489    :type destination_type: str
18490    :param destinations: List of all destinations.
18491    :type destinations: list[str]
18492    :param next_hop_type: The type of next hops.
18493    :type next_hop_type: str
18494    :param next_hops: NextHops ip address.
18495    :type next_hops: list[str]
18496    """
18497
18498    _attribute_map = {
18499        'destination_type': {'key': 'destinationType', 'type': 'str'},
18500        'destinations': {'key': 'destinations', 'type': '[str]'},
18501        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
18502        'next_hops': {'key': 'nextHops', 'type': '[str]'},
18503    }
18504
18505    def __init__(
18506        self,
18507        *,
18508        destination_type: Optional[str] = None,
18509        destinations: Optional[List[str]] = None,
18510        next_hop_type: Optional[str] = None,
18511        next_hops: Optional[List[str]] = None,
18512        **kwargs
18513    ):
18514        super(VirtualHubRouteV2, self).__init__(**kwargs)
18515        self.destination_type = destination_type
18516        self.destinations = destinations
18517        self.next_hop_type = next_hop_type
18518        self.next_hops = next_hops
18519
18520
18521class VirtualNetwork(Resource):
18522    """Virtual Network resource.
18523
18524    Variables are only populated by the server, and will be ignored when sending a request.
18525
18526    :param id: Resource ID.
18527    :type id: str
18528    :ivar name: Resource name.
18529    :vartype name: str
18530    :ivar type: Resource type.
18531    :vartype type: str
18532    :param location: Resource location.
18533    :type location: str
18534    :param tags: A set of tags. Resource tags.
18535    :type tags: dict[str, str]
18536    :ivar etag: A unique read-only string that changes whenever the resource is updated.
18537    :vartype etag: str
18538    :param address_space: The AddressSpace that contains an array of IP address ranges that can be
18539     used by subnets.
18540    :type address_space: ~azure.mgmt.network.v2019_12_01.models.AddressSpace
18541    :param dhcp_options: The dhcpOptions that contains an array of DNS servers available to VMs
18542     deployed in the virtual network.
18543    :type dhcp_options: ~azure.mgmt.network.v2019_12_01.models.DhcpOptions
18544    :param subnets: A list of subnets in a Virtual Network.
18545    :type subnets: list[~azure.mgmt.network.v2019_12_01.models.Subnet]
18546    :param virtual_network_peerings: A list of peerings in a Virtual Network.
18547    :type virtual_network_peerings:
18548     list[~azure.mgmt.network.v2019_12_01.models.VirtualNetworkPeering]
18549    :ivar resource_guid: The resourceGuid property of the Virtual Network resource.
18550    :vartype resource_guid: str
18551    :ivar provisioning_state: The provisioning state of the virtual network resource. Possible
18552     values include: "Succeeded", "Updating", "Deleting", "Failed".
18553    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
18554    :param enable_ddos_protection: Indicates if DDoS protection is enabled for all the protected
18555     resources in the virtual network. It requires a DDoS protection plan associated with the
18556     resource.
18557    :type enable_ddos_protection: bool
18558    :param enable_vm_protection: Indicates if VM protection is enabled for all the subnets in the
18559     virtual network.
18560    :type enable_vm_protection: bool
18561    :param ddos_protection_plan: The DDoS protection plan associated with the virtual network.
18562    :type ddos_protection_plan: ~azure.mgmt.network.v2019_12_01.models.SubResource
18563    :param bgp_communities: Bgp Communities sent over ExpressRoute with each route corresponding to
18564     a prefix in this VNET.
18565    :type bgp_communities: ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkBgpCommunities
18566    """
18567
18568    _validation = {
18569        'name': {'readonly': True},
18570        'type': {'readonly': True},
18571        'etag': {'readonly': True},
18572        'resource_guid': {'readonly': True},
18573        'provisioning_state': {'readonly': True},
18574    }
18575
18576    _attribute_map = {
18577        'id': {'key': 'id', 'type': 'str'},
18578        'name': {'key': 'name', 'type': 'str'},
18579        'type': {'key': 'type', 'type': 'str'},
18580        'location': {'key': 'location', 'type': 'str'},
18581        'tags': {'key': 'tags', 'type': '{str}'},
18582        'etag': {'key': 'etag', 'type': 'str'},
18583        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
18584        'dhcp_options': {'key': 'properties.dhcpOptions', 'type': 'DhcpOptions'},
18585        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
18586        'virtual_network_peerings': {'key': 'properties.virtualNetworkPeerings', 'type': '[VirtualNetworkPeering]'},
18587        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
18588        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
18589        'enable_ddos_protection': {'key': 'properties.enableDdosProtection', 'type': 'bool'},
18590        'enable_vm_protection': {'key': 'properties.enableVmProtection', 'type': 'bool'},
18591        'ddos_protection_plan': {'key': 'properties.ddosProtectionPlan', 'type': 'SubResource'},
18592        'bgp_communities': {'key': 'properties.bgpCommunities', 'type': 'VirtualNetworkBgpCommunities'},
18593    }
18594
18595    def __init__(
18596        self,
18597        *,
18598        id: Optional[str] = None,
18599        location: Optional[str] = None,
18600        tags: Optional[Dict[str, str]] = None,
18601        address_space: Optional["AddressSpace"] = None,
18602        dhcp_options: Optional["DhcpOptions"] = None,
18603        subnets: Optional[List["Subnet"]] = None,
18604        virtual_network_peerings: Optional[List["VirtualNetworkPeering"]] = None,
18605        enable_ddos_protection: Optional[bool] = False,
18606        enable_vm_protection: Optional[bool] = False,
18607        ddos_protection_plan: Optional["SubResource"] = None,
18608        bgp_communities: Optional["VirtualNetworkBgpCommunities"] = None,
18609        **kwargs
18610    ):
18611        super(VirtualNetwork, self).__init__(id=id, location=location, tags=tags, **kwargs)
18612        self.etag = None
18613        self.address_space = address_space
18614        self.dhcp_options = dhcp_options
18615        self.subnets = subnets
18616        self.virtual_network_peerings = virtual_network_peerings
18617        self.resource_guid = None
18618        self.provisioning_state = None
18619        self.enable_ddos_protection = enable_ddos_protection
18620        self.enable_vm_protection = enable_vm_protection
18621        self.ddos_protection_plan = ddos_protection_plan
18622        self.bgp_communities = bgp_communities
18623
18624
18625class VirtualNetworkBgpCommunities(msrest.serialization.Model):
18626    """Bgp Communities sent over ExpressRoute with each route corresponding to a prefix in this VNET.
18627
18628    Variables are only populated by the server, and will be ignored when sending a request.
18629
18630    All required parameters must be populated in order to send to Azure.
18631
18632    :param virtual_network_community: Required. The BGP community associated with the virtual
18633     network.
18634    :type virtual_network_community: str
18635    :ivar regional_community: The BGP community associated with the region of the virtual network.
18636    :vartype regional_community: str
18637    """
18638
18639    _validation = {
18640        'virtual_network_community': {'required': True},
18641        'regional_community': {'readonly': True},
18642    }
18643
18644    _attribute_map = {
18645        'virtual_network_community': {'key': 'virtualNetworkCommunity', 'type': 'str'},
18646        'regional_community': {'key': 'regionalCommunity', 'type': 'str'},
18647    }
18648
18649    def __init__(
18650        self,
18651        *,
18652        virtual_network_community: str,
18653        **kwargs
18654    ):
18655        super(VirtualNetworkBgpCommunities, self).__init__(**kwargs)
18656        self.virtual_network_community = virtual_network_community
18657        self.regional_community = None
18658
18659
18660class VirtualNetworkConnectionGatewayReference(msrest.serialization.Model):
18661    """A reference to VirtualNetworkGateway or LocalNetworkGateway resource.
18662
18663    All required parameters must be populated in order to send to Azure.
18664
18665    :param id: Required. The ID of VirtualNetworkGateway or LocalNetworkGateway resource.
18666    :type id: str
18667    """
18668
18669    _validation = {
18670        'id': {'required': True},
18671    }
18672
18673    _attribute_map = {
18674        'id': {'key': 'id', 'type': 'str'},
18675    }
18676
18677    def __init__(
18678        self,
18679        *,
18680        id: str,
18681        **kwargs
18682    ):
18683        super(VirtualNetworkConnectionGatewayReference, self).__init__(**kwargs)
18684        self.id = id
18685
18686
18687class VirtualNetworkGateway(Resource):
18688    """A common class for general resource information.
18689
18690    Variables are only populated by the server, and will be ignored when sending a request.
18691
18692    :param id: Resource ID.
18693    :type id: str
18694    :ivar name: Resource name.
18695    :vartype name: str
18696    :ivar type: Resource type.
18697    :vartype type: str
18698    :param location: Resource location.
18699    :type location: str
18700    :param tags: A set of tags. Resource tags.
18701    :type tags: dict[str, str]
18702    :ivar etag: A unique read-only string that changes whenever the resource is updated.
18703    :vartype etag: str
18704    :param ip_configurations: IP configurations for virtual network gateway.
18705    :type ip_configurations:
18706     list[~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayIPConfiguration]
18707    :param gateway_type: The type of this virtual network gateway. Possible values include: "Vpn",
18708     "ExpressRoute".
18709    :type gateway_type: str or ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayType
18710    :param vpn_type: The type of this virtual network gateway. Possible values include:
18711     "PolicyBased", "RouteBased".
18712    :type vpn_type: str or ~azure.mgmt.network.v2019_12_01.models.VpnType
18713    :param vpn_gateway_generation: The generation for this VirtualNetworkGateway. Must be None if
18714     gatewayType is not VPN. Possible values include: "None", "Generation1", "Generation2".
18715    :type vpn_gateway_generation: str or
18716     ~azure.mgmt.network.v2019_12_01.models.VpnGatewayGeneration
18717    :param enable_bgp: Whether BGP is enabled for this virtual network gateway or not.
18718    :type enable_bgp: bool
18719    :param enable_private_ip_address: Whether private IP needs to be enabled on this gateway for
18720     connections or not.
18721    :type enable_private_ip_address: bool
18722    :param active: ActiveActive flag.
18723    :type active: bool
18724    :param gateway_default_site: The reference to the LocalNetworkGateway resource which represents
18725     local network site having default routes. Assign Null value in case of removing existing
18726     default site setting.
18727    :type gateway_default_site: ~azure.mgmt.network.v2019_12_01.models.SubResource
18728    :param sku: The reference to the VirtualNetworkGatewaySku resource which represents the SKU
18729     selected for Virtual network gateway.
18730    :type sku: ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewaySku
18731    :param vpn_client_configuration: The reference to the VpnClientConfiguration resource which
18732     represents the P2S VpnClient configurations.
18733    :type vpn_client_configuration: ~azure.mgmt.network.v2019_12_01.models.VpnClientConfiguration
18734    :param bgp_settings: Virtual network gateway's BGP speaker settings.
18735    :type bgp_settings: ~azure.mgmt.network.v2019_12_01.models.BgpSettings
18736    :param custom_routes: The reference to the address space resource which represents the custom
18737     routes address space specified by the customer for virtual network gateway and VpnClient.
18738    :type custom_routes: ~azure.mgmt.network.v2019_12_01.models.AddressSpace
18739    :ivar resource_guid: The resource GUID property of the virtual network gateway resource.
18740    :vartype resource_guid: str
18741    :ivar provisioning_state: The provisioning state of the virtual network gateway resource.
18742     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
18743    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
18744    :param enable_dns_forwarding: Whether dns forwarding is enabled or not.
18745    :type enable_dns_forwarding: bool
18746    :ivar inbound_dns_forwarding_endpoint: The IP address allocated by the gateway to which dns
18747     requests can be sent.
18748    :vartype inbound_dns_forwarding_endpoint: str
18749    """
18750
18751    _validation = {
18752        'name': {'readonly': True},
18753        'type': {'readonly': True},
18754        'etag': {'readonly': True},
18755        'resource_guid': {'readonly': True},
18756        'provisioning_state': {'readonly': True},
18757        'inbound_dns_forwarding_endpoint': {'readonly': True},
18758    }
18759
18760    _attribute_map = {
18761        'id': {'key': 'id', 'type': 'str'},
18762        'name': {'key': 'name', 'type': 'str'},
18763        'type': {'key': 'type', 'type': 'str'},
18764        'location': {'key': 'location', 'type': 'str'},
18765        'tags': {'key': 'tags', 'type': '{str}'},
18766        'etag': {'key': 'etag', 'type': 'str'},
18767        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[VirtualNetworkGatewayIPConfiguration]'},
18768        'gateway_type': {'key': 'properties.gatewayType', 'type': 'str'},
18769        'vpn_type': {'key': 'properties.vpnType', 'type': 'str'},
18770        'vpn_gateway_generation': {'key': 'properties.vpnGatewayGeneration', 'type': 'str'},
18771        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
18772        'enable_private_ip_address': {'key': 'properties.enablePrivateIpAddress', 'type': 'bool'},
18773        'active': {'key': 'properties.activeActive', 'type': 'bool'},
18774        'gateway_default_site': {'key': 'properties.gatewayDefaultSite', 'type': 'SubResource'},
18775        'sku': {'key': 'properties.sku', 'type': 'VirtualNetworkGatewaySku'},
18776        'vpn_client_configuration': {'key': 'properties.vpnClientConfiguration', 'type': 'VpnClientConfiguration'},
18777        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
18778        'custom_routes': {'key': 'properties.customRoutes', 'type': 'AddressSpace'},
18779        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
18780        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
18781        'enable_dns_forwarding': {'key': 'properties.enableDnsForwarding', 'type': 'bool'},
18782        'inbound_dns_forwarding_endpoint': {'key': 'properties.inboundDnsForwardingEndpoint', 'type': 'str'},
18783    }
18784
18785    def __init__(
18786        self,
18787        *,
18788        id: Optional[str] = None,
18789        location: Optional[str] = None,
18790        tags: Optional[Dict[str, str]] = None,
18791        ip_configurations: Optional[List["VirtualNetworkGatewayIPConfiguration"]] = None,
18792        gateway_type: Optional[Union[str, "VirtualNetworkGatewayType"]] = None,
18793        vpn_type: Optional[Union[str, "VpnType"]] = None,
18794        vpn_gateway_generation: Optional[Union[str, "VpnGatewayGeneration"]] = None,
18795        enable_bgp: Optional[bool] = None,
18796        enable_private_ip_address: Optional[bool] = None,
18797        active: Optional[bool] = None,
18798        gateway_default_site: Optional["SubResource"] = None,
18799        sku: Optional["VirtualNetworkGatewaySku"] = None,
18800        vpn_client_configuration: Optional["VpnClientConfiguration"] = None,
18801        bgp_settings: Optional["BgpSettings"] = None,
18802        custom_routes: Optional["AddressSpace"] = None,
18803        enable_dns_forwarding: Optional[bool] = None,
18804        **kwargs
18805    ):
18806        super(VirtualNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
18807        self.etag = None
18808        self.ip_configurations = ip_configurations
18809        self.gateway_type = gateway_type
18810        self.vpn_type = vpn_type
18811        self.vpn_gateway_generation = vpn_gateway_generation
18812        self.enable_bgp = enable_bgp
18813        self.enable_private_ip_address = enable_private_ip_address
18814        self.active = active
18815        self.gateway_default_site = gateway_default_site
18816        self.sku = sku
18817        self.vpn_client_configuration = vpn_client_configuration
18818        self.bgp_settings = bgp_settings
18819        self.custom_routes = custom_routes
18820        self.resource_guid = None
18821        self.provisioning_state = None
18822        self.enable_dns_forwarding = enable_dns_forwarding
18823        self.inbound_dns_forwarding_endpoint = None
18824
18825
18826class VirtualNetworkGatewayConnection(Resource):
18827    """A common class for general resource information.
18828
18829    Variables are only populated by the server, and will be ignored when sending a request.
18830
18831    All required parameters must be populated in order to send to Azure.
18832
18833    :param id: Resource ID.
18834    :type id: str
18835    :ivar name: Resource name.
18836    :vartype name: str
18837    :ivar type: Resource type.
18838    :vartype type: str
18839    :param location: Resource location.
18840    :type location: str
18841    :param tags: A set of tags. Resource tags.
18842    :type tags: dict[str, str]
18843    :ivar etag: A unique read-only string that changes whenever the resource is updated.
18844    :vartype etag: str
18845    :param authorization_key: The authorizationKey.
18846    :type authorization_key: str
18847    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
18848    :type virtual_network_gateway1: ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGateway
18849    :param virtual_network_gateway2: The reference to virtual network gateway resource.
18850    :type virtual_network_gateway2: ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGateway
18851    :param local_network_gateway2: The reference to local network gateway resource.
18852    :type local_network_gateway2: ~azure.mgmt.network.v2019_12_01.models.LocalNetworkGateway
18853    :param connection_type: Required. Gateway connection type. Possible values include: "IPsec",
18854     "Vnet2Vnet", "ExpressRoute", "VPNClient".
18855    :type connection_type: str or
18856     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnectionType
18857    :param connection_protocol: Connection protocol used for this connection. Possible values
18858     include: "IKEv2", "IKEv1".
18859    :type connection_protocol: str or
18860     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnectionProtocol
18861    :param routing_weight: The routing weight.
18862    :type routing_weight: int
18863    :param shared_key: The IPSec shared key.
18864    :type shared_key: str
18865    :ivar connection_status: Virtual Network Gateway connection status. Possible values include:
18866     "Unknown", "Connecting", "Connected", "NotConnected".
18867    :vartype connection_status: str or
18868     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnectionStatus
18869    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
18870    :vartype tunnel_connection_status:
18871     list[~azure.mgmt.network.v2019_12_01.models.TunnelConnectionHealth]
18872    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
18873    :vartype egress_bytes_transferred: long
18874    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
18875    :vartype ingress_bytes_transferred: long
18876    :param peer: The reference to peerings resource.
18877    :type peer: ~azure.mgmt.network.v2019_12_01.models.SubResource
18878    :param enable_bgp: EnableBgp flag.
18879    :type enable_bgp: bool
18880    :param use_local_azure_ip_address: Use private local Azure IP for the connection.
18881    :type use_local_azure_ip_address: bool
18882    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
18883    :type use_policy_based_traffic_selectors: bool
18884    :param ipsec_policies: The IPSec Policies to be considered by this connection.
18885    :type ipsec_policies: list[~azure.mgmt.network.v2019_12_01.models.IpsecPolicy]
18886    :param traffic_selector_policies: The Traffic Selector Policies to be considered by this
18887     connection.
18888    :type traffic_selector_policies:
18889     list[~azure.mgmt.network.v2019_12_01.models.TrafficSelectorPolicy]
18890    :ivar resource_guid: The resource GUID property of the virtual network gateway connection
18891     resource.
18892    :vartype resource_guid: str
18893    :ivar provisioning_state: The provisioning state of the virtual network gateway connection
18894     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
18895    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
18896    :param express_route_gateway_bypass: Bypass ExpressRoute Gateway for data forwarding.
18897    :type express_route_gateway_bypass: bool
18898    """
18899
18900    _validation = {
18901        'name': {'readonly': True},
18902        'type': {'readonly': True},
18903        'etag': {'readonly': True},
18904        'virtual_network_gateway1': {'required': True},
18905        'connection_type': {'required': True},
18906        'connection_status': {'readonly': True},
18907        'tunnel_connection_status': {'readonly': True},
18908        'egress_bytes_transferred': {'readonly': True},
18909        'ingress_bytes_transferred': {'readonly': True},
18910        'resource_guid': {'readonly': True},
18911        'provisioning_state': {'readonly': True},
18912    }
18913
18914    _attribute_map = {
18915        'id': {'key': 'id', 'type': 'str'},
18916        'name': {'key': 'name', 'type': 'str'},
18917        'type': {'key': 'type', 'type': 'str'},
18918        'location': {'key': 'location', 'type': 'str'},
18919        'tags': {'key': 'tags', 'type': '{str}'},
18920        'etag': {'key': 'etag', 'type': 'str'},
18921        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
18922        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkGateway'},
18923        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkGateway'},
18924        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'LocalNetworkGateway'},
18925        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
18926        'connection_protocol': {'key': 'properties.connectionProtocol', 'type': 'str'},
18927        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
18928        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
18929        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
18930        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
18931        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
18932        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
18933        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
18934        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
18935        'use_local_azure_ip_address': {'key': 'properties.useLocalAzureIpAddress', 'type': 'bool'},
18936        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
18937        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
18938        'traffic_selector_policies': {'key': 'properties.trafficSelectorPolicies', 'type': '[TrafficSelectorPolicy]'},
18939        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
18940        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
18941        'express_route_gateway_bypass': {'key': 'properties.expressRouteGatewayBypass', 'type': 'bool'},
18942    }
18943
18944    def __init__(
18945        self,
18946        *,
18947        virtual_network_gateway1: "VirtualNetworkGateway",
18948        connection_type: Union[str, "VirtualNetworkGatewayConnectionType"],
18949        id: Optional[str] = None,
18950        location: Optional[str] = None,
18951        tags: Optional[Dict[str, str]] = None,
18952        authorization_key: Optional[str] = None,
18953        virtual_network_gateway2: Optional["VirtualNetworkGateway"] = None,
18954        local_network_gateway2: Optional["LocalNetworkGateway"] = None,
18955        connection_protocol: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None,
18956        routing_weight: Optional[int] = None,
18957        shared_key: Optional[str] = None,
18958        peer: Optional["SubResource"] = None,
18959        enable_bgp: Optional[bool] = None,
18960        use_local_azure_ip_address: Optional[bool] = None,
18961        use_policy_based_traffic_selectors: Optional[bool] = None,
18962        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
18963        traffic_selector_policies: Optional[List["TrafficSelectorPolicy"]] = None,
18964        express_route_gateway_bypass: Optional[bool] = None,
18965        **kwargs
18966    ):
18967        super(VirtualNetworkGatewayConnection, self).__init__(id=id, location=location, tags=tags, **kwargs)
18968        self.etag = None
18969        self.authorization_key = authorization_key
18970        self.virtual_network_gateway1 = virtual_network_gateway1
18971        self.virtual_network_gateway2 = virtual_network_gateway2
18972        self.local_network_gateway2 = local_network_gateway2
18973        self.connection_type = connection_type
18974        self.connection_protocol = connection_protocol
18975        self.routing_weight = routing_weight
18976        self.shared_key = shared_key
18977        self.connection_status = None
18978        self.tunnel_connection_status = None
18979        self.egress_bytes_transferred = None
18980        self.ingress_bytes_transferred = None
18981        self.peer = peer
18982        self.enable_bgp = enable_bgp
18983        self.use_local_azure_ip_address = use_local_azure_ip_address
18984        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
18985        self.ipsec_policies = ipsec_policies
18986        self.traffic_selector_policies = traffic_selector_policies
18987        self.resource_guid = None
18988        self.provisioning_state = None
18989        self.express_route_gateway_bypass = express_route_gateway_bypass
18990
18991
18992class VirtualNetworkGatewayConnectionListEntity(Resource):
18993    """A common class for general resource information.
18994
18995    Variables are only populated by the server, and will be ignored when sending a request.
18996
18997    All required parameters must be populated in order to send to Azure.
18998
18999    :param id: Resource ID.
19000    :type id: str
19001    :ivar name: Resource name.
19002    :vartype name: str
19003    :ivar type: Resource type.
19004    :vartype type: str
19005    :param location: Resource location.
19006    :type location: str
19007    :param tags: A set of tags. Resource tags.
19008    :type tags: dict[str, str]
19009    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19010    :vartype etag: str
19011    :param authorization_key: The authorizationKey.
19012    :type authorization_key: str
19013    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
19014    :type virtual_network_gateway1:
19015     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkConnectionGatewayReference
19016    :param virtual_network_gateway2: The reference to virtual network gateway resource.
19017    :type virtual_network_gateway2:
19018     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkConnectionGatewayReference
19019    :param local_network_gateway2: The reference to local network gateway resource.
19020    :type local_network_gateway2:
19021     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkConnectionGatewayReference
19022    :param connection_type: Required. Gateway connection type. Possible values include: "IPsec",
19023     "Vnet2Vnet", "ExpressRoute", "VPNClient".
19024    :type connection_type: str or
19025     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnectionType
19026    :param connection_protocol: Connection protocol used for this connection. Possible values
19027     include: "IKEv2", "IKEv1".
19028    :type connection_protocol: str or
19029     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnectionProtocol
19030    :param routing_weight: The routing weight.
19031    :type routing_weight: int
19032    :param shared_key: The IPSec shared key.
19033    :type shared_key: str
19034    :ivar connection_status: Virtual Network Gateway connection status. Possible values include:
19035     "Unknown", "Connecting", "Connected", "NotConnected".
19036    :vartype connection_status: str or
19037     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnectionStatus
19038    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
19039    :vartype tunnel_connection_status:
19040     list[~azure.mgmt.network.v2019_12_01.models.TunnelConnectionHealth]
19041    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
19042    :vartype egress_bytes_transferred: long
19043    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
19044    :vartype ingress_bytes_transferred: long
19045    :param peer: The reference to peerings resource.
19046    :type peer: ~azure.mgmt.network.v2019_12_01.models.SubResource
19047    :param enable_bgp: EnableBgp flag.
19048    :type enable_bgp: bool
19049    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
19050    :type use_policy_based_traffic_selectors: bool
19051    :param ipsec_policies: The IPSec Policies to be considered by this connection.
19052    :type ipsec_policies: list[~azure.mgmt.network.v2019_12_01.models.IpsecPolicy]
19053    :param traffic_selector_policies: The Traffic Selector Policies to be considered by this
19054     connection.
19055    :type traffic_selector_policies:
19056     list[~azure.mgmt.network.v2019_12_01.models.TrafficSelectorPolicy]
19057    :ivar resource_guid: The resource GUID property of the virtual network gateway connection
19058     resource.
19059    :vartype resource_guid: str
19060    :ivar provisioning_state: The provisioning state of the virtual network gateway connection
19061     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
19062    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
19063    :param express_route_gateway_bypass: Bypass ExpressRoute Gateway for data forwarding.
19064    :type express_route_gateway_bypass: bool
19065    """
19066
19067    _validation = {
19068        'name': {'readonly': True},
19069        'type': {'readonly': True},
19070        'etag': {'readonly': True},
19071        'virtual_network_gateway1': {'required': True},
19072        'connection_type': {'required': True},
19073        'connection_status': {'readonly': True},
19074        'tunnel_connection_status': {'readonly': True},
19075        'egress_bytes_transferred': {'readonly': True},
19076        'ingress_bytes_transferred': {'readonly': True},
19077        'resource_guid': {'readonly': True},
19078        'provisioning_state': {'readonly': True},
19079    }
19080
19081    _attribute_map = {
19082        'id': {'key': 'id', 'type': 'str'},
19083        'name': {'key': 'name', 'type': 'str'},
19084        'type': {'key': 'type', 'type': 'str'},
19085        'location': {'key': 'location', 'type': 'str'},
19086        'tags': {'key': 'tags', 'type': '{str}'},
19087        'etag': {'key': 'etag', 'type': 'str'},
19088        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
19089        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkConnectionGatewayReference'},
19090        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
19091        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
19092        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
19093        'connection_protocol': {'key': 'properties.connectionProtocol', 'type': 'str'},
19094        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
19095        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
19096        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
19097        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
19098        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
19099        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
19100        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
19101        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
19102        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
19103        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
19104        'traffic_selector_policies': {'key': 'properties.trafficSelectorPolicies', 'type': '[TrafficSelectorPolicy]'},
19105        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
19106        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19107        'express_route_gateway_bypass': {'key': 'properties.expressRouteGatewayBypass', 'type': 'bool'},
19108    }
19109
19110    def __init__(
19111        self,
19112        *,
19113        virtual_network_gateway1: "VirtualNetworkConnectionGatewayReference",
19114        connection_type: Union[str, "VirtualNetworkGatewayConnectionType"],
19115        id: Optional[str] = None,
19116        location: Optional[str] = None,
19117        tags: Optional[Dict[str, str]] = None,
19118        authorization_key: Optional[str] = None,
19119        virtual_network_gateway2: Optional["VirtualNetworkConnectionGatewayReference"] = None,
19120        local_network_gateway2: Optional["VirtualNetworkConnectionGatewayReference"] = None,
19121        connection_protocol: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None,
19122        routing_weight: Optional[int] = None,
19123        shared_key: Optional[str] = None,
19124        peer: Optional["SubResource"] = None,
19125        enable_bgp: Optional[bool] = None,
19126        use_policy_based_traffic_selectors: Optional[bool] = None,
19127        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
19128        traffic_selector_policies: Optional[List["TrafficSelectorPolicy"]] = None,
19129        express_route_gateway_bypass: Optional[bool] = None,
19130        **kwargs
19131    ):
19132        super(VirtualNetworkGatewayConnectionListEntity, self).__init__(id=id, location=location, tags=tags, **kwargs)
19133        self.etag = None
19134        self.authorization_key = authorization_key
19135        self.virtual_network_gateway1 = virtual_network_gateway1
19136        self.virtual_network_gateway2 = virtual_network_gateway2
19137        self.local_network_gateway2 = local_network_gateway2
19138        self.connection_type = connection_type
19139        self.connection_protocol = connection_protocol
19140        self.routing_weight = routing_weight
19141        self.shared_key = shared_key
19142        self.connection_status = None
19143        self.tunnel_connection_status = None
19144        self.egress_bytes_transferred = None
19145        self.ingress_bytes_transferred = None
19146        self.peer = peer
19147        self.enable_bgp = enable_bgp
19148        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
19149        self.ipsec_policies = ipsec_policies
19150        self.traffic_selector_policies = traffic_selector_policies
19151        self.resource_guid = None
19152        self.provisioning_state = None
19153        self.express_route_gateway_bypass = express_route_gateway_bypass
19154
19155
19156class VirtualNetworkGatewayConnectionListResult(msrest.serialization.Model):
19157    """Response for the ListVirtualNetworkGatewayConnections API service call.
19158
19159    Variables are only populated by the server, and will be ignored when sending a request.
19160
19161    :param value: A list of VirtualNetworkGatewayConnection resources that exists in a resource
19162     group.
19163    :type value: list[~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnection]
19164    :ivar next_link: The URL to get the next set of results.
19165    :vartype next_link: str
19166    """
19167
19168    _validation = {
19169        'next_link': {'readonly': True},
19170    }
19171
19172    _attribute_map = {
19173        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnection]'},
19174        'next_link': {'key': 'nextLink', 'type': 'str'},
19175    }
19176
19177    def __init__(
19178        self,
19179        *,
19180        value: Optional[List["VirtualNetworkGatewayConnection"]] = None,
19181        **kwargs
19182    ):
19183        super(VirtualNetworkGatewayConnectionListResult, self).__init__(**kwargs)
19184        self.value = value
19185        self.next_link = None
19186
19187
19188class VirtualNetworkGatewayIPConfiguration(SubResource):
19189    """IP configuration for virtual network gateway.
19190
19191    Variables are only populated by the server, and will be ignored when sending a request.
19192
19193    :param id: Resource ID.
19194    :type id: str
19195    :param name: The name of the resource that is unique within a resource group. This name can be
19196     used to access the resource.
19197    :type name: str
19198    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19199    :vartype etag: str
19200    :param private_ip_allocation_method: The private IP address allocation method. Possible values
19201     include: "Static", "Dynamic".
19202    :type private_ip_allocation_method: str or
19203     ~azure.mgmt.network.v2019_12_01.models.IPAllocationMethod
19204    :param subnet: The reference to the subnet resource.
19205    :type subnet: ~azure.mgmt.network.v2019_12_01.models.SubResource
19206    :param public_ip_address: The reference to the public IP resource.
19207    :type public_ip_address: ~azure.mgmt.network.v2019_12_01.models.SubResource
19208    :ivar private_ip_address: Private IP Address for this gateway.
19209    :vartype private_ip_address: str
19210    :ivar provisioning_state: The provisioning state of the virtual network gateway IP
19211     configuration resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
19212    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
19213    """
19214
19215    _validation = {
19216        'etag': {'readonly': True},
19217        'private_ip_address': {'readonly': True},
19218        'provisioning_state': {'readonly': True},
19219    }
19220
19221    _attribute_map = {
19222        'id': {'key': 'id', 'type': 'str'},
19223        'name': {'key': 'name', 'type': 'str'},
19224        'etag': {'key': 'etag', 'type': 'str'},
19225        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
19226        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
19227        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
19228        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
19229        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19230    }
19231
19232    def __init__(
19233        self,
19234        *,
19235        id: Optional[str] = None,
19236        name: Optional[str] = None,
19237        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
19238        subnet: Optional["SubResource"] = None,
19239        public_ip_address: Optional["SubResource"] = None,
19240        **kwargs
19241    ):
19242        super(VirtualNetworkGatewayIPConfiguration, self).__init__(id=id, **kwargs)
19243        self.name = name
19244        self.etag = None
19245        self.private_ip_allocation_method = private_ip_allocation_method
19246        self.subnet = subnet
19247        self.public_ip_address = public_ip_address
19248        self.private_ip_address = None
19249        self.provisioning_state = None
19250
19251
19252class VirtualNetworkGatewayListConnectionsResult(msrest.serialization.Model):
19253    """Response for the VirtualNetworkGatewayListConnections API service call.
19254
19255    Variables are only populated by the server, and will be ignored when sending a request.
19256
19257    :param value: A list of VirtualNetworkGatewayConnection resources that exists in a resource
19258     group.
19259    :type value:
19260     list[~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnectionListEntity]
19261    :ivar next_link: The URL to get the next set of results.
19262    :vartype next_link: str
19263    """
19264
19265    _validation = {
19266        'next_link': {'readonly': True},
19267    }
19268
19269    _attribute_map = {
19270        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnectionListEntity]'},
19271        'next_link': {'key': 'nextLink', 'type': 'str'},
19272    }
19273
19274    def __init__(
19275        self,
19276        *,
19277        value: Optional[List["VirtualNetworkGatewayConnectionListEntity"]] = None,
19278        **kwargs
19279    ):
19280        super(VirtualNetworkGatewayListConnectionsResult, self).__init__(**kwargs)
19281        self.value = value
19282        self.next_link = None
19283
19284
19285class VirtualNetworkGatewayListResult(msrest.serialization.Model):
19286    """Response for the ListVirtualNetworkGateways API service call.
19287
19288    Variables are only populated by the server, and will be ignored when sending a request.
19289
19290    :param value: A list of VirtualNetworkGateway resources that exists in a resource group.
19291    :type value: list[~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGateway]
19292    :ivar next_link: The URL to get the next set of results.
19293    :vartype next_link: str
19294    """
19295
19296    _validation = {
19297        'next_link': {'readonly': True},
19298    }
19299
19300    _attribute_map = {
19301        'value': {'key': 'value', 'type': '[VirtualNetworkGateway]'},
19302        'next_link': {'key': 'nextLink', 'type': 'str'},
19303    }
19304
19305    def __init__(
19306        self,
19307        *,
19308        value: Optional[List["VirtualNetworkGateway"]] = None,
19309        **kwargs
19310    ):
19311        super(VirtualNetworkGatewayListResult, self).__init__(**kwargs)
19312        self.value = value
19313        self.next_link = None
19314
19315
19316class VirtualNetworkGatewaySku(msrest.serialization.Model):
19317    """VirtualNetworkGatewaySku details.
19318
19319    Variables are only populated by the server, and will be ignored when sending a request.
19320
19321    :param name: Gateway SKU name. Possible values include: "Basic", "HighPerformance", "Standard",
19322     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw4", "VpnGw5", "VpnGw1AZ", "VpnGw2AZ",
19323     "VpnGw3AZ", "VpnGw4AZ", "VpnGw5AZ", "ErGw1AZ", "ErGw2AZ", "ErGw3AZ".
19324    :type name: str or ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewaySkuName
19325    :param tier: Gateway SKU tier. Possible values include: "Basic", "HighPerformance", "Standard",
19326     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw4", "VpnGw5", "VpnGw1AZ", "VpnGw2AZ",
19327     "VpnGw3AZ", "VpnGw4AZ", "VpnGw5AZ", "ErGw1AZ", "ErGw2AZ", "ErGw3AZ".
19328    :type tier: str or ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewaySkuTier
19329    :ivar capacity: The capacity.
19330    :vartype capacity: int
19331    """
19332
19333    _validation = {
19334        'capacity': {'readonly': True},
19335    }
19336
19337    _attribute_map = {
19338        'name': {'key': 'name', 'type': 'str'},
19339        'tier': {'key': 'tier', 'type': 'str'},
19340        'capacity': {'key': 'capacity', 'type': 'int'},
19341    }
19342
19343    def __init__(
19344        self,
19345        *,
19346        name: Optional[Union[str, "VirtualNetworkGatewaySkuName"]] = None,
19347        tier: Optional[Union[str, "VirtualNetworkGatewaySkuTier"]] = None,
19348        **kwargs
19349    ):
19350        super(VirtualNetworkGatewaySku, self).__init__(**kwargs)
19351        self.name = name
19352        self.tier = tier
19353        self.capacity = None
19354
19355
19356class VirtualNetworkListResult(msrest.serialization.Model):
19357    """Response for the ListVirtualNetworks API service call.
19358
19359    :param value: A list of VirtualNetwork resources in a resource group.
19360    :type value: list[~azure.mgmt.network.v2019_12_01.models.VirtualNetwork]
19361    :param next_link: The URL to get the next set of results.
19362    :type next_link: str
19363    """
19364
19365    _attribute_map = {
19366        'value': {'key': 'value', 'type': '[VirtualNetwork]'},
19367        'next_link': {'key': 'nextLink', 'type': 'str'},
19368    }
19369
19370    def __init__(
19371        self,
19372        *,
19373        value: Optional[List["VirtualNetwork"]] = None,
19374        next_link: Optional[str] = None,
19375        **kwargs
19376    ):
19377        super(VirtualNetworkListResult, self).__init__(**kwargs)
19378        self.value = value
19379        self.next_link = next_link
19380
19381
19382class VirtualNetworkListUsageResult(msrest.serialization.Model):
19383    """Response for the virtual networks GetUsage API service call.
19384
19385    Variables are only populated by the server, and will be ignored when sending a request.
19386
19387    :ivar value: VirtualNetwork usage stats.
19388    :vartype value: list[~azure.mgmt.network.v2019_12_01.models.VirtualNetworkUsage]
19389    :param next_link: The URL to get the next set of results.
19390    :type next_link: str
19391    """
19392
19393    _validation = {
19394        'value': {'readonly': True},
19395    }
19396
19397    _attribute_map = {
19398        'value': {'key': 'value', 'type': '[VirtualNetworkUsage]'},
19399        'next_link': {'key': 'nextLink', 'type': 'str'},
19400    }
19401
19402    def __init__(
19403        self,
19404        *,
19405        next_link: Optional[str] = None,
19406        **kwargs
19407    ):
19408        super(VirtualNetworkListUsageResult, self).__init__(**kwargs)
19409        self.value = None
19410        self.next_link = next_link
19411
19412
19413class VirtualNetworkPeering(SubResource):
19414    """Peerings in a virtual network resource.
19415
19416    Variables are only populated by the server, and will be ignored when sending a request.
19417
19418    :param id: Resource ID.
19419    :type id: str
19420    :param name: The name of the resource that is unique within a resource group. This name can be
19421     used to access the resource.
19422    :type name: str
19423    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19424    :vartype etag: str
19425    :param allow_virtual_network_access: Whether the VMs in the local virtual network space would
19426     be able to access the VMs in remote virtual network space.
19427    :type allow_virtual_network_access: bool
19428    :param allow_forwarded_traffic: Whether the forwarded traffic from the VMs in the local virtual
19429     network will be allowed/disallowed in remote virtual network.
19430    :type allow_forwarded_traffic: bool
19431    :param allow_gateway_transit: If gateway links can be used in remote virtual networking to link
19432     to this virtual network.
19433    :type allow_gateway_transit: bool
19434    :param use_remote_gateways: If remote gateways can be used on this virtual network. If the flag
19435     is set to true, and allowGatewayTransit on remote peering is also true, virtual network will
19436     use gateways of remote virtual network for transit. Only one peering can have this flag set to
19437     true. This flag cannot be set if virtual network already has a gateway.
19438    :type use_remote_gateways: bool
19439    :param remote_virtual_network: The reference to the remote virtual network. The remote virtual
19440     network can be in the same or different region (preview). See here to register for the preview
19441     and learn more
19442     (https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-create-peering).
19443    :type remote_virtual_network: ~azure.mgmt.network.v2019_12_01.models.SubResource
19444    :param remote_address_space: The reference to the remote virtual network address space.
19445    :type remote_address_space: ~azure.mgmt.network.v2019_12_01.models.AddressSpace
19446    :param peering_state: The status of the virtual network peering. Possible values include:
19447     "Initiated", "Connected", "Disconnected".
19448    :type peering_state: str or ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkPeeringState
19449    :ivar provisioning_state: The provisioning state of the virtual network peering resource.
19450     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
19451    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
19452    """
19453
19454    _validation = {
19455        'etag': {'readonly': True},
19456        'provisioning_state': {'readonly': True},
19457    }
19458
19459    _attribute_map = {
19460        'id': {'key': 'id', 'type': 'str'},
19461        'name': {'key': 'name', 'type': 'str'},
19462        'etag': {'key': 'etag', 'type': 'str'},
19463        'allow_virtual_network_access': {'key': 'properties.allowVirtualNetworkAccess', 'type': 'bool'},
19464        'allow_forwarded_traffic': {'key': 'properties.allowForwardedTraffic', 'type': 'bool'},
19465        'allow_gateway_transit': {'key': 'properties.allowGatewayTransit', 'type': 'bool'},
19466        'use_remote_gateways': {'key': 'properties.useRemoteGateways', 'type': 'bool'},
19467        'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'},
19468        'remote_address_space': {'key': 'properties.remoteAddressSpace', 'type': 'AddressSpace'},
19469        'peering_state': {'key': 'properties.peeringState', 'type': 'str'},
19470        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19471    }
19472
19473    def __init__(
19474        self,
19475        *,
19476        id: Optional[str] = None,
19477        name: Optional[str] = None,
19478        allow_virtual_network_access: Optional[bool] = None,
19479        allow_forwarded_traffic: Optional[bool] = None,
19480        allow_gateway_transit: Optional[bool] = None,
19481        use_remote_gateways: Optional[bool] = None,
19482        remote_virtual_network: Optional["SubResource"] = None,
19483        remote_address_space: Optional["AddressSpace"] = None,
19484        peering_state: Optional[Union[str, "VirtualNetworkPeeringState"]] = None,
19485        **kwargs
19486    ):
19487        super(VirtualNetworkPeering, self).__init__(id=id, **kwargs)
19488        self.name = name
19489        self.etag = None
19490        self.allow_virtual_network_access = allow_virtual_network_access
19491        self.allow_forwarded_traffic = allow_forwarded_traffic
19492        self.allow_gateway_transit = allow_gateway_transit
19493        self.use_remote_gateways = use_remote_gateways
19494        self.remote_virtual_network = remote_virtual_network
19495        self.remote_address_space = remote_address_space
19496        self.peering_state = peering_state
19497        self.provisioning_state = None
19498
19499
19500class VirtualNetworkPeeringListResult(msrest.serialization.Model):
19501    """Response for ListSubnets API service call. Retrieves all subnets that belong to a virtual network.
19502
19503    :param value: The peerings in a virtual network.
19504    :type value: list[~azure.mgmt.network.v2019_12_01.models.VirtualNetworkPeering]
19505    :param next_link: The URL to get the next set of results.
19506    :type next_link: str
19507    """
19508
19509    _attribute_map = {
19510        'value': {'key': 'value', 'type': '[VirtualNetworkPeering]'},
19511        'next_link': {'key': 'nextLink', 'type': 'str'},
19512    }
19513
19514    def __init__(
19515        self,
19516        *,
19517        value: Optional[List["VirtualNetworkPeering"]] = None,
19518        next_link: Optional[str] = None,
19519        **kwargs
19520    ):
19521        super(VirtualNetworkPeeringListResult, self).__init__(**kwargs)
19522        self.value = value
19523        self.next_link = next_link
19524
19525
19526class VirtualNetworkTap(Resource):
19527    """Virtual Network Tap resource.
19528
19529    Variables are only populated by the server, and will be ignored when sending a request.
19530
19531    :param id: Resource ID.
19532    :type id: str
19533    :ivar name: Resource name.
19534    :vartype name: str
19535    :ivar type: Resource type.
19536    :vartype type: str
19537    :param location: Resource location.
19538    :type location: str
19539    :param tags: A set of tags. Resource tags.
19540    :type tags: dict[str, str]
19541    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19542    :vartype etag: str
19543    :ivar network_interface_tap_configurations: Specifies the list of resource IDs for the network
19544     interface IP configuration that needs to be tapped.
19545    :vartype network_interface_tap_configurations:
19546     list[~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceTapConfiguration]
19547    :ivar resource_guid: The resource GUID property of the virtual network tap resource.
19548    :vartype resource_guid: str
19549    :ivar provisioning_state: The provisioning state of the virtual network tap resource. Possible
19550     values include: "Succeeded", "Updating", "Deleting", "Failed".
19551    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
19552    :param destination_network_interface_ip_configuration: The reference to the private IP Address
19553     of the collector nic that will receive the tap.
19554    :type destination_network_interface_ip_configuration:
19555     ~azure.mgmt.network.v2019_12_01.models.NetworkInterfaceIPConfiguration
19556    :param destination_load_balancer_front_end_ip_configuration: The reference to the private IP
19557     address on the internal Load Balancer that will receive the tap.
19558    :type destination_load_balancer_front_end_ip_configuration:
19559     ~azure.mgmt.network.v2019_12_01.models.FrontendIPConfiguration
19560    :param destination_port: The VXLAN destination port that will receive the tapped traffic.
19561    :type destination_port: int
19562    """
19563
19564    _validation = {
19565        'name': {'readonly': True},
19566        'type': {'readonly': True},
19567        'etag': {'readonly': True},
19568        'network_interface_tap_configurations': {'readonly': True},
19569        'resource_guid': {'readonly': True},
19570        'provisioning_state': {'readonly': True},
19571    }
19572
19573    _attribute_map = {
19574        'id': {'key': 'id', 'type': 'str'},
19575        'name': {'key': 'name', 'type': 'str'},
19576        'type': {'key': 'type', 'type': 'str'},
19577        'location': {'key': 'location', 'type': 'str'},
19578        'tags': {'key': 'tags', 'type': '{str}'},
19579        'etag': {'key': 'etag', 'type': 'str'},
19580        'network_interface_tap_configurations': {'key': 'properties.networkInterfaceTapConfigurations', 'type': '[NetworkInterfaceTapConfiguration]'},
19581        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
19582        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19583        'destination_network_interface_ip_configuration': {'key': 'properties.destinationNetworkInterfaceIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
19584        'destination_load_balancer_front_end_ip_configuration': {'key': 'properties.destinationLoadBalancerFrontEndIPConfiguration', 'type': 'FrontendIPConfiguration'},
19585        'destination_port': {'key': 'properties.destinationPort', 'type': 'int'},
19586    }
19587
19588    def __init__(
19589        self,
19590        *,
19591        id: Optional[str] = None,
19592        location: Optional[str] = None,
19593        tags: Optional[Dict[str, str]] = None,
19594        destination_network_interface_ip_configuration: Optional["NetworkInterfaceIPConfiguration"] = None,
19595        destination_load_balancer_front_end_ip_configuration: Optional["FrontendIPConfiguration"] = None,
19596        destination_port: Optional[int] = None,
19597        **kwargs
19598    ):
19599        super(VirtualNetworkTap, self).__init__(id=id, location=location, tags=tags, **kwargs)
19600        self.etag = None
19601        self.network_interface_tap_configurations = None
19602        self.resource_guid = None
19603        self.provisioning_state = None
19604        self.destination_network_interface_ip_configuration = destination_network_interface_ip_configuration
19605        self.destination_load_balancer_front_end_ip_configuration = destination_load_balancer_front_end_ip_configuration
19606        self.destination_port = destination_port
19607
19608
19609class VirtualNetworkTapListResult(msrest.serialization.Model):
19610    """Response for ListVirtualNetworkTap API service call.
19611
19612    :param value: A list of VirtualNetworkTaps in a resource group.
19613    :type value: list[~azure.mgmt.network.v2019_12_01.models.VirtualNetworkTap]
19614    :param next_link: The URL to get the next set of results.
19615    :type next_link: str
19616    """
19617
19618    _attribute_map = {
19619        'value': {'key': 'value', 'type': '[VirtualNetworkTap]'},
19620        'next_link': {'key': 'nextLink', 'type': 'str'},
19621    }
19622
19623    def __init__(
19624        self,
19625        *,
19626        value: Optional[List["VirtualNetworkTap"]] = None,
19627        next_link: Optional[str] = None,
19628        **kwargs
19629    ):
19630        super(VirtualNetworkTapListResult, self).__init__(**kwargs)
19631        self.value = value
19632        self.next_link = next_link
19633
19634
19635class VirtualNetworkUsage(msrest.serialization.Model):
19636    """Usage details for subnet.
19637
19638    Variables are only populated by the server, and will be ignored when sending a request.
19639
19640    :ivar current_value: Indicates number of IPs used from the Subnet.
19641    :vartype current_value: float
19642    :ivar id: Subnet identifier.
19643    :vartype id: str
19644    :ivar limit: Indicates the size of the subnet.
19645    :vartype limit: float
19646    :ivar name: The name containing common and localized value for usage.
19647    :vartype name: ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkUsageName
19648    :ivar unit: Usage units. Returns 'Count'.
19649    :vartype unit: str
19650    """
19651
19652    _validation = {
19653        'current_value': {'readonly': True},
19654        'id': {'readonly': True},
19655        'limit': {'readonly': True},
19656        'name': {'readonly': True},
19657        'unit': {'readonly': True},
19658    }
19659
19660    _attribute_map = {
19661        'current_value': {'key': 'currentValue', 'type': 'float'},
19662        'id': {'key': 'id', 'type': 'str'},
19663        'limit': {'key': 'limit', 'type': 'float'},
19664        'name': {'key': 'name', 'type': 'VirtualNetworkUsageName'},
19665        'unit': {'key': 'unit', 'type': 'str'},
19666    }
19667
19668    def __init__(
19669        self,
19670        **kwargs
19671    ):
19672        super(VirtualNetworkUsage, self).__init__(**kwargs)
19673        self.current_value = None
19674        self.id = None
19675        self.limit = None
19676        self.name = None
19677        self.unit = None
19678
19679
19680class VirtualNetworkUsageName(msrest.serialization.Model):
19681    """Usage strings container.
19682
19683    Variables are only populated by the server, and will be ignored when sending a request.
19684
19685    :ivar localized_value: Localized subnet size and usage string.
19686    :vartype localized_value: str
19687    :ivar value: Subnet size and usage string.
19688    :vartype value: str
19689    """
19690
19691    _validation = {
19692        'localized_value': {'readonly': True},
19693        'value': {'readonly': True},
19694    }
19695
19696    _attribute_map = {
19697        'localized_value': {'key': 'localizedValue', 'type': 'str'},
19698        'value': {'key': 'value', 'type': 'str'},
19699    }
19700
19701    def __init__(
19702        self,
19703        **kwargs
19704    ):
19705        super(VirtualNetworkUsageName, self).__init__(**kwargs)
19706        self.localized_value = None
19707        self.value = None
19708
19709
19710class VirtualRouter(Resource):
19711    """VirtualRouter Resource.
19712
19713    Variables are only populated by the server, and will be ignored when sending a request.
19714
19715    :param id: Resource ID.
19716    :type id: str
19717    :ivar name: Resource name.
19718    :vartype name: str
19719    :ivar type: Resource type.
19720    :vartype type: str
19721    :param location: Resource location.
19722    :type location: str
19723    :param tags: A set of tags. Resource tags.
19724    :type tags: dict[str, str]
19725    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19726    :vartype etag: str
19727    :param virtual_router_asn: VirtualRouter ASN.
19728    :type virtual_router_asn: long
19729    :param virtual_router_ips: VirtualRouter IPs.
19730    :type virtual_router_ips: list[str]
19731    :param hosted_subnet: The Subnet on which VirtualRouter is hosted.
19732    :type hosted_subnet: ~azure.mgmt.network.v2019_12_01.models.SubResource
19733    :param hosted_gateway: The Gateway on which VirtualRouter is hosted.
19734    :type hosted_gateway: ~azure.mgmt.network.v2019_12_01.models.SubResource
19735    :ivar peerings: List of references to VirtualRouterPeerings.
19736    :vartype peerings: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
19737    :ivar provisioning_state: The provisioning state of the resource. Possible values include:
19738     "Succeeded", "Updating", "Deleting", "Failed".
19739    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
19740    """
19741
19742    _validation = {
19743        'name': {'readonly': True},
19744        'type': {'readonly': True},
19745        'etag': {'readonly': True},
19746        'virtual_router_asn': {'maximum': 4294967295, 'minimum': 0},
19747        'peerings': {'readonly': True},
19748        'provisioning_state': {'readonly': True},
19749    }
19750
19751    _attribute_map = {
19752        'id': {'key': 'id', 'type': 'str'},
19753        'name': {'key': 'name', 'type': 'str'},
19754        'type': {'key': 'type', 'type': 'str'},
19755        'location': {'key': 'location', 'type': 'str'},
19756        'tags': {'key': 'tags', 'type': '{str}'},
19757        'etag': {'key': 'etag', 'type': 'str'},
19758        'virtual_router_asn': {'key': 'properties.virtualRouterAsn', 'type': 'long'},
19759        'virtual_router_ips': {'key': 'properties.virtualRouterIps', 'type': '[str]'},
19760        'hosted_subnet': {'key': 'properties.hostedSubnet', 'type': 'SubResource'},
19761        'hosted_gateway': {'key': 'properties.hostedGateway', 'type': 'SubResource'},
19762        'peerings': {'key': 'properties.peerings', 'type': '[SubResource]'},
19763        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19764    }
19765
19766    def __init__(
19767        self,
19768        *,
19769        id: Optional[str] = None,
19770        location: Optional[str] = None,
19771        tags: Optional[Dict[str, str]] = None,
19772        virtual_router_asn: Optional[int] = None,
19773        virtual_router_ips: Optional[List[str]] = None,
19774        hosted_subnet: Optional["SubResource"] = None,
19775        hosted_gateway: Optional["SubResource"] = None,
19776        **kwargs
19777    ):
19778        super(VirtualRouter, self).__init__(id=id, location=location, tags=tags, **kwargs)
19779        self.etag = None
19780        self.virtual_router_asn = virtual_router_asn
19781        self.virtual_router_ips = virtual_router_ips
19782        self.hosted_subnet = hosted_subnet
19783        self.hosted_gateway = hosted_gateway
19784        self.peerings = None
19785        self.provisioning_state = None
19786
19787
19788class VirtualRouterListResult(msrest.serialization.Model):
19789    """Response for ListVirtualRouters API service call.
19790
19791    :param value: List of Virtual Routers.
19792    :type value: list[~azure.mgmt.network.v2019_12_01.models.VirtualRouter]
19793    :param next_link: URL to get the next set of results.
19794    :type next_link: str
19795    """
19796
19797    _attribute_map = {
19798        'value': {'key': 'value', 'type': '[VirtualRouter]'},
19799        'next_link': {'key': 'nextLink', 'type': 'str'},
19800    }
19801
19802    def __init__(
19803        self,
19804        *,
19805        value: Optional[List["VirtualRouter"]] = None,
19806        next_link: Optional[str] = None,
19807        **kwargs
19808    ):
19809        super(VirtualRouterListResult, self).__init__(**kwargs)
19810        self.value = value
19811        self.next_link = next_link
19812
19813
19814class VirtualRouterPeering(SubResource):
19815    """Virtual Router Peering resource.
19816
19817    Variables are only populated by the server, and will be ignored when sending a request.
19818
19819    :param id: Resource ID.
19820    :type id: str
19821    :param name: Name of the virtual router peering that is unique within a virtual router.
19822    :type name: str
19823    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19824    :vartype etag: str
19825    :ivar type: Peering type.
19826    :vartype type: str
19827    :param peer_asn: Peer ASN.
19828    :type peer_asn: long
19829    :param peer_ip: Peer IP.
19830    :type peer_ip: str
19831    :ivar provisioning_state: The provisioning state of the resource. Possible values include:
19832     "Succeeded", "Updating", "Deleting", "Failed".
19833    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
19834    """
19835
19836    _validation = {
19837        'etag': {'readonly': True},
19838        'type': {'readonly': True},
19839        'peer_asn': {'maximum': 4294967295, 'minimum': 0},
19840        'provisioning_state': {'readonly': True},
19841    }
19842
19843    _attribute_map = {
19844        'id': {'key': 'id', 'type': 'str'},
19845        'name': {'key': 'name', 'type': 'str'},
19846        'etag': {'key': 'etag', 'type': 'str'},
19847        'type': {'key': 'type', 'type': 'str'},
19848        'peer_asn': {'key': 'properties.peerAsn', 'type': 'long'},
19849        'peer_ip': {'key': 'properties.peerIp', 'type': 'str'},
19850        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19851    }
19852
19853    def __init__(
19854        self,
19855        *,
19856        id: Optional[str] = None,
19857        name: Optional[str] = None,
19858        peer_asn: Optional[int] = None,
19859        peer_ip: Optional[str] = None,
19860        **kwargs
19861    ):
19862        super(VirtualRouterPeering, self).__init__(id=id, **kwargs)
19863        self.name = name
19864        self.etag = None
19865        self.type = None
19866        self.peer_asn = peer_asn
19867        self.peer_ip = peer_ip
19868        self.provisioning_state = None
19869
19870
19871class VirtualRouterPeeringListResult(msrest.serialization.Model):
19872    """Response for ListVirtualRouterPeerings API service call.
19873
19874    :param value: List of VirtualRouterPeerings in a VirtualRouter.
19875    :type value: list[~azure.mgmt.network.v2019_12_01.models.VirtualRouterPeering]
19876    :param next_link: URL to get the next set of results.
19877    :type next_link: str
19878    """
19879
19880    _attribute_map = {
19881        'value': {'key': 'value', 'type': '[VirtualRouterPeering]'},
19882        'next_link': {'key': 'nextLink', 'type': 'str'},
19883    }
19884
19885    def __init__(
19886        self,
19887        *,
19888        value: Optional[List["VirtualRouterPeering"]] = None,
19889        next_link: Optional[str] = None,
19890        **kwargs
19891    ):
19892        super(VirtualRouterPeeringListResult, self).__init__(**kwargs)
19893        self.value = value
19894        self.next_link = next_link
19895
19896
19897class VirtualWAN(Resource):
19898    """VirtualWAN Resource.
19899
19900    Variables are only populated by the server, and will be ignored when sending a request.
19901
19902    :param id: Resource ID.
19903    :type id: str
19904    :ivar name: Resource name.
19905    :vartype name: str
19906    :ivar type: Resource type.
19907    :vartype type: str
19908    :param location: Resource location.
19909    :type location: str
19910    :param tags: A set of tags. Resource tags.
19911    :type tags: dict[str, str]
19912    :ivar etag: A unique read-only string that changes whenever the resource is updated.
19913    :vartype etag: str
19914    :param disable_vpn_encryption: Vpn encryption to be disabled or not.
19915    :type disable_vpn_encryption: bool
19916    :ivar virtual_hubs: List of VirtualHubs in the VirtualWAN.
19917    :vartype virtual_hubs: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
19918    :ivar vpn_sites: List of VpnSites in the VirtualWAN.
19919    :vartype vpn_sites: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
19920    :param allow_branch_to_branch_traffic: True if branch to branch traffic is allowed.
19921    :type allow_branch_to_branch_traffic: bool
19922    :param allow_vnet_to_vnet_traffic: True if Vnet to Vnet traffic is allowed.
19923    :type allow_vnet_to_vnet_traffic: bool
19924    :ivar office365_local_breakout_category: The office local breakout category. Possible values
19925     include: "Optimize", "OptimizeAndAllow", "All", "None".
19926    :vartype office365_local_breakout_category: str or
19927     ~azure.mgmt.network.v2019_12_01.models.OfficeTrafficCategory
19928    :ivar provisioning_state: The provisioning state of the virtual WAN resource. Possible values
19929     include: "Succeeded", "Updating", "Deleting", "Failed".
19930    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
19931    :param type_properties_type: The type of the VirtualWAN.
19932    :type type_properties_type: str
19933    """
19934
19935    _validation = {
19936        'name': {'readonly': True},
19937        'type': {'readonly': True},
19938        'etag': {'readonly': True},
19939        'virtual_hubs': {'readonly': True},
19940        'vpn_sites': {'readonly': True},
19941        'office365_local_breakout_category': {'readonly': True},
19942        'provisioning_state': {'readonly': True},
19943    }
19944
19945    _attribute_map = {
19946        'id': {'key': 'id', 'type': 'str'},
19947        'name': {'key': 'name', 'type': 'str'},
19948        'type': {'key': 'type', 'type': 'str'},
19949        'location': {'key': 'location', 'type': 'str'},
19950        'tags': {'key': 'tags', 'type': '{str}'},
19951        'etag': {'key': 'etag', 'type': 'str'},
19952        'disable_vpn_encryption': {'key': 'properties.disableVpnEncryption', 'type': 'bool'},
19953        'virtual_hubs': {'key': 'properties.virtualHubs', 'type': '[SubResource]'},
19954        'vpn_sites': {'key': 'properties.vpnSites', 'type': '[SubResource]'},
19955        'allow_branch_to_branch_traffic': {'key': 'properties.allowBranchToBranchTraffic', 'type': 'bool'},
19956        'allow_vnet_to_vnet_traffic': {'key': 'properties.allowVnetToVnetTraffic', 'type': 'bool'},
19957        'office365_local_breakout_category': {'key': 'properties.office365LocalBreakoutCategory', 'type': 'str'},
19958        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
19959        'type_properties_type': {'key': 'properties.type', 'type': 'str'},
19960    }
19961
19962    def __init__(
19963        self,
19964        *,
19965        id: Optional[str] = None,
19966        location: Optional[str] = None,
19967        tags: Optional[Dict[str, str]] = None,
19968        disable_vpn_encryption: Optional[bool] = None,
19969        allow_branch_to_branch_traffic: Optional[bool] = None,
19970        allow_vnet_to_vnet_traffic: Optional[bool] = None,
19971        type_properties_type: Optional[str] = None,
19972        **kwargs
19973    ):
19974        super(VirtualWAN, self).__init__(id=id, location=location, tags=tags, **kwargs)
19975        self.etag = None
19976        self.disable_vpn_encryption = disable_vpn_encryption
19977        self.virtual_hubs = None
19978        self.vpn_sites = None
19979        self.allow_branch_to_branch_traffic = allow_branch_to_branch_traffic
19980        self.allow_vnet_to_vnet_traffic = allow_vnet_to_vnet_traffic
19981        self.office365_local_breakout_category = None
19982        self.provisioning_state = None
19983        self.type_properties_type = type_properties_type
19984
19985
19986class VirtualWanSecurityProvider(msrest.serialization.Model):
19987    """Collection of SecurityProviders.
19988
19989    Variables are only populated by the server, and will be ignored when sending a request.
19990
19991    :param name: Name of the security provider.
19992    :type name: str
19993    :param url: Url of the security provider.
19994    :type url: str
19995    :ivar type: Name of the security provider. Possible values include: "External", "Native".
19996    :vartype type: str or ~azure.mgmt.network.v2019_12_01.models.VirtualWanSecurityProviderType
19997    """
19998
19999    _validation = {
20000        'type': {'readonly': True},
20001    }
20002
20003    _attribute_map = {
20004        'name': {'key': 'name', 'type': 'str'},
20005        'url': {'key': 'url', 'type': 'str'},
20006        'type': {'key': 'type', 'type': 'str'},
20007    }
20008
20009    def __init__(
20010        self,
20011        *,
20012        name: Optional[str] = None,
20013        url: Optional[str] = None,
20014        **kwargs
20015    ):
20016        super(VirtualWanSecurityProvider, self).__init__(**kwargs)
20017        self.name = name
20018        self.url = url
20019        self.type = None
20020
20021
20022class VirtualWanSecurityProviders(msrest.serialization.Model):
20023    """Collection of SecurityProviders.
20024
20025    :param supported_providers: List of VirtualWAN security providers.
20026    :type supported_providers:
20027     list[~azure.mgmt.network.v2019_12_01.models.VirtualWanSecurityProvider]
20028    """
20029
20030    _attribute_map = {
20031        'supported_providers': {'key': 'supportedProviders', 'type': '[VirtualWanSecurityProvider]'},
20032    }
20033
20034    def __init__(
20035        self,
20036        *,
20037        supported_providers: Optional[List["VirtualWanSecurityProvider"]] = None,
20038        **kwargs
20039    ):
20040        super(VirtualWanSecurityProviders, self).__init__(**kwargs)
20041        self.supported_providers = supported_providers
20042
20043
20044class VirtualWanVpnProfileParameters(msrest.serialization.Model):
20045    """Virtual Wan Vpn profile parameters Vpn profile generation.
20046
20047    :param vpn_server_configuration_resource_id: VpnServerConfiguration partial resource uri with
20048     which VirtualWan is associated to.
20049    :type vpn_server_configuration_resource_id: str
20050    :param authentication_method: VPN client authentication method. Possible values include:
20051     "EAPTLS", "EAPMSCHAPv2".
20052    :type authentication_method: str or ~azure.mgmt.network.v2019_12_01.models.AuthenticationMethod
20053    """
20054
20055    _attribute_map = {
20056        'vpn_server_configuration_resource_id': {'key': 'vpnServerConfigurationResourceId', 'type': 'str'},
20057        'authentication_method': {'key': 'authenticationMethod', 'type': 'str'},
20058    }
20059
20060    def __init__(
20061        self,
20062        *,
20063        vpn_server_configuration_resource_id: Optional[str] = None,
20064        authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None,
20065        **kwargs
20066    ):
20067        super(VirtualWanVpnProfileParameters, self).__init__(**kwargs)
20068        self.vpn_server_configuration_resource_id = vpn_server_configuration_resource_id
20069        self.authentication_method = authentication_method
20070
20071
20072class VM(Resource):
20073    """Describes a Virtual Machine.
20074
20075    Variables are only populated by the server, and will be ignored when sending a request.
20076
20077    :param id: Resource ID.
20078    :type id: str
20079    :ivar name: Resource name.
20080    :vartype name: str
20081    :ivar type: Resource type.
20082    :vartype type: str
20083    :param location: Resource location.
20084    :type location: str
20085    :param tags: A set of tags. Resource tags.
20086    :type tags: dict[str, str]
20087    """
20088
20089    _validation = {
20090        'name': {'readonly': True},
20091        'type': {'readonly': True},
20092    }
20093
20094    _attribute_map = {
20095        'id': {'key': 'id', 'type': 'str'},
20096        'name': {'key': 'name', 'type': 'str'},
20097        'type': {'key': 'type', 'type': 'str'},
20098        'location': {'key': 'location', 'type': 'str'},
20099        'tags': {'key': 'tags', 'type': '{str}'},
20100    }
20101
20102    def __init__(
20103        self,
20104        *,
20105        id: Optional[str] = None,
20106        location: Optional[str] = None,
20107        tags: Optional[Dict[str, str]] = None,
20108        **kwargs
20109    ):
20110        super(VM, self).__init__(id=id, location=location, tags=tags, **kwargs)
20111
20112
20113class VpnClientConfiguration(msrest.serialization.Model):
20114    """VpnClientConfiguration for P2S client.
20115
20116    :param vpn_client_address_pool: The reference to the address space resource which represents
20117     Address space for P2S VpnClient.
20118    :type vpn_client_address_pool: ~azure.mgmt.network.v2019_12_01.models.AddressSpace
20119    :param vpn_client_root_certificates: VpnClientRootCertificate for virtual network gateway.
20120    :type vpn_client_root_certificates:
20121     list[~azure.mgmt.network.v2019_12_01.models.VpnClientRootCertificate]
20122    :param vpn_client_revoked_certificates: VpnClientRevokedCertificate for Virtual network
20123     gateway.
20124    :type vpn_client_revoked_certificates:
20125     list[~azure.mgmt.network.v2019_12_01.models.VpnClientRevokedCertificate]
20126    :param vpn_client_protocols: VpnClientProtocols for Virtual network gateway.
20127    :type vpn_client_protocols: list[str or
20128     ~azure.mgmt.network.v2019_12_01.models.VpnClientProtocol]
20129    :param vpn_client_ipsec_policies: VpnClientIpsecPolicies for virtual network gateway P2S
20130     client.
20131    :type vpn_client_ipsec_policies: list[~azure.mgmt.network.v2019_12_01.models.IpsecPolicy]
20132    :param radius_server_address: The radius server address property of the VirtualNetworkGateway
20133     resource for vpn client connection.
20134    :type radius_server_address: str
20135    :param radius_server_secret: The radius secret property of the VirtualNetworkGateway resource
20136     for vpn client connection.
20137    :type radius_server_secret: str
20138    :param aad_tenant: The AADTenant property of the VirtualNetworkGateway resource for vpn client
20139     connection used for AAD authentication.
20140    :type aad_tenant: str
20141    :param aad_audience: The AADAudience property of the VirtualNetworkGateway resource for vpn
20142     client connection used for AAD authentication.
20143    :type aad_audience: str
20144    :param aad_issuer: The AADIssuer property of the VirtualNetworkGateway resource for vpn client
20145     connection used for AAD authentication.
20146    :type aad_issuer: str
20147    """
20148
20149    _attribute_map = {
20150        'vpn_client_address_pool': {'key': 'vpnClientAddressPool', 'type': 'AddressSpace'},
20151        'vpn_client_root_certificates': {'key': 'vpnClientRootCertificates', 'type': '[VpnClientRootCertificate]'},
20152        'vpn_client_revoked_certificates': {'key': 'vpnClientRevokedCertificates', 'type': '[VpnClientRevokedCertificate]'},
20153        'vpn_client_protocols': {'key': 'vpnClientProtocols', 'type': '[str]'},
20154        'vpn_client_ipsec_policies': {'key': 'vpnClientIpsecPolicies', 'type': '[IpsecPolicy]'},
20155        'radius_server_address': {'key': 'radiusServerAddress', 'type': 'str'},
20156        'radius_server_secret': {'key': 'radiusServerSecret', 'type': 'str'},
20157        'aad_tenant': {'key': 'aadTenant', 'type': 'str'},
20158        'aad_audience': {'key': 'aadAudience', 'type': 'str'},
20159        'aad_issuer': {'key': 'aadIssuer', 'type': 'str'},
20160    }
20161
20162    def __init__(
20163        self,
20164        *,
20165        vpn_client_address_pool: Optional["AddressSpace"] = None,
20166        vpn_client_root_certificates: Optional[List["VpnClientRootCertificate"]] = None,
20167        vpn_client_revoked_certificates: Optional[List["VpnClientRevokedCertificate"]] = None,
20168        vpn_client_protocols: Optional[List[Union[str, "VpnClientProtocol"]]] = None,
20169        vpn_client_ipsec_policies: Optional[List["IpsecPolicy"]] = None,
20170        radius_server_address: Optional[str] = None,
20171        radius_server_secret: Optional[str] = None,
20172        aad_tenant: Optional[str] = None,
20173        aad_audience: Optional[str] = None,
20174        aad_issuer: Optional[str] = None,
20175        **kwargs
20176    ):
20177        super(VpnClientConfiguration, self).__init__(**kwargs)
20178        self.vpn_client_address_pool = vpn_client_address_pool
20179        self.vpn_client_root_certificates = vpn_client_root_certificates
20180        self.vpn_client_revoked_certificates = vpn_client_revoked_certificates
20181        self.vpn_client_protocols = vpn_client_protocols
20182        self.vpn_client_ipsec_policies = vpn_client_ipsec_policies
20183        self.radius_server_address = radius_server_address
20184        self.radius_server_secret = radius_server_secret
20185        self.aad_tenant = aad_tenant
20186        self.aad_audience = aad_audience
20187        self.aad_issuer = aad_issuer
20188
20189
20190class VpnClientConnectionHealth(msrest.serialization.Model):
20191    """VpnClientConnectionHealth properties.
20192
20193    Variables are only populated by the server, and will be ignored when sending a request.
20194
20195    :ivar total_ingress_bytes_transferred: Total of the Ingress Bytes Transferred in this P2S Vpn
20196     connection.
20197    :vartype total_ingress_bytes_transferred: long
20198    :ivar total_egress_bytes_transferred: Total of the Egress Bytes Transferred in this connection.
20199    :vartype total_egress_bytes_transferred: long
20200    :param vpn_client_connections_count: The total of p2s vpn clients connected at this time to
20201     this P2SVpnGateway.
20202    :type vpn_client_connections_count: int
20203    :param allocated_ip_addresses: List of allocated ip addresses to the connected p2s vpn clients.
20204    :type allocated_ip_addresses: list[str]
20205    """
20206
20207    _validation = {
20208        'total_ingress_bytes_transferred': {'readonly': True},
20209        'total_egress_bytes_transferred': {'readonly': True},
20210    }
20211
20212    _attribute_map = {
20213        'total_ingress_bytes_transferred': {'key': 'totalIngressBytesTransferred', 'type': 'long'},
20214        'total_egress_bytes_transferred': {'key': 'totalEgressBytesTransferred', 'type': 'long'},
20215        'vpn_client_connections_count': {'key': 'vpnClientConnectionsCount', 'type': 'int'},
20216        'allocated_ip_addresses': {'key': 'allocatedIpAddresses', 'type': '[str]'},
20217    }
20218
20219    def __init__(
20220        self,
20221        *,
20222        vpn_client_connections_count: Optional[int] = None,
20223        allocated_ip_addresses: Optional[List[str]] = None,
20224        **kwargs
20225    ):
20226        super(VpnClientConnectionHealth, self).__init__(**kwargs)
20227        self.total_ingress_bytes_transferred = None
20228        self.total_egress_bytes_transferred = None
20229        self.vpn_client_connections_count = vpn_client_connections_count
20230        self.allocated_ip_addresses = allocated_ip_addresses
20231
20232
20233class VpnClientConnectionHealthDetail(msrest.serialization.Model):
20234    """VPN client connection health detail.
20235
20236    Variables are only populated by the server, and will be ignored when sending a request.
20237
20238    :ivar vpn_connection_id: The vpn client Id.
20239    :vartype vpn_connection_id: str
20240    :ivar vpn_connection_duration: The duration time of a connected vpn client.
20241    :vartype vpn_connection_duration: long
20242    :ivar vpn_connection_time: The start time of a connected vpn client.
20243    :vartype vpn_connection_time: str
20244    :ivar public_ip_address: The public Ip of a connected vpn client.
20245    :vartype public_ip_address: str
20246    :ivar private_ip_address: The assigned private Ip of a connected vpn client.
20247    :vartype private_ip_address: str
20248    :ivar vpn_user_name: The user name of a connected vpn client.
20249    :vartype vpn_user_name: str
20250    :ivar max_bandwidth: The max band width.
20251    :vartype max_bandwidth: long
20252    :ivar egress_packets_transferred: The egress packets per second.
20253    :vartype egress_packets_transferred: long
20254    :ivar egress_bytes_transferred: The egress bytes per second.
20255    :vartype egress_bytes_transferred: long
20256    :ivar ingress_packets_transferred: The ingress packets per second.
20257    :vartype ingress_packets_transferred: long
20258    :ivar ingress_bytes_transferred: The ingress bytes per second.
20259    :vartype ingress_bytes_transferred: long
20260    :ivar max_packets_per_second: The max packets transferred per second.
20261    :vartype max_packets_per_second: long
20262    """
20263
20264    _validation = {
20265        'vpn_connection_id': {'readonly': True},
20266        'vpn_connection_duration': {'readonly': True},
20267        'vpn_connection_time': {'readonly': True},
20268        'public_ip_address': {'readonly': True},
20269        'private_ip_address': {'readonly': True},
20270        'vpn_user_name': {'readonly': True},
20271        'max_bandwidth': {'readonly': True},
20272        'egress_packets_transferred': {'readonly': True},
20273        'egress_bytes_transferred': {'readonly': True},
20274        'ingress_packets_transferred': {'readonly': True},
20275        'ingress_bytes_transferred': {'readonly': True},
20276        'max_packets_per_second': {'readonly': True},
20277    }
20278
20279    _attribute_map = {
20280        'vpn_connection_id': {'key': 'vpnConnectionId', 'type': 'str'},
20281        'vpn_connection_duration': {'key': 'vpnConnectionDuration', 'type': 'long'},
20282        'vpn_connection_time': {'key': 'vpnConnectionTime', 'type': 'str'},
20283        'public_ip_address': {'key': 'publicIpAddress', 'type': 'str'},
20284        'private_ip_address': {'key': 'privateIpAddress', 'type': 'str'},
20285        'vpn_user_name': {'key': 'vpnUserName', 'type': 'str'},
20286        'max_bandwidth': {'key': 'maxBandwidth', 'type': 'long'},
20287        'egress_packets_transferred': {'key': 'egressPacketsTransferred', 'type': 'long'},
20288        'egress_bytes_transferred': {'key': 'egressBytesTransferred', 'type': 'long'},
20289        'ingress_packets_transferred': {'key': 'ingressPacketsTransferred', 'type': 'long'},
20290        'ingress_bytes_transferred': {'key': 'ingressBytesTransferred', 'type': 'long'},
20291        'max_packets_per_second': {'key': 'maxPacketsPerSecond', 'type': 'long'},
20292    }
20293
20294    def __init__(
20295        self,
20296        **kwargs
20297    ):
20298        super(VpnClientConnectionHealthDetail, self).__init__(**kwargs)
20299        self.vpn_connection_id = None
20300        self.vpn_connection_duration = None
20301        self.vpn_connection_time = None
20302        self.public_ip_address = None
20303        self.private_ip_address = None
20304        self.vpn_user_name = None
20305        self.max_bandwidth = None
20306        self.egress_packets_transferred = None
20307        self.egress_bytes_transferred = None
20308        self.ingress_packets_transferred = None
20309        self.ingress_bytes_transferred = None
20310        self.max_packets_per_second = None
20311
20312
20313class VpnClientConnectionHealthDetailListResult(msrest.serialization.Model):
20314    """List of virtual network gateway vpn client connection health.
20315
20316    :param value: List of vpn client connection health.
20317    :type value: list[~azure.mgmt.network.v2019_12_01.models.VpnClientConnectionHealthDetail]
20318    """
20319
20320    _attribute_map = {
20321        'value': {'key': 'value', 'type': '[VpnClientConnectionHealthDetail]'},
20322    }
20323
20324    def __init__(
20325        self,
20326        *,
20327        value: Optional[List["VpnClientConnectionHealthDetail"]] = None,
20328        **kwargs
20329    ):
20330        super(VpnClientConnectionHealthDetailListResult, self).__init__(**kwargs)
20331        self.value = value
20332
20333
20334class VpnClientIPsecParameters(msrest.serialization.Model):
20335    """An IPSec parameters for a virtual network gateway P2S connection.
20336
20337    All required parameters must be populated in order to send to Azure.
20338
20339    :param sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode
20340     or Phase 2 SA) lifetime in seconds for P2S client.
20341    :type sa_life_time_seconds: int
20342    :param sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode
20343     or Phase 2 SA) payload size in KB for P2S client..
20344    :type sa_data_size_kilobytes: int
20345    :param ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible
20346     values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192",
20347     "GCMAES256".
20348    :type ipsec_encryption: str or ~azure.mgmt.network.v2019_12_01.models.IpsecEncryption
20349    :param ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values
20350     include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256".
20351    :type ipsec_integrity: str or ~azure.mgmt.network.v2019_12_01.models.IpsecIntegrity
20352    :param ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values
20353     include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128".
20354    :type ike_encryption: str or ~azure.mgmt.network.v2019_12_01.models.IkeEncryption
20355    :param ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values
20356     include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128".
20357    :type ike_integrity: str or ~azure.mgmt.network.v2019_12_01.models.IkeIntegrity
20358    :param dh_group: Required. The DH Group used in IKE Phase 1 for initial SA. Possible values
20359     include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384",
20360     "DHGroup24".
20361    :type dh_group: str or ~azure.mgmt.network.v2019_12_01.models.DhGroup
20362    :param pfs_group: Required. The Pfs Group used in IKE Phase 2 for new child SA. Possible values
20363     include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14", "PFSMM".
20364    :type pfs_group: str or ~azure.mgmt.network.v2019_12_01.models.PfsGroup
20365    """
20366
20367    _validation = {
20368        'sa_life_time_seconds': {'required': True},
20369        'sa_data_size_kilobytes': {'required': True},
20370        'ipsec_encryption': {'required': True},
20371        'ipsec_integrity': {'required': True},
20372        'ike_encryption': {'required': True},
20373        'ike_integrity': {'required': True},
20374        'dh_group': {'required': True},
20375        'pfs_group': {'required': True},
20376    }
20377
20378    _attribute_map = {
20379        'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'},
20380        'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'},
20381        'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'},
20382        'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'},
20383        'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'},
20384        'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'},
20385        'dh_group': {'key': 'dhGroup', 'type': 'str'},
20386        'pfs_group': {'key': 'pfsGroup', 'type': 'str'},
20387    }
20388
20389    def __init__(
20390        self,
20391        *,
20392        sa_life_time_seconds: int,
20393        sa_data_size_kilobytes: int,
20394        ipsec_encryption: Union[str, "IpsecEncryption"],
20395        ipsec_integrity: Union[str, "IpsecIntegrity"],
20396        ike_encryption: Union[str, "IkeEncryption"],
20397        ike_integrity: Union[str, "IkeIntegrity"],
20398        dh_group: Union[str, "DhGroup"],
20399        pfs_group: Union[str, "PfsGroup"],
20400        **kwargs
20401    ):
20402        super(VpnClientIPsecParameters, self).__init__(**kwargs)
20403        self.sa_life_time_seconds = sa_life_time_seconds
20404        self.sa_data_size_kilobytes = sa_data_size_kilobytes
20405        self.ipsec_encryption = ipsec_encryption
20406        self.ipsec_integrity = ipsec_integrity
20407        self.ike_encryption = ike_encryption
20408        self.ike_integrity = ike_integrity
20409        self.dh_group = dh_group
20410        self.pfs_group = pfs_group
20411
20412
20413class VpnClientParameters(msrest.serialization.Model):
20414    """Vpn Client Parameters for package generation.
20415
20416    :param processor_architecture: VPN client Processor Architecture. Possible values include:
20417     "Amd64", "X86".
20418    :type processor_architecture: str or
20419     ~azure.mgmt.network.v2019_12_01.models.ProcessorArchitecture
20420    :param authentication_method: VPN client authentication method. Possible values include:
20421     "EAPTLS", "EAPMSCHAPv2".
20422    :type authentication_method: str or ~azure.mgmt.network.v2019_12_01.models.AuthenticationMethod
20423    :param radius_server_auth_certificate: The public certificate data for the radius server
20424     authentication certificate as a Base-64 encoded string. Required only if external radius
20425     authentication has been configured with EAPTLS authentication.
20426    :type radius_server_auth_certificate: str
20427    :param client_root_certificates: A list of client root certificates public certificate data
20428     encoded as Base-64 strings. Optional parameter for external radius based authentication with
20429     EAPTLS.
20430    :type client_root_certificates: list[str]
20431    """
20432
20433    _attribute_map = {
20434        'processor_architecture': {'key': 'processorArchitecture', 'type': 'str'},
20435        'authentication_method': {'key': 'authenticationMethod', 'type': 'str'},
20436        'radius_server_auth_certificate': {'key': 'radiusServerAuthCertificate', 'type': 'str'},
20437        'client_root_certificates': {'key': 'clientRootCertificates', 'type': '[str]'},
20438    }
20439
20440    def __init__(
20441        self,
20442        *,
20443        processor_architecture: Optional[Union[str, "ProcessorArchitecture"]] = None,
20444        authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None,
20445        radius_server_auth_certificate: Optional[str] = None,
20446        client_root_certificates: Optional[List[str]] = None,
20447        **kwargs
20448    ):
20449        super(VpnClientParameters, self).__init__(**kwargs)
20450        self.processor_architecture = processor_architecture
20451        self.authentication_method = authentication_method
20452        self.radius_server_auth_certificate = radius_server_auth_certificate
20453        self.client_root_certificates = client_root_certificates
20454
20455
20456class VpnClientRevokedCertificate(SubResource):
20457    """VPN client revoked certificate of virtual network gateway.
20458
20459    Variables are only populated by the server, and will be ignored when sending a request.
20460
20461    :param id: Resource ID.
20462    :type id: str
20463    :param name: The name of the resource that is unique within a resource group. This name can be
20464     used to access the resource.
20465    :type name: str
20466    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20467    :vartype etag: str
20468    :param thumbprint: The revoked VPN client certificate thumbprint.
20469    :type thumbprint: str
20470    :ivar provisioning_state: The provisioning state of the VPN client revoked certificate
20471     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
20472    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
20473    """
20474
20475    _validation = {
20476        'etag': {'readonly': True},
20477        'provisioning_state': {'readonly': True},
20478    }
20479
20480    _attribute_map = {
20481        'id': {'key': 'id', 'type': 'str'},
20482        'name': {'key': 'name', 'type': 'str'},
20483        'etag': {'key': 'etag', 'type': 'str'},
20484        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
20485        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
20486    }
20487
20488    def __init__(
20489        self,
20490        *,
20491        id: Optional[str] = None,
20492        name: Optional[str] = None,
20493        thumbprint: Optional[str] = None,
20494        **kwargs
20495    ):
20496        super(VpnClientRevokedCertificate, self).__init__(id=id, **kwargs)
20497        self.name = name
20498        self.etag = None
20499        self.thumbprint = thumbprint
20500        self.provisioning_state = None
20501
20502
20503class VpnClientRootCertificate(SubResource):
20504    """VPN client root certificate of virtual network gateway.
20505
20506    Variables are only populated by the server, and will be ignored when sending a request.
20507
20508    All required parameters must be populated in order to send to Azure.
20509
20510    :param id: Resource ID.
20511    :type id: str
20512    :param name: The name of the resource that is unique within a resource group. This name can be
20513     used to access the resource.
20514    :type name: str
20515    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20516    :vartype etag: str
20517    :param public_cert_data: Required. The certificate public data.
20518    :type public_cert_data: str
20519    :ivar provisioning_state: The provisioning state of the VPN client root certificate resource.
20520     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
20521    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
20522    """
20523
20524    _validation = {
20525        'etag': {'readonly': True},
20526        'public_cert_data': {'required': True},
20527        'provisioning_state': {'readonly': True},
20528    }
20529
20530    _attribute_map = {
20531        'id': {'key': 'id', 'type': 'str'},
20532        'name': {'key': 'name', 'type': 'str'},
20533        'etag': {'key': 'etag', 'type': 'str'},
20534        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
20535        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
20536    }
20537
20538    def __init__(
20539        self,
20540        *,
20541        public_cert_data: str,
20542        id: Optional[str] = None,
20543        name: Optional[str] = None,
20544        **kwargs
20545    ):
20546        super(VpnClientRootCertificate, self).__init__(id=id, **kwargs)
20547        self.name = name
20548        self.etag = None
20549        self.public_cert_data = public_cert_data
20550        self.provisioning_state = None
20551
20552
20553class VpnConnection(SubResource):
20554    """VpnConnection Resource.
20555
20556    Variables are only populated by the server, and will be ignored when sending a request.
20557
20558    :param id: Resource ID.
20559    :type id: str
20560    :param name: The name of the resource that is unique within a resource group. This name can be
20561     used to access the resource.
20562    :type name: str
20563    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20564    :vartype etag: str
20565    :param remote_vpn_site: Id of the connected vpn site.
20566    :type remote_vpn_site: ~azure.mgmt.network.v2019_12_01.models.SubResource
20567    :param routing_weight: Routing weight for vpn connection.
20568    :type routing_weight: int
20569    :ivar connection_status: The connection status. Possible values include: "Unknown",
20570     "Connecting", "Connected", "NotConnected".
20571    :vartype connection_status: str or ~azure.mgmt.network.v2019_12_01.models.VpnConnectionStatus
20572    :param vpn_connection_protocol_type: Connection protocol used for this connection. Possible
20573     values include: "IKEv2", "IKEv1".
20574    :type vpn_connection_protocol_type: str or
20575     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnectionProtocol
20576    :ivar ingress_bytes_transferred: Ingress bytes transferred.
20577    :vartype ingress_bytes_transferred: long
20578    :ivar egress_bytes_transferred: Egress bytes transferred.
20579    :vartype egress_bytes_transferred: long
20580    :param connection_bandwidth: Expected bandwidth in MBPS.
20581    :type connection_bandwidth: int
20582    :param shared_key: SharedKey for the vpn connection.
20583    :type shared_key: str
20584    :param enable_bgp: EnableBgp flag.
20585    :type enable_bgp: bool
20586    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
20587    :type use_policy_based_traffic_selectors: bool
20588    :param ipsec_policies: The IPSec Policies to be considered by this connection.
20589    :type ipsec_policies: list[~azure.mgmt.network.v2019_12_01.models.IpsecPolicy]
20590    :param enable_rate_limiting: EnableBgp flag.
20591    :type enable_rate_limiting: bool
20592    :param enable_internet_security: Enable internet security.
20593    :type enable_internet_security: bool
20594    :param use_local_azure_ip_address: Use local azure ip to initiate connection.
20595    :type use_local_azure_ip_address: bool
20596    :ivar provisioning_state: The provisioning state of the VPN connection resource. Possible
20597     values include: "Succeeded", "Updating", "Deleting", "Failed".
20598    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
20599    :param vpn_link_connections: List of all vpn site link connections to the gateway.
20600    :type vpn_link_connections: list[~azure.mgmt.network.v2019_12_01.models.VpnSiteLinkConnection]
20601    """
20602
20603    _validation = {
20604        'etag': {'readonly': True},
20605        'connection_status': {'readonly': True},
20606        'ingress_bytes_transferred': {'readonly': True},
20607        'egress_bytes_transferred': {'readonly': True},
20608        'provisioning_state': {'readonly': True},
20609    }
20610
20611    _attribute_map = {
20612        'id': {'key': 'id', 'type': 'str'},
20613        'name': {'key': 'name', 'type': 'str'},
20614        'etag': {'key': 'etag', 'type': 'str'},
20615        'remote_vpn_site': {'key': 'properties.remoteVpnSite', 'type': 'SubResource'},
20616        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
20617        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
20618        'vpn_connection_protocol_type': {'key': 'properties.vpnConnectionProtocolType', 'type': 'str'},
20619        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
20620        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
20621        'connection_bandwidth': {'key': 'properties.connectionBandwidth', 'type': 'int'},
20622        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
20623        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
20624        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
20625        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
20626        'enable_rate_limiting': {'key': 'properties.enableRateLimiting', 'type': 'bool'},
20627        'enable_internet_security': {'key': 'properties.enableInternetSecurity', 'type': 'bool'},
20628        'use_local_azure_ip_address': {'key': 'properties.useLocalAzureIpAddress', 'type': 'bool'},
20629        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
20630        'vpn_link_connections': {'key': 'properties.vpnLinkConnections', 'type': '[VpnSiteLinkConnection]'},
20631    }
20632
20633    def __init__(
20634        self,
20635        *,
20636        id: Optional[str] = None,
20637        name: Optional[str] = None,
20638        remote_vpn_site: Optional["SubResource"] = None,
20639        routing_weight: Optional[int] = None,
20640        vpn_connection_protocol_type: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None,
20641        connection_bandwidth: Optional[int] = None,
20642        shared_key: Optional[str] = None,
20643        enable_bgp: Optional[bool] = None,
20644        use_policy_based_traffic_selectors: Optional[bool] = None,
20645        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
20646        enable_rate_limiting: Optional[bool] = None,
20647        enable_internet_security: Optional[bool] = None,
20648        use_local_azure_ip_address: Optional[bool] = None,
20649        vpn_link_connections: Optional[List["VpnSiteLinkConnection"]] = None,
20650        **kwargs
20651    ):
20652        super(VpnConnection, self).__init__(id=id, **kwargs)
20653        self.name = name
20654        self.etag = None
20655        self.remote_vpn_site = remote_vpn_site
20656        self.routing_weight = routing_weight
20657        self.connection_status = None
20658        self.vpn_connection_protocol_type = vpn_connection_protocol_type
20659        self.ingress_bytes_transferred = None
20660        self.egress_bytes_transferred = None
20661        self.connection_bandwidth = connection_bandwidth
20662        self.shared_key = shared_key
20663        self.enable_bgp = enable_bgp
20664        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
20665        self.ipsec_policies = ipsec_policies
20666        self.enable_rate_limiting = enable_rate_limiting
20667        self.enable_internet_security = enable_internet_security
20668        self.use_local_azure_ip_address = use_local_azure_ip_address
20669        self.provisioning_state = None
20670        self.vpn_link_connections = vpn_link_connections
20671
20672
20673class VpnDeviceScriptParameters(msrest.serialization.Model):
20674    """Vpn device configuration script generation parameters.
20675
20676    :param vendor: The vendor for the vpn device.
20677    :type vendor: str
20678    :param device_family: The device family for the vpn device.
20679    :type device_family: str
20680    :param firmware_version: The firmware version for the vpn device.
20681    :type firmware_version: str
20682    """
20683
20684    _attribute_map = {
20685        'vendor': {'key': 'vendor', 'type': 'str'},
20686        'device_family': {'key': 'deviceFamily', 'type': 'str'},
20687        'firmware_version': {'key': 'firmwareVersion', 'type': 'str'},
20688    }
20689
20690    def __init__(
20691        self,
20692        *,
20693        vendor: Optional[str] = None,
20694        device_family: Optional[str] = None,
20695        firmware_version: Optional[str] = None,
20696        **kwargs
20697    ):
20698        super(VpnDeviceScriptParameters, self).__init__(**kwargs)
20699        self.vendor = vendor
20700        self.device_family = device_family
20701        self.firmware_version = firmware_version
20702
20703
20704class VpnGateway(Resource):
20705    """VpnGateway Resource.
20706
20707    Variables are only populated by the server, and will be ignored when sending a request.
20708
20709    :param id: Resource ID.
20710    :type id: str
20711    :ivar name: Resource name.
20712    :vartype name: str
20713    :ivar type: Resource type.
20714    :vartype type: str
20715    :param location: Resource location.
20716    :type location: str
20717    :param tags: A set of tags. Resource tags.
20718    :type tags: dict[str, str]
20719    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20720    :vartype etag: str
20721    :param virtual_hub: The VirtualHub to which the gateway belongs.
20722    :type virtual_hub: ~azure.mgmt.network.v2019_12_01.models.SubResource
20723    :param connections: List of all vpn connections to the gateway.
20724    :type connections: list[~azure.mgmt.network.v2019_12_01.models.VpnConnection]
20725    :param bgp_settings: Local network gateway's BGP speaker settings.
20726    :type bgp_settings: ~azure.mgmt.network.v2019_12_01.models.BgpSettings
20727    :ivar provisioning_state: The provisioning state of the VPN gateway resource. Possible values
20728     include: "Succeeded", "Updating", "Deleting", "Failed".
20729    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
20730    :param vpn_gateway_scale_unit: The scale unit for this vpn gateway.
20731    :type vpn_gateway_scale_unit: int
20732    """
20733
20734    _validation = {
20735        'name': {'readonly': True},
20736        'type': {'readonly': True},
20737        'etag': {'readonly': True},
20738        'provisioning_state': {'readonly': True},
20739    }
20740
20741    _attribute_map = {
20742        'id': {'key': 'id', 'type': 'str'},
20743        'name': {'key': 'name', 'type': 'str'},
20744        'type': {'key': 'type', 'type': 'str'},
20745        'location': {'key': 'location', 'type': 'str'},
20746        'tags': {'key': 'tags', 'type': '{str}'},
20747        'etag': {'key': 'etag', 'type': 'str'},
20748        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
20749        'connections': {'key': 'properties.connections', 'type': '[VpnConnection]'},
20750        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
20751        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
20752        'vpn_gateway_scale_unit': {'key': 'properties.vpnGatewayScaleUnit', 'type': 'int'},
20753    }
20754
20755    def __init__(
20756        self,
20757        *,
20758        id: Optional[str] = None,
20759        location: Optional[str] = None,
20760        tags: Optional[Dict[str, str]] = None,
20761        virtual_hub: Optional["SubResource"] = None,
20762        connections: Optional[List["VpnConnection"]] = None,
20763        bgp_settings: Optional["BgpSettings"] = None,
20764        vpn_gateway_scale_unit: Optional[int] = None,
20765        **kwargs
20766    ):
20767        super(VpnGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
20768        self.etag = None
20769        self.virtual_hub = virtual_hub
20770        self.connections = connections
20771        self.bgp_settings = bgp_settings
20772        self.provisioning_state = None
20773        self.vpn_gateway_scale_unit = vpn_gateway_scale_unit
20774
20775
20776class VpnLinkBgpSettings(msrest.serialization.Model):
20777    """BGP settings details for a link.
20778
20779    :param asn: The BGP speaker's ASN.
20780    :type asn: long
20781    :param bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker.
20782    :type bgp_peering_address: str
20783    """
20784
20785    _attribute_map = {
20786        'asn': {'key': 'asn', 'type': 'long'},
20787        'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'},
20788    }
20789
20790    def __init__(
20791        self,
20792        *,
20793        asn: Optional[int] = None,
20794        bgp_peering_address: Optional[str] = None,
20795        **kwargs
20796    ):
20797        super(VpnLinkBgpSettings, self).__init__(**kwargs)
20798        self.asn = asn
20799        self.bgp_peering_address = bgp_peering_address
20800
20801
20802class VpnLinkProviderProperties(msrest.serialization.Model):
20803    """List of properties of a link provider.
20804
20805    :param link_provider_name: Name of the link provider.
20806    :type link_provider_name: str
20807    :param link_speed_in_mbps: Link speed.
20808    :type link_speed_in_mbps: int
20809    """
20810
20811    _attribute_map = {
20812        'link_provider_name': {'key': 'linkProviderName', 'type': 'str'},
20813        'link_speed_in_mbps': {'key': 'linkSpeedInMbps', 'type': 'int'},
20814    }
20815
20816    def __init__(
20817        self,
20818        *,
20819        link_provider_name: Optional[str] = None,
20820        link_speed_in_mbps: Optional[int] = None,
20821        **kwargs
20822    ):
20823        super(VpnLinkProviderProperties, self).__init__(**kwargs)
20824        self.link_provider_name = link_provider_name
20825        self.link_speed_in_mbps = link_speed_in_mbps
20826
20827
20828class VpnPacketCaptureStartParameters(msrest.serialization.Model):
20829    """Start packet capture parameters on virtual network gateway.
20830
20831    :param filter_data: Start Packet capture parameters.
20832    :type filter_data: str
20833    """
20834
20835    _attribute_map = {
20836        'filter_data': {'key': 'filterData', 'type': 'str'},
20837    }
20838
20839    def __init__(
20840        self,
20841        *,
20842        filter_data: Optional[str] = None,
20843        **kwargs
20844    ):
20845        super(VpnPacketCaptureStartParameters, self).__init__(**kwargs)
20846        self.filter_data = filter_data
20847
20848
20849class VpnPacketCaptureStopParameters(msrest.serialization.Model):
20850    """Stop packet capture parameters.
20851
20852    :param sas_url: SAS url for packet capture on virtual network gateway.
20853    :type sas_url: str
20854    """
20855
20856    _attribute_map = {
20857        'sas_url': {'key': 'sasUrl', 'type': 'str'},
20858    }
20859
20860    def __init__(
20861        self,
20862        *,
20863        sas_url: Optional[str] = None,
20864        **kwargs
20865    ):
20866        super(VpnPacketCaptureStopParameters, self).__init__(**kwargs)
20867        self.sas_url = sas_url
20868
20869
20870class VpnProfileResponse(msrest.serialization.Model):
20871    """Vpn Profile Response for package generation.
20872
20873    :param profile_url: URL to the VPN profile.
20874    :type profile_url: str
20875    """
20876
20877    _attribute_map = {
20878        'profile_url': {'key': 'profileUrl', 'type': 'str'},
20879    }
20880
20881    def __init__(
20882        self,
20883        *,
20884        profile_url: Optional[str] = None,
20885        **kwargs
20886    ):
20887        super(VpnProfileResponse, self).__init__(**kwargs)
20888        self.profile_url = profile_url
20889
20890
20891class VpnServerConfigRadiusClientRootCertificate(msrest.serialization.Model):
20892    """Properties of the Radius client root certificate of VpnServerConfiguration.
20893
20894    :param name: The certificate name.
20895    :type name: str
20896    :param thumbprint: The Radius client root certificate thumbprint.
20897    :type thumbprint: str
20898    """
20899
20900    _attribute_map = {
20901        'name': {'key': 'name', 'type': 'str'},
20902        'thumbprint': {'key': 'thumbprint', 'type': 'str'},
20903    }
20904
20905    def __init__(
20906        self,
20907        *,
20908        name: Optional[str] = None,
20909        thumbprint: Optional[str] = None,
20910        **kwargs
20911    ):
20912        super(VpnServerConfigRadiusClientRootCertificate, self).__init__(**kwargs)
20913        self.name = name
20914        self.thumbprint = thumbprint
20915
20916
20917class VpnServerConfigRadiusServerRootCertificate(msrest.serialization.Model):
20918    """Properties of Radius Server root certificate of VpnServerConfiguration.
20919
20920    :param name: The certificate name.
20921    :type name: str
20922    :param public_cert_data: The certificate public data.
20923    :type public_cert_data: str
20924    """
20925
20926    _attribute_map = {
20927        'name': {'key': 'name', 'type': 'str'},
20928        'public_cert_data': {'key': 'publicCertData', 'type': 'str'},
20929    }
20930
20931    def __init__(
20932        self,
20933        *,
20934        name: Optional[str] = None,
20935        public_cert_data: Optional[str] = None,
20936        **kwargs
20937    ):
20938        super(VpnServerConfigRadiusServerRootCertificate, self).__init__(**kwargs)
20939        self.name = name
20940        self.public_cert_data = public_cert_data
20941
20942
20943class VpnServerConfiguration(Resource):
20944    """VpnServerConfiguration Resource.
20945
20946    Variables are only populated by the server, and will be ignored when sending a request.
20947
20948    :param id: Resource ID.
20949    :type id: str
20950    :ivar name: Resource name.
20951    :vartype name: str
20952    :ivar type: Resource type.
20953    :vartype type: str
20954    :param location: Resource location.
20955    :type location: str
20956    :param tags: A set of tags. Resource tags.
20957    :type tags: dict[str, str]
20958    :ivar etag: A unique read-only string that changes whenever the resource is updated.
20959    :vartype etag: str
20960    :param name_properties_name: The name of the VpnServerConfiguration that is unique within a
20961     resource group.
20962    :type name_properties_name: str
20963    :param vpn_protocols: VPN protocols for the VpnServerConfiguration.
20964    :type vpn_protocols: list[str or
20965     ~azure.mgmt.network.v2019_12_01.models.VpnGatewayTunnelingProtocol]
20966    :param vpn_authentication_types: VPN authentication types for the VpnServerConfiguration.
20967    :type vpn_authentication_types: list[str or
20968     ~azure.mgmt.network.v2019_12_01.models.VpnAuthenticationType]
20969    :param vpn_client_root_certificates: VPN client root certificate of VpnServerConfiguration.
20970    :type vpn_client_root_certificates:
20971     list[~azure.mgmt.network.v2019_12_01.models.VpnServerConfigVpnClientRootCertificate]
20972    :param vpn_client_revoked_certificates: VPN client revoked certificate of
20973     VpnServerConfiguration.
20974    :type vpn_client_revoked_certificates:
20975     list[~azure.mgmt.network.v2019_12_01.models.VpnServerConfigVpnClientRevokedCertificate]
20976    :param radius_server_root_certificates: Radius Server root certificate of
20977     VpnServerConfiguration.
20978    :type radius_server_root_certificates:
20979     list[~azure.mgmt.network.v2019_12_01.models.VpnServerConfigRadiusServerRootCertificate]
20980    :param radius_client_root_certificates: Radius client root certificate of
20981     VpnServerConfiguration.
20982    :type radius_client_root_certificates:
20983     list[~azure.mgmt.network.v2019_12_01.models.VpnServerConfigRadiusClientRootCertificate]
20984    :param vpn_client_ipsec_policies: VpnClientIpsecPolicies for VpnServerConfiguration.
20985    :type vpn_client_ipsec_policies: list[~azure.mgmt.network.v2019_12_01.models.IpsecPolicy]
20986    :param radius_server_address: The radius server address property of the VpnServerConfiguration
20987     resource for point to site client connection.
20988    :type radius_server_address: str
20989    :param radius_server_secret: The radius secret property of the VpnServerConfiguration resource
20990     for point to site client connection.
20991    :type radius_server_secret: str
20992    :param aad_authentication_parameters: The set of aad vpn authentication parameters.
20993    :type aad_authentication_parameters:
20994     ~azure.mgmt.network.v2019_12_01.models.AadAuthenticationParameters
20995    :ivar provisioning_state: The provisioning state of the VpnServerConfiguration resource.
20996     Possible values are: 'Updating', 'Deleting', and 'Failed'.
20997    :vartype provisioning_state: str
20998    :ivar p2_s_vpn_gateways: List of references to P2SVpnGateways.
20999    :vartype p2_s_vpn_gateways: list[~azure.mgmt.network.v2019_12_01.models.P2SVpnGateway]
21000    :ivar etag_properties_etag: A unique read-only string that changes whenever the resource is
21001     updated.
21002    :vartype etag_properties_etag: str
21003    """
21004
21005    _validation = {
21006        'name': {'readonly': True},
21007        'type': {'readonly': True},
21008        'etag': {'readonly': True},
21009        'provisioning_state': {'readonly': True},
21010        'p2_s_vpn_gateways': {'readonly': True},
21011        'etag_properties_etag': {'readonly': True},
21012    }
21013
21014    _attribute_map = {
21015        'id': {'key': 'id', 'type': 'str'},
21016        'name': {'key': 'name', 'type': 'str'},
21017        'type': {'key': 'type', 'type': 'str'},
21018        'location': {'key': 'location', 'type': 'str'},
21019        'tags': {'key': 'tags', 'type': '{str}'},
21020        'etag': {'key': 'etag', 'type': 'str'},
21021        'name_properties_name': {'key': 'properties.name', 'type': 'str'},
21022        'vpn_protocols': {'key': 'properties.vpnProtocols', 'type': '[str]'},
21023        'vpn_authentication_types': {'key': 'properties.vpnAuthenticationTypes', 'type': '[str]'},
21024        'vpn_client_root_certificates': {'key': 'properties.vpnClientRootCertificates', 'type': '[VpnServerConfigVpnClientRootCertificate]'},
21025        'vpn_client_revoked_certificates': {'key': 'properties.vpnClientRevokedCertificates', 'type': '[VpnServerConfigVpnClientRevokedCertificate]'},
21026        'radius_server_root_certificates': {'key': 'properties.radiusServerRootCertificates', 'type': '[VpnServerConfigRadiusServerRootCertificate]'},
21027        'radius_client_root_certificates': {'key': 'properties.radiusClientRootCertificates', 'type': '[VpnServerConfigRadiusClientRootCertificate]'},
21028        'vpn_client_ipsec_policies': {'key': 'properties.vpnClientIpsecPolicies', 'type': '[IpsecPolicy]'},
21029        'radius_server_address': {'key': 'properties.radiusServerAddress', 'type': 'str'},
21030        'radius_server_secret': {'key': 'properties.radiusServerSecret', 'type': 'str'},
21031        'aad_authentication_parameters': {'key': 'properties.aadAuthenticationParameters', 'type': 'AadAuthenticationParameters'},
21032        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
21033        'p2_s_vpn_gateways': {'key': 'properties.p2SVpnGateways', 'type': '[P2SVpnGateway]'},
21034        'etag_properties_etag': {'key': 'properties.etag', 'type': 'str'},
21035    }
21036
21037    def __init__(
21038        self,
21039        *,
21040        id: Optional[str] = None,
21041        location: Optional[str] = None,
21042        tags: Optional[Dict[str, str]] = None,
21043        name_properties_name: Optional[str] = None,
21044        vpn_protocols: Optional[List[Union[str, "VpnGatewayTunnelingProtocol"]]] = None,
21045        vpn_authentication_types: Optional[List[Union[str, "VpnAuthenticationType"]]] = None,
21046        vpn_client_root_certificates: Optional[List["VpnServerConfigVpnClientRootCertificate"]] = None,
21047        vpn_client_revoked_certificates: Optional[List["VpnServerConfigVpnClientRevokedCertificate"]] = None,
21048        radius_server_root_certificates: Optional[List["VpnServerConfigRadiusServerRootCertificate"]] = None,
21049        radius_client_root_certificates: Optional[List["VpnServerConfigRadiusClientRootCertificate"]] = None,
21050        vpn_client_ipsec_policies: Optional[List["IpsecPolicy"]] = None,
21051        radius_server_address: Optional[str] = None,
21052        radius_server_secret: Optional[str] = None,
21053        aad_authentication_parameters: Optional["AadAuthenticationParameters"] = None,
21054        **kwargs
21055    ):
21056        super(VpnServerConfiguration, self).__init__(id=id, location=location, tags=tags, **kwargs)
21057        self.etag = None
21058        self.name_properties_name = name_properties_name
21059        self.vpn_protocols = vpn_protocols
21060        self.vpn_authentication_types = vpn_authentication_types
21061        self.vpn_client_root_certificates = vpn_client_root_certificates
21062        self.vpn_client_revoked_certificates = vpn_client_revoked_certificates
21063        self.radius_server_root_certificates = radius_server_root_certificates
21064        self.radius_client_root_certificates = radius_client_root_certificates
21065        self.vpn_client_ipsec_policies = vpn_client_ipsec_policies
21066        self.radius_server_address = radius_server_address
21067        self.radius_server_secret = radius_server_secret
21068        self.aad_authentication_parameters = aad_authentication_parameters
21069        self.provisioning_state = None
21070        self.p2_s_vpn_gateways = None
21071        self.etag_properties_etag = None
21072
21073
21074class VpnServerConfigurationsResponse(msrest.serialization.Model):
21075    """VpnServerConfigurations list associated with VirtualWan Response.
21076
21077    :param vpn_server_configuration_resource_ids: List of VpnServerConfigurations associated with
21078     VirtualWan.
21079    :type vpn_server_configuration_resource_ids: list[str]
21080    """
21081
21082    _attribute_map = {
21083        'vpn_server_configuration_resource_ids': {'key': 'vpnServerConfigurationResourceIds', 'type': '[str]'},
21084    }
21085
21086    def __init__(
21087        self,
21088        *,
21089        vpn_server_configuration_resource_ids: Optional[List[str]] = None,
21090        **kwargs
21091    ):
21092        super(VpnServerConfigurationsResponse, self).__init__(**kwargs)
21093        self.vpn_server_configuration_resource_ids = vpn_server_configuration_resource_ids
21094
21095
21096class VpnServerConfigVpnClientRevokedCertificate(msrest.serialization.Model):
21097    """Properties of the revoked VPN client certificate of VpnServerConfiguration.
21098
21099    :param name: The certificate name.
21100    :type name: str
21101    :param thumbprint: The revoked VPN client certificate thumbprint.
21102    :type thumbprint: str
21103    """
21104
21105    _attribute_map = {
21106        'name': {'key': 'name', 'type': 'str'},
21107        'thumbprint': {'key': 'thumbprint', 'type': 'str'},
21108    }
21109
21110    def __init__(
21111        self,
21112        *,
21113        name: Optional[str] = None,
21114        thumbprint: Optional[str] = None,
21115        **kwargs
21116    ):
21117        super(VpnServerConfigVpnClientRevokedCertificate, self).__init__(**kwargs)
21118        self.name = name
21119        self.thumbprint = thumbprint
21120
21121
21122class VpnServerConfigVpnClientRootCertificate(msrest.serialization.Model):
21123    """Properties of VPN client root certificate of VpnServerConfiguration.
21124
21125    :param name: The certificate name.
21126    :type name: str
21127    :param public_cert_data: The certificate public data.
21128    :type public_cert_data: str
21129    """
21130
21131    _attribute_map = {
21132        'name': {'key': 'name', 'type': 'str'},
21133        'public_cert_data': {'key': 'publicCertData', 'type': 'str'},
21134    }
21135
21136    def __init__(
21137        self,
21138        *,
21139        name: Optional[str] = None,
21140        public_cert_data: Optional[str] = None,
21141        **kwargs
21142    ):
21143        super(VpnServerConfigVpnClientRootCertificate, self).__init__(**kwargs)
21144        self.name = name
21145        self.public_cert_data = public_cert_data
21146
21147
21148class VpnSite(Resource):
21149    """VpnSite Resource.
21150
21151    Variables are only populated by the server, and will be ignored when sending a request.
21152
21153    :param id: Resource ID.
21154    :type id: str
21155    :ivar name: Resource name.
21156    :vartype name: str
21157    :ivar type: Resource type.
21158    :vartype type: str
21159    :param location: Resource location.
21160    :type location: str
21161    :param tags: A set of tags. Resource tags.
21162    :type tags: dict[str, str]
21163    :ivar etag: A unique read-only string that changes whenever the resource is updated.
21164    :vartype etag: str
21165    :param virtual_wan: The VirtualWAN to which the vpnSite belongs.
21166    :type virtual_wan: ~azure.mgmt.network.v2019_12_01.models.SubResource
21167    :param device_properties: The device properties.
21168    :type device_properties: ~azure.mgmt.network.v2019_12_01.models.DeviceProperties
21169    :param ip_address: The ip-address for the vpn-site.
21170    :type ip_address: str
21171    :param site_key: The key for vpn-site that can be used for connections.
21172    :type site_key: str
21173    :param address_space: The AddressSpace that contains an array of IP address ranges.
21174    :type address_space: ~azure.mgmt.network.v2019_12_01.models.AddressSpace
21175    :param bgp_properties: The set of bgp properties.
21176    :type bgp_properties: ~azure.mgmt.network.v2019_12_01.models.BgpSettings
21177    :ivar provisioning_state: The provisioning state of the VPN site resource. Possible values
21178     include: "Succeeded", "Updating", "Deleting", "Failed".
21179    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
21180    :param is_security_site: IsSecuritySite flag.
21181    :type is_security_site: bool
21182    :param vpn_site_links: List of all vpn site links.
21183    :type vpn_site_links: list[~azure.mgmt.network.v2019_12_01.models.VpnSiteLink]
21184    """
21185
21186    _validation = {
21187        'name': {'readonly': True},
21188        'type': {'readonly': True},
21189        'etag': {'readonly': True},
21190        'provisioning_state': {'readonly': True},
21191    }
21192
21193    _attribute_map = {
21194        'id': {'key': 'id', 'type': 'str'},
21195        'name': {'key': 'name', 'type': 'str'},
21196        'type': {'key': 'type', 'type': 'str'},
21197        'location': {'key': 'location', 'type': 'str'},
21198        'tags': {'key': 'tags', 'type': '{str}'},
21199        'etag': {'key': 'etag', 'type': 'str'},
21200        'virtual_wan': {'key': 'properties.virtualWan', 'type': 'SubResource'},
21201        'device_properties': {'key': 'properties.deviceProperties', 'type': 'DeviceProperties'},
21202        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
21203        'site_key': {'key': 'properties.siteKey', 'type': 'str'},
21204        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
21205        'bgp_properties': {'key': 'properties.bgpProperties', 'type': 'BgpSettings'},
21206        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
21207        'is_security_site': {'key': 'properties.isSecuritySite', 'type': 'bool'},
21208        'vpn_site_links': {'key': 'properties.vpnSiteLinks', 'type': '[VpnSiteLink]'},
21209    }
21210
21211    def __init__(
21212        self,
21213        *,
21214        id: Optional[str] = None,
21215        location: Optional[str] = None,
21216        tags: Optional[Dict[str, str]] = None,
21217        virtual_wan: Optional["SubResource"] = None,
21218        device_properties: Optional["DeviceProperties"] = None,
21219        ip_address: Optional[str] = None,
21220        site_key: Optional[str] = None,
21221        address_space: Optional["AddressSpace"] = None,
21222        bgp_properties: Optional["BgpSettings"] = None,
21223        is_security_site: Optional[bool] = None,
21224        vpn_site_links: Optional[List["VpnSiteLink"]] = None,
21225        **kwargs
21226    ):
21227        super(VpnSite, self).__init__(id=id, location=location, tags=tags, **kwargs)
21228        self.etag = None
21229        self.virtual_wan = virtual_wan
21230        self.device_properties = device_properties
21231        self.ip_address = ip_address
21232        self.site_key = site_key
21233        self.address_space = address_space
21234        self.bgp_properties = bgp_properties
21235        self.provisioning_state = None
21236        self.is_security_site = is_security_site
21237        self.vpn_site_links = vpn_site_links
21238
21239
21240class VpnSiteId(msrest.serialization.Model):
21241    """VpnSite Resource.
21242
21243    Variables are only populated by the server, and will be ignored when sending a request.
21244
21245    :ivar vpn_site: The resource-uri of the vpn-site for which config is to be fetched.
21246    :vartype vpn_site: str
21247    """
21248
21249    _validation = {
21250        'vpn_site': {'readonly': True},
21251    }
21252
21253    _attribute_map = {
21254        'vpn_site': {'key': 'vpnSite', 'type': 'str'},
21255    }
21256
21257    def __init__(
21258        self,
21259        **kwargs
21260    ):
21261        super(VpnSiteId, self).__init__(**kwargs)
21262        self.vpn_site = None
21263
21264
21265class VpnSiteLink(SubResource):
21266    """VpnSiteLink Resource.
21267
21268    Variables are only populated by the server, and will be ignored when sending a request.
21269
21270    :param id: Resource ID.
21271    :type id: str
21272    :ivar etag: A unique read-only string that changes whenever the resource is updated.
21273    :vartype etag: str
21274    :param name: The name of the resource that is unique within a resource group. This name can be
21275     used to access the resource.
21276    :type name: str
21277    :ivar type: Resource type.
21278    :vartype type: str
21279    :param link_properties: The link provider properties.
21280    :type link_properties: ~azure.mgmt.network.v2019_12_01.models.VpnLinkProviderProperties
21281    :param ip_address: The ip-address for the vpn-site-link.
21282    :type ip_address: str
21283    :param fqdn: FQDN of vpn-site-link.
21284    :type fqdn: str
21285    :param bgp_properties: The set of bgp properties.
21286    :type bgp_properties: ~azure.mgmt.network.v2019_12_01.models.VpnLinkBgpSettings
21287    :ivar provisioning_state: The provisioning state of the VPN site link resource. Possible values
21288     include: "Succeeded", "Updating", "Deleting", "Failed".
21289    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
21290    """
21291
21292    _validation = {
21293        'etag': {'readonly': True},
21294        'type': {'readonly': True},
21295        'provisioning_state': {'readonly': True},
21296    }
21297
21298    _attribute_map = {
21299        'id': {'key': 'id', 'type': 'str'},
21300        'etag': {'key': 'etag', 'type': 'str'},
21301        'name': {'key': 'name', 'type': 'str'},
21302        'type': {'key': 'type', 'type': 'str'},
21303        'link_properties': {'key': 'properties.linkProperties', 'type': 'VpnLinkProviderProperties'},
21304        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
21305        'fqdn': {'key': 'properties.fqdn', 'type': 'str'},
21306        'bgp_properties': {'key': 'properties.bgpProperties', 'type': 'VpnLinkBgpSettings'},
21307        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
21308    }
21309
21310    def __init__(
21311        self,
21312        *,
21313        id: Optional[str] = None,
21314        name: Optional[str] = None,
21315        link_properties: Optional["VpnLinkProviderProperties"] = None,
21316        ip_address: Optional[str] = None,
21317        fqdn: Optional[str] = None,
21318        bgp_properties: Optional["VpnLinkBgpSettings"] = None,
21319        **kwargs
21320    ):
21321        super(VpnSiteLink, self).__init__(id=id, **kwargs)
21322        self.etag = None
21323        self.name = name
21324        self.type = None
21325        self.link_properties = link_properties
21326        self.ip_address = ip_address
21327        self.fqdn = fqdn
21328        self.bgp_properties = bgp_properties
21329        self.provisioning_state = None
21330
21331
21332class VpnSiteLinkConnection(SubResource):
21333    """VpnSiteLinkConnection Resource.
21334
21335    Variables are only populated by the server, and will be ignored when sending a request.
21336
21337    :param id: Resource ID.
21338    :type id: str
21339    :param name: The name of the resource that is unique within a resource group. This name can be
21340     used to access the resource.
21341    :type name: str
21342    :ivar etag: A unique read-only string that changes whenever the resource is updated.
21343    :vartype etag: str
21344    :ivar type: Resource type.
21345    :vartype type: str
21346    :param vpn_site_link: Id of the connected vpn site link.
21347    :type vpn_site_link: ~azure.mgmt.network.v2019_12_01.models.SubResource
21348    :param routing_weight: Routing weight for vpn connection.
21349    :type routing_weight: int
21350    :ivar connection_status: The connection status. Possible values include: "Unknown",
21351     "Connecting", "Connected", "NotConnected".
21352    :vartype connection_status: str or ~azure.mgmt.network.v2019_12_01.models.VpnConnectionStatus
21353    :param vpn_connection_protocol_type: Connection protocol used for this connection. Possible
21354     values include: "IKEv2", "IKEv1".
21355    :type vpn_connection_protocol_type: str or
21356     ~azure.mgmt.network.v2019_12_01.models.VirtualNetworkGatewayConnectionProtocol
21357    :ivar ingress_bytes_transferred: Ingress bytes transferred.
21358    :vartype ingress_bytes_transferred: long
21359    :ivar egress_bytes_transferred: Egress bytes transferred.
21360    :vartype egress_bytes_transferred: long
21361    :param connection_bandwidth: Expected bandwidth in MBPS.
21362    :type connection_bandwidth: int
21363    :param shared_key: SharedKey for the vpn connection.
21364    :type shared_key: str
21365    :param enable_bgp: EnableBgp flag.
21366    :type enable_bgp: bool
21367    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
21368    :type use_policy_based_traffic_selectors: bool
21369    :param ipsec_policies: The IPSec Policies to be considered by this connection.
21370    :type ipsec_policies: list[~azure.mgmt.network.v2019_12_01.models.IpsecPolicy]
21371    :param enable_rate_limiting: EnableBgp flag.
21372    :type enable_rate_limiting: bool
21373    :param use_local_azure_ip_address: Use local azure ip to initiate connection.
21374    :type use_local_azure_ip_address: bool
21375    :ivar provisioning_state: The provisioning state of the VPN site link connection resource.
21376     Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
21377    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
21378    """
21379
21380    _validation = {
21381        'etag': {'readonly': True},
21382        'type': {'readonly': True},
21383        'connection_status': {'readonly': True},
21384        'ingress_bytes_transferred': {'readonly': True},
21385        'egress_bytes_transferred': {'readonly': True},
21386        'provisioning_state': {'readonly': True},
21387    }
21388
21389    _attribute_map = {
21390        'id': {'key': 'id', 'type': 'str'},
21391        'name': {'key': 'name', 'type': 'str'},
21392        'etag': {'key': 'etag', 'type': 'str'},
21393        'type': {'key': 'type', 'type': 'str'},
21394        'vpn_site_link': {'key': 'properties.vpnSiteLink', 'type': 'SubResource'},
21395        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
21396        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
21397        'vpn_connection_protocol_type': {'key': 'properties.vpnConnectionProtocolType', 'type': 'str'},
21398        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
21399        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
21400        'connection_bandwidth': {'key': 'properties.connectionBandwidth', 'type': 'int'},
21401        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
21402        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
21403        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
21404        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
21405        'enable_rate_limiting': {'key': 'properties.enableRateLimiting', 'type': 'bool'},
21406        'use_local_azure_ip_address': {'key': 'properties.useLocalAzureIpAddress', 'type': 'bool'},
21407        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
21408    }
21409
21410    def __init__(
21411        self,
21412        *,
21413        id: Optional[str] = None,
21414        name: Optional[str] = None,
21415        vpn_site_link: Optional["SubResource"] = None,
21416        routing_weight: Optional[int] = None,
21417        vpn_connection_protocol_type: Optional[Union[str, "VirtualNetworkGatewayConnectionProtocol"]] = None,
21418        connection_bandwidth: Optional[int] = None,
21419        shared_key: Optional[str] = None,
21420        enable_bgp: Optional[bool] = None,
21421        use_policy_based_traffic_selectors: Optional[bool] = None,
21422        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
21423        enable_rate_limiting: Optional[bool] = None,
21424        use_local_azure_ip_address: Optional[bool] = None,
21425        **kwargs
21426    ):
21427        super(VpnSiteLinkConnection, self).__init__(id=id, **kwargs)
21428        self.name = name
21429        self.etag = None
21430        self.type = None
21431        self.vpn_site_link = vpn_site_link
21432        self.routing_weight = routing_weight
21433        self.connection_status = None
21434        self.vpn_connection_protocol_type = vpn_connection_protocol_type
21435        self.ingress_bytes_transferred = None
21436        self.egress_bytes_transferred = None
21437        self.connection_bandwidth = connection_bandwidth
21438        self.shared_key = shared_key
21439        self.enable_bgp = enable_bgp
21440        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
21441        self.ipsec_policies = ipsec_policies
21442        self.enable_rate_limiting = enable_rate_limiting
21443        self.use_local_azure_ip_address = use_local_azure_ip_address
21444        self.provisioning_state = None
21445
21446
21447class WebApplicationFirewallCustomRule(msrest.serialization.Model):
21448    """Defines contents of a web application rule.
21449
21450    Variables are only populated by the server, and will be ignored when sending a request.
21451
21452    All required parameters must be populated in order to send to Azure.
21453
21454    :param name: The name of the resource that is unique within a policy. This name can be used to
21455     access the resource.
21456    :type name: str
21457    :ivar etag: A unique read-only string that changes whenever the resource is updated.
21458    :vartype etag: str
21459    :param priority: Required. Priority of the rule. Rules with a lower value will be evaluated
21460     before rules with a higher value.
21461    :type priority: int
21462    :param rule_type: Required. The rule type. Possible values include: "MatchRule", "Invalid".
21463    :type rule_type: str or ~azure.mgmt.network.v2019_12_01.models.WebApplicationFirewallRuleType
21464    :param match_conditions: Required. List of match conditions.
21465    :type match_conditions: list[~azure.mgmt.network.v2019_12_01.models.MatchCondition]
21466    :param action: Required. Type of Actions. Possible values include: "Allow", "Block", "Log".
21467    :type action: str or ~azure.mgmt.network.v2019_12_01.models.WebApplicationFirewallAction
21468    """
21469
21470    _validation = {
21471        'name': {'max_length': 128, 'min_length': 0},
21472        'etag': {'readonly': True},
21473        'priority': {'required': True},
21474        'rule_type': {'required': True},
21475        'match_conditions': {'required': True},
21476        'action': {'required': True},
21477    }
21478
21479    _attribute_map = {
21480        'name': {'key': 'name', 'type': 'str'},
21481        'etag': {'key': 'etag', 'type': 'str'},
21482        'priority': {'key': 'priority', 'type': 'int'},
21483        'rule_type': {'key': 'ruleType', 'type': 'str'},
21484        'match_conditions': {'key': 'matchConditions', 'type': '[MatchCondition]'},
21485        'action': {'key': 'action', 'type': 'str'},
21486    }
21487
21488    def __init__(
21489        self,
21490        *,
21491        priority: int,
21492        rule_type: Union[str, "WebApplicationFirewallRuleType"],
21493        match_conditions: List["MatchCondition"],
21494        action: Union[str, "WebApplicationFirewallAction"],
21495        name: Optional[str] = None,
21496        **kwargs
21497    ):
21498        super(WebApplicationFirewallCustomRule, self).__init__(**kwargs)
21499        self.name = name
21500        self.etag = None
21501        self.priority = priority
21502        self.rule_type = rule_type
21503        self.match_conditions = match_conditions
21504        self.action = action
21505
21506
21507class WebApplicationFirewallPolicy(Resource):
21508    """Defines web application firewall policy.
21509
21510    Variables are only populated by the server, and will be ignored when sending a request.
21511
21512    :param id: Resource ID.
21513    :type id: str
21514    :ivar name: Resource name.
21515    :vartype name: str
21516    :ivar type: Resource type.
21517    :vartype type: str
21518    :param location: Resource location.
21519    :type location: str
21520    :param tags: A set of tags. Resource tags.
21521    :type tags: dict[str, str]
21522    :ivar etag: A unique read-only string that changes whenever the resource is updated.
21523    :vartype etag: str
21524    :param policy_settings: The PolicySettings for policy.
21525    :type policy_settings: ~azure.mgmt.network.v2019_12_01.models.PolicySettings
21526    :param custom_rules: The custom rules inside the policy.
21527    :type custom_rules:
21528     list[~azure.mgmt.network.v2019_12_01.models.WebApplicationFirewallCustomRule]
21529    :ivar application_gateways: A collection of references to application gateways.
21530    :vartype application_gateways: list[~azure.mgmt.network.v2019_12_01.models.ApplicationGateway]
21531    :ivar provisioning_state: The provisioning state of the web application firewall policy
21532     resource. Possible values include: "Succeeded", "Updating", "Deleting", "Failed".
21533    :vartype provisioning_state: str or ~azure.mgmt.network.v2019_12_01.models.ProvisioningState
21534    :ivar resource_state: Resource status of the policy. Possible values include: "Creating",
21535     "Enabling", "Enabled", "Disabling", "Disabled", "Deleting".
21536    :vartype resource_state: str or
21537     ~azure.mgmt.network.v2019_12_01.models.WebApplicationFirewallPolicyResourceState
21538    :param managed_rules: Describes the managedRules structure.
21539    :type managed_rules: ~azure.mgmt.network.v2019_12_01.models.ManagedRulesDefinition
21540    :ivar http_listeners: A collection of references to application gateway http listeners.
21541    :vartype http_listeners: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
21542    :ivar path_based_rules: A collection of references to application gateway path rules.
21543    :vartype path_based_rules: list[~azure.mgmt.network.v2019_12_01.models.SubResource]
21544    """
21545
21546    _validation = {
21547        'name': {'readonly': True},
21548        'type': {'readonly': True},
21549        'etag': {'readonly': True},
21550        'application_gateways': {'readonly': True},
21551        'provisioning_state': {'readonly': True},
21552        'resource_state': {'readonly': True},
21553        'http_listeners': {'readonly': True},
21554        'path_based_rules': {'readonly': True},
21555    }
21556
21557    _attribute_map = {
21558        'id': {'key': 'id', 'type': 'str'},
21559        'name': {'key': 'name', 'type': 'str'},
21560        'type': {'key': 'type', 'type': 'str'},
21561        'location': {'key': 'location', 'type': 'str'},
21562        'tags': {'key': 'tags', 'type': '{str}'},
21563        'etag': {'key': 'etag', 'type': 'str'},
21564        'policy_settings': {'key': 'properties.policySettings', 'type': 'PolicySettings'},
21565        'custom_rules': {'key': 'properties.customRules', 'type': '[WebApplicationFirewallCustomRule]'},
21566        'application_gateways': {'key': 'properties.applicationGateways', 'type': '[ApplicationGateway]'},
21567        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
21568        'resource_state': {'key': 'properties.resourceState', 'type': 'str'},
21569        'managed_rules': {'key': 'properties.managedRules', 'type': 'ManagedRulesDefinition'},
21570        'http_listeners': {'key': 'properties.httpListeners', 'type': '[SubResource]'},
21571        'path_based_rules': {'key': 'properties.pathBasedRules', 'type': '[SubResource]'},
21572    }
21573
21574    def __init__(
21575        self,
21576        *,
21577        id: Optional[str] = None,
21578        location: Optional[str] = None,
21579        tags: Optional[Dict[str, str]] = None,
21580        policy_settings: Optional["PolicySettings"] = None,
21581        custom_rules: Optional[List["WebApplicationFirewallCustomRule"]] = None,
21582        managed_rules: Optional["ManagedRulesDefinition"] = None,
21583        **kwargs
21584    ):
21585        super(WebApplicationFirewallPolicy, self).__init__(id=id, location=location, tags=tags, **kwargs)
21586        self.etag = None
21587        self.policy_settings = policy_settings
21588        self.custom_rules = custom_rules
21589        self.application_gateways = None
21590        self.provisioning_state = None
21591        self.resource_state = None
21592        self.managed_rules = managed_rules
21593        self.http_listeners = None
21594        self.path_based_rules = None
21595
21596
21597class WebApplicationFirewallPolicyListResult(msrest.serialization.Model):
21598    """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.
21599
21600    Variables are only populated by the server, and will be ignored when sending a request.
21601
21602    :ivar value: List of WebApplicationFirewallPolicies within a resource group.
21603    :vartype value: list[~azure.mgmt.network.v2019_12_01.models.WebApplicationFirewallPolicy]
21604    :ivar next_link: URL to get the next set of WebApplicationFirewallPolicy objects if there are
21605     any.
21606    :vartype next_link: str
21607    """
21608
21609    _validation = {
21610        'value': {'readonly': True},
21611        'next_link': {'readonly': True},
21612    }
21613
21614    _attribute_map = {
21615        'value': {'key': 'value', 'type': '[WebApplicationFirewallPolicy]'},
21616        'next_link': {'key': 'nextLink', 'type': 'str'},
21617    }
21618
21619    def __init__(
21620        self,
21621        **kwargs
21622    ):
21623        super(WebApplicationFirewallPolicyListResult, self).__init__(**kwargs)
21624        self.value = None
21625        self.next_link = None
21626