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 AddressSpace(msrest.serialization.Model):
19    """AddressSpace contains an array of IP address ranges that can be used by subnets of the virtual network.
20
21    :param address_prefixes: A list of address blocks reserved for this virtual network in CIDR
22     notation.
23    :type address_prefixes: list[str]
24    """
25
26    _attribute_map = {
27        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
28    }
29
30    def __init__(
31        self,
32        *,
33        address_prefixes: Optional[List[str]] = None,
34        **kwargs
35    ):
36        super(AddressSpace, self).__init__(**kwargs)
37        self.address_prefixes = address_prefixes
38
39
40class Resource(msrest.serialization.Model):
41    """Common resource representation.
42
43    Variables are only populated by the server, and will be ignored when sending a request.
44
45    :param id: Resource ID.
46    :type id: str
47    :ivar name: Resource name.
48    :vartype name: str
49    :ivar type: Resource type.
50    :vartype type: str
51    :param location: Resource location.
52    :type location: str
53    :param tags: A set of tags. Resource tags.
54    :type tags: dict[str, str]
55    """
56
57    _validation = {
58        'name': {'readonly': True},
59        'type': {'readonly': True},
60    }
61
62    _attribute_map = {
63        'id': {'key': 'id', 'type': 'str'},
64        'name': {'key': 'name', 'type': 'str'},
65        'type': {'key': 'type', 'type': 'str'},
66        'location': {'key': 'location', 'type': 'str'},
67        'tags': {'key': 'tags', 'type': '{str}'},
68    }
69
70    def __init__(
71        self,
72        *,
73        id: Optional[str] = None,
74        location: Optional[str] = None,
75        tags: Optional[Dict[str, str]] = None,
76        **kwargs
77    ):
78        super(Resource, self).__init__(**kwargs)
79        self.id = id
80        self.name = None
81        self.type = None
82        self.location = location
83        self.tags = tags
84
85
86class ApplicationGateway(Resource):
87    """Application gateway resource.
88
89    Variables are only populated by the server, and will be ignored when sending a request.
90
91    :param id: Resource ID.
92    :type id: str
93    :ivar name: Resource name.
94    :vartype name: str
95    :ivar type: Resource type.
96    :vartype type: str
97    :param location: Resource location.
98    :type location: str
99    :param tags: A set of tags. Resource tags.
100    :type tags: dict[str, str]
101    :param etag: A unique read-only string that changes whenever the resource is updated.
102    :type etag: str
103    :param zones: A list of availability zones denoting where the resource needs to come from.
104    :type zones: list[str]
105    :param sku: SKU of the application gateway resource.
106    :type sku: ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySku
107    :param ssl_policy: SSL policy of the application gateway resource.
108    :type ssl_policy: ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslPolicy
109    :ivar operational_state: Operational state of the application gateway resource. Possible values
110     include: "Stopped", "Starting", "Running", "Stopping".
111    :vartype operational_state: str or
112     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayOperationalState
113    :param gateway_ip_configurations: Subnets of application the gateway resource.
114    :type gateway_ip_configurations:
115     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayIPConfiguration]
116    :param authentication_certificates: Authentication certificates of the application gateway
117     resource.
118    :type authentication_certificates:
119     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayAuthenticationCertificate]
120    :param ssl_certificates: SSL certificates of the application gateway resource.
121    :type ssl_certificates:
122     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslCertificate]
123    :param frontend_ip_configurations: Frontend IP addresses of the application gateway resource.
124    :type frontend_ip_configurations:
125     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayFrontendIPConfiguration]
126    :param frontend_ports: Frontend ports of the application gateway resource.
127    :type frontend_ports:
128     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayFrontendPort]
129    :param probes: Probes of the application gateway resource.
130    :type probes: list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayProbe]
131    :param backend_address_pools: Backend address pool of the application gateway resource.
132    :type backend_address_pools:
133     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayBackendAddressPool]
134    :param backend_http_settings_collection: Backend http settings of the application gateway
135     resource.
136    :type backend_http_settings_collection:
137     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayBackendHttpSettings]
138    :param http_listeners: Http listeners of the application gateway resource.
139    :type http_listeners:
140     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayHttpListener]
141    :param url_path_maps: URL path map of the application gateway resource.
142    :type url_path_maps: list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayUrlPathMap]
143    :param request_routing_rules: Request routing rules of the application gateway resource.
144    :type request_routing_rules:
145     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayRequestRoutingRule]
146    :param redirect_configurations: Redirect configurations of the application gateway resource.
147    :type redirect_configurations:
148     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayRedirectConfiguration]
149    :param web_application_firewall_configuration: Web application firewall configuration.
150    :type web_application_firewall_configuration:
151     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayWebApplicationFirewallConfiguration
152    :param enable_http2: Whether HTTP2 is enabled on the application gateway resource.
153    :type enable_http2: bool
154    :param enable_fips: Whether FIPS is enabled on the application gateway resource.
155    :type enable_fips: bool
156    :param autoscale_configuration: Autoscale Configuration.
157    :type autoscale_configuration:
158     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayAutoscaleConfiguration
159    :param resource_guid: Resource GUID property of the application gateway resource.
160    :type resource_guid: str
161    :param provisioning_state: Provisioning state of the application gateway resource. Possible
162     values are: 'Updating', 'Deleting', and 'Failed'.
163    :type provisioning_state: str
164    """
165
166    _validation = {
167        'name': {'readonly': True},
168        'type': {'readonly': True},
169        'operational_state': {'readonly': True},
170    }
171
172    _attribute_map = {
173        'id': {'key': 'id', 'type': 'str'},
174        'name': {'key': 'name', 'type': 'str'},
175        'type': {'key': 'type', 'type': 'str'},
176        'location': {'key': 'location', 'type': 'str'},
177        'tags': {'key': 'tags', 'type': '{str}'},
178        'etag': {'key': 'etag', 'type': 'str'},
179        'zones': {'key': 'zones', 'type': '[str]'},
180        'sku': {'key': 'properties.sku', 'type': 'ApplicationGatewaySku'},
181        'ssl_policy': {'key': 'properties.sslPolicy', 'type': 'ApplicationGatewaySslPolicy'},
182        'operational_state': {'key': 'properties.operationalState', 'type': 'str'},
183        'gateway_ip_configurations': {'key': 'properties.gatewayIPConfigurations', 'type': '[ApplicationGatewayIPConfiguration]'},
184        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[ApplicationGatewayAuthenticationCertificate]'},
185        'ssl_certificates': {'key': 'properties.sslCertificates', 'type': '[ApplicationGatewaySslCertificate]'},
186        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[ApplicationGatewayFrontendIPConfiguration]'},
187        'frontend_ports': {'key': 'properties.frontendPorts', 'type': '[ApplicationGatewayFrontendPort]'},
188        'probes': {'key': 'properties.probes', 'type': '[ApplicationGatewayProbe]'},
189        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
190        'backend_http_settings_collection': {'key': 'properties.backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHttpSettings]'},
191        'http_listeners': {'key': 'properties.httpListeners', 'type': '[ApplicationGatewayHttpListener]'},
192        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[ApplicationGatewayUrlPathMap]'},
193        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[ApplicationGatewayRequestRoutingRule]'},
194        'redirect_configurations': {'key': 'properties.redirectConfigurations', 'type': '[ApplicationGatewayRedirectConfiguration]'},
195        'web_application_firewall_configuration': {'key': 'properties.webApplicationFirewallConfiguration', 'type': 'ApplicationGatewayWebApplicationFirewallConfiguration'},
196        'enable_http2': {'key': 'properties.enableHttp2', 'type': 'bool'},
197        'enable_fips': {'key': 'properties.enableFips', 'type': 'bool'},
198        'autoscale_configuration': {'key': 'properties.autoscaleConfiguration', 'type': 'ApplicationGatewayAutoscaleConfiguration'},
199        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
200        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
201    }
202
203    def __init__(
204        self,
205        *,
206        id: Optional[str] = None,
207        location: Optional[str] = None,
208        tags: Optional[Dict[str, str]] = None,
209        etag: Optional[str] = None,
210        zones: Optional[List[str]] = None,
211        sku: Optional["ApplicationGatewaySku"] = None,
212        ssl_policy: Optional["ApplicationGatewaySslPolicy"] = None,
213        gateway_ip_configurations: Optional[List["ApplicationGatewayIPConfiguration"]] = None,
214        authentication_certificates: Optional[List["ApplicationGatewayAuthenticationCertificate"]] = None,
215        ssl_certificates: Optional[List["ApplicationGatewaySslCertificate"]] = None,
216        frontend_ip_configurations: Optional[List["ApplicationGatewayFrontendIPConfiguration"]] = None,
217        frontend_ports: Optional[List["ApplicationGatewayFrontendPort"]] = None,
218        probes: Optional[List["ApplicationGatewayProbe"]] = None,
219        backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None,
220        backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHttpSettings"]] = None,
221        http_listeners: Optional[List["ApplicationGatewayHttpListener"]] = None,
222        url_path_maps: Optional[List["ApplicationGatewayUrlPathMap"]] = None,
223        request_routing_rules: Optional[List["ApplicationGatewayRequestRoutingRule"]] = None,
224        redirect_configurations: Optional[List["ApplicationGatewayRedirectConfiguration"]] = None,
225        web_application_firewall_configuration: Optional["ApplicationGatewayWebApplicationFirewallConfiguration"] = None,
226        enable_http2: Optional[bool] = None,
227        enable_fips: Optional[bool] = None,
228        autoscale_configuration: Optional["ApplicationGatewayAutoscaleConfiguration"] = None,
229        resource_guid: Optional[str] = None,
230        provisioning_state: Optional[str] = None,
231        **kwargs
232    ):
233        super(ApplicationGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
234        self.etag = etag
235        self.zones = zones
236        self.sku = sku
237        self.ssl_policy = ssl_policy
238        self.operational_state = None
239        self.gateway_ip_configurations = gateway_ip_configurations
240        self.authentication_certificates = authentication_certificates
241        self.ssl_certificates = ssl_certificates
242        self.frontend_ip_configurations = frontend_ip_configurations
243        self.frontend_ports = frontend_ports
244        self.probes = probes
245        self.backend_address_pools = backend_address_pools
246        self.backend_http_settings_collection = backend_http_settings_collection
247        self.http_listeners = http_listeners
248        self.url_path_maps = url_path_maps
249        self.request_routing_rules = request_routing_rules
250        self.redirect_configurations = redirect_configurations
251        self.web_application_firewall_configuration = web_application_firewall_configuration
252        self.enable_http2 = enable_http2
253        self.enable_fips = enable_fips
254        self.autoscale_configuration = autoscale_configuration
255        self.resource_guid = resource_guid
256        self.provisioning_state = provisioning_state
257
258
259class SubResource(msrest.serialization.Model):
260    """Reference to another subresource.
261
262    :param id: Resource ID.
263    :type id: str
264    """
265
266    _attribute_map = {
267        'id': {'key': 'id', 'type': 'str'},
268    }
269
270    def __init__(
271        self,
272        *,
273        id: Optional[str] = None,
274        **kwargs
275    ):
276        super(SubResource, self).__init__(**kwargs)
277        self.id = id
278
279
280class ApplicationGatewayAuthenticationCertificate(SubResource):
281    """Authentication certificates of an application gateway.
282
283    :param id: Resource ID.
284    :type id: str
285    :param name: Name of the authentication certificate that is unique within an Application
286     Gateway.
287    :type name: str
288    :param etag: A unique read-only string that changes whenever the resource is updated.
289    :type etag: str
290    :param type: Type of the resource.
291    :type type: str
292    :param data: Certificate public data.
293    :type data: str
294    :param provisioning_state: Provisioning state of the authentication certificate resource.
295     Possible values are: 'Updating', 'Deleting', and 'Failed'.
296    :type provisioning_state: str
297    """
298
299    _attribute_map = {
300        'id': {'key': 'id', 'type': 'str'},
301        'name': {'key': 'name', 'type': 'str'},
302        'etag': {'key': 'etag', 'type': 'str'},
303        'type': {'key': 'type', 'type': 'str'},
304        'data': {'key': 'properties.data', 'type': 'str'},
305        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
306    }
307
308    def __init__(
309        self,
310        *,
311        id: Optional[str] = None,
312        name: Optional[str] = None,
313        etag: Optional[str] = None,
314        type: Optional[str] = None,
315        data: Optional[str] = None,
316        provisioning_state: Optional[str] = None,
317        **kwargs
318    ):
319        super(ApplicationGatewayAuthenticationCertificate, self).__init__(id=id, **kwargs)
320        self.name = name
321        self.etag = etag
322        self.type = type
323        self.data = data
324        self.provisioning_state = provisioning_state
325
326
327class ApplicationGatewayAutoscaleBounds(msrest.serialization.Model):
328    """Application Gateway autoscale bounds on number of Application Gateway instance.
329
330    All required parameters must be populated in order to send to Azure.
331
332    :param min: Required. Lower bound on number of Application Gateway instances.
333    :type min: int
334    :param max: Required. Upper bound on number of Application Gateway instances.
335    :type max: int
336    """
337
338    _validation = {
339        'min': {'required': True},
340        'max': {'required': True},
341    }
342
343    _attribute_map = {
344        'min': {'key': 'min', 'type': 'int'},
345        'max': {'key': 'max', 'type': 'int'},
346    }
347
348    def __init__(
349        self,
350        *,
351        min: int,
352        max: int,
353        **kwargs
354    ):
355        super(ApplicationGatewayAutoscaleBounds, self).__init__(**kwargs)
356        self.min = min
357        self.max = max
358
359
360class ApplicationGatewayAutoscaleConfiguration(msrest.serialization.Model):
361    """Application Gateway autoscale configuration.
362
363    All required parameters must be populated in order to send to Azure.
364
365    :param bounds: Required. Autoscale bounds.
366    :type bounds: ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayAutoscaleBounds
367    """
368
369    _validation = {
370        'bounds': {'required': True},
371    }
372
373    _attribute_map = {
374        'bounds': {'key': 'bounds', 'type': 'ApplicationGatewayAutoscaleBounds'},
375    }
376
377    def __init__(
378        self,
379        *,
380        bounds: "ApplicationGatewayAutoscaleBounds",
381        **kwargs
382    ):
383        super(ApplicationGatewayAutoscaleConfiguration, self).__init__(**kwargs)
384        self.bounds = bounds
385
386
387class ApplicationGatewayAvailableSslOptions(Resource):
388    """Response for ApplicationGatewayAvailableSslOptions API service call.
389
390    Variables are only populated by the server, and will be ignored when sending a request.
391
392    :param id: Resource ID.
393    :type id: str
394    :ivar name: Resource name.
395    :vartype name: str
396    :ivar type: Resource type.
397    :vartype type: str
398    :param location: Resource location.
399    :type location: str
400    :param tags: A set of tags. Resource tags.
401    :type tags: dict[str, str]
402    :param predefined_policies: List of available Ssl predefined policy.
403    :type predefined_policies: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
404    :param default_policy: Name of the Ssl predefined policy applied by default to application
405     gateway. Possible values include: "AppGwSslPolicy20150501", "AppGwSslPolicy20170401",
406     "AppGwSslPolicy20170401S".
407    :type default_policy: str or
408     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslPolicyName
409    :param available_cipher_suites: List of available Ssl cipher suites.
410    :type available_cipher_suites: list[str or
411     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslCipherSuite]
412    :param available_protocols: List of available Ssl protocols.
413    :type available_protocols: list[str or
414     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslProtocol]
415    """
416
417    _validation = {
418        'name': {'readonly': True},
419        'type': {'readonly': True},
420    }
421
422    _attribute_map = {
423        'id': {'key': 'id', 'type': 'str'},
424        'name': {'key': 'name', 'type': 'str'},
425        'type': {'key': 'type', 'type': 'str'},
426        'location': {'key': 'location', 'type': 'str'},
427        'tags': {'key': 'tags', 'type': '{str}'},
428        'predefined_policies': {'key': 'properties.predefinedPolicies', 'type': '[SubResource]'},
429        'default_policy': {'key': 'properties.defaultPolicy', 'type': 'str'},
430        'available_cipher_suites': {'key': 'properties.availableCipherSuites', 'type': '[str]'},
431        'available_protocols': {'key': 'properties.availableProtocols', 'type': '[str]'},
432    }
433
434    def __init__(
435        self,
436        *,
437        id: Optional[str] = None,
438        location: Optional[str] = None,
439        tags: Optional[Dict[str, str]] = None,
440        predefined_policies: Optional[List["SubResource"]] = None,
441        default_policy: Optional[Union[str, "ApplicationGatewaySslPolicyName"]] = None,
442        available_cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
443        available_protocols: Optional[List[Union[str, "ApplicationGatewaySslProtocol"]]] = None,
444        **kwargs
445    ):
446        super(ApplicationGatewayAvailableSslOptions, self).__init__(id=id, location=location, tags=tags, **kwargs)
447        self.predefined_policies = predefined_policies
448        self.default_policy = default_policy
449        self.available_cipher_suites = available_cipher_suites
450        self.available_protocols = available_protocols
451
452
453class ApplicationGatewayAvailableSslPredefinedPolicies(msrest.serialization.Model):
454    """Response for ApplicationGatewayAvailableSslOptions API service call.
455
456    :param value: List of available Ssl predefined policy.
457    :type value: list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslPredefinedPolicy]
458    :param next_link: URL to get the next set of results.
459    :type next_link: str
460    """
461
462    _attribute_map = {
463        'value': {'key': 'value', 'type': '[ApplicationGatewaySslPredefinedPolicy]'},
464        'next_link': {'key': 'nextLink', 'type': 'str'},
465    }
466
467    def __init__(
468        self,
469        *,
470        value: Optional[List["ApplicationGatewaySslPredefinedPolicy"]] = None,
471        next_link: Optional[str] = None,
472        **kwargs
473    ):
474        super(ApplicationGatewayAvailableSslPredefinedPolicies, self).__init__(**kwargs)
475        self.value = value
476        self.next_link = next_link
477
478
479class ApplicationGatewayAvailableWafRuleSetsResult(msrest.serialization.Model):
480    """Response for ApplicationGatewayAvailableWafRuleSets API service call.
481
482    :param value: The list of application gateway rule sets.
483    :type value: list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayFirewallRuleSet]
484    """
485
486    _attribute_map = {
487        'value': {'key': 'value', 'type': '[ApplicationGatewayFirewallRuleSet]'},
488    }
489
490    def __init__(
491        self,
492        *,
493        value: Optional[List["ApplicationGatewayFirewallRuleSet"]] = None,
494        **kwargs
495    ):
496        super(ApplicationGatewayAvailableWafRuleSetsResult, self).__init__(**kwargs)
497        self.value = value
498
499
500class ApplicationGatewayBackendAddress(msrest.serialization.Model):
501    """Backend address of an application gateway.
502
503    :param fqdn: Fully qualified domain name (FQDN).
504    :type fqdn: str
505    :param ip_address: IP address.
506    :type ip_address: str
507    """
508
509    _attribute_map = {
510        'fqdn': {'key': 'fqdn', 'type': 'str'},
511        'ip_address': {'key': 'ipAddress', 'type': 'str'},
512    }
513
514    def __init__(
515        self,
516        *,
517        fqdn: Optional[str] = None,
518        ip_address: Optional[str] = None,
519        **kwargs
520    ):
521        super(ApplicationGatewayBackendAddress, self).__init__(**kwargs)
522        self.fqdn = fqdn
523        self.ip_address = ip_address
524
525
526class ApplicationGatewayBackendAddressPool(SubResource):
527    """Backend Address Pool of an application gateway.
528
529    :param id: Resource ID.
530    :type id: str
531    :param name: Name of the backend address pool that is unique within an Application Gateway.
532    :type name: str
533    :param etag: A unique read-only string that changes whenever the resource is updated.
534    :type etag: str
535    :param type: Type of the resource.
536    :type type: str
537    :param backend_ip_configurations: Collection of references to IPs defined in network
538     interfaces.
539    :type backend_ip_configurations:
540     list[~azure.mgmt.network.v2018_04_01.models.NetworkInterfaceIPConfiguration]
541    :param backend_addresses: Backend addresses.
542    :type backend_addresses:
543     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayBackendAddress]
544    :param provisioning_state: Provisioning state of the backend address pool resource. Possible
545     values are: 'Updating', 'Deleting', and 'Failed'.
546    :type provisioning_state: str
547    """
548
549    _attribute_map = {
550        'id': {'key': 'id', 'type': 'str'},
551        'name': {'key': 'name', 'type': 'str'},
552        'etag': {'key': 'etag', 'type': 'str'},
553        'type': {'key': 'type', 'type': 'str'},
554        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
555        'backend_addresses': {'key': 'properties.backendAddresses', 'type': '[ApplicationGatewayBackendAddress]'},
556        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
557    }
558
559    def __init__(
560        self,
561        *,
562        id: Optional[str] = None,
563        name: Optional[str] = None,
564        etag: Optional[str] = None,
565        type: Optional[str] = None,
566        backend_ip_configurations: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
567        backend_addresses: Optional[List["ApplicationGatewayBackendAddress"]] = None,
568        provisioning_state: Optional[str] = None,
569        **kwargs
570    ):
571        super(ApplicationGatewayBackendAddressPool, self).__init__(id=id, **kwargs)
572        self.name = name
573        self.etag = etag
574        self.type = type
575        self.backend_ip_configurations = backend_ip_configurations
576        self.backend_addresses = backend_addresses
577        self.provisioning_state = provisioning_state
578
579
580class ApplicationGatewayBackendHealth(msrest.serialization.Model):
581    """List of ApplicationGatewayBackendHealthPool resources.
582
583    :param backend_address_pools:
584    :type backend_address_pools:
585     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayBackendHealthPool]
586    """
587
588    _attribute_map = {
589        'backend_address_pools': {'key': 'backendAddressPools', 'type': '[ApplicationGatewayBackendHealthPool]'},
590    }
591
592    def __init__(
593        self,
594        *,
595        backend_address_pools: Optional[List["ApplicationGatewayBackendHealthPool"]] = None,
596        **kwargs
597    ):
598        super(ApplicationGatewayBackendHealth, self).__init__(**kwargs)
599        self.backend_address_pools = backend_address_pools
600
601
602class ApplicationGatewayBackendHealthHttpSettings(msrest.serialization.Model):
603    """Application gateway BackendHealthHttp settings.
604
605    :param backend_http_settings: Reference of an ApplicationGatewayBackendHttpSettings resource.
606    :type backend_http_settings:
607     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayBackendHttpSettings
608    :param servers: List of ApplicationGatewayBackendHealthServer resources.
609    :type servers:
610     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayBackendHealthServer]
611    """
612
613    _attribute_map = {
614        'backend_http_settings': {'key': 'backendHttpSettings', 'type': 'ApplicationGatewayBackendHttpSettings'},
615        'servers': {'key': 'servers', 'type': '[ApplicationGatewayBackendHealthServer]'},
616    }
617
618    def __init__(
619        self,
620        *,
621        backend_http_settings: Optional["ApplicationGatewayBackendHttpSettings"] = None,
622        servers: Optional[List["ApplicationGatewayBackendHealthServer"]] = None,
623        **kwargs
624    ):
625        super(ApplicationGatewayBackendHealthHttpSettings, self).__init__(**kwargs)
626        self.backend_http_settings = backend_http_settings
627        self.servers = servers
628
629
630class ApplicationGatewayBackendHealthPool(msrest.serialization.Model):
631    """Application gateway BackendHealth pool.
632
633    :param backend_address_pool: Reference of an ApplicationGatewayBackendAddressPool resource.
634    :type backend_address_pool:
635     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayBackendAddressPool
636    :param backend_http_settings_collection: List of ApplicationGatewayBackendHealthHttpSettings
637     resources.
638    :type backend_http_settings_collection:
639     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayBackendHealthHttpSettings]
640    """
641
642    _attribute_map = {
643        'backend_address_pool': {'key': 'backendAddressPool', 'type': 'ApplicationGatewayBackendAddressPool'},
644        'backend_http_settings_collection': {'key': 'backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHealthHttpSettings]'},
645    }
646
647    def __init__(
648        self,
649        *,
650        backend_address_pool: Optional["ApplicationGatewayBackendAddressPool"] = None,
651        backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHealthHttpSettings"]] = None,
652        **kwargs
653    ):
654        super(ApplicationGatewayBackendHealthPool, self).__init__(**kwargs)
655        self.backend_address_pool = backend_address_pool
656        self.backend_http_settings_collection = backend_http_settings_collection
657
658
659class ApplicationGatewayBackendHealthServer(msrest.serialization.Model):
660    """Application gateway backendhealth http settings.
661
662    :param address: IP address or FQDN of backend server.
663    :type address: str
664    :param ip_configuration: Reference of IP configuration of backend server.
665    :type ip_configuration: ~azure.mgmt.network.v2018_04_01.models.NetworkInterfaceIPConfiguration
666    :param health: Health of backend server. Possible values include: "Unknown", "Up", "Down",
667     "Partial", "Draining".
668    :type health: str or
669     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayBackendHealthServerHealth
670    """
671
672    _attribute_map = {
673        'address': {'key': 'address', 'type': 'str'},
674        'ip_configuration': {'key': 'ipConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
675        'health': {'key': 'health', 'type': 'str'},
676    }
677
678    def __init__(
679        self,
680        *,
681        address: Optional[str] = None,
682        ip_configuration: Optional["NetworkInterfaceIPConfiguration"] = None,
683        health: Optional[Union[str, "ApplicationGatewayBackendHealthServerHealth"]] = None,
684        **kwargs
685    ):
686        super(ApplicationGatewayBackendHealthServer, self).__init__(**kwargs)
687        self.address = address
688        self.ip_configuration = ip_configuration
689        self.health = health
690
691
692class ApplicationGatewayBackendHttpSettings(SubResource):
693    """Backend address pool settings of an application gateway.
694
695    :param id: Resource ID.
696    :type id: str
697    :param name: Name of the backend http settings that is unique within an Application Gateway.
698    :type name: str
699    :param etag: A unique read-only string that changes whenever the resource is updated.
700    :type etag: str
701    :param type: Type of the resource.
702    :type type: str
703    :param port: The destination port on the backend.
704    :type port: int
705    :param protocol: The protocol used to communicate with the backend. Possible values are 'Http'
706     and 'Https'. Possible values include: "Http", "Https".
707    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayProtocol
708    :param cookie_based_affinity: Cookie based affinity. Possible values include: "Enabled",
709     "Disabled".
710    :type cookie_based_affinity: str or
711     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayCookieBasedAffinity
712    :param request_timeout: Request timeout in seconds. Application Gateway will fail the request
713     if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400
714     seconds.
715    :type request_timeout: int
716    :param probe: Probe resource of an application gateway.
717    :type probe: ~azure.mgmt.network.v2018_04_01.models.SubResource
718    :param authentication_certificates: Array of references to application gateway authentication
719     certificates.
720    :type authentication_certificates: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
721    :param connection_draining: Connection draining of the backend http settings resource.
722    :type connection_draining:
723     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayConnectionDraining
724    :param host_name: Host header to be sent to the backend servers.
725    :type host_name: str
726    :param pick_host_name_from_backend_address: Whether to pick host header should be picked from
727     the host name of the backend server. Default value is false.
728    :type pick_host_name_from_backend_address: bool
729    :param affinity_cookie_name: Cookie name to use for the affinity cookie.
730    :type affinity_cookie_name: str
731    :param probe_enabled: Whether the probe is enabled. Default value is false.
732    :type probe_enabled: bool
733    :param path: Path which should be used as a prefix for all HTTP requests. Null means no path
734     will be prefixed. Default value is null.
735    :type path: str
736    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
737     values are: 'Updating', 'Deleting', and 'Failed'.
738    :type provisioning_state: str
739    """
740
741    _attribute_map = {
742        'id': {'key': 'id', 'type': 'str'},
743        'name': {'key': 'name', 'type': 'str'},
744        'etag': {'key': 'etag', 'type': 'str'},
745        'type': {'key': 'type', 'type': 'str'},
746        'port': {'key': 'properties.port', 'type': 'int'},
747        'protocol': {'key': 'properties.protocol', 'type': 'str'},
748        'cookie_based_affinity': {'key': 'properties.cookieBasedAffinity', 'type': 'str'},
749        'request_timeout': {'key': 'properties.requestTimeout', 'type': 'int'},
750        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
751        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[SubResource]'},
752        'connection_draining': {'key': 'properties.connectionDraining', 'type': 'ApplicationGatewayConnectionDraining'},
753        'host_name': {'key': 'properties.hostName', 'type': 'str'},
754        'pick_host_name_from_backend_address': {'key': 'properties.pickHostNameFromBackendAddress', 'type': 'bool'},
755        'affinity_cookie_name': {'key': 'properties.affinityCookieName', 'type': 'str'},
756        'probe_enabled': {'key': 'properties.probeEnabled', 'type': 'bool'},
757        'path': {'key': 'properties.path', 'type': 'str'},
758        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
759    }
760
761    def __init__(
762        self,
763        *,
764        id: Optional[str] = None,
765        name: Optional[str] = None,
766        etag: Optional[str] = None,
767        type: Optional[str] = None,
768        port: Optional[int] = None,
769        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
770        cookie_based_affinity: Optional[Union[str, "ApplicationGatewayCookieBasedAffinity"]] = None,
771        request_timeout: Optional[int] = None,
772        probe: Optional["SubResource"] = None,
773        authentication_certificates: Optional[List["SubResource"]] = None,
774        connection_draining: Optional["ApplicationGatewayConnectionDraining"] = None,
775        host_name: Optional[str] = None,
776        pick_host_name_from_backend_address: Optional[bool] = None,
777        affinity_cookie_name: Optional[str] = None,
778        probe_enabled: Optional[bool] = None,
779        path: Optional[str] = None,
780        provisioning_state: Optional[str] = None,
781        **kwargs
782    ):
783        super(ApplicationGatewayBackendHttpSettings, self).__init__(id=id, **kwargs)
784        self.name = name
785        self.etag = etag
786        self.type = type
787        self.port = port
788        self.protocol = protocol
789        self.cookie_based_affinity = cookie_based_affinity
790        self.request_timeout = request_timeout
791        self.probe = probe
792        self.authentication_certificates = authentication_certificates
793        self.connection_draining = connection_draining
794        self.host_name = host_name
795        self.pick_host_name_from_backend_address = pick_host_name_from_backend_address
796        self.affinity_cookie_name = affinity_cookie_name
797        self.probe_enabled = probe_enabled
798        self.path = path
799        self.provisioning_state = provisioning_state
800
801
802class ApplicationGatewayConnectionDraining(msrest.serialization.Model):
803    """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.
804
805    All required parameters must be populated in order to send to Azure.
806
807    :param enabled: Required. Whether connection draining is enabled or not.
808    :type enabled: bool
809    :param drain_timeout_in_sec: Required. The number of seconds connection draining is active.
810     Acceptable values are from 1 second to 3600 seconds.
811    :type drain_timeout_in_sec: int
812    """
813
814    _validation = {
815        'enabled': {'required': True},
816        'drain_timeout_in_sec': {'required': True, 'maximum': 3600, 'minimum': 1},
817    }
818
819    _attribute_map = {
820        'enabled': {'key': 'enabled', 'type': 'bool'},
821        'drain_timeout_in_sec': {'key': 'drainTimeoutInSec', 'type': 'int'},
822    }
823
824    def __init__(
825        self,
826        *,
827        enabled: bool,
828        drain_timeout_in_sec: int,
829        **kwargs
830    ):
831        super(ApplicationGatewayConnectionDraining, self).__init__(**kwargs)
832        self.enabled = enabled
833        self.drain_timeout_in_sec = drain_timeout_in_sec
834
835
836class ApplicationGatewayFirewallDisabledRuleGroup(msrest.serialization.Model):
837    """Allows to disable rules within a rule group or an entire rule group.
838
839    All required parameters must be populated in order to send to Azure.
840
841    :param rule_group_name: Required. The name of the rule group that will be disabled.
842    :type rule_group_name: str
843    :param rules: The list of rules that will be disabled. If null, all rules of the rule group
844     will be disabled.
845    :type rules: list[int]
846    """
847
848    _validation = {
849        'rule_group_name': {'required': True},
850    }
851
852    _attribute_map = {
853        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
854        'rules': {'key': 'rules', 'type': '[int]'},
855    }
856
857    def __init__(
858        self,
859        *,
860        rule_group_name: str,
861        rules: Optional[List[int]] = None,
862        **kwargs
863    ):
864        super(ApplicationGatewayFirewallDisabledRuleGroup, self).__init__(**kwargs)
865        self.rule_group_name = rule_group_name
866        self.rules = rules
867
868
869class ApplicationGatewayFirewallRule(msrest.serialization.Model):
870    """A web application firewall rule.
871
872    All required parameters must be populated in order to send to Azure.
873
874    :param rule_id: Required. The identifier of the web application firewall rule.
875    :type rule_id: int
876    :param description: The description of the web application firewall rule.
877    :type description: str
878    """
879
880    _validation = {
881        'rule_id': {'required': True},
882    }
883
884    _attribute_map = {
885        'rule_id': {'key': 'ruleId', 'type': 'int'},
886        'description': {'key': 'description', 'type': 'str'},
887    }
888
889    def __init__(
890        self,
891        *,
892        rule_id: int,
893        description: Optional[str] = None,
894        **kwargs
895    ):
896        super(ApplicationGatewayFirewallRule, self).__init__(**kwargs)
897        self.rule_id = rule_id
898        self.description = description
899
900
901class ApplicationGatewayFirewallRuleGroup(msrest.serialization.Model):
902    """A web application firewall rule group.
903
904    All required parameters must be populated in order to send to Azure.
905
906    :param rule_group_name: Required. The name of the web application firewall rule group.
907    :type rule_group_name: str
908    :param description: The description of the web application firewall rule group.
909    :type description: str
910    :param rules: Required. The rules of the web application firewall rule group.
911    :type rules: list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayFirewallRule]
912    """
913
914    _validation = {
915        'rule_group_name': {'required': True},
916        'rules': {'required': True},
917    }
918
919    _attribute_map = {
920        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
921        'description': {'key': 'description', 'type': 'str'},
922        'rules': {'key': 'rules', 'type': '[ApplicationGatewayFirewallRule]'},
923    }
924
925    def __init__(
926        self,
927        *,
928        rule_group_name: str,
929        rules: List["ApplicationGatewayFirewallRule"],
930        description: Optional[str] = None,
931        **kwargs
932    ):
933        super(ApplicationGatewayFirewallRuleGroup, self).__init__(**kwargs)
934        self.rule_group_name = rule_group_name
935        self.description = description
936        self.rules = rules
937
938
939class ApplicationGatewayFirewallRuleSet(Resource):
940    """A web application firewall rule set.
941
942    Variables are only populated by the server, and will be ignored when sending a request.
943
944    :param id: Resource ID.
945    :type id: str
946    :ivar name: Resource name.
947    :vartype name: str
948    :ivar type: Resource type.
949    :vartype type: str
950    :param location: Resource location.
951    :type location: str
952    :param tags: A set of tags. Resource tags.
953    :type tags: dict[str, str]
954    :param provisioning_state: The provisioning state of the web application firewall rule set.
955    :type provisioning_state: str
956    :param rule_set_type: The type of the web application firewall rule set.
957    :type rule_set_type: str
958    :param rule_set_version: The version of the web application firewall rule set type.
959    :type rule_set_version: str
960    :param rule_groups: The rule groups of the web application firewall rule set.
961    :type rule_groups:
962     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayFirewallRuleGroup]
963    """
964
965    _validation = {
966        'name': {'readonly': True},
967        'type': {'readonly': True},
968    }
969
970    _attribute_map = {
971        'id': {'key': 'id', 'type': 'str'},
972        'name': {'key': 'name', 'type': 'str'},
973        'type': {'key': 'type', 'type': 'str'},
974        'location': {'key': 'location', 'type': 'str'},
975        'tags': {'key': 'tags', 'type': '{str}'},
976        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
977        'rule_set_type': {'key': 'properties.ruleSetType', 'type': 'str'},
978        'rule_set_version': {'key': 'properties.ruleSetVersion', 'type': 'str'},
979        'rule_groups': {'key': 'properties.ruleGroups', 'type': '[ApplicationGatewayFirewallRuleGroup]'},
980    }
981
982    def __init__(
983        self,
984        *,
985        id: Optional[str] = None,
986        location: Optional[str] = None,
987        tags: Optional[Dict[str, str]] = None,
988        provisioning_state: Optional[str] = None,
989        rule_set_type: Optional[str] = None,
990        rule_set_version: Optional[str] = None,
991        rule_groups: Optional[List["ApplicationGatewayFirewallRuleGroup"]] = None,
992        **kwargs
993    ):
994        super(ApplicationGatewayFirewallRuleSet, self).__init__(id=id, location=location, tags=tags, **kwargs)
995        self.provisioning_state = provisioning_state
996        self.rule_set_type = rule_set_type
997        self.rule_set_version = rule_set_version
998        self.rule_groups = rule_groups
999
1000
1001class ApplicationGatewayFrontendIPConfiguration(SubResource):
1002    """Frontend IP configuration of an application gateway.
1003
1004    :param id: Resource ID.
1005    :type id: str
1006    :param name: Name of the frontend IP configuration that is unique within an Application
1007     Gateway.
1008    :type name: str
1009    :param etag: A unique read-only string that changes whenever the resource is updated.
1010    :type etag: str
1011    :param type: Type of the resource.
1012    :type type: str
1013    :param private_ip_address: PrivateIPAddress of the network interface IP Configuration.
1014    :type private_ip_address: str
1015    :param private_ip_allocation_method: PrivateIP allocation method. Possible values include:
1016     "Static", "Dynamic".
1017    :type private_ip_allocation_method: str or
1018     ~azure.mgmt.network.v2018_04_01.models.IPAllocationMethod
1019    :param subnet: Reference of the subnet resource.
1020    :type subnet: ~azure.mgmt.network.v2018_04_01.models.SubResource
1021    :param public_ip_address: Reference of the PublicIP resource.
1022    :type public_ip_address: ~azure.mgmt.network.v2018_04_01.models.SubResource
1023    :param provisioning_state: Provisioning state of the public IP resource. Possible values are:
1024     'Updating', 'Deleting', and 'Failed'.
1025    :type provisioning_state: str
1026    """
1027
1028    _attribute_map = {
1029        'id': {'key': 'id', 'type': 'str'},
1030        'name': {'key': 'name', 'type': 'str'},
1031        'etag': {'key': 'etag', 'type': 'str'},
1032        'type': {'key': 'type', 'type': 'str'},
1033        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
1034        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
1035        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
1036        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
1037        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1038    }
1039
1040    def __init__(
1041        self,
1042        *,
1043        id: Optional[str] = None,
1044        name: Optional[str] = None,
1045        etag: Optional[str] = None,
1046        type: Optional[str] = None,
1047        private_ip_address: Optional[str] = None,
1048        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
1049        subnet: Optional["SubResource"] = None,
1050        public_ip_address: Optional["SubResource"] = None,
1051        provisioning_state: Optional[str] = None,
1052        **kwargs
1053    ):
1054        super(ApplicationGatewayFrontendIPConfiguration, self).__init__(id=id, **kwargs)
1055        self.name = name
1056        self.etag = etag
1057        self.type = type
1058        self.private_ip_address = private_ip_address
1059        self.private_ip_allocation_method = private_ip_allocation_method
1060        self.subnet = subnet
1061        self.public_ip_address = public_ip_address
1062        self.provisioning_state = provisioning_state
1063
1064
1065class ApplicationGatewayFrontendPort(SubResource):
1066    """Frontend port of an application gateway.
1067
1068    :param id: Resource ID.
1069    :type id: str
1070    :param name: Name of the frontend port that is unique within an Application Gateway.
1071    :type name: str
1072    :param etag: A unique read-only string that changes whenever the resource is updated.
1073    :type etag: str
1074    :param type: Type of the resource.
1075    :type type: str
1076    :param port: Frontend port.
1077    :type port: int
1078    :param provisioning_state: Provisioning state of the frontend port resource. Possible values
1079     are: 'Updating', 'Deleting', and 'Failed'.
1080    :type provisioning_state: str
1081    """
1082
1083    _attribute_map = {
1084        'id': {'key': 'id', 'type': 'str'},
1085        'name': {'key': 'name', 'type': 'str'},
1086        'etag': {'key': 'etag', 'type': 'str'},
1087        'type': {'key': 'type', 'type': 'str'},
1088        'port': {'key': 'properties.port', 'type': 'int'},
1089        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1090    }
1091
1092    def __init__(
1093        self,
1094        *,
1095        id: Optional[str] = None,
1096        name: Optional[str] = None,
1097        etag: Optional[str] = None,
1098        type: Optional[str] = None,
1099        port: Optional[int] = None,
1100        provisioning_state: Optional[str] = None,
1101        **kwargs
1102    ):
1103        super(ApplicationGatewayFrontendPort, self).__init__(id=id, **kwargs)
1104        self.name = name
1105        self.etag = etag
1106        self.type = type
1107        self.port = port
1108        self.provisioning_state = provisioning_state
1109
1110
1111class ApplicationGatewayHttpListener(SubResource):
1112    """Http listener of an application gateway.
1113
1114    :param id: Resource ID.
1115    :type id: str
1116    :param name: Name of the HTTP listener that is unique within an Application Gateway.
1117    :type name: str
1118    :param etag: A unique read-only string that changes whenever the resource is updated.
1119    :type etag: str
1120    :param type: Type of the resource.
1121    :type type: str
1122    :param frontend_ip_configuration: Frontend IP configuration resource of an application gateway.
1123    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_04_01.models.SubResource
1124    :param frontend_port: Frontend port resource of an application gateway.
1125    :type frontend_port: ~azure.mgmt.network.v2018_04_01.models.SubResource
1126    :param protocol: Protocol of the HTTP listener. Possible values are 'Http' and 'Https'.
1127     Possible values include: "Http", "Https".
1128    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayProtocol
1129    :param host_name: Host name of HTTP listener.
1130    :type host_name: str
1131    :param ssl_certificate: SSL certificate resource of an application gateway.
1132    :type ssl_certificate: ~azure.mgmt.network.v2018_04_01.models.SubResource
1133    :param require_server_name_indication: Applicable only if protocol is https. Enables SNI for
1134     multi-hosting.
1135    :type require_server_name_indication: bool
1136    :param provisioning_state: Provisioning state of the HTTP listener resource. Possible values
1137     are: 'Updating', 'Deleting', and 'Failed'.
1138    :type provisioning_state: str
1139    """
1140
1141    _attribute_map = {
1142        'id': {'key': 'id', 'type': 'str'},
1143        'name': {'key': 'name', 'type': 'str'},
1144        'etag': {'key': 'etag', 'type': 'str'},
1145        'type': {'key': 'type', 'type': 'str'},
1146        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
1147        'frontend_port': {'key': 'properties.frontendPort', 'type': 'SubResource'},
1148        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1149        'host_name': {'key': 'properties.hostName', 'type': 'str'},
1150        'ssl_certificate': {'key': 'properties.sslCertificate', 'type': 'SubResource'},
1151        'require_server_name_indication': {'key': 'properties.requireServerNameIndication', 'type': 'bool'},
1152        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1153    }
1154
1155    def __init__(
1156        self,
1157        *,
1158        id: Optional[str] = None,
1159        name: Optional[str] = None,
1160        etag: Optional[str] = None,
1161        type: Optional[str] = None,
1162        frontend_ip_configuration: Optional["SubResource"] = None,
1163        frontend_port: Optional["SubResource"] = None,
1164        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
1165        host_name: Optional[str] = None,
1166        ssl_certificate: Optional["SubResource"] = None,
1167        require_server_name_indication: Optional[bool] = None,
1168        provisioning_state: Optional[str] = None,
1169        **kwargs
1170    ):
1171        super(ApplicationGatewayHttpListener, self).__init__(id=id, **kwargs)
1172        self.name = name
1173        self.etag = etag
1174        self.type = type
1175        self.frontend_ip_configuration = frontend_ip_configuration
1176        self.frontend_port = frontend_port
1177        self.protocol = protocol
1178        self.host_name = host_name
1179        self.ssl_certificate = ssl_certificate
1180        self.require_server_name_indication = require_server_name_indication
1181        self.provisioning_state = provisioning_state
1182
1183
1184class ApplicationGatewayIPConfiguration(SubResource):
1185    """IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.
1186
1187    :param id: Resource ID.
1188    :type id: str
1189    :param name: Name of the IP configuration that is unique within an Application Gateway.
1190    :type name: str
1191    :param etag: A unique read-only string that changes whenever the resource is updated.
1192    :type etag: str
1193    :param type: Type of the resource.
1194    :type type: str
1195    :param subnet: Reference of the subnet resource. A subnet from where application gateway gets
1196     its private address.
1197    :type subnet: ~azure.mgmt.network.v2018_04_01.models.SubResource
1198    :param provisioning_state: Provisioning state of the application gateway subnet resource.
1199     Possible values are: 'Updating', 'Deleting', and 'Failed'.
1200    :type provisioning_state: str
1201    """
1202
1203    _attribute_map = {
1204        'id': {'key': 'id', 'type': 'str'},
1205        'name': {'key': 'name', 'type': 'str'},
1206        'etag': {'key': 'etag', 'type': 'str'},
1207        'type': {'key': 'type', 'type': 'str'},
1208        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
1209        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1210    }
1211
1212    def __init__(
1213        self,
1214        *,
1215        id: Optional[str] = None,
1216        name: Optional[str] = None,
1217        etag: Optional[str] = None,
1218        type: Optional[str] = None,
1219        subnet: Optional["SubResource"] = None,
1220        provisioning_state: Optional[str] = None,
1221        **kwargs
1222    ):
1223        super(ApplicationGatewayIPConfiguration, self).__init__(id=id, **kwargs)
1224        self.name = name
1225        self.etag = etag
1226        self.type = type
1227        self.subnet = subnet
1228        self.provisioning_state = provisioning_state
1229
1230
1231class ApplicationGatewayListResult(msrest.serialization.Model):
1232    """Response for ListApplicationGateways API service call.
1233
1234    :param value: List of an application gateways in a resource group.
1235    :type value: list[~azure.mgmt.network.v2018_04_01.models.ApplicationGateway]
1236    :param next_link: URL to get the next set of results.
1237    :type next_link: str
1238    """
1239
1240    _attribute_map = {
1241        'value': {'key': 'value', 'type': '[ApplicationGateway]'},
1242        'next_link': {'key': 'nextLink', 'type': 'str'},
1243    }
1244
1245    def __init__(
1246        self,
1247        *,
1248        value: Optional[List["ApplicationGateway"]] = None,
1249        next_link: Optional[str] = None,
1250        **kwargs
1251    ):
1252        super(ApplicationGatewayListResult, self).__init__(**kwargs)
1253        self.value = value
1254        self.next_link = next_link
1255
1256
1257class ApplicationGatewayPathRule(SubResource):
1258    """Path rule of URL path map of an application gateway.
1259
1260    :param id: Resource ID.
1261    :type id: str
1262    :param name: Name of the path rule that is unique within an Application Gateway.
1263    :type name: str
1264    :param etag: A unique read-only string that changes whenever the resource is updated.
1265    :type etag: str
1266    :param type: Type of the resource.
1267    :type type: str
1268    :param paths: Path rules of URL path map.
1269    :type paths: list[str]
1270    :param backend_address_pool: Backend address pool resource of URL path map path rule.
1271    :type backend_address_pool: ~azure.mgmt.network.v2018_04_01.models.SubResource
1272    :param backend_http_settings: Backend http settings resource of URL path map path rule.
1273    :type backend_http_settings: ~azure.mgmt.network.v2018_04_01.models.SubResource
1274    :param redirect_configuration: Redirect configuration resource of URL path map path rule.
1275    :type redirect_configuration: ~azure.mgmt.network.v2018_04_01.models.SubResource
1276    :param provisioning_state: Path rule of URL path map resource. Possible values are: 'Updating',
1277     'Deleting', and 'Failed'.
1278    :type provisioning_state: str
1279    """
1280
1281    _attribute_map = {
1282        'id': {'key': 'id', 'type': 'str'},
1283        'name': {'key': 'name', 'type': 'str'},
1284        'etag': {'key': 'etag', 'type': 'str'},
1285        'type': {'key': 'type', 'type': 'str'},
1286        'paths': {'key': 'properties.paths', 'type': '[str]'},
1287        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1288        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1289        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1290        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1291    }
1292
1293    def __init__(
1294        self,
1295        *,
1296        id: Optional[str] = None,
1297        name: Optional[str] = None,
1298        etag: Optional[str] = None,
1299        type: Optional[str] = None,
1300        paths: Optional[List[str]] = None,
1301        backend_address_pool: Optional["SubResource"] = None,
1302        backend_http_settings: Optional["SubResource"] = None,
1303        redirect_configuration: Optional["SubResource"] = None,
1304        provisioning_state: Optional[str] = None,
1305        **kwargs
1306    ):
1307        super(ApplicationGatewayPathRule, self).__init__(id=id, **kwargs)
1308        self.name = name
1309        self.etag = etag
1310        self.type = type
1311        self.paths = paths
1312        self.backend_address_pool = backend_address_pool
1313        self.backend_http_settings = backend_http_settings
1314        self.redirect_configuration = redirect_configuration
1315        self.provisioning_state = provisioning_state
1316
1317
1318class ApplicationGatewayProbe(SubResource):
1319    """Probe of the application gateway.
1320
1321    :param id: Resource ID.
1322    :type id: str
1323    :param name: Name of the probe that is unique within an Application Gateway.
1324    :type name: str
1325    :param etag: A unique read-only string that changes whenever the resource is updated.
1326    :type etag: str
1327    :param type: Type of the resource.
1328    :type type: str
1329    :param protocol: The protocol used for the probe. Possible values are 'Http' and 'Https'.
1330     Possible values include: "Http", "Https".
1331    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayProtocol
1332    :param host: Host name to send the probe to.
1333    :type host: str
1334    :param path: Relative path of probe. Valid path starts from '/'. Probe is sent to
1335     :code:`<Protocol>`://:code:`<host>`::code:`<port>`:code:`<path>`.
1336    :type path: str
1337    :param interval: The probing interval in seconds. This is the time interval between two
1338     consecutive probes. Acceptable values are from 1 second to 86400 seconds.
1339    :type interval: int
1340    :param timeout: the probe timeout in seconds. Probe marked as failed if valid response is not
1341     received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
1342    :type timeout: int
1343    :param unhealthy_threshold: The probe retry count. Backend server is marked down after
1344     consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second
1345     to 20.
1346    :type unhealthy_threshold: int
1347    :param pick_host_name_from_backend_http_settings: Whether the host header should be picked from
1348     the backend http settings. Default value is false.
1349    :type pick_host_name_from_backend_http_settings: bool
1350    :param min_servers: Minimum number of servers that are always marked healthy. Default value is
1351     0.
1352    :type min_servers: int
1353    :param match: Criterion for classifying a healthy probe response.
1354    :type match: ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayProbeHealthResponseMatch
1355    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
1356     values are: 'Updating', 'Deleting', and 'Failed'.
1357    :type provisioning_state: str
1358    """
1359
1360    _attribute_map = {
1361        'id': {'key': 'id', 'type': 'str'},
1362        'name': {'key': 'name', 'type': 'str'},
1363        'etag': {'key': 'etag', 'type': 'str'},
1364        'type': {'key': 'type', 'type': 'str'},
1365        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1366        'host': {'key': 'properties.host', 'type': 'str'},
1367        'path': {'key': 'properties.path', 'type': 'str'},
1368        'interval': {'key': 'properties.interval', 'type': 'int'},
1369        'timeout': {'key': 'properties.timeout', 'type': 'int'},
1370        'unhealthy_threshold': {'key': 'properties.unhealthyThreshold', 'type': 'int'},
1371        'pick_host_name_from_backend_http_settings': {'key': 'properties.pickHostNameFromBackendHttpSettings', 'type': 'bool'},
1372        'min_servers': {'key': 'properties.minServers', 'type': 'int'},
1373        'match': {'key': 'properties.match', 'type': 'ApplicationGatewayProbeHealthResponseMatch'},
1374        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1375    }
1376
1377    def __init__(
1378        self,
1379        *,
1380        id: Optional[str] = None,
1381        name: Optional[str] = None,
1382        etag: Optional[str] = None,
1383        type: Optional[str] = None,
1384        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
1385        host: Optional[str] = None,
1386        path: Optional[str] = None,
1387        interval: Optional[int] = None,
1388        timeout: Optional[int] = None,
1389        unhealthy_threshold: Optional[int] = None,
1390        pick_host_name_from_backend_http_settings: Optional[bool] = None,
1391        min_servers: Optional[int] = None,
1392        match: Optional["ApplicationGatewayProbeHealthResponseMatch"] = None,
1393        provisioning_state: Optional[str] = None,
1394        **kwargs
1395    ):
1396        super(ApplicationGatewayProbe, self).__init__(id=id, **kwargs)
1397        self.name = name
1398        self.etag = etag
1399        self.type = type
1400        self.protocol = protocol
1401        self.host = host
1402        self.path = path
1403        self.interval = interval
1404        self.timeout = timeout
1405        self.unhealthy_threshold = unhealthy_threshold
1406        self.pick_host_name_from_backend_http_settings = pick_host_name_from_backend_http_settings
1407        self.min_servers = min_servers
1408        self.match = match
1409        self.provisioning_state = provisioning_state
1410
1411
1412class ApplicationGatewayProbeHealthResponseMatch(msrest.serialization.Model):
1413    """Application gateway probe health response match.
1414
1415    :param body: Body that must be contained in the health response. Default value is empty.
1416    :type body: str
1417    :param status_codes: Allowed ranges of healthy status codes. Default range of healthy status
1418     codes is 200-399.
1419    :type status_codes: list[str]
1420    """
1421
1422    _attribute_map = {
1423        'body': {'key': 'body', 'type': 'str'},
1424        'status_codes': {'key': 'statusCodes', 'type': '[str]'},
1425    }
1426
1427    def __init__(
1428        self,
1429        *,
1430        body: Optional[str] = None,
1431        status_codes: Optional[List[str]] = None,
1432        **kwargs
1433    ):
1434        super(ApplicationGatewayProbeHealthResponseMatch, self).__init__(**kwargs)
1435        self.body = body
1436        self.status_codes = status_codes
1437
1438
1439class ApplicationGatewayRedirectConfiguration(SubResource):
1440    """Redirect configuration of an application gateway.
1441
1442    :param id: Resource ID.
1443    :type id: str
1444    :param name: Name of the redirect configuration that is unique within an Application Gateway.
1445    :type name: str
1446    :param etag: A unique read-only string that changes whenever the resource is updated.
1447    :type etag: str
1448    :param type: Type of the resource.
1449    :type type: str
1450    :param redirect_type: Supported http redirection types - Permanent, Temporary, Found, SeeOther.
1451     Possible values include: "Permanent", "Found", "SeeOther", "Temporary".
1452    :type redirect_type: str or
1453     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayRedirectType
1454    :param target_listener: Reference to a listener to redirect the request to.
1455    :type target_listener: ~azure.mgmt.network.v2018_04_01.models.SubResource
1456    :param target_url: Url to redirect the request to.
1457    :type target_url: str
1458    :param include_path: Include path in the redirected url.
1459    :type include_path: bool
1460    :param include_query_string: Include query string in the redirected url.
1461    :type include_query_string: bool
1462    :param request_routing_rules: Request routing specifying redirect configuration.
1463    :type request_routing_rules: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
1464    :param url_path_maps: Url path maps specifying default redirect configuration.
1465    :type url_path_maps: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
1466    :param path_rules: Path rules specifying redirect configuration.
1467    :type path_rules: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
1468    """
1469
1470    _attribute_map = {
1471        'id': {'key': 'id', 'type': 'str'},
1472        'name': {'key': 'name', 'type': 'str'},
1473        'etag': {'key': 'etag', 'type': 'str'},
1474        'type': {'key': 'type', 'type': 'str'},
1475        'redirect_type': {'key': 'properties.redirectType', 'type': 'str'},
1476        'target_listener': {'key': 'properties.targetListener', 'type': 'SubResource'},
1477        'target_url': {'key': 'properties.targetUrl', 'type': 'str'},
1478        'include_path': {'key': 'properties.includePath', 'type': 'bool'},
1479        'include_query_string': {'key': 'properties.includeQueryString', 'type': 'bool'},
1480        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[SubResource]'},
1481        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[SubResource]'},
1482        'path_rules': {'key': 'properties.pathRules', 'type': '[SubResource]'},
1483    }
1484
1485    def __init__(
1486        self,
1487        *,
1488        id: Optional[str] = None,
1489        name: Optional[str] = None,
1490        etag: Optional[str] = None,
1491        type: Optional[str] = None,
1492        redirect_type: Optional[Union[str, "ApplicationGatewayRedirectType"]] = None,
1493        target_listener: Optional["SubResource"] = None,
1494        target_url: Optional[str] = None,
1495        include_path: Optional[bool] = None,
1496        include_query_string: Optional[bool] = None,
1497        request_routing_rules: Optional[List["SubResource"]] = None,
1498        url_path_maps: Optional[List["SubResource"]] = None,
1499        path_rules: Optional[List["SubResource"]] = None,
1500        **kwargs
1501    ):
1502        super(ApplicationGatewayRedirectConfiguration, self).__init__(id=id, **kwargs)
1503        self.name = name
1504        self.etag = etag
1505        self.type = type
1506        self.redirect_type = redirect_type
1507        self.target_listener = target_listener
1508        self.target_url = target_url
1509        self.include_path = include_path
1510        self.include_query_string = include_query_string
1511        self.request_routing_rules = request_routing_rules
1512        self.url_path_maps = url_path_maps
1513        self.path_rules = path_rules
1514
1515
1516class ApplicationGatewayRequestRoutingRule(SubResource):
1517    """Request routing rule of an application gateway.
1518
1519    :param id: Resource ID.
1520    :type id: str
1521    :param name: Name of the request routing rule that is unique within an Application Gateway.
1522    :type name: str
1523    :param etag: A unique read-only string that changes whenever the resource is updated.
1524    :type etag: str
1525    :param type: Type of the resource.
1526    :type type: str
1527    :param rule_type: Rule type. Possible values include: "Basic", "PathBasedRouting".
1528    :type rule_type: str or
1529     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayRequestRoutingRuleType
1530    :param backend_address_pool: Backend address pool resource of the application gateway.
1531    :type backend_address_pool: ~azure.mgmt.network.v2018_04_01.models.SubResource
1532    :param backend_http_settings: Backend http settings resource of the application gateway.
1533    :type backend_http_settings: ~azure.mgmt.network.v2018_04_01.models.SubResource
1534    :param http_listener: Http listener resource of the application gateway.
1535    :type http_listener: ~azure.mgmt.network.v2018_04_01.models.SubResource
1536    :param url_path_map: URL path map resource of the application gateway.
1537    :type url_path_map: ~azure.mgmt.network.v2018_04_01.models.SubResource
1538    :param redirect_configuration: Redirect configuration resource of the application gateway.
1539    :type redirect_configuration: ~azure.mgmt.network.v2018_04_01.models.SubResource
1540    :param provisioning_state: Provisioning state of the request routing rule resource. Possible
1541     values are: 'Updating', 'Deleting', and 'Failed'.
1542    :type provisioning_state: str
1543    """
1544
1545    _attribute_map = {
1546        'id': {'key': 'id', 'type': 'str'},
1547        'name': {'key': 'name', 'type': 'str'},
1548        'etag': {'key': 'etag', 'type': 'str'},
1549        'type': {'key': 'type', 'type': 'str'},
1550        'rule_type': {'key': 'properties.ruleType', 'type': 'str'},
1551        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1552        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1553        'http_listener': {'key': 'properties.httpListener', 'type': 'SubResource'},
1554        'url_path_map': {'key': 'properties.urlPathMap', 'type': 'SubResource'},
1555        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1556        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1557    }
1558
1559    def __init__(
1560        self,
1561        *,
1562        id: Optional[str] = None,
1563        name: Optional[str] = None,
1564        etag: Optional[str] = None,
1565        type: Optional[str] = None,
1566        rule_type: Optional[Union[str, "ApplicationGatewayRequestRoutingRuleType"]] = None,
1567        backend_address_pool: Optional["SubResource"] = None,
1568        backend_http_settings: Optional["SubResource"] = None,
1569        http_listener: Optional["SubResource"] = None,
1570        url_path_map: Optional["SubResource"] = None,
1571        redirect_configuration: Optional["SubResource"] = None,
1572        provisioning_state: Optional[str] = None,
1573        **kwargs
1574    ):
1575        super(ApplicationGatewayRequestRoutingRule, self).__init__(id=id, **kwargs)
1576        self.name = name
1577        self.etag = etag
1578        self.type = type
1579        self.rule_type = rule_type
1580        self.backend_address_pool = backend_address_pool
1581        self.backend_http_settings = backend_http_settings
1582        self.http_listener = http_listener
1583        self.url_path_map = url_path_map
1584        self.redirect_configuration = redirect_configuration
1585        self.provisioning_state = provisioning_state
1586
1587
1588class ApplicationGatewaySku(msrest.serialization.Model):
1589    """SKU of an application gateway.
1590
1591    :param name: Name of an application gateway SKU. Possible values include: "Standard_Small",
1592     "Standard_Medium", "Standard_Large", "WAF_Medium", "WAF_Large", "Standard_v2", "WAF_v2".
1593    :type name: str or ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySkuName
1594    :param tier: Tier of an application gateway. Possible values include: "Standard", "WAF",
1595     "Standard_v2", "WAF_v2".
1596    :type tier: str or ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayTier
1597    :param capacity: Capacity (instance count) of an application gateway.
1598    :type capacity: int
1599    """
1600
1601    _attribute_map = {
1602        'name': {'key': 'name', 'type': 'str'},
1603        'tier': {'key': 'tier', 'type': 'str'},
1604        'capacity': {'key': 'capacity', 'type': 'int'},
1605    }
1606
1607    def __init__(
1608        self,
1609        *,
1610        name: Optional[Union[str, "ApplicationGatewaySkuName"]] = None,
1611        tier: Optional[Union[str, "ApplicationGatewayTier"]] = None,
1612        capacity: Optional[int] = None,
1613        **kwargs
1614    ):
1615        super(ApplicationGatewaySku, self).__init__(**kwargs)
1616        self.name = name
1617        self.tier = tier
1618        self.capacity = capacity
1619
1620
1621class ApplicationGatewaySslCertificate(SubResource):
1622    """SSL certificates of an application gateway.
1623
1624    :param id: Resource ID.
1625    :type id: str
1626    :param name: Name of the SSL certificate that is unique within an Application Gateway.
1627    :type name: str
1628    :param etag: A unique read-only string that changes whenever the resource is updated.
1629    :type etag: str
1630    :param type: Type of the resource.
1631    :type type: str
1632    :param data: Base-64 encoded pfx certificate. Only applicable in PUT Request.
1633    :type data: str
1634    :param password: Password for the pfx file specified in data. Only applicable in PUT request.
1635    :type password: str
1636    :param public_cert_data: Base-64 encoded Public cert data corresponding to pfx specified in
1637     data. Only applicable in GET request.
1638    :type public_cert_data: str
1639    :param provisioning_state: Provisioning state of the SSL certificate resource Possible values
1640     are: 'Updating', 'Deleting', and 'Failed'.
1641    :type provisioning_state: str
1642    """
1643
1644    _attribute_map = {
1645        'id': {'key': 'id', 'type': 'str'},
1646        'name': {'key': 'name', 'type': 'str'},
1647        'etag': {'key': 'etag', 'type': 'str'},
1648        'type': {'key': 'type', 'type': 'str'},
1649        'data': {'key': 'properties.data', 'type': 'str'},
1650        'password': {'key': 'properties.password', 'type': 'str'},
1651        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
1652        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1653    }
1654
1655    def __init__(
1656        self,
1657        *,
1658        id: Optional[str] = None,
1659        name: Optional[str] = None,
1660        etag: Optional[str] = None,
1661        type: Optional[str] = None,
1662        data: Optional[str] = None,
1663        password: Optional[str] = None,
1664        public_cert_data: Optional[str] = None,
1665        provisioning_state: Optional[str] = None,
1666        **kwargs
1667    ):
1668        super(ApplicationGatewaySslCertificate, self).__init__(id=id, **kwargs)
1669        self.name = name
1670        self.etag = etag
1671        self.type = type
1672        self.data = data
1673        self.password = password
1674        self.public_cert_data = public_cert_data
1675        self.provisioning_state = provisioning_state
1676
1677
1678class ApplicationGatewaySslPolicy(msrest.serialization.Model):
1679    """Application Gateway Ssl policy.
1680
1681    :param disabled_ssl_protocols: Ssl protocols to be disabled on application gateway.
1682    :type disabled_ssl_protocols: list[str or
1683     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslProtocol]
1684    :param policy_type: Type of Ssl Policy. Possible values include: "Predefined", "Custom".
1685    :type policy_type: str or
1686     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslPolicyType
1687    :param policy_name: Name of Ssl predefined policy. Possible values include:
1688     "AppGwSslPolicy20150501", "AppGwSslPolicy20170401", "AppGwSslPolicy20170401S".
1689    :type policy_name: str or
1690     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslPolicyName
1691    :param cipher_suites: Ssl cipher suites to be enabled in the specified order to application
1692     gateway.
1693    :type cipher_suites: list[str or
1694     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslCipherSuite]
1695    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
1696     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
1697    :type min_protocol_version: str or
1698     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslProtocol
1699    """
1700
1701    _attribute_map = {
1702        'disabled_ssl_protocols': {'key': 'disabledSslProtocols', 'type': '[str]'},
1703        'policy_type': {'key': 'policyType', 'type': 'str'},
1704        'policy_name': {'key': 'policyName', 'type': 'str'},
1705        'cipher_suites': {'key': 'cipherSuites', 'type': '[str]'},
1706        'min_protocol_version': {'key': 'minProtocolVersion', 'type': 'str'},
1707    }
1708
1709    def __init__(
1710        self,
1711        *,
1712        disabled_ssl_protocols: Optional[List[Union[str, "ApplicationGatewaySslProtocol"]]] = None,
1713        policy_type: Optional[Union[str, "ApplicationGatewaySslPolicyType"]] = None,
1714        policy_name: Optional[Union[str, "ApplicationGatewaySslPolicyName"]] = None,
1715        cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
1716        min_protocol_version: Optional[Union[str, "ApplicationGatewaySslProtocol"]] = None,
1717        **kwargs
1718    ):
1719        super(ApplicationGatewaySslPolicy, self).__init__(**kwargs)
1720        self.disabled_ssl_protocols = disabled_ssl_protocols
1721        self.policy_type = policy_type
1722        self.policy_name = policy_name
1723        self.cipher_suites = cipher_suites
1724        self.min_protocol_version = min_protocol_version
1725
1726
1727class ApplicationGatewaySslPredefinedPolicy(SubResource):
1728    """An Ssl predefined policy.
1729
1730    :param id: Resource ID.
1731    :type id: str
1732    :param name: Name of the Ssl predefined policy.
1733    :type name: str
1734    :param cipher_suites: Ssl cipher suites to be enabled in the specified order for application
1735     gateway.
1736    :type cipher_suites: list[str or
1737     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslCipherSuite]
1738    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
1739     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
1740    :type min_protocol_version: str or
1741     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewaySslProtocol
1742    """
1743
1744    _attribute_map = {
1745        'id': {'key': 'id', 'type': 'str'},
1746        'name': {'key': 'name', 'type': 'str'},
1747        'cipher_suites': {'key': 'properties.cipherSuites', 'type': '[str]'},
1748        'min_protocol_version': {'key': 'properties.minProtocolVersion', 'type': 'str'},
1749    }
1750
1751    def __init__(
1752        self,
1753        *,
1754        id: Optional[str] = None,
1755        name: Optional[str] = None,
1756        cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
1757        min_protocol_version: Optional[Union[str, "ApplicationGatewaySslProtocol"]] = None,
1758        **kwargs
1759    ):
1760        super(ApplicationGatewaySslPredefinedPolicy, self).__init__(id=id, **kwargs)
1761        self.name = name
1762        self.cipher_suites = cipher_suites
1763        self.min_protocol_version = min_protocol_version
1764
1765
1766class ApplicationGatewayUrlPathMap(SubResource):
1767    """UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.
1768
1769    :param id: Resource ID.
1770    :type id: str
1771    :param name: Name of the URL path map that is unique within an Application Gateway.
1772    :type name: str
1773    :param etag: A unique read-only string that changes whenever the resource is updated.
1774    :type etag: str
1775    :param type: Type of the resource.
1776    :type type: str
1777    :param default_backend_address_pool: Default backend address pool resource of URL path map.
1778    :type default_backend_address_pool: ~azure.mgmt.network.v2018_04_01.models.SubResource
1779    :param default_backend_http_settings: Default backend http settings resource of URL path map.
1780    :type default_backend_http_settings: ~azure.mgmt.network.v2018_04_01.models.SubResource
1781    :param default_redirect_configuration: Default redirect configuration resource of URL path map.
1782    :type default_redirect_configuration: ~azure.mgmt.network.v2018_04_01.models.SubResource
1783    :param path_rules: Path rule of URL path map resource.
1784    :type path_rules: list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayPathRule]
1785    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
1786     values are: 'Updating', 'Deleting', and 'Failed'.
1787    :type provisioning_state: str
1788    """
1789
1790    _attribute_map = {
1791        'id': {'key': 'id', 'type': 'str'},
1792        'name': {'key': 'name', 'type': 'str'},
1793        'etag': {'key': 'etag', 'type': 'str'},
1794        'type': {'key': 'type', 'type': 'str'},
1795        'default_backend_address_pool': {'key': 'properties.defaultBackendAddressPool', 'type': 'SubResource'},
1796        'default_backend_http_settings': {'key': 'properties.defaultBackendHttpSettings', 'type': 'SubResource'},
1797        'default_redirect_configuration': {'key': 'properties.defaultRedirectConfiguration', 'type': 'SubResource'},
1798        'path_rules': {'key': 'properties.pathRules', 'type': '[ApplicationGatewayPathRule]'},
1799        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1800    }
1801
1802    def __init__(
1803        self,
1804        *,
1805        id: Optional[str] = None,
1806        name: Optional[str] = None,
1807        etag: Optional[str] = None,
1808        type: Optional[str] = None,
1809        default_backend_address_pool: Optional["SubResource"] = None,
1810        default_backend_http_settings: Optional["SubResource"] = None,
1811        default_redirect_configuration: Optional["SubResource"] = None,
1812        path_rules: Optional[List["ApplicationGatewayPathRule"]] = None,
1813        provisioning_state: Optional[str] = None,
1814        **kwargs
1815    ):
1816        super(ApplicationGatewayUrlPathMap, self).__init__(id=id, **kwargs)
1817        self.name = name
1818        self.etag = etag
1819        self.type = type
1820        self.default_backend_address_pool = default_backend_address_pool
1821        self.default_backend_http_settings = default_backend_http_settings
1822        self.default_redirect_configuration = default_redirect_configuration
1823        self.path_rules = path_rules
1824        self.provisioning_state = provisioning_state
1825
1826
1827class ApplicationGatewayWebApplicationFirewallConfiguration(msrest.serialization.Model):
1828    """Application gateway web application firewall configuration.
1829
1830    All required parameters must be populated in order to send to Azure.
1831
1832    :param enabled: Required. Whether the web application firewall is enabled or not.
1833    :type enabled: bool
1834    :param firewall_mode: Required. Web application firewall mode. Possible values include:
1835     "Detection", "Prevention".
1836    :type firewall_mode: str or
1837     ~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayFirewallMode
1838    :param rule_set_type: Required. The type of the web application firewall rule set. Possible
1839     values are: 'OWASP'.
1840    :type rule_set_type: str
1841    :param rule_set_version: Required. The version of the rule set type.
1842    :type rule_set_version: str
1843    :param disabled_rule_groups: The disabled rule groups.
1844    :type disabled_rule_groups:
1845     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayFirewallDisabledRuleGroup]
1846    :param request_body_check: Whether allow WAF to check request Body.
1847    :type request_body_check: bool
1848    :param max_request_body_size: Maximum request body size for WAF.
1849    :type max_request_body_size: int
1850    """
1851
1852    _validation = {
1853        'enabled': {'required': True},
1854        'firewall_mode': {'required': True},
1855        'rule_set_type': {'required': True},
1856        'rule_set_version': {'required': True},
1857        'max_request_body_size': {'maximum': 128, 'minimum': 8},
1858    }
1859
1860    _attribute_map = {
1861        'enabled': {'key': 'enabled', 'type': 'bool'},
1862        'firewall_mode': {'key': 'firewallMode', 'type': 'str'},
1863        'rule_set_type': {'key': 'ruleSetType', 'type': 'str'},
1864        'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'},
1865        'disabled_rule_groups': {'key': 'disabledRuleGroups', 'type': '[ApplicationGatewayFirewallDisabledRuleGroup]'},
1866        'request_body_check': {'key': 'requestBodyCheck', 'type': 'bool'},
1867        'max_request_body_size': {'key': 'maxRequestBodySize', 'type': 'int'},
1868    }
1869
1870    def __init__(
1871        self,
1872        *,
1873        enabled: bool,
1874        firewall_mode: Union[str, "ApplicationGatewayFirewallMode"],
1875        rule_set_type: str,
1876        rule_set_version: str,
1877        disabled_rule_groups: Optional[List["ApplicationGatewayFirewallDisabledRuleGroup"]] = None,
1878        request_body_check: Optional[bool] = None,
1879        max_request_body_size: Optional[int] = None,
1880        **kwargs
1881    ):
1882        super(ApplicationGatewayWebApplicationFirewallConfiguration, self).__init__(**kwargs)
1883        self.enabled = enabled
1884        self.firewall_mode = firewall_mode
1885        self.rule_set_type = rule_set_type
1886        self.rule_set_version = rule_set_version
1887        self.disabled_rule_groups = disabled_rule_groups
1888        self.request_body_check = request_body_check
1889        self.max_request_body_size = max_request_body_size
1890
1891
1892class ApplicationSecurityGroup(Resource):
1893    """An application security group in a resource group.
1894
1895    Variables are only populated by the server, and will be ignored when sending a request.
1896
1897    :param id: Resource ID.
1898    :type id: str
1899    :ivar name: Resource name.
1900    :vartype name: str
1901    :ivar type: Resource type.
1902    :vartype type: str
1903    :param location: Resource location.
1904    :type location: str
1905    :param tags: A set of tags. Resource tags.
1906    :type tags: dict[str, str]
1907    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1908    :vartype etag: str
1909    :ivar resource_guid: The resource GUID property of the application security group resource. It
1910     uniquely identifies a resource, even if the user changes its name or migrate the resource
1911     across subscriptions or resource groups.
1912    :vartype resource_guid: str
1913    :ivar provisioning_state: The provisioning state of the application security group resource.
1914     Possible values are: 'Succeeded', 'Updating', 'Deleting', and 'Failed'.
1915    :vartype provisioning_state: str
1916    """
1917
1918    _validation = {
1919        'name': {'readonly': True},
1920        'type': {'readonly': True},
1921        'etag': {'readonly': True},
1922        'resource_guid': {'readonly': True},
1923        'provisioning_state': {'readonly': True},
1924    }
1925
1926    _attribute_map = {
1927        'id': {'key': 'id', 'type': 'str'},
1928        'name': {'key': 'name', 'type': 'str'},
1929        'type': {'key': 'type', 'type': 'str'},
1930        'location': {'key': 'location', 'type': 'str'},
1931        'tags': {'key': 'tags', 'type': '{str}'},
1932        'etag': {'key': 'etag', 'type': 'str'},
1933        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
1934        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1935    }
1936
1937    def __init__(
1938        self,
1939        *,
1940        id: Optional[str] = None,
1941        location: Optional[str] = None,
1942        tags: Optional[Dict[str, str]] = None,
1943        **kwargs
1944    ):
1945        super(ApplicationSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
1946        self.etag = None
1947        self.resource_guid = None
1948        self.provisioning_state = None
1949
1950
1951class ApplicationSecurityGroupListResult(msrest.serialization.Model):
1952    """A list of application security groups.
1953
1954    Variables are only populated by the server, and will be ignored when sending a request.
1955
1956    :param value: A list of application security groups.
1957    :type value: list[~azure.mgmt.network.v2018_04_01.models.ApplicationSecurityGroup]
1958    :ivar next_link: The URL to get the next set of results.
1959    :vartype next_link: str
1960    """
1961
1962    _validation = {
1963        'next_link': {'readonly': True},
1964    }
1965
1966    _attribute_map = {
1967        'value': {'key': 'value', 'type': '[ApplicationSecurityGroup]'},
1968        'next_link': {'key': 'nextLink', 'type': 'str'},
1969    }
1970
1971    def __init__(
1972        self,
1973        *,
1974        value: Optional[List["ApplicationSecurityGroup"]] = None,
1975        **kwargs
1976    ):
1977        super(ApplicationSecurityGroupListResult, self).__init__(**kwargs)
1978        self.value = value
1979        self.next_link = None
1980
1981
1982class AuthorizationListResult(msrest.serialization.Model):
1983    """Response for ListAuthorizations API service call retrieves all authorizations that belongs to an ExpressRouteCircuit.
1984
1985    :param value: The authorizations in an ExpressRoute Circuit.
1986    :type value: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitAuthorization]
1987    :param next_link: The URL to get the next set of results.
1988    :type next_link: str
1989    """
1990
1991    _attribute_map = {
1992        'value': {'key': 'value', 'type': '[ExpressRouteCircuitAuthorization]'},
1993        'next_link': {'key': 'nextLink', 'type': 'str'},
1994    }
1995
1996    def __init__(
1997        self,
1998        *,
1999        value: Optional[List["ExpressRouteCircuitAuthorization"]] = None,
2000        next_link: Optional[str] = None,
2001        **kwargs
2002    ):
2003        super(AuthorizationListResult, self).__init__(**kwargs)
2004        self.value = value
2005        self.next_link = next_link
2006
2007
2008class Availability(msrest.serialization.Model):
2009    """Availability of the metric.
2010
2011    :param time_grain: The time grain of the availability.
2012    :type time_grain: str
2013    :param retention: The retention of the availability.
2014    :type retention: str
2015    :param blob_duration: Duration of the availability blob.
2016    :type blob_duration: str
2017    """
2018
2019    _attribute_map = {
2020        'time_grain': {'key': 'timeGrain', 'type': 'str'},
2021        'retention': {'key': 'retention', 'type': 'str'},
2022        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
2023    }
2024
2025    def __init__(
2026        self,
2027        *,
2028        time_grain: Optional[str] = None,
2029        retention: Optional[str] = None,
2030        blob_duration: Optional[str] = None,
2031        **kwargs
2032    ):
2033        super(Availability, self).__init__(**kwargs)
2034        self.time_grain = time_grain
2035        self.retention = retention
2036        self.blob_duration = blob_duration
2037
2038
2039class AvailableProvidersList(msrest.serialization.Model):
2040    """List of available countries with details.
2041
2042    All required parameters must be populated in order to send to Azure.
2043
2044    :param countries: Required. List of available countries.
2045    :type countries: list[~azure.mgmt.network.v2018_04_01.models.AvailableProvidersListCountry]
2046    """
2047
2048    _validation = {
2049        'countries': {'required': True},
2050    }
2051
2052    _attribute_map = {
2053        'countries': {'key': 'countries', 'type': '[AvailableProvidersListCountry]'},
2054    }
2055
2056    def __init__(
2057        self,
2058        *,
2059        countries: List["AvailableProvidersListCountry"],
2060        **kwargs
2061    ):
2062        super(AvailableProvidersList, self).__init__(**kwargs)
2063        self.countries = countries
2064
2065
2066class AvailableProvidersListCity(msrest.serialization.Model):
2067    """City or town details.
2068
2069    :param city_name: The city or town name.
2070    :type city_name: str
2071    :param providers: A list of Internet service providers.
2072    :type providers: list[str]
2073    """
2074
2075    _attribute_map = {
2076        'city_name': {'key': 'cityName', 'type': 'str'},
2077        'providers': {'key': 'providers', 'type': '[str]'},
2078    }
2079
2080    def __init__(
2081        self,
2082        *,
2083        city_name: Optional[str] = None,
2084        providers: Optional[List[str]] = None,
2085        **kwargs
2086    ):
2087        super(AvailableProvidersListCity, self).__init__(**kwargs)
2088        self.city_name = city_name
2089        self.providers = providers
2090
2091
2092class AvailableProvidersListCountry(msrest.serialization.Model):
2093    """Country details.
2094
2095    :param country_name: The country name.
2096    :type country_name: str
2097    :param providers: A list of Internet service providers.
2098    :type providers: list[str]
2099    :param states: List of available states in the country.
2100    :type states: list[~azure.mgmt.network.v2018_04_01.models.AvailableProvidersListState]
2101    """
2102
2103    _attribute_map = {
2104        'country_name': {'key': 'countryName', 'type': 'str'},
2105        'providers': {'key': 'providers', 'type': '[str]'},
2106        'states': {'key': 'states', 'type': '[AvailableProvidersListState]'},
2107    }
2108
2109    def __init__(
2110        self,
2111        *,
2112        country_name: Optional[str] = None,
2113        providers: Optional[List[str]] = None,
2114        states: Optional[List["AvailableProvidersListState"]] = None,
2115        **kwargs
2116    ):
2117        super(AvailableProvidersListCountry, self).__init__(**kwargs)
2118        self.country_name = country_name
2119        self.providers = providers
2120        self.states = states
2121
2122
2123class AvailableProvidersListParameters(msrest.serialization.Model):
2124    """Constraints that determine the list of available Internet service providers.
2125
2126    :param azure_locations: A list of Azure regions.
2127    :type azure_locations: list[str]
2128    :param country: The country for available providers list.
2129    :type country: str
2130    :param state: The state for available providers list.
2131    :type state: str
2132    :param city: The city or town for available providers list.
2133    :type city: str
2134    """
2135
2136    _attribute_map = {
2137        'azure_locations': {'key': 'azureLocations', 'type': '[str]'},
2138        'country': {'key': 'country', 'type': 'str'},
2139        'state': {'key': 'state', 'type': 'str'},
2140        'city': {'key': 'city', 'type': 'str'},
2141    }
2142
2143    def __init__(
2144        self,
2145        *,
2146        azure_locations: Optional[List[str]] = None,
2147        country: Optional[str] = None,
2148        state: Optional[str] = None,
2149        city: Optional[str] = None,
2150        **kwargs
2151    ):
2152        super(AvailableProvidersListParameters, self).__init__(**kwargs)
2153        self.azure_locations = azure_locations
2154        self.country = country
2155        self.state = state
2156        self.city = city
2157
2158
2159class AvailableProvidersListState(msrest.serialization.Model):
2160    """State details.
2161
2162    :param state_name: The state name.
2163    :type state_name: str
2164    :param providers: A list of Internet service providers.
2165    :type providers: list[str]
2166    :param cities: List of available cities or towns in the state.
2167    :type cities: list[~azure.mgmt.network.v2018_04_01.models.AvailableProvidersListCity]
2168    """
2169
2170    _attribute_map = {
2171        'state_name': {'key': 'stateName', 'type': 'str'},
2172        'providers': {'key': 'providers', 'type': '[str]'},
2173        'cities': {'key': 'cities', 'type': '[AvailableProvidersListCity]'},
2174    }
2175
2176    def __init__(
2177        self,
2178        *,
2179        state_name: Optional[str] = None,
2180        providers: Optional[List[str]] = None,
2181        cities: Optional[List["AvailableProvidersListCity"]] = None,
2182        **kwargs
2183    ):
2184        super(AvailableProvidersListState, self).__init__(**kwargs)
2185        self.state_name = state_name
2186        self.providers = providers
2187        self.cities = cities
2188
2189
2190class AzureAsyncOperationResult(msrest.serialization.Model):
2191    """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.
2192
2193    :param status: Status of the Azure async operation. Possible values are: 'InProgress',
2194     'Succeeded', and 'Failed'. Possible values include: "InProgress", "Succeeded", "Failed".
2195    :type status: str or ~azure.mgmt.network.v2018_04_01.models.NetworkOperationStatus
2196    :param error:
2197    :type error: ~azure.mgmt.network.v2018_04_01.models.Error
2198    """
2199
2200    _attribute_map = {
2201        'status': {'key': 'status', 'type': 'str'},
2202        'error': {'key': 'error', 'type': 'Error'},
2203    }
2204
2205    def __init__(
2206        self,
2207        *,
2208        status: Optional[Union[str, "NetworkOperationStatus"]] = None,
2209        error: Optional["Error"] = None,
2210        **kwargs
2211    ):
2212        super(AzureAsyncOperationResult, self).__init__(**kwargs)
2213        self.status = status
2214        self.error = error
2215
2216
2217class AzureFirewall(Resource):
2218    """Azure Firewall resource.
2219
2220    Variables are only populated by the server, and will be ignored when sending a request.
2221
2222    :param id: Resource ID.
2223    :type id: str
2224    :ivar name: Resource name.
2225    :vartype name: str
2226    :ivar type: Resource type.
2227    :vartype type: str
2228    :param location: Resource location.
2229    :type location: str
2230    :param tags: A set of tags. Resource tags.
2231    :type tags: dict[str, str]
2232    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
2233    :vartype etag: str
2234    :param application_rule_collections: Collection of application rule collections used by a Azure
2235     Firewall.
2236    :type application_rule_collections:
2237     list[~azure.mgmt.network.v2018_04_01.models.AzureFirewallApplicationRuleCollection]
2238    :param network_rule_collections: Collection of network rule collections used by a Azure
2239     Firewall.
2240    :type network_rule_collections:
2241     list[~azure.mgmt.network.v2018_04_01.models.AzureFirewallNetworkRuleCollection]
2242    :param ip_configurations: IP configuration of the Azure Firewall resource.
2243    :type ip_configurations:
2244     list[~azure.mgmt.network.v2018_04_01.models.AzureFirewallIPConfiguration]
2245    :param provisioning_state: The provisioning state of the resource. Possible values include:
2246     "Succeeded", "Updating", "Deleting", "Failed".
2247    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
2248    """
2249
2250    _validation = {
2251        'name': {'readonly': True},
2252        'type': {'readonly': True},
2253        'etag': {'readonly': True},
2254    }
2255
2256    _attribute_map = {
2257        'id': {'key': 'id', 'type': 'str'},
2258        'name': {'key': 'name', 'type': 'str'},
2259        'type': {'key': 'type', 'type': 'str'},
2260        'location': {'key': 'location', 'type': 'str'},
2261        'tags': {'key': 'tags', 'type': '{str}'},
2262        'etag': {'key': 'etag', 'type': 'str'},
2263        'application_rule_collections': {'key': 'properties.applicationRuleCollections', 'type': '[AzureFirewallApplicationRuleCollection]'},
2264        'network_rule_collections': {'key': 'properties.networkRuleCollections', 'type': '[AzureFirewallNetworkRuleCollection]'},
2265        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[AzureFirewallIPConfiguration]'},
2266        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2267    }
2268
2269    def __init__(
2270        self,
2271        *,
2272        id: Optional[str] = None,
2273        location: Optional[str] = None,
2274        tags: Optional[Dict[str, str]] = None,
2275        application_rule_collections: Optional[List["AzureFirewallApplicationRuleCollection"]] = None,
2276        network_rule_collections: Optional[List["AzureFirewallNetworkRuleCollection"]] = None,
2277        ip_configurations: Optional[List["AzureFirewallIPConfiguration"]] = None,
2278        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
2279        **kwargs
2280    ):
2281        super(AzureFirewall, self).__init__(id=id, location=location, tags=tags, **kwargs)
2282        self.etag = None
2283        self.application_rule_collections = application_rule_collections
2284        self.network_rule_collections = network_rule_collections
2285        self.ip_configurations = ip_configurations
2286        self.provisioning_state = provisioning_state
2287
2288
2289class AzureFirewallApplicationRule(msrest.serialization.Model):
2290    """Properties of an application rule.
2291
2292    :param name: Name of the application rule.
2293    :type name: str
2294    :param description: Description of the rule.
2295    :type description: str
2296    :param source_addresses: List of source IP addresses for this rule.
2297    :type source_addresses: list[str]
2298    :param protocols: Array of ApplicationRuleProtocols.
2299    :type protocols:
2300     list[~azure.mgmt.network.v2018_04_01.models.AzureFirewallApplicationRuleProtocol]
2301    :param target_urls: List of URLs for this rule.
2302    :type target_urls: list[str]
2303    """
2304
2305    _attribute_map = {
2306        'name': {'key': 'name', 'type': 'str'},
2307        'description': {'key': 'description', 'type': 'str'},
2308        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
2309        'protocols': {'key': 'protocols', 'type': '[AzureFirewallApplicationRuleProtocol]'},
2310        'target_urls': {'key': 'targetUrls', 'type': '[str]'},
2311    }
2312
2313    def __init__(
2314        self,
2315        *,
2316        name: Optional[str] = None,
2317        description: Optional[str] = None,
2318        source_addresses: Optional[List[str]] = None,
2319        protocols: Optional[List["AzureFirewallApplicationRuleProtocol"]] = None,
2320        target_urls: Optional[List[str]] = None,
2321        **kwargs
2322    ):
2323        super(AzureFirewallApplicationRule, self).__init__(**kwargs)
2324        self.name = name
2325        self.description = description
2326        self.source_addresses = source_addresses
2327        self.protocols = protocols
2328        self.target_urls = target_urls
2329
2330
2331class AzureFirewallApplicationRuleCollection(SubResource):
2332    """Application rule collection resource.
2333
2334    Variables are only populated by the server, and will be ignored when sending a request.
2335
2336    :param id: Resource ID.
2337    :type id: str
2338    :param name: Gets name of the resource that is unique within a resource group. This name can be
2339     used to access the resource.
2340    :type name: str
2341    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
2342    :vartype etag: str
2343    :param priority: Priority of the application rule collection resource.
2344    :type priority: int
2345    :param action: The action type of a rule collection.
2346    :type action: ~azure.mgmt.network.v2018_04_01.models.AzureFirewallRCAction
2347    :param rules: Collection of rules used by a application rule collection.
2348    :type rules: list[~azure.mgmt.network.v2018_04_01.models.AzureFirewallApplicationRule]
2349    :param provisioning_state: The provisioning state of the resource. Possible values include:
2350     "Succeeded", "Updating", "Deleting", "Failed".
2351    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
2352    """
2353
2354    _validation = {
2355        'etag': {'readonly': True},
2356        'priority': {'maximum': 65000, 'minimum': 100},
2357    }
2358
2359    _attribute_map = {
2360        'id': {'key': 'id', 'type': 'str'},
2361        'name': {'key': 'name', 'type': 'str'},
2362        'etag': {'key': 'etag', 'type': 'str'},
2363        'priority': {'key': 'properties.priority', 'type': 'int'},
2364        'action': {'key': 'properties.action', 'type': 'AzureFirewallRCAction'},
2365        'rules': {'key': 'properties.rules', 'type': '[AzureFirewallApplicationRule]'},
2366        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2367    }
2368
2369    def __init__(
2370        self,
2371        *,
2372        id: Optional[str] = None,
2373        name: Optional[str] = None,
2374        priority: Optional[int] = None,
2375        action: Optional["AzureFirewallRCAction"] = None,
2376        rules: Optional[List["AzureFirewallApplicationRule"]] = None,
2377        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
2378        **kwargs
2379    ):
2380        super(AzureFirewallApplicationRuleCollection, self).__init__(id=id, **kwargs)
2381        self.name = name
2382        self.etag = None
2383        self.priority = priority
2384        self.action = action
2385        self.rules = rules
2386        self.provisioning_state = provisioning_state
2387
2388
2389class AzureFirewallApplicationRuleProtocol(msrest.serialization.Model):
2390    """Properties of the application rule protocol.
2391
2392    :param protocol_type: Protocol type. Possible values include: "Http", "Https".
2393    :type protocol_type: str or
2394     ~azure.mgmt.network.v2018_04_01.models.AzureFirewallApplicationRuleProtocolType
2395    :param port: Port number for the protocol, cannot be greater than 64000. This field is
2396     optional.
2397    :type port: int
2398    """
2399
2400    _validation = {
2401        'port': {'maximum': 64000, 'minimum': 0},
2402    }
2403
2404    _attribute_map = {
2405        'protocol_type': {'key': 'protocolType', 'type': 'str'},
2406        'port': {'key': 'port', 'type': 'int'},
2407    }
2408
2409    def __init__(
2410        self,
2411        *,
2412        protocol_type: Optional[Union[str, "AzureFirewallApplicationRuleProtocolType"]] = None,
2413        port: Optional[int] = None,
2414        **kwargs
2415    ):
2416        super(AzureFirewallApplicationRuleProtocol, self).__init__(**kwargs)
2417        self.protocol_type = protocol_type
2418        self.port = port
2419
2420
2421class AzureFirewallIPConfiguration(SubResource):
2422    """IP configuration of an Azure Firewall.
2423
2424    :param id: Resource ID.
2425    :type id: str
2426    :param name: Name of the resource that is unique within a resource group. This name can be used
2427     to access the resource.
2428    :type name: str
2429    :param etag: A unique read-only string that changes whenever the resource is updated.
2430    :type etag: str
2431    :param private_ip_address: The Firewall Internal Load Balancer IP to be used as the next hop in
2432     User Defined Routes.
2433    :type private_ip_address: str
2434    :param subnet: Reference of the subnet resource. This resource must be named
2435     'AzureFirewallSubnet'.
2436    :type subnet: ~azure.mgmt.network.v2018_04_01.models.SubResource
2437    :param internal_public_ip_address: Reference of the PublicIP resource. This field is a
2438     mandatory input.
2439    :type internal_public_ip_address: ~azure.mgmt.network.v2018_04_01.models.SubResource
2440    :param public_ip_address: Reference of the PublicIP resource. This field is populated in the
2441     output.
2442    :type public_ip_address: ~azure.mgmt.network.v2018_04_01.models.SubResource
2443    :param provisioning_state: The provisioning state of the resource. Possible values include:
2444     "Succeeded", "Updating", "Deleting", "Failed".
2445    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
2446    """
2447
2448    _attribute_map = {
2449        'id': {'key': 'id', 'type': 'str'},
2450        'name': {'key': 'name', 'type': 'str'},
2451        'etag': {'key': 'etag', 'type': 'str'},
2452        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
2453        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
2454        'internal_public_ip_address': {'key': 'properties.internalPublicIpAddress', 'type': 'SubResource'},
2455        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
2456        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2457    }
2458
2459    def __init__(
2460        self,
2461        *,
2462        id: Optional[str] = None,
2463        name: Optional[str] = None,
2464        etag: Optional[str] = None,
2465        private_ip_address: Optional[str] = None,
2466        subnet: Optional["SubResource"] = None,
2467        internal_public_ip_address: Optional["SubResource"] = None,
2468        public_ip_address: Optional["SubResource"] = None,
2469        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
2470        **kwargs
2471    ):
2472        super(AzureFirewallIPConfiguration, self).__init__(id=id, **kwargs)
2473        self.name = name
2474        self.etag = etag
2475        self.private_ip_address = private_ip_address
2476        self.subnet = subnet
2477        self.internal_public_ip_address = internal_public_ip_address
2478        self.public_ip_address = public_ip_address
2479        self.provisioning_state = provisioning_state
2480
2481
2482class AzureFirewallListResult(msrest.serialization.Model):
2483    """Response for ListAzureFirewalls API service call.
2484
2485    :param value: List of a Azure Firewalls in a resource group.
2486    :type value: list[~azure.mgmt.network.v2018_04_01.models.AzureFirewall]
2487    :param next_link: URL to get the next set of results.
2488    :type next_link: str
2489    """
2490
2491    _attribute_map = {
2492        'value': {'key': 'value', 'type': '[AzureFirewall]'},
2493        'next_link': {'key': 'nextLink', 'type': 'str'},
2494    }
2495
2496    def __init__(
2497        self,
2498        *,
2499        value: Optional[List["AzureFirewall"]] = None,
2500        next_link: Optional[str] = None,
2501        **kwargs
2502    ):
2503        super(AzureFirewallListResult, self).__init__(**kwargs)
2504        self.value = value
2505        self.next_link = next_link
2506
2507
2508class AzureFirewallNetworkRule(msrest.serialization.Model):
2509    """Properties of the network rule.
2510
2511    :param name: Name of the network rule.
2512    :type name: str
2513    :param description: Description of the rule.
2514    :type description: str
2515    :param protocols: Array of AzureFirewallNetworkRuleProtocols.
2516    :type protocols: list[str or
2517     ~azure.mgmt.network.v2018_04_01.models.AzureFirewallNetworkRuleProtocol]
2518    :param source_addresses: List of source IP addresses for this rule.
2519    :type source_addresses: list[str]
2520    :param destination_addresses: List of destination IP addresses.
2521    :type destination_addresses: list[str]
2522    :param destination_ports: List of destination ports.
2523    :type destination_ports: list[str]
2524    """
2525
2526    _attribute_map = {
2527        'name': {'key': 'name', 'type': 'str'},
2528        'description': {'key': 'description', 'type': 'str'},
2529        'protocols': {'key': 'protocols', 'type': '[str]'},
2530        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
2531        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
2532        'destination_ports': {'key': 'destinationPorts', 'type': '[str]'},
2533    }
2534
2535    def __init__(
2536        self,
2537        *,
2538        name: Optional[str] = None,
2539        description: Optional[str] = None,
2540        protocols: Optional[List[Union[str, "AzureFirewallNetworkRuleProtocol"]]] = None,
2541        source_addresses: Optional[List[str]] = None,
2542        destination_addresses: Optional[List[str]] = None,
2543        destination_ports: Optional[List[str]] = None,
2544        **kwargs
2545    ):
2546        super(AzureFirewallNetworkRule, self).__init__(**kwargs)
2547        self.name = name
2548        self.description = description
2549        self.protocols = protocols
2550        self.source_addresses = source_addresses
2551        self.destination_addresses = destination_addresses
2552        self.destination_ports = destination_ports
2553
2554
2555class AzureFirewallNetworkRuleCollection(SubResource):
2556    """Network rule collection resource.
2557
2558    Variables are only populated by the server, and will be ignored when sending a request.
2559
2560    :param id: Resource ID.
2561    :type id: str
2562    :param name: Gets name of the resource that is unique within a resource group. This name can be
2563     used to access the resource.
2564    :type name: str
2565    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
2566    :vartype etag: str
2567    :param priority: Priority of the network rule collection resource.
2568    :type priority: int
2569    :param action: The action type of a rule collection.
2570    :type action: ~azure.mgmt.network.v2018_04_01.models.AzureFirewallRCAction
2571    :param rules: Collection of rules used by a network rule collection.
2572    :type rules: list[~azure.mgmt.network.v2018_04_01.models.AzureFirewallNetworkRule]
2573    :param provisioning_state: The provisioning state of the resource. Possible values include:
2574     "Succeeded", "Updating", "Deleting", "Failed".
2575    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
2576    """
2577
2578    _validation = {
2579        'etag': {'readonly': True},
2580        'priority': {'maximum': 65000, 'minimum': 100},
2581    }
2582
2583    _attribute_map = {
2584        'id': {'key': 'id', 'type': 'str'},
2585        'name': {'key': 'name', 'type': 'str'},
2586        'etag': {'key': 'etag', 'type': 'str'},
2587        'priority': {'key': 'properties.priority', 'type': 'int'},
2588        'action': {'key': 'properties.action', 'type': 'AzureFirewallRCAction'},
2589        'rules': {'key': 'properties.rules', 'type': '[AzureFirewallNetworkRule]'},
2590        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2591    }
2592
2593    def __init__(
2594        self,
2595        *,
2596        id: Optional[str] = None,
2597        name: Optional[str] = None,
2598        priority: Optional[int] = None,
2599        action: Optional["AzureFirewallRCAction"] = None,
2600        rules: Optional[List["AzureFirewallNetworkRule"]] = None,
2601        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
2602        **kwargs
2603    ):
2604        super(AzureFirewallNetworkRuleCollection, self).__init__(id=id, **kwargs)
2605        self.name = name
2606        self.etag = None
2607        self.priority = priority
2608        self.action = action
2609        self.rules = rules
2610        self.provisioning_state = provisioning_state
2611
2612
2613class AzureFirewallRCAction(msrest.serialization.Model):
2614    """Properties of the AzureFirewallRCAction.
2615
2616    :param type: The type of action. Possible values include: "Allow", "Deny".
2617    :type type: str or ~azure.mgmt.network.v2018_04_01.models.AzureFirewallRCActionType
2618    """
2619
2620    _attribute_map = {
2621        'type': {'key': 'type', 'type': 'str'},
2622    }
2623
2624    def __init__(
2625        self,
2626        *,
2627        type: Optional[Union[str, "AzureFirewallRCActionType"]] = None,
2628        **kwargs
2629    ):
2630        super(AzureFirewallRCAction, self).__init__(**kwargs)
2631        self.type = type
2632
2633
2634class AzureReachabilityReport(msrest.serialization.Model):
2635    """Azure reachability report details.
2636
2637    All required parameters must be populated in order to send to Azure.
2638
2639    :param aggregation_level: Required. The aggregation level of Azure reachability report. Can be
2640     Country, State or City.
2641    :type aggregation_level: str
2642    :param provider_location: Required. Parameters that define a geographic location.
2643    :type provider_location: ~azure.mgmt.network.v2018_04_01.models.AzureReachabilityReportLocation
2644    :param reachability_report: Required. List of Azure reachability report items.
2645    :type reachability_report:
2646     list[~azure.mgmt.network.v2018_04_01.models.AzureReachabilityReportItem]
2647    """
2648
2649    _validation = {
2650        'aggregation_level': {'required': True},
2651        'provider_location': {'required': True},
2652        'reachability_report': {'required': True},
2653    }
2654
2655    _attribute_map = {
2656        'aggregation_level': {'key': 'aggregationLevel', 'type': 'str'},
2657        'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'},
2658        'reachability_report': {'key': 'reachabilityReport', 'type': '[AzureReachabilityReportItem]'},
2659    }
2660
2661    def __init__(
2662        self,
2663        *,
2664        aggregation_level: str,
2665        provider_location: "AzureReachabilityReportLocation",
2666        reachability_report: List["AzureReachabilityReportItem"],
2667        **kwargs
2668    ):
2669        super(AzureReachabilityReport, self).__init__(**kwargs)
2670        self.aggregation_level = aggregation_level
2671        self.provider_location = provider_location
2672        self.reachability_report = reachability_report
2673
2674
2675class AzureReachabilityReportItem(msrest.serialization.Model):
2676    """Azure reachability report details for a given provider location.
2677
2678    :param provider: The Internet service provider.
2679    :type provider: str
2680    :param azure_location: The Azure region.
2681    :type azure_location: str
2682    :param latencies: List of latency details for each of the time series.
2683    :type latencies:
2684     list[~azure.mgmt.network.v2018_04_01.models.AzureReachabilityReportLatencyInfo]
2685    """
2686
2687    _attribute_map = {
2688        'provider': {'key': 'provider', 'type': 'str'},
2689        'azure_location': {'key': 'azureLocation', 'type': 'str'},
2690        'latencies': {'key': 'latencies', 'type': '[AzureReachabilityReportLatencyInfo]'},
2691    }
2692
2693    def __init__(
2694        self,
2695        *,
2696        provider: Optional[str] = None,
2697        azure_location: Optional[str] = None,
2698        latencies: Optional[List["AzureReachabilityReportLatencyInfo"]] = None,
2699        **kwargs
2700    ):
2701        super(AzureReachabilityReportItem, self).__init__(**kwargs)
2702        self.provider = provider
2703        self.azure_location = azure_location
2704        self.latencies = latencies
2705
2706
2707class AzureReachabilityReportLatencyInfo(msrest.serialization.Model):
2708    """Details on latency for a time series.
2709
2710    :param time_stamp: The time stamp.
2711    :type time_stamp: ~datetime.datetime
2712    :param score: The relative latency score between 1 and 100, higher values indicating a faster
2713     connection.
2714    :type score: int
2715    """
2716
2717    _validation = {
2718        'score': {'maximum': 100, 'minimum': 1},
2719    }
2720
2721    _attribute_map = {
2722        'time_stamp': {'key': 'timeStamp', 'type': 'iso-8601'},
2723        'score': {'key': 'score', 'type': 'int'},
2724    }
2725
2726    def __init__(
2727        self,
2728        *,
2729        time_stamp: Optional[datetime.datetime] = None,
2730        score: Optional[int] = None,
2731        **kwargs
2732    ):
2733        super(AzureReachabilityReportLatencyInfo, self).__init__(**kwargs)
2734        self.time_stamp = time_stamp
2735        self.score = score
2736
2737
2738class AzureReachabilityReportLocation(msrest.serialization.Model):
2739    """Parameters that define a geographic location.
2740
2741    All required parameters must be populated in order to send to Azure.
2742
2743    :param country: Required. The name of the country.
2744    :type country: str
2745    :param state: The name of the state.
2746    :type state: str
2747    :param city: The name of the city or town.
2748    :type city: str
2749    """
2750
2751    _validation = {
2752        'country': {'required': True},
2753    }
2754
2755    _attribute_map = {
2756        'country': {'key': 'country', 'type': 'str'},
2757        'state': {'key': 'state', 'type': 'str'},
2758        'city': {'key': 'city', 'type': 'str'},
2759    }
2760
2761    def __init__(
2762        self,
2763        *,
2764        country: str,
2765        state: Optional[str] = None,
2766        city: Optional[str] = None,
2767        **kwargs
2768    ):
2769        super(AzureReachabilityReportLocation, self).__init__(**kwargs)
2770        self.country = country
2771        self.state = state
2772        self.city = city
2773
2774
2775class AzureReachabilityReportParameters(msrest.serialization.Model):
2776    """Geographic and time constraints for Azure reachability report.
2777
2778    All required parameters must be populated in order to send to Azure.
2779
2780    :param provider_location: Required. Parameters that define a geographic location.
2781    :type provider_location: ~azure.mgmt.network.v2018_04_01.models.AzureReachabilityReportLocation
2782    :param providers: List of Internet service providers.
2783    :type providers: list[str]
2784    :param azure_locations: Optional Azure regions to scope the query to.
2785    :type azure_locations: list[str]
2786    :param start_time: Required. The start time for the Azure reachability report.
2787    :type start_time: ~datetime.datetime
2788    :param end_time: Required. The end time for the Azure reachability report.
2789    :type end_time: ~datetime.datetime
2790    """
2791
2792    _validation = {
2793        'provider_location': {'required': True},
2794        'start_time': {'required': True},
2795        'end_time': {'required': True},
2796    }
2797
2798    _attribute_map = {
2799        'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'},
2800        'providers': {'key': 'providers', 'type': '[str]'},
2801        'azure_locations': {'key': 'azureLocations', 'type': '[str]'},
2802        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
2803        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
2804    }
2805
2806    def __init__(
2807        self,
2808        *,
2809        provider_location: "AzureReachabilityReportLocation",
2810        start_time: datetime.datetime,
2811        end_time: datetime.datetime,
2812        providers: Optional[List[str]] = None,
2813        azure_locations: Optional[List[str]] = None,
2814        **kwargs
2815    ):
2816        super(AzureReachabilityReportParameters, self).__init__(**kwargs)
2817        self.provider_location = provider_location
2818        self.providers = providers
2819        self.azure_locations = azure_locations
2820        self.start_time = start_time
2821        self.end_time = end_time
2822
2823
2824class BackendAddressPool(SubResource):
2825    """Pool of backend IP addresses.
2826
2827    Variables are only populated by the server, and will be ignored when sending a request.
2828
2829    :param id: Resource ID.
2830    :type id: str
2831    :param name: Gets name of the resource that is unique within a resource group. This name can be
2832     used to access the resource.
2833    :type name: str
2834    :param etag: A unique read-only string that changes whenever the resource is updated.
2835    :type etag: str
2836    :ivar backend_ip_configurations: Gets collection of references to IP addresses defined in
2837     network interfaces.
2838    :vartype backend_ip_configurations:
2839     list[~azure.mgmt.network.v2018_04_01.models.NetworkInterfaceIPConfiguration]
2840    :ivar load_balancing_rules: Gets load balancing rules that use this backend address pool.
2841    :vartype load_balancing_rules: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
2842    :ivar outbound_nat_rule: Gets outbound rules that use this backend address pool.
2843    :vartype outbound_nat_rule: ~azure.mgmt.network.v2018_04_01.models.SubResource
2844    :param provisioning_state: Get provisioning state of the public IP resource. Possible values
2845     are: 'Updating', 'Deleting', and 'Failed'.
2846    :type provisioning_state: str
2847    """
2848
2849    _validation = {
2850        'backend_ip_configurations': {'readonly': True},
2851        'load_balancing_rules': {'readonly': True},
2852        'outbound_nat_rule': {'readonly': True},
2853    }
2854
2855    _attribute_map = {
2856        'id': {'key': 'id', 'type': 'str'},
2857        'name': {'key': 'name', 'type': 'str'},
2858        'etag': {'key': 'etag', 'type': 'str'},
2859        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
2860        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
2861        'outbound_nat_rule': {'key': 'properties.outboundNatRule', 'type': 'SubResource'},
2862        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2863    }
2864
2865    def __init__(
2866        self,
2867        *,
2868        id: Optional[str] = None,
2869        name: Optional[str] = None,
2870        etag: Optional[str] = None,
2871        provisioning_state: Optional[str] = None,
2872        **kwargs
2873    ):
2874        super(BackendAddressPool, self).__init__(id=id, **kwargs)
2875        self.name = name
2876        self.etag = etag
2877        self.backend_ip_configurations = None
2878        self.load_balancing_rules = None
2879        self.outbound_nat_rule = None
2880        self.provisioning_state = provisioning_state
2881
2882
2883class BGPCommunity(msrest.serialization.Model):
2884    """Contains bgp community information offered in Service Community resources.
2885
2886    :param service_supported_region: The region which the service support. e.g. For O365, region is
2887     Global.
2888    :type service_supported_region: str
2889    :param community_name: The name of the bgp community. e.g. Skype.
2890    :type community_name: str
2891    :param community_value: The value of the bgp community. For more information:
2892     https://docs.microsoft.com/en-us/azure/expressroute/expressroute-routing.
2893    :type community_value: str
2894    :param community_prefixes: The prefixes that the bgp community contains.
2895    :type community_prefixes: list[str]
2896    :param is_authorized_to_use: Customer is authorized to use bgp community or not.
2897    :type is_authorized_to_use: bool
2898    :param service_group: The service group of the bgp community contains.
2899    :type service_group: str
2900    """
2901
2902    _attribute_map = {
2903        'service_supported_region': {'key': 'serviceSupportedRegion', 'type': 'str'},
2904        'community_name': {'key': 'communityName', 'type': 'str'},
2905        'community_value': {'key': 'communityValue', 'type': 'str'},
2906        'community_prefixes': {'key': 'communityPrefixes', 'type': '[str]'},
2907        'is_authorized_to_use': {'key': 'isAuthorizedToUse', 'type': 'bool'},
2908        'service_group': {'key': 'serviceGroup', 'type': 'str'},
2909    }
2910
2911    def __init__(
2912        self,
2913        *,
2914        service_supported_region: Optional[str] = None,
2915        community_name: Optional[str] = None,
2916        community_value: Optional[str] = None,
2917        community_prefixes: Optional[List[str]] = None,
2918        is_authorized_to_use: Optional[bool] = None,
2919        service_group: Optional[str] = None,
2920        **kwargs
2921    ):
2922        super(BGPCommunity, self).__init__(**kwargs)
2923        self.service_supported_region = service_supported_region
2924        self.community_name = community_name
2925        self.community_value = community_value
2926        self.community_prefixes = community_prefixes
2927        self.is_authorized_to_use = is_authorized_to_use
2928        self.service_group = service_group
2929
2930
2931class BgpPeerStatus(msrest.serialization.Model):
2932    """BGP peer status details.
2933
2934    Variables are only populated by the server, and will be ignored when sending a request.
2935
2936    :ivar local_address: The virtual network gateway's local address.
2937    :vartype local_address: str
2938    :ivar neighbor: The remote BGP peer.
2939    :vartype neighbor: str
2940    :ivar asn: The autonomous system number of the remote BGP peer.
2941    :vartype asn: int
2942    :ivar state: The BGP peer state. Possible values include: "Unknown", "Stopped", "Idle",
2943     "Connecting", "Connected".
2944    :vartype state: str or ~azure.mgmt.network.v2018_04_01.models.BgpPeerState
2945    :ivar connected_duration: For how long the peering has been up.
2946    :vartype connected_duration: str
2947    :ivar routes_received: The number of routes learned from this peer.
2948    :vartype routes_received: long
2949    :ivar messages_sent: The number of BGP messages sent.
2950    :vartype messages_sent: long
2951    :ivar messages_received: The number of BGP messages received.
2952    :vartype messages_received: long
2953    """
2954
2955    _validation = {
2956        'local_address': {'readonly': True},
2957        'neighbor': {'readonly': True},
2958        'asn': {'readonly': True},
2959        'state': {'readonly': True},
2960        'connected_duration': {'readonly': True},
2961        'routes_received': {'readonly': True},
2962        'messages_sent': {'readonly': True},
2963        'messages_received': {'readonly': True},
2964    }
2965
2966    _attribute_map = {
2967        'local_address': {'key': 'localAddress', 'type': 'str'},
2968        'neighbor': {'key': 'neighbor', 'type': 'str'},
2969        'asn': {'key': 'asn', 'type': 'int'},
2970        'state': {'key': 'state', 'type': 'str'},
2971        'connected_duration': {'key': 'connectedDuration', 'type': 'str'},
2972        'routes_received': {'key': 'routesReceived', 'type': 'long'},
2973        'messages_sent': {'key': 'messagesSent', 'type': 'long'},
2974        'messages_received': {'key': 'messagesReceived', 'type': 'long'},
2975    }
2976
2977    def __init__(
2978        self,
2979        **kwargs
2980    ):
2981        super(BgpPeerStatus, self).__init__(**kwargs)
2982        self.local_address = None
2983        self.neighbor = None
2984        self.asn = None
2985        self.state = None
2986        self.connected_duration = None
2987        self.routes_received = None
2988        self.messages_sent = None
2989        self.messages_received = None
2990
2991
2992class BgpPeerStatusListResult(msrest.serialization.Model):
2993    """Response for list BGP peer status API service call.
2994
2995    :param value: List of BGP peers.
2996    :type value: list[~azure.mgmt.network.v2018_04_01.models.BgpPeerStatus]
2997    """
2998
2999    _attribute_map = {
3000        'value': {'key': 'value', 'type': '[BgpPeerStatus]'},
3001    }
3002
3003    def __init__(
3004        self,
3005        *,
3006        value: Optional[List["BgpPeerStatus"]] = None,
3007        **kwargs
3008    ):
3009        super(BgpPeerStatusListResult, self).__init__(**kwargs)
3010        self.value = value
3011
3012
3013class BgpServiceCommunity(Resource):
3014    """Service Community Properties.
3015
3016    Variables are only populated by the server, and will be ignored when sending a request.
3017
3018    :param id: Resource ID.
3019    :type id: str
3020    :ivar name: Resource name.
3021    :vartype name: str
3022    :ivar type: Resource type.
3023    :vartype type: str
3024    :param location: Resource location.
3025    :type location: str
3026    :param tags: A set of tags. Resource tags.
3027    :type tags: dict[str, str]
3028    :param service_name: The name of the bgp community. e.g. Skype.
3029    :type service_name: str
3030    :param bgp_communities: Get a list of bgp communities.
3031    :type bgp_communities: list[~azure.mgmt.network.v2018_04_01.models.BGPCommunity]
3032    """
3033
3034    _validation = {
3035        'name': {'readonly': True},
3036        'type': {'readonly': True},
3037    }
3038
3039    _attribute_map = {
3040        'id': {'key': 'id', 'type': 'str'},
3041        'name': {'key': 'name', 'type': 'str'},
3042        'type': {'key': 'type', 'type': 'str'},
3043        'location': {'key': 'location', 'type': 'str'},
3044        'tags': {'key': 'tags', 'type': '{str}'},
3045        'service_name': {'key': 'properties.serviceName', 'type': 'str'},
3046        'bgp_communities': {'key': 'properties.bgpCommunities', 'type': '[BGPCommunity]'},
3047    }
3048
3049    def __init__(
3050        self,
3051        *,
3052        id: Optional[str] = None,
3053        location: Optional[str] = None,
3054        tags: Optional[Dict[str, str]] = None,
3055        service_name: Optional[str] = None,
3056        bgp_communities: Optional[List["BGPCommunity"]] = None,
3057        **kwargs
3058    ):
3059        super(BgpServiceCommunity, self).__init__(id=id, location=location, tags=tags, **kwargs)
3060        self.service_name = service_name
3061        self.bgp_communities = bgp_communities
3062
3063
3064class BgpServiceCommunityListResult(msrest.serialization.Model):
3065    """Response for the ListServiceCommunity API service call.
3066
3067    :param value: A list of service community resources.
3068    :type value: list[~azure.mgmt.network.v2018_04_01.models.BgpServiceCommunity]
3069    :param next_link: The URL to get the next set of results.
3070    :type next_link: str
3071    """
3072
3073    _attribute_map = {
3074        'value': {'key': 'value', 'type': '[BgpServiceCommunity]'},
3075        'next_link': {'key': 'nextLink', 'type': 'str'},
3076    }
3077
3078    def __init__(
3079        self,
3080        *,
3081        value: Optional[List["BgpServiceCommunity"]] = None,
3082        next_link: Optional[str] = None,
3083        **kwargs
3084    ):
3085        super(BgpServiceCommunityListResult, self).__init__(**kwargs)
3086        self.value = value
3087        self.next_link = next_link
3088
3089
3090class BgpSettings(msrest.serialization.Model):
3091    """BGP settings details.
3092
3093    :param asn: The BGP speaker's ASN.
3094    :type asn: long
3095    :param bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker.
3096    :type bgp_peering_address: str
3097    :param peer_weight: The weight added to routes learned from this BGP speaker.
3098    :type peer_weight: int
3099    """
3100
3101    _attribute_map = {
3102        'asn': {'key': 'asn', 'type': 'long'},
3103        'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'},
3104        'peer_weight': {'key': 'peerWeight', 'type': 'int'},
3105    }
3106
3107    def __init__(
3108        self,
3109        *,
3110        asn: Optional[int] = None,
3111        bgp_peering_address: Optional[str] = None,
3112        peer_weight: Optional[int] = None,
3113        **kwargs
3114    ):
3115        super(BgpSettings, self).__init__(**kwargs)
3116        self.asn = asn
3117        self.bgp_peering_address = bgp_peering_address
3118        self.peer_weight = peer_weight
3119
3120
3121class ConnectionMonitor(msrest.serialization.Model):
3122    """Parameters that define the operation to create a connection monitor.
3123
3124    All required parameters must be populated in order to send to Azure.
3125
3126    :param location: Connection monitor location.
3127    :type location: str
3128    :param tags: A set of tags. Connection monitor tags.
3129    :type tags: dict[str, str]
3130    :param source: Required. Describes the source of connection monitor.
3131    :type source: ~azure.mgmt.network.v2018_04_01.models.ConnectionMonitorSource
3132    :param destination: Required. Describes the destination of connection monitor.
3133    :type destination: ~azure.mgmt.network.v2018_04_01.models.ConnectionMonitorDestination
3134    :param auto_start: Determines if the connection monitor will start automatically once created.
3135    :type auto_start: bool
3136    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
3137    :type monitoring_interval_in_seconds: int
3138    """
3139
3140    _validation = {
3141        'source': {'required': True},
3142        'destination': {'required': True},
3143    }
3144
3145    _attribute_map = {
3146        'location': {'key': 'location', 'type': 'str'},
3147        'tags': {'key': 'tags', 'type': '{str}'},
3148        'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'},
3149        'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'},
3150        'auto_start': {'key': 'properties.autoStart', 'type': 'bool'},
3151        'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'},
3152    }
3153
3154    def __init__(
3155        self,
3156        *,
3157        source: "ConnectionMonitorSource",
3158        destination: "ConnectionMonitorDestination",
3159        location: Optional[str] = None,
3160        tags: Optional[Dict[str, str]] = None,
3161        auto_start: Optional[bool] = True,
3162        monitoring_interval_in_seconds: Optional[int] = 60,
3163        **kwargs
3164    ):
3165        super(ConnectionMonitor, self).__init__(**kwargs)
3166        self.location = location
3167        self.tags = tags
3168        self.source = source
3169        self.destination = destination
3170        self.auto_start = auto_start
3171        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
3172
3173
3174class ConnectionMonitorDestination(msrest.serialization.Model):
3175    """Describes the destination of connection monitor.
3176
3177    :param resource_id: The ID of the resource used as the destination by connection monitor.
3178    :type resource_id: str
3179    :param address: Address of the connection monitor destination (IP or domain name).
3180    :type address: str
3181    :param port: The destination port used by connection monitor.
3182    :type port: int
3183    """
3184
3185    _attribute_map = {
3186        'resource_id': {'key': 'resourceId', 'type': 'str'},
3187        'address': {'key': 'address', 'type': 'str'},
3188        'port': {'key': 'port', 'type': 'int'},
3189    }
3190
3191    def __init__(
3192        self,
3193        *,
3194        resource_id: Optional[str] = None,
3195        address: Optional[str] = None,
3196        port: Optional[int] = None,
3197        **kwargs
3198    ):
3199        super(ConnectionMonitorDestination, self).__init__(**kwargs)
3200        self.resource_id = resource_id
3201        self.address = address
3202        self.port = port
3203
3204
3205class ConnectionMonitorListResult(msrest.serialization.Model):
3206    """List of connection monitors.
3207
3208    :param value: Information about connection monitors.
3209    :type value: list[~azure.mgmt.network.v2018_04_01.models.ConnectionMonitorResult]
3210    """
3211
3212    _attribute_map = {
3213        'value': {'key': 'value', 'type': '[ConnectionMonitorResult]'},
3214    }
3215
3216    def __init__(
3217        self,
3218        *,
3219        value: Optional[List["ConnectionMonitorResult"]] = None,
3220        **kwargs
3221    ):
3222        super(ConnectionMonitorListResult, self).__init__(**kwargs)
3223        self.value = value
3224
3225
3226class ConnectionMonitorParameters(msrest.serialization.Model):
3227    """Parameters that define the operation to create a connection monitor.
3228
3229    All required parameters must be populated in order to send to Azure.
3230
3231    :param source: Required. Describes the source of connection monitor.
3232    :type source: ~azure.mgmt.network.v2018_04_01.models.ConnectionMonitorSource
3233    :param destination: Required. Describes the destination of connection monitor.
3234    :type destination: ~azure.mgmt.network.v2018_04_01.models.ConnectionMonitorDestination
3235    :param auto_start: Determines if the connection monitor will start automatically once created.
3236    :type auto_start: bool
3237    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
3238    :type monitoring_interval_in_seconds: int
3239    """
3240
3241    _validation = {
3242        'source': {'required': True},
3243        'destination': {'required': True},
3244    }
3245
3246    _attribute_map = {
3247        'source': {'key': 'source', 'type': 'ConnectionMonitorSource'},
3248        'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'},
3249        'auto_start': {'key': 'autoStart', 'type': 'bool'},
3250        'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'},
3251    }
3252
3253    def __init__(
3254        self,
3255        *,
3256        source: "ConnectionMonitorSource",
3257        destination: "ConnectionMonitorDestination",
3258        auto_start: Optional[bool] = True,
3259        monitoring_interval_in_seconds: Optional[int] = 60,
3260        **kwargs
3261    ):
3262        super(ConnectionMonitorParameters, self).__init__(**kwargs)
3263        self.source = source
3264        self.destination = destination
3265        self.auto_start = auto_start
3266        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
3267
3268
3269class ConnectionMonitorQueryResult(msrest.serialization.Model):
3270    """List of connection states snapshots.
3271
3272    :param source_status: Status of connection monitor source. Possible values include: "Uknown",
3273     "Active", "Inactive".
3274    :type source_status: str or
3275     ~azure.mgmt.network.v2018_04_01.models.ConnectionMonitorSourceStatus
3276    :param states: Information about connection states.
3277    :type states: list[~azure.mgmt.network.v2018_04_01.models.ConnectionStateSnapshot]
3278    """
3279
3280    _attribute_map = {
3281        'source_status': {'key': 'sourceStatus', 'type': 'str'},
3282        'states': {'key': 'states', 'type': '[ConnectionStateSnapshot]'},
3283    }
3284
3285    def __init__(
3286        self,
3287        *,
3288        source_status: Optional[Union[str, "ConnectionMonitorSourceStatus"]] = None,
3289        states: Optional[List["ConnectionStateSnapshot"]] = None,
3290        **kwargs
3291    ):
3292        super(ConnectionMonitorQueryResult, self).__init__(**kwargs)
3293        self.source_status = source_status
3294        self.states = states
3295
3296
3297class ConnectionMonitorResult(msrest.serialization.Model):
3298    """Information about the connection monitor.
3299
3300    Variables are only populated by the server, and will be ignored when sending a request.
3301
3302    :ivar name: Name of the connection monitor.
3303    :vartype name: str
3304    :ivar id: ID of the connection monitor.
3305    :vartype id: str
3306    :param etag:
3307    :type etag: str
3308    :ivar type: Connection monitor type.
3309    :vartype type: str
3310    :param location: Connection monitor location.
3311    :type location: str
3312    :param tags: A set of tags. Connection monitor tags.
3313    :type tags: dict[str, str]
3314    :param source: Describes the source of connection monitor.
3315    :type source: ~azure.mgmt.network.v2018_04_01.models.ConnectionMonitorSource
3316    :param destination: Describes the destination of connection monitor.
3317    :type destination: ~azure.mgmt.network.v2018_04_01.models.ConnectionMonitorDestination
3318    :param auto_start: Determines if the connection monitor will start automatically once created.
3319    :type auto_start: bool
3320    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
3321    :type monitoring_interval_in_seconds: int
3322    :param provisioning_state: The provisioning state of the connection monitor. Possible values
3323     include: "Succeeded", "Updating", "Deleting", "Failed".
3324    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
3325    :param start_time: The date and time when the connection monitor was started.
3326    :type start_time: ~datetime.datetime
3327    :param monitoring_status: The monitoring status of the connection monitor.
3328    :type monitoring_status: str
3329    """
3330
3331    _validation = {
3332        'name': {'readonly': True},
3333        'id': {'readonly': True},
3334        'type': {'readonly': True},
3335    }
3336
3337    _attribute_map = {
3338        'name': {'key': 'name', 'type': 'str'},
3339        'id': {'key': 'id', 'type': 'str'},
3340        'etag': {'key': 'etag', 'type': 'str'},
3341        'type': {'key': 'type', 'type': 'str'},
3342        'location': {'key': 'location', 'type': 'str'},
3343        'tags': {'key': 'tags', 'type': '{str}'},
3344        'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'},
3345        'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'},
3346        'auto_start': {'key': 'properties.autoStart', 'type': 'bool'},
3347        'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'},
3348        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3349        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
3350        'monitoring_status': {'key': 'properties.monitoringStatus', 'type': 'str'},
3351    }
3352
3353    def __init__(
3354        self,
3355        *,
3356        etag: Optional[str] = "A unique read-only string that changes whenever the resource is updated.",
3357        location: Optional[str] = None,
3358        tags: Optional[Dict[str, str]] = None,
3359        source: Optional["ConnectionMonitorSource"] = None,
3360        destination: Optional["ConnectionMonitorDestination"] = None,
3361        auto_start: Optional[bool] = True,
3362        monitoring_interval_in_seconds: Optional[int] = 60,
3363        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
3364        start_time: Optional[datetime.datetime] = None,
3365        monitoring_status: Optional[str] = None,
3366        **kwargs
3367    ):
3368        super(ConnectionMonitorResult, self).__init__(**kwargs)
3369        self.name = None
3370        self.id = None
3371        self.etag = etag
3372        self.type = None
3373        self.location = location
3374        self.tags = tags
3375        self.source = source
3376        self.destination = destination
3377        self.auto_start = auto_start
3378        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
3379        self.provisioning_state = provisioning_state
3380        self.start_time = start_time
3381        self.monitoring_status = monitoring_status
3382
3383
3384class ConnectionMonitorResultProperties(ConnectionMonitorParameters):
3385    """Describes the properties of a connection monitor.
3386
3387    All required parameters must be populated in order to send to Azure.
3388
3389    :param source: Required. Describes the source of connection monitor.
3390    :type source: ~azure.mgmt.network.v2018_04_01.models.ConnectionMonitorSource
3391    :param destination: Required. Describes the destination of connection monitor.
3392    :type destination: ~azure.mgmt.network.v2018_04_01.models.ConnectionMonitorDestination
3393    :param auto_start: Determines if the connection monitor will start automatically once created.
3394    :type auto_start: bool
3395    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
3396    :type monitoring_interval_in_seconds: int
3397    :param provisioning_state: The provisioning state of the connection monitor. Possible values
3398     include: "Succeeded", "Updating", "Deleting", "Failed".
3399    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
3400    :param start_time: The date and time when the connection monitor was started.
3401    :type start_time: ~datetime.datetime
3402    :param monitoring_status: The monitoring status of the connection monitor.
3403    :type monitoring_status: str
3404    """
3405
3406    _validation = {
3407        'source': {'required': True},
3408        'destination': {'required': True},
3409    }
3410
3411    _attribute_map = {
3412        'source': {'key': 'source', 'type': 'ConnectionMonitorSource'},
3413        'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'},
3414        'auto_start': {'key': 'autoStart', 'type': 'bool'},
3415        'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'},
3416        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
3417        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
3418        'monitoring_status': {'key': 'monitoringStatus', 'type': 'str'},
3419    }
3420
3421    def __init__(
3422        self,
3423        *,
3424        source: "ConnectionMonitorSource",
3425        destination: "ConnectionMonitorDestination",
3426        auto_start: Optional[bool] = True,
3427        monitoring_interval_in_seconds: Optional[int] = 60,
3428        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
3429        start_time: Optional[datetime.datetime] = None,
3430        monitoring_status: Optional[str] = None,
3431        **kwargs
3432    ):
3433        super(ConnectionMonitorResultProperties, self).__init__(source=source, destination=destination, auto_start=auto_start, monitoring_interval_in_seconds=monitoring_interval_in_seconds, **kwargs)
3434        self.provisioning_state = provisioning_state
3435        self.start_time = start_time
3436        self.monitoring_status = monitoring_status
3437
3438
3439class ConnectionMonitorSource(msrest.serialization.Model):
3440    """Describes the source of connection monitor.
3441
3442    All required parameters must be populated in order to send to Azure.
3443
3444    :param resource_id: Required. The ID of the resource used as the source by connection monitor.
3445    :type resource_id: str
3446    :param port: The source port used by connection monitor.
3447    :type port: int
3448    """
3449
3450    _validation = {
3451        'resource_id': {'required': True},
3452    }
3453
3454    _attribute_map = {
3455        'resource_id': {'key': 'resourceId', 'type': 'str'},
3456        'port': {'key': 'port', 'type': 'int'},
3457    }
3458
3459    def __init__(
3460        self,
3461        *,
3462        resource_id: str,
3463        port: Optional[int] = None,
3464        **kwargs
3465    ):
3466        super(ConnectionMonitorSource, self).__init__(**kwargs)
3467        self.resource_id = resource_id
3468        self.port = port
3469
3470
3471class ConnectionResetSharedKey(msrest.serialization.Model):
3472    """The virtual network connection reset shared key.
3473
3474    All required parameters must be populated in order to send to Azure.
3475
3476    :param key_length: Required. The virtual network connection reset shared key length, should
3477     between 1 and 128.
3478    :type key_length: int
3479    """
3480
3481    _validation = {
3482        'key_length': {'required': True, 'maximum': 128, 'minimum': 1},
3483    }
3484
3485    _attribute_map = {
3486        'key_length': {'key': 'keyLength', 'type': 'int'},
3487    }
3488
3489    def __init__(
3490        self,
3491        *,
3492        key_length: int,
3493        **kwargs
3494    ):
3495        super(ConnectionResetSharedKey, self).__init__(**kwargs)
3496        self.key_length = key_length
3497
3498
3499class ConnectionSharedKey(SubResource):
3500    """Response for GetConnectionSharedKey API service call.
3501
3502    All required parameters must be populated in order to send to Azure.
3503
3504    :param id: Resource ID.
3505    :type id: str
3506    :param value: Required. The virtual network connection shared key value.
3507    :type value: str
3508    """
3509
3510    _validation = {
3511        'value': {'required': True},
3512    }
3513
3514    _attribute_map = {
3515        'id': {'key': 'id', 'type': 'str'},
3516        'value': {'key': 'value', 'type': 'str'},
3517    }
3518
3519    def __init__(
3520        self,
3521        *,
3522        value: str,
3523        id: Optional[str] = None,
3524        **kwargs
3525    ):
3526        super(ConnectionSharedKey, self).__init__(id=id, **kwargs)
3527        self.value = value
3528
3529
3530class ConnectionStateSnapshot(msrest.serialization.Model):
3531    """Connection state snapshot.
3532
3533    Variables are only populated by the server, and will be ignored when sending a request.
3534
3535    :param connection_state: The connection state. Possible values include: "Reachable",
3536     "Unreachable", "Unknown".
3537    :type connection_state: str or ~azure.mgmt.network.v2018_04_01.models.ConnectionState
3538    :param start_time: The start time of the connection snapshot.
3539    :type start_time: ~datetime.datetime
3540    :param end_time: The end time of the connection snapshot.
3541    :type end_time: ~datetime.datetime
3542    :param evaluation_state: Connectivity analysis evaluation state. Possible values include:
3543     "NotStarted", "InProgress", "Completed".
3544    :type evaluation_state: str or ~azure.mgmt.network.v2018_04_01.models.EvaluationState
3545    :ivar hops: List of hops between the source and the destination.
3546    :vartype hops: list[~azure.mgmt.network.v2018_04_01.models.ConnectivityHop]
3547    """
3548
3549    _validation = {
3550        'hops': {'readonly': True},
3551    }
3552
3553    _attribute_map = {
3554        'connection_state': {'key': 'connectionState', 'type': 'str'},
3555        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
3556        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
3557        'evaluation_state': {'key': 'evaluationState', 'type': 'str'},
3558        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
3559    }
3560
3561    def __init__(
3562        self,
3563        *,
3564        connection_state: Optional[Union[str, "ConnectionState"]] = None,
3565        start_time: Optional[datetime.datetime] = None,
3566        end_time: Optional[datetime.datetime] = None,
3567        evaluation_state: Optional[Union[str, "EvaluationState"]] = None,
3568        **kwargs
3569    ):
3570        super(ConnectionStateSnapshot, self).__init__(**kwargs)
3571        self.connection_state = connection_state
3572        self.start_time = start_time
3573        self.end_time = end_time
3574        self.evaluation_state = evaluation_state
3575        self.hops = None
3576
3577
3578class ConnectivityDestination(msrest.serialization.Model):
3579    """Parameters that define destination of connection.
3580
3581    :param resource_id: The ID of the resource to which a connection attempt will be made.
3582    :type resource_id: str
3583    :param address: The IP address or URI the resource to which a connection attempt will be made.
3584    :type address: str
3585    :param port: Port on which check connectivity will be performed.
3586    :type port: int
3587    """
3588
3589    _attribute_map = {
3590        'resource_id': {'key': 'resourceId', 'type': 'str'},
3591        'address': {'key': 'address', 'type': 'str'},
3592        'port': {'key': 'port', 'type': 'int'},
3593    }
3594
3595    def __init__(
3596        self,
3597        *,
3598        resource_id: Optional[str] = None,
3599        address: Optional[str] = None,
3600        port: Optional[int] = None,
3601        **kwargs
3602    ):
3603        super(ConnectivityDestination, self).__init__(**kwargs)
3604        self.resource_id = resource_id
3605        self.address = address
3606        self.port = port
3607
3608
3609class ConnectivityHop(msrest.serialization.Model):
3610    """Information about a hop between the source and the destination.
3611
3612    Variables are only populated by the server, and will be ignored when sending a request.
3613
3614    :ivar type: The type of the hop.
3615    :vartype type: str
3616    :ivar id: The ID of the hop.
3617    :vartype id: str
3618    :ivar address: The IP address of the hop.
3619    :vartype address: str
3620    :ivar resource_id: The ID of the resource corresponding to this hop.
3621    :vartype resource_id: str
3622    :ivar next_hop_ids: List of next hop identifiers.
3623    :vartype next_hop_ids: list[str]
3624    :ivar issues: List of issues.
3625    :vartype issues: list[~azure.mgmt.network.v2018_04_01.models.ConnectivityIssue]
3626    """
3627
3628    _validation = {
3629        'type': {'readonly': True},
3630        'id': {'readonly': True},
3631        'address': {'readonly': True},
3632        'resource_id': {'readonly': True},
3633        'next_hop_ids': {'readonly': True},
3634        'issues': {'readonly': True},
3635    }
3636
3637    _attribute_map = {
3638        'type': {'key': 'type', 'type': 'str'},
3639        'id': {'key': 'id', 'type': 'str'},
3640        'address': {'key': 'address', 'type': 'str'},
3641        'resource_id': {'key': 'resourceId', 'type': 'str'},
3642        'next_hop_ids': {'key': 'nextHopIds', 'type': '[str]'},
3643        'issues': {'key': 'issues', 'type': '[ConnectivityIssue]'},
3644    }
3645
3646    def __init__(
3647        self,
3648        **kwargs
3649    ):
3650        super(ConnectivityHop, self).__init__(**kwargs)
3651        self.type = None
3652        self.id = None
3653        self.address = None
3654        self.resource_id = None
3655        self.next_hop_ids = None
3656        self.issues = None
3657
3658
3659class ConnectivityInformation(msrest.serialization.Model):
3660    """Information on the connectivity status.
3661
3662    Variables are only populated by the server, and will be ignored when sending a request.
3663
3664    :ivar hops: List of hops between the source and the destination.
3665    :vartype hops: list[~azure.mgmt.network.v2018_04_01.models.ConnectivityHop]
3666    :ivar connection_status: The connection status. Possible values include: "Unknown",
3667     "Connected", "Disconnected", "Degraded".
3668    :vartype connection_status: str or ~azure.mgmt.network.v2018_04_01.models.ConnectionStatus
3669    :ivar avg_latency_in_ms: Average latency in milliseconds.
3670    :vartype avg_latency_in_ms: int
3671    :ivar min_latency_in_ms: Minimum latency in milliseconds.
3672    :vartype min_latency_in_ms: int
3673    :ivar max_latency_in_ms: Maximum latency in milliseconds.
3674    :vartype max_latency_in_ms: int
3675    :ivar probes_sent: Total number of probes sent.
3676    :vartype probes_sent: int
3677    :ivar probes_failed: Number of failed probes.
3678    :vartype probes_failed: int
3679    """
3680
3681    _validation = {
3682        'hops': {'readonly': True},
3683        'connection_status': {'readonly': True},
3684        'avg_latency_in_ms': {'readonly': True},
3685        'min_latency_in_ms': {'readonly': True},
3686        'max_latency_in_ms': {'readonly': True},
3687        'probes_sent': {'readonly': True},
3688        'probes_failed': {'readonly': True},
3689    }
3690
3691    _attribute_map = {
3692        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
3693        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
3694        'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'int'},
3695        'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'int'},
3696        'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'int'},
3697        'probes_sent': {'key': 'probesSent', 'type': 'int'},
3698        'probes_failed': {'key': 'probesFailed', 'type': 'int'},
3699    }
3700
3701    def __init__(
3702        self,
3703        **kwargs
3704    ):
3705        super(ConnectivityInformation, self).__init__(**kwargs)
3706        self.hops = None
3707        self.connection_status = None
3708        self.avg_latency_in_ms = None
3709        self.min_latency_in_ms = None
3710        self.max_latency_in_ms = None
3711        self.probes_sent = None
3712        self.probes_failed = None
3713
3714
3715class ConnectivityIssue(msrest.serialization.Model):
3716    """Information about an issue encountered in the process of checking for connectivity.
3717
3718    Variables are only populated by the server, and will be ignored when sending a request.
3719
3720    :ivar origin: The origin of the issue. Possible values include: "Local", "Inbound", "Outbound".
3721    :vartype origin: str or ~azure.mgmt.network.v2018_04_01.models.Origin
3722    :ivar severity: The severity of the issue. Possible values include: "Error", "Warning".
3723    :vartype severity: str or ~azure.mgmt.network.v2018_04_01.models.Severity
3724    :ivar type: The type of issue. Possible values include: "Unknown", "AgentStopped",
3725     "GuestFirewall", "DnsResolution", "SocketBind", "NetworkSecurityRule", "UserDefinedRoute",
3726     "PortThrottled", "Platform".
3727    :vartype type: str or ~azure.mgmt.network.v2018_04_01.models.IssueType
3728    :ivar context: Provides additional context on the issue.
3729    :vartype context: list[dict[str, str]]
3730    """
3731
3732    _validation = {
3733        'origin': {'readonly': True},
3734        'severity': {'readonly': True},
3735        'type': {'readonly': True},
3736        'context': {'readonly': True},
3737    }
3738
3739    _attribute_map = {
3740        'origin': {'key': 'origin', 'type': 'str'},
3741        'severity': {'key': 'severity', 'type': 'str'},
3742        'type': {'key': 'type', 'type': 'str'},
3743        'context': {'key': 'context', 'type': '[{str}]'},
3744    }
3745
3746    def __init__(
3747        self,
3748        **kwargs
3749    ):
3750        super(ConnectivityIssue, self).__init__(**kwargs)
3751        self.origin = None
3752        self.severity = None
3753        self.type = None
3754        self.context = None
3755
3756
3757class ConnectivityParameters(msrest.serialization.Model):
3758    """Parameters that determine how the connectivity check will be performed.
3759
3760    All required parameters must be populated in order to send to Azure.
3761
3762    :param source: Required. Parameters that define the source of the connection.
3763    :type source: ~azure.mgmt.network.v2018_04_01.models.ConnectivitySource
3764    :param destination: Required. Parameters that define destination of connection.
3765    :type destination: ~azure.mgmt.network.v2018_04_01.models.ConnectivityDestination
3766    :param protocol: Network protocol. Possible values include: "Tcp", "Http", "Https", "Icmp".
3767    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.Protocol
3768    :param protocol_configuration: Configuration of the protocol.
3769    :type protocol_configuration: ~azure.mgmt.network.v2018_04_01.models.ProtocolConfiguration
3770    """
3771
3772    _validation = {
3773        'source': {'required': True},
3774        'destination': {'required': True},
3775    }
3776
3777    _attribute_map = {
3778        'source': {'key': 'source', 'type': 'ConnectivitySource'},
3779        'destination': {'key': 'destination', 'type': 'ConnectivityDestination'},
3780        'protocol': {'key': 'protocol', 'type': 'str'},
3781        'protocol_configuration': {'key': 'protocolConfiguration', 'type': 'ProtocolConfiguration'},
3782    }
3783
3784    def __init__(
3785        self,
3786        *,
3787        source: "ConnectivitySource",
3788        destination: "ConnectivityDestination",
3789        protocol: Optional[Union[str, "Protocol"]] = None,
3790        protocol_configuration: Optional["ProtocolConfiguration"] = None,
3791        **kwargs
3792    ):
3793        super(ConnectivityParameters, self).__init__(**kwargs)
3794        self.source = source
3795        self.destination = destination
3796        self.protocol = protocol
3797        self.protocol_configuration = protocol_configuration
3798
3799
3800class ConnectivitySource(msrest.serialization.Model):
3801    """Parameters that define the source of the connection.
3802
3803    All required parameters must be populated in order to send to Azure.
3804
3805    :param resource_id: Required. The ID of the resource from which a connectivity check will be
3806     initiated.
3807    :type resource_id: str
3808    :param port: The source port from which a connectivity check will be performed.
3809    :type port: int
3810    """
3811
3812    _validation = {
3813        'resource_id': {'required': True},
3814    }
3815
3816    _attribute_map = {
3817        'resource_id': {'key': 'resourceId', 'type': 'str'},
3818        'port': {'key': 'port', 'type': 'int'},
3819    }
3820
3821    def __init__(
3822        self,
3823        *,
3824        resource_id: str,
3825        port: Optional[int] = None,
3826        **kwargs
3827    ):
3828        super(ConnectivitySource, self).__init__(**kwargs)
3829        self.resource_id = resource_id
3830        self.port = port
3831
3832
3833class DdosProtectionPlan(msrest.serialization.Model):
3834    """A DDoS protection plan in a resource group.
3835
3836    Variables are only populated by the server, and will be ignored when sending a request.
3837
3838    :ivar id: Resource ID.
3839    :vartype id: str
3840    :ivar name: Resource name.
3841    :vartype name: str
3842    :ivar type: Resource type.
3843    :vartype type: str
3844    :param location: Resource location.
3845    :type location: str
3846    :param tags: A set of tags. Resource tags.
3847    :type tags: dict[str, str]
3848    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3849    :vartype etag: str
3850    :ivar resource_guid: The resource GUID property of the DDoS protection plan resource. It
3851     uniquely identifies the resource, even if the user changes its name or migrate the resource
3852     across subscriptions or resource groups.
3853    :vartype resource_guid: str
3854    :ivar provisioning_state: The provisioning state of the DDoS protection plan resource. Possible
3855     values are: 'Succeeded', 'Updating', 'Deleting', and 'Failed'.
3856    :vartype provisioning_state: str
3857    :ivar virtual_networks: The list of virtual networks associated with the DDoS protection plan
3858     resource. This list is read-only.
3859    :vartype virtual_networks: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
3860    """
3861
3862    _validation = {
3863        'id': {'readonly': True},
3864        'name': {'readonly': True},
3865        'type': {'readonly': True},
3866        'etag': {'readonly': True},
3867        'resource_guid': {'readonly': True},
3868        'provisioning_state': {'readonly': True},
3869        'virtual_networks': {'readonly': True},
3870    }
3871
3872    _attribute_map = {
3873        'id': {'key': 'id', 'type': 'str'},
3874        'name': {'key': 'name', 'type': 'str'},
3875        'type': {'key': 'type', 'type': 'str'},
3876        'location': {'key': 'location', 'type': 'str'},
3877        'tags': {'key': 'tags', 'type': '{str}'},
3878        'etag': {'key': 'etag', 'type': 'str'},
3879        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
3880        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3881        'virtual_networks': {'key': 'properties.virtualNetworks', 'type': '[SubResource]'},
3882    }
3883
3884    def __init__(
3885        self,
3886        *,
3887        location: Optional[str] = None,
3888        tags: Optional[Dict[str, str]] = None,
3889        **kwargs
3890    ):
3891        super(DdosProtectionPlan, self).__init__(**kwargs)
3892        self.id = None
3893        self.name = None
3894        self.type = None
3895        self.location = location
3896        self.tags = tags
3897        self.etag = None
3898        self.resource_guid = None
3899        self.provisioning_state = None
3900        self.virtual_networks = None
3901
3902
3903class DdosProtectionPlanListResult(msrest.serialization.Model):
3904    """A list of DDoS protection plans.
3905
3906    Variables are only populated by the server, and will be ignored when sending a request.
3907
3908    :param value: A list of DDoS protection plans.
3909    :type value: list[~azure.mgmt.network.v2018_04_01.models.DdosProtectionPlan]
3910    :ivar next_link: The URL to get the next set of results.
3911    :vartype next_link: str
3912    """
3913
3914    _validation = {
3915        'next_link': {'readonly': True},
3916    }
3917
3918    _attribute_map = {
3919        'value': {'key': 'value', 'type': '[DdosProtectionPlan]'},
3920        'next_link': {'key': 'nextLink', 'type': 'str'},
3921    }
3922
3923    def __init__(
3924        self,
3925        *,
3926        value: Optional[List["DdosProtectionPlan"]] = None,
3927        **kwargs
3928    ):
3929        super(DdosProtectionPlanListResult, self).__init__(**kwargs)
3930        self.value = value
3931        self.next_link = None
3932
3933
3934class DeviceProperties(msrest.serialization.Model):
3935    """List of properties of the device.
3936
3937    :param device_vendor: Name of the device Vendor.
3938    :type device_vendor: str
3939    :param device_model: Model of the device.
3940    :type device_model: str
3941    :param link_speed_in_mbps: Link speed.
3942    :type link_speed_in_mbps: int
3943    """
3944
3945    _attribute_map = {
3946        'device_vendor': {'key': 'deviceVendor', 'type': 'str'},
3947        'device_model': {'key': 'deviceModel', 'type': 'str'},
3948        'link_speed_in_mbps': {'key': 'linkSpeedInMbps', 'type': 'int'},
3949    }
3950
3951    def __init__(
3952        self,
3953        *,
3954        device_vendor: Optional[str] = None,
3955        device_model: Optional[str] = None,
3956        link_speed_in_mbps: Optional[int] = None,
3957        **kwargs
3958    ):
3959        super(DeviceProperties, self).__init__(**kwargs)
3960        self.device_vendor = device_vendor
3961        self.device_model = device_model
3962        self.link_speed_in_mbps = link_speed_in_mbps
3963
3964
3965class DhcpOptions(msrest.serialization.Model):
3966    """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.
3967
3968    :param dns_servers: The list of DNS servers IP addresses.
3969    :type dns_servers: list[str]
3970    """
3971
3972    _attribute_map = {
3973        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
3974    }
3975
3976    def __init__(
3977        self,
3978        *,
3979        dns_servers: Optional[List[str]] = None,
3980        **kwargs
3981    ):
3982        super(DhcpOptions, self).__init__(**kwargs)
3983        self.dns_servers = dns_servers
3984
3985
3986class Dimension(msrest.serialization.Model):
3987    """Dimension of the metric.
3988
3989    :param name: The name of the dimension.
3990    :type name: str
3991    :param display_name: The display name of the dimension.
3992    :type display_name: str
3993    :param internal_name: The internal name of the dimension.
3994    :type internal_name: str
3995    """
3996
3997    _attribute_map = {
3998        'name': {'key': 'name', 'type': 'str'},
3999        'display_name': {'key': 'displayName', 'type': 'str'},
4000        'internal_name': {'key': 'internalName', 'type': 'str'},
4001    }
4002
4003    def __init__(
4004        self,
4005        *,
4006        name: Optional[str] = None,
4007        display_name: Optional[str] = None,
4008        internal_name: Optional[str] = None,
4009        **kwargs
4010    ):
4011        super(Dimension, self).__init__(**kwargs)
4012        self.name = name
4013        self.display_name = display_name
4014        self.internal_name = internal_name
4015
4016
4017class DnsNameAvailabilityResult(msrest.serialization.Model):
4018    """Response for the CheckDnsNameAvailability API service call.
4019
4020    :param available: Domain availability (True/False).
4021    :type available: bool
4022    """
4023
4024    _attribute_map = {
4025        'available': {'key': 'available', 'type': 'bool'},
4026    }
4027
4028    def __init__(
4029        self,
4030        *,
4031        available: Optional[bool] = None,
4032        **kwargs
4033    ):
4034        super(DnsNameAvailabilityResult, self).__init__(**kwargs)
4035        self.available = available
4036
4037
4038class EffectiveNetworkSecurityGroup(msrest.serialization.Model):
4039    """Effective network security group.
4040
4041    :param network_security_group: The ID of network security group that is applied.
4042    :type network_security_group: ~azure.mgmt.network.v2018_04_01.models.SubResource
4043    :param association: Associated resources.
4044    :type association:
4045     ~azure.mgmt.network.v2018_04_01.models.EffectiveNetworkSecurityGroupAssociation
4046    :param effective_security_rules: A collection of effective security rules.
4047    :type effective_security_rules:
4048     list[~azure.mgmt.network.v2018_04_01.models.EffectiveNetworkSecurityRule]
4049    :param tag_map: Mapping of tags to list of IP Addresses included within the tag.
4050    :type tag_map: str
4051    """
4052
4053    _attribute_map = {
4054        'network_security_group': {'key': 'networkSecurityGroup', 'type': 'SubResource'},
4055        'association': {'key': 'association', 'type': 'EffectiveNetworkSecurityGroupAssociation'},
4056        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
4057        'tag_map': {'key': 'tagMap', 'type': 'str'},
4058    }
4059
4060    def __init__(
4061        self,
4062        *,
4063        network_security_group: Optional["SubResource"] = None,
4064        association: Optional["EffectiveNetworkSecurityGroupAssociation"] = None,
4065        effective_security_rules: Optional[List["EffectiveNetworkSecurityRule"]] = None,
4066        tag_map: Optional[str] = None,
4067        **kwargs
4068    ):
4069        super(EffectiveNetworkSecurityGroup, self).__init__(**kwargs)
4070        self.network_security_group = network_security_group
4071        self.association = association
4072        self.effective_security_rules = effective_security_rules
4073        self.tag_map = tag_map
4074
4075
4076class EffectiveNetworkSecurityGroupAssociation(msrest.serialization.Model):
4077    """The effective network security group association.
4078
4079    :param subnet: The ID of the subnet if assigned.
4080    :type subnet: ~azure.mgmt.network.v2018_04_01.models.SubResource
4081    :param network_interface: The ID of the network interface if assigned.
4082    :type network_interface: ~azure.mgmt.network.v2018_04_01.models.SubResource
4083    """
4084
4085    _attribute_map = {
4086        'subnet': {'key': 'subnet', 'type': 'SubResource'},
4087        'network_interface': {'key': 'networkInterface', 'type': 'SubResource'},
4088    }
4089
4090    def __init__(
4091        self,
4092        *,
4093        subnet: Optional["SubResource"] = None,
4094        network_interface: Optional["SubResource"] = None,
4095        **kwargs
4096    ):
4097        super(EffectiveNetworkSecurityGroupAssociation, self).__init__(**kwargs)
4098        self.subnet = subnet
4099        self.network_interface = network_interface
4100
4101
4102class EffectiveNetworkSecurityGroupListResult(msrest.serialization.Model):
4103    """Response for list effective network security groups API service call.
4104
4105    Variables are only populated by the server, and will be ignored when sending a request.
4106
4107    :param value: A list of effective network security groups.
4108    :type value: list[~azure.mgmt.network.v2018_04_01.models.EffectiveNetworkSecurityGroup]
4109    :ivar next_link: The URL to get the next set of results.
4110    :vartype next_link: str
4111    """
4112
4113    _validation = {
4114        'next_link': {'readonly': True},
4115    }
4116
4117    _attribute_map = {
4118        'value': {'key': 'value', 'type': '[EffectiveNetworkSecurityGroup]'},
4119        'next_link': {'key': 'nextLink', 'type': 'str'},
4120    }
4121
4122    def __init__(
4123        self,
4124        *,
4125        value: Optional[List["EffectiveNetworkSecurityGroup"]] = None,
4126        **kwargs
4127    ):
4128        super(EffectiveNetworkSecurityGroupListResult, self).__init__(**kwargs)
4129        self.value = value
4130        self.next_link = None
4131
4132
4133class EffectiveNetworkSecurityRule(msrest.serialization.Model):
4134    """Effective network security rules.
4135
4136    :param name: The name of the security rule specified by the user (if created by the user).
4137    :type name: str
4138    :param protocol: The network protocol this rule applies to. Possible values are: 'Tcp', 'Udp',
4139     and 'All'. Possible values include: "Tcp", "Udp", "All".
4140    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.EffectiveSecurityRuleProtocol
4141    :param source_port_range: The source port or range.
4142    :type source_port_range: str
4143    :param destination_port_range: The destination port or range.
4144    :type destination_port_range: str
4145    :param source_port_ranges: The source port ranges. Expected values include a single integer
4146     between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
4147    :type source_port_ranges: list[str]
4148    :param destination_port_ranges: The destination port ranges. Expected values include a single
4149     integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
4150    :type destination_port_ranges: list[str]
4151    :param source_address_prefix: The source address prefix.
4152    :type source_address_prefix: str
4153    :param destination_address_prefix: The destination address prefix.
4154    :type destination_address_prefix: str
4155    :param source_address_prefixes: The source address prefixes. Expected values include CIDR IP
4156     ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the
4157     asterisk (*).
4158    :type source_address_prefixes: list[str]
4159    :param destination_address_prefixes: The destination address prefixes. Expected values include
4160     CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and
4161     the asterisk (*).
4162    :type destination_address_prefixes: list[str]
4163    :param expanded_source_address_prefix: The expanded source address prefix.
4164    :type expanded_source_address_prefix: list[str]
4165    :param expanded_destination_address_prefix: Expanded destination address prefix.
4166    :type expanded_destination_address_prefix: list[str]
4167    :param access: Whether network traffic is allowed or denied. Possible values are: 'Allow' and
4168     'Deny'. Possible values include: "Allow", "Deny".
4169    :type access: str or ~azure.mgmt.network.v2018_04_01.models.SecurityRuleAccess
4170    :param priority: The priority of the rule.
4171    :type priority: int
4172    :param direction: The direction of the rule. Possible values are: 'Inbound and Outbound'.
4173     Possible values include: "Inbound", "Outbound".
4174    :type direction: str or ~azure.mgmt.network.v2018_04_01.models.SecurityRuleDirection
4175    """
4176
4177    _attribute_map = {
4178        'name': {'key': 'name', 'type': 'str'},
4179        'protocol': {'key': 'protocol', 'type': 'str'},
4180        'source_port_range': {'key': 'sourcePortRange', 'type': 'str'},
4181        'destination_port_range': {'key': 'destinationPortRange', 'type': 'str'},
4182        'source_port_ranges': {'key': 'sourcePortRanges', 'type': '[str]'},
4183        'destination_port_ranges': {'key': 'destinationPortRanges', 'type': '[str]'},
4184        'source_address_prefix': {'key': 'sourceAddressPrefix', 'type': 'str'},
4185        'destination_address_prefix': {'key': 'destinationAddressPrefix', 'type': 'str'},
4186        'source_address_prefixes': {'key': 'sourceAddressPrefixes', 'type': '[str]'},
4187        'destination_address_prefixes': {'key': 'destinationAddressPrefixes', 'type': '[str]'},
4188        'expanded_source_address_prefix': {'key': 'expandedSourceAddressPrefix', 'type': '[str]'},
4189        'expanded_destination_address_prefix': {'key': 'expandedDestinationAddressPrefix', 'type': '[str]'},
4190        'access': {'key': 'access', 'type': 'str'},
4191        'priority': {'key': 'priority', 'type': 'int'},
4192        'direction': {'key': 'direction', 'type': 'str'},
4193    }
4194
4195    def __init__(
4196        self,
4197        *,
4198        name: Optional[str] = None,
4199        protocol: Optional[Union[str, "EffectiveSecurityRuleProtocol"]] = None,
4200        source_port_range: Optional[str] = None,
4201        destination_port_range: Optional[str] = None,
4202        source_port_ranges: Optional[List[str]] = None,
4203        destination_port_ranges: Optional[List[str]] = None,
4204        source_address_prefix: Optional[str] = None,
4205        destination_address_prefix: Optional[str] = None,
4206        source_address_prefixes: Optional[List[str]] = None,
4207        destination_address_prefixes: Optional[List[str]] = None,
4208        expanded_source_address_prefix: Optional[List[str]] = None,
4209        expanded_destination_address_prefix: Optional[List[str]] = None,
4210        access: Optional[Union[str, "SecurityRuleAccess"]] = None,
4211        priority: Optional[int] = None,
4212        direction: Optional[Union[str, "SecurityRuleDirection"]] = None,
4213        **kwargs
4214    ):
4215        super(EffectiveNetworkSecurityRule, self).__init__(**kwargs)
4216        self.name = name
4217        self.protocol = protocol
4218        self.source_port_range = source_port_range
4219        self.destination_port_range = destination_port_range
4220        self.source_port_ranges = source_port_ranges
4221        self.destination_port_ranges = destination_port_ranges
4222        self.source_address_prefix = source_address_prefix
4223        self.destination_address_prefix = destination_address_prefix
4224        self.source_address_prefixes = source_address_prefixes
4225        self.destination_address_prefixes = destination_address_prefixes
4226        self.expanded_source_address_prefix = expanded_source_address_prefix
4227        self.expanded_destination_address_prefix = expanded_destination_address_prefix
4228        self.access = access
4229        self.priority = priority
4230        self.direction = direction
4231
4232
4233class EffectiveRoute(msrest.serialization.Model):
4234    """Effective Route.
4235
4236    :param name: The name of the user defined route. This is optional.
4237    :type name: str
4238    :param source: Who created the route. Possible values are: 'Unknown', 'User',
4239     'VirtualNetworkGateway', and 'Default'. Possible values include: "Unknown", "User",
4240     "VirtualNetworkGateway", "Default".
4241    :type source: str or ~azure.mgmt.network.v2018_04_01.models.EffectiveRouteSource
4242    :param state: The value of effective route. Possible values are: 'Active' and 'Invalid'.
4243     Possible values include: "Active", "Invalid".
4244    :type state: str or ~azure.mgmt.network.v2018_04_01.models.EffectiveRouteState
4245    :param address_prefix: The address prefixes of the effective routes in CIDR notation.
4246    :type address_prefix: list[str]
4247    :param next_hop_ip_address: The IP address of the next hop of the effective route.
4248    :type next_hop_ip_address: list[str]
4249    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values are:
4250     'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', and 'None'. Possible
4251     values include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
4252    :type next_hop_type: str or ~azure.mgmt.network.v2018_04_01.models.RouteNextHopType
4253    """
4254
4255    _attribute_map = {
4256        'name': {'key': 'name', 'type': 'str'},
4257        'source': {'key': 'source', 'type': 'str'},
4258        'state': {'key': 'state', 'type': 'str'},
4259        'address_prefix': {'key': 'addressPrefix', 'type': '[str]'},
4260        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': '[str]'},
4261        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
4262    }
4263
4264    def __init__(
4265        self,
4266        *,
4267        name: Optional[str] = None,
4268        source: Optional[Union[str, "EffectiveRouteSource"]] = None,
4269        state: Optional[Union[str, "EffectiveRouteState"]] = None,
4270        address_prefix: Optional[List[str]] = None,
4271        next_hop_ip_address: Optional[List[str]] = None,
4272        next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None,
4273        **kwargs
4274    ):
4275        super(EffectiveRoute, self).__init__(**kwargs)
4276        self.name = name
4277        self.source = source
4278        self.state = state
4279        self.address_prefix = address_prefix
4280        self.next_hop_ip_address = next_hop_ip_address
4281        self.next_hop_type = next_hop_type
4282
4283
4284class EffectiveRouteListResult(msrest.serialization.Model):
4285    """Response for list effective route API service call.
4286
4287    Variables are only populated by the server, and will be ignored when sending a request.
4288
4289    :param value: A list of effective routes.
4290    :type value: list[~azure.mgmt.network.v2018_04_01.models.EffectiveRoute]
4291    :ivar next_link: The URL to get the next set of results.
4292    :vartype next_link: str
4293    """
4294
4295    _validation = {
4296        'next_link': {'readonly': True},
4297    }
4298
4299    _attribute_map = {
4300        'value': {'key': 'value', 'type': '[EffectiveRoute]'},
4301        'next_link': {'key': 'nextLink', 'type': 'str'},
4302    }
4303
4304    def __init__(
4305        self,
4306        *,
4307        value: Optional[List["EffectiveRoute"]] = None,
4308        **kwargs
4309    ):
4310        super(EffectiveRouteListResult, self).__init__(**kwargs)
4311        self.value = value
4312        self.next_link = None
4313
4314
4315class EndpointServiceResult(SubResource):
4316    """Endpoint service.
4317
4318    Variables are only populated by the server, and will be ignored when sending a request.
4319
4320    :param id: Resource ID.
4321    :type id: str
4322    :ivar name: Name of the endpoint service.
4323    :vartype name: str
4324    :ivar type: Type of the endpoint service.
4325    :vartype type: str
4326    """
4327
4328    _validation = {
4329        'name': {'readonly': True},
4330        'type': {'readonly': True},
4331    }
4332
4333    _attribute_map = {
4334        'id': {'key': 'id', 'type': 'str'},
4335        'name': {'key': 'name', 'type': 'str'},
4336        'type': {'key': 'type', 'type': 'str'},
4337    }
4338
4339    def __init__(
4340        self,
4341        *,
4342        id: Optional[str] = None,
4343        **kwargs
4344    ):
4345        super(EndpointServiceResult, self).__init__(id=id, **kwargs)
4346        self.name = None
4347        self.type = None
4348
4349
4350class EndpointServicesListResult(msrest.serialization.Model):
4351    """Response for the ListAvailableEndpointServices API service call.
4352
4353    :param value: List of available endpoint services in a region.
4354    :type value: list[~azure.mgmt.network.v2018_04_01.models.EndpointServiceResult]
4355    :param next_link: The URL to get the next set of results.
4356    :type next_link: str
4357    """
4358
4359    _attribute_map = {
4360        'value': {'key': 'value', 'type': '[EndpointServiceResult]'},
4361        'next_link': {'key': 'nextLink', 'type': 'str'},
4362    }
4363
4364    def __init__(
4365        self,
4366        *,
4367        value: Optional[List["EndpointServiceResult"]] = None,
4368        next_link: Optional[str] = None,
4369        **kwargs
4370    ):
4371        super(EndpointServicesListResult, self).__init__(**kwargs)
4372        self.value = value
4373        self.next_link = next_link
4374
4375
4376class Error(msrest.serialization.Model):
4377    """Error.
4378
4379    :param code:
4380    :type code: str
4381    :param message:
4382    :type message: str
4383    :param target:
4384    :type target: str
4385    :param details:
4386    :type details: list[~azure.mgmt.network.v2018_04_01.models.ErrorDetails]
4387    :param inner_error:
4388    :type inner_error: str
4389    """
4390
4391    _attribute_map = {
4392        'code': {'key': 'code', 'type': 'str'},
4393        'message': {'key': 'message', 'type': 'str'},
4394        'target': {'key': 'target', 'type': 'str'},
4395        'details': {'key': 'details', 'type': '[ErrorDetails]'},
4396        'inner_error': {'key': 'innerError', 'type': 'str'},
4397    }
4398
4399    def __init__(
4400        self,
4401        *,
4402        code: Optional[str] = None,
4403        message: Optional[str] = None,
4404        target: Optional[str] = None,
4405        details: Optional[List["ErrorDetails"]] = None,
4406        inner_error: Optional[str] = None,
4407        **kwargs
4408    ):
4409        super(Error, self).__init__(**kwargs)
4410        self.code = code
4411        self.message = message
4412        self.target = target
4413        self.details = details
4414        self.inner_error = inner_error
4415
4416
4417class ErrorDetails(msrest.serialization.Model):
4418    """ErrorDetails.
4419
4420    :param code:
4421    :type code: str
4422    :param target:
4423    :type target: str
4424    :param message:
4425    :type message: str
4426    """
4427
4428    _attribute_map = {
4429        'code': {'key': 'code', 'type': 'str'},
4430        'target': {'key': 'target', 'type': 'str'},
4431        'message': {'key': 'message', 'type': 'str'},
4432    }
4433
4434    def __init__(
4435        self,
4436        *,
4437        code: Optional[str] = None,
4438        target: Optional[str] = None,
4439        message: Optional[str] = None,
4440        **kwargs
4441    ):
4442        super(ErrorDetails, self).__init__(**kwargs)
4443        self.code = code
4444        self.target = target
4445        self.message = message
4446
4447
4448class ExpressRouteCircuit(Resource):
4449    """ExpressRouteCircuit resource.
4450
4451    Variables are only populated by the server, and will be ignored when sending a request.
4452
4453    :param id: Resource ID.
4454    :type id: str
4455    :ivar name: Resource name.
4456    :vartype name: str
4457    :ivar type: Resource type.
4458    :vartype type: str
4459    :param location: Resource location.
4460    :type location: str
4461    :param tags: A set of tags. Resource tags.
4462    :type tags: dict[str, str]
4463    :param sku: The SKU.
4464    :type sku: ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitSku
4465    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
4466    :vartype etag: str
4467    :param allow_classic_operations: Allow classic operations.
4468    :type allow_classic_operations: bool
4469    :param circuit_provisioning_state: The CircuitProvisioningState state of the resource.
4470    :type circuit_provisioning_state: str
4471    :param service_provider_provisioning_state: The ServiceProviderProvisioningState state of the
4472     resource. Possible values are 'NotProvisioned', 'Provisioning', 'Provisioned', and
4473     'Deprovisioning'. Possible values include: "NotProvisioned", "Provisioning", "Provisioned",
4474     "Deprovisioning".
4475    :type service_provider_provisioning_state: str or
4476     ~azure.mgmt.network.v2018_04_01.models.ServiceProviderProvisioningState
4477    :param authorizations: The list of authorizations.
4478    :type authorizations:
4479     list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitAuthorization]
4480    :param peerings: The list of peerings.
4481    :type peerings: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitPeering]
4482    :param service_key: The ServiceKey.
4483    :type service_key: str
4484    :param service_provider_notes: The ServiceProviderNotes.
4485    :type service_provider_notes: str
4486    :param service_provider_properties: The ServiceProviderProperties.
4487    :type service_provider_properties:
4488     ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitServiceProviderProperties
4489    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
4490     values are: 'Updating', 'Deleting', and 'Failed'.
4491    :type provisioning_state: str
4492    :param gateway_manager_etag: The GatewayManager Etag.
4493    :type gateway_manager_etag: str
4494    """
4495
4496    _validation = {
4497        'name': {'readonly': True},
4498        'type': {'readonly': True},
4499        'etag': {'readonly': True},
4500    }
4501
4502    _attribute_map = {
4503        'id': {'key': 'id', 'type': 'str'},
4504        'name': {'key': 'name', 'type': 'str'},
4505        'type': {'key': 'type', 'type': 'str'},
4506        'location': {'key': 'location', 'type': 'str'},
4507        'tags': {'key': 'tags', 'type': '{str}'},
4508        'sku': {'key': 'sku', 'type': 'ExpressRouteCircuitSku'},
4509        'etag': {'key': 'etag', 'type': 'str'},
4510        'allow_classic_operations': {'key': 'properties.allowClassicOperations', 'type': 'bool'},
4511        'circuit_provisioning_state': {'key': 'properties.circuitProvisioningState', 'type': 'str'},
4512        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
4513        'authorizations': {'key': 'properties.authorizations', 'type': '[ExpressRouteCircuitAuthorization]'},
4514        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
4515        'service_key': {'key': 'properties.serviceKey', 'type': 'str'},
4516        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
4517        'service_provider_properties': {'key': 'properties.serviceProviderProperties', 'type': 'ExpressRouteCircuitServiceProviderProperties'},
4518        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4519        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
4520    }
4521
4522    def __init__(
4523        self,
4524        *,
4525        id: Optional[str] = None,
4526        location: Optional[str] = None,
4527        tags: Optional[Dict[str, str]] = None,
4528        sku: Optional["ExpressRouteCircuitSku"] = None,
4529        allow_classic_operations: Optional[bool] = None,
4530        circuit_provisioning_state: Optional[str] = None,
4531        service_provider_provisioning_state: Optional[Union[str, "ServiceProviderProvisioningState"]] = None,
4532        authorizations: Optional[List["ExpressRouteCircuitAuthorization"]] = None,
4533        peerings: Optional[List["ExpressRouteCircuitPeering"]] = None,
4534        service_key: Optional[str] = None,
4535        service_provider_notes: Optional[str] = None,
4536        service_provider_properties: Optional["ExpressRouteCircuitServiceProviderProperties"] = None,
4537        provisioning_state: Optional[str] = None,
4538        gateway_manager_etag: Optional[str] = None,
4539        **kwargs
4540    ):
4541        super(ExpressRouteCircuit, self).__init__(id=id, location=location, tags=tags, **kwargs)
4542        self.sku = sku
4543        self.etag = None
4544        self.allow_classic_operations = allow_classic_operations
4545        self.circuit_provisioning_state = circuit_provisioning_state
4546        self.service_provider_provisioning_state = service_provider_provisioning_state
4547        self.authorizations = authorizations
4548        self.peerings = peerings
4549        self.service_key = service_key
4550        self.service_provider_notes = service_provider_notes
4551        self.service_provider_properties = service_provider_properties
4552        self.provisioning_state = provisioning_state
4553        self.gateway_manager_etag = gateway_manager_etag
4554
4555
4556class ExpressRouteCircuitArpTable(msrest.serialization.Model):
4557    """The ARP table associated with the ExpressRouteCircuit.
4558
4559    :param age: Entry age in minutes.
4560    :type age: int
4561    :param interface: Interface address.
4562    :type interface: str
4563    :param ip_address: The IP address.
4564    :type ip_address: str
4565    :param mac_address: The MAC address.
4566    :type mac_address: str
4567    """
4568
4569    _attribute_map = {
4570        'age': {'key': 'age', 'type': 'int'},
4571        'interface': {'key': 'interface', 'type': 'str'},
4572        'ip_address': {'key': 'ipAddress', 'type': 'str'},
4573        'mac_address': {'key': 'macAddress', 'type': 'str'},
4574    }
4575
4576    def __init__(
4577        self,
4578        *,
4579        age: Optional[int] = None,
4580        interface: Optional[str] = None,
4581        ip_address: Optional[str] = None,
4582        mac_address: Optional[str] = None,
4583        **kwargs
4584    ):
4585        super(ExpressRouteCircuitArpTable, self).__init__(**kwargs)
4586        self.age = age
4587        self.interface = interface
4588        self.ip_address = ip_address
4589        self.mac_address = mac_address
4590
4591
4592class ExpressRouteCircuitAuthorization(SubResource):
4593    """Authorization in an ExpressRouteCircuit resource.
4594
4595    Variables are only populated by the server, and will be ignored when sending a request.
4596
4597    :param id: Resource ID.
4598    :type id: str
4599    :param name: Gets name of the resource that is unique within a resource group. This name can be
4600     used to access the resource.
4601    :type name: str
4602    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4603    :vartype etag: str
4604    :param authorization_key: The authorization key.
4605    :type authorization_key: str
4606    :param authorization_use_status: AuthorizationUseStatus. Possible values are: 'Available' and
4607     'InUse'. Possible values include: "Available", "InUse".
4608    :type authorization_use_status: str or
4609     ~azure.mgmt.network.v2018_04_01.models.AuthorizationUseStatus
4610    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
4611     values are: 'Updating', 'Deleting', and 'Failed'.
4612    :type provisioning_state: str
4613    """
4614
4615    _validation = {
4616        'etag': {'readonly': True},
4617    }
4618
4619    _attribute_map = {
4620        'id': {'key': 'id', 'type': 'str'},
4621        'name': {'key': 'name', 'type': 'str'},
4622        'etag': {'key': 'etag', 'type': 'str'},
4623        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
4624        'authorization_use_status': {'key': 'properties.authorizationUseStatus', 'type': 'str'},
4625        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4626    }
4627
4628    def __init__(
4629        self,
4630        *,
4631        id: Optional[str] = None,
4632        name: Optional[str] = None,
4633        authorization_key: Optional[str] = None,
4634        authorization_use_status: Optional[Union[str, "AuthorizationUseStatus"]] = None,
4635        provisioning_state: Optional[str] = None,
4636        **kwargs
4637    ):
4638        super(ExpressRouteCircuitAuthorization, self).__init__(id=id, **kwargs)
4639        self.name = name
4640        self.etag = None
4641        self.authorization_key = authorization_key
4642        self.authorization_use_status = authorization_use_status
4643        self.provisioning_state = provisioning_state
4644
4645
4646class ExpressRouteCircuitConnection(SubResource):
4647    """Express Route Circuit Connection in an ExpressRouteCircuitPeering resource.
4648
4649    Variables are only populated by the server, and will be ignored when sending a request.
4650
4651    :param id: Resource ID.
4652    :type id: str
4653    :param name: Gets name of the resource that is unique within a resource group. This name can be
4654     used to access the resource.
4655    :type name: str
4656    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4657    :vartype etag: str
4658    :param express_route_circuit_peering: Reference to Express Route Circuit Private Peering
4659     Resource of the circuit initiating connection.
4660    :type express_route_circuit_peering: ~azure.mgmt.network.v2018_04_01.models.SubResource
4661    :param peer_express_route_circuit_peering: Reference to Express Route Circuit Private Peering
4662     Resource of the peered circuit.
4663    :type peer_express_route_circuit_peering: ~azure.mgmt.network.v2018_04_01.models.SubResource
4664    :param address_prefix: /29 IP address space to carve out Customer addresses for tunnels.
4665    :type address_prefix: str
4666    :param authorization_key: The authorization key.
4667    :type authorization_key: str
4668    :ivar circuit_connection_status: Express Route Circuit Connection State. Possible values are:
4669     'Connected' and 'Disconnected'. Possible values include: "Connected", "Connecting",
4670     "Disconnected".
4671    :vartype circuit_connection_status: str or
4672     ~azure.mgmt.network.v2018_04_01.models.CircuitConnectionStatus
4673    :ivar provisioning_state: Provisioning state of the circuit connection resource. Possible
4674     values are: 'Succeeded', 'Updating', 'Deleting', and 'Failed'.
4675    :vartype provisioning_state: str
4676    """
4677
4678    _validation = {
4679        'etag': {'readonly': True},
4680        'circuit_connection_status': {'readonly': True},
4681        'provisioning_state': {'readonly': True},
4682    }
4683
4684    _attribute_map = {
4685        'id': {'key': 'id', 'type': 'str'},
4686        'name': {'key': 'name', 'type': 'str'},
4687        'etag': {'key': 'etag', 'type': 'str'},
4688        'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'SubResource'},
4689        'peer_express_route_circuit_peering': {'key': 'properties.peerExpressRouteCircuitPeering', 'type': 'SubResource'},
4690        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
4691        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
4692        'circuit_connection_status': {'key': 'properties.circuitConnectionStatus', 'type': 'str'},
4693        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4694    }
4695
4696    def __init__(
4697        self,
4698        *,
4699        id: Optional[str] = None,
4700        name: Optional[str] = None,
4701        express_route_circuit_peering: Optional["SubResource"] = None,
4702        peer_express_route_circuit_peering: Optional["SubResource"] = None,
4703        address_prefix: Optional[str] = None,
4704        authorization_key: Optional[str] = None,
4705        **kwargs
4706    ):
4707        super(ExpressRouteCircuitConnection, self).__init__(id=id, **kwargs)
4708        self.name = name
4709        self.etag = None
4710        self.express_route_circuit_peering = express_route_circuit_peering
4711        self.peer_express_route_circuit_peering = peer_express_route_circuit_peering
4712        self.address_prefix = address_prefix
4713        self.authorization_key = authorization_key
4714        self.circuit_connection_status = None
4715        self.provisioning_state = None
4716
4717
4718class ExpressRouteCircuitListResult(msrest.serialization.Model):
4719    """Response for ListExpressRouteCircuit API service call.
4720
4721    :param value: A list of ExpressRouteCircuits in a resource group.
4722    :type value: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuit]
4723    :param next_link: The URL to get the next set of results.
4724    :type next_link: str
4725    """
4726
4727    _attribute_map = {
4728        'value': {'key': 'value', 'type': '[ExpressRouteCircuit]'},
4729        'next_link': {'key': 'nextLink', 'type': 'str'},
4730    }
4731
4732    def __init__(
4733        self,
4734        *,
4735        value: Optional[List["ExpressRouteCircuit"]] = None,
4736        next_link: Optional[str] = None,
4737        **kwargs
4738    ):
4739        super(ExpressRouteCircuitListResult, self).__init__(**kwargs)
4740        self.value = value
4741        self.next_link = next_link
4742
4743
4744class ExpressRouteCircuitPeering(SubResource):
4745    """Peering in an ExpressRouteCircuit resource.
4746
4747    Variables are only populated by the server, and will be ignored when sending a request.
4748
4749    :param id: Resource ID.
4750    :type id: str
4751    :param name: Gets name of the resource that is unique within a resource group. This name can be
4752     used to access the resource.
4753    :type name: str
4754    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4755    :vartype etag: str
4756    :param peering_type: The peering type. Possible values include: "AzurePublicPeering",
4757     "AzurePrivatePeering", "MicrosoftPeering".
4758    :type peering_type: str or ~azure.mgmt.network.v2018_04_01.models.ExpressRoutePeeringType
4759    :param state: The peering state. Possible values include: "Disabled", "Enabled".
4760    :type state: str or ~azure.mgmt.network.v2018_04_01.models.ExpressRoutePeeringState
4761    :param azure_asn: The Azure ASN.
4762    :type azure_asn: int
4763    :param peer_asn: The peer ASN.
4764    :type peer_asn: long
4765    :param primary_peer_address_prefix: The primary address prefix.
4766    :type primary_peer_address_prefix: str
4767    :param secondary_peer_address_prefix: The secondary address prefix.
4768    :type secondary_peer_address_prefix: str
4769    :param primary_azure_port: The primary port.
4770    :type primary_azure_port: str
4771    :param secondary_azure_port: The secondary port.
4772    :type secondary_azure_port: str
4773    :param shared_key: The shared key.
4774    :type shared_key: str
4775    :param vlan_id: The VLAN ID.
4776    :type vlan_id: int
4777    :param microsoft_peering_config: The Microsoft peering configuration.
4778    :type microsoft_peering_config:
4779     ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitPeeringConfig
4780    :param stats: Gets peering stats.
4781    :type stats: ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitStats
4782    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
4783     values are: 'Updating', 'Deleting', and 'Failed'.
4784    :type provisioning_state: str
4785    :param gateway_manager_etag: The GatewayManager Etag.
4786    :type gateway_manager_etag: str
4787    :param last_modified_by: Gets whether the provider or the customer last modified the peering.
4788    :type last_modified_by: str
4789    :param route_filter: The reference of the RouteFilter resource.
4790    :type route_filter: ~azure.mgmt.network.v2018_04_01.models.RouteFilter
4791    :param ipv6_peering_config: The IPv6 peering configuration.
4792    :type ipv6_peering_config:
4793     ~azure.mgmt.network.v2018_04_01.models.Ipv6ExpressRouteCircuitPeeringConfig
4794    :param connections: The list of circuit connections associated with Azure Private Peering for
4795     this circuit.
4796    :type connections: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitConnection]
4797    """
4798
4799    _validation = {
4800        'etag': {'readonly': True},
4801        'peer_asn': {'maximum': 4294967295, 'minimum': 1},
4802    }
4803
4804    _attribute_map = {
4805        'id': {'key': 'id', 'type': 'str'},
4806        'name': {'key': 'name', 'type': 'str'},
4807        'etag': {'key': 'etag', 'type': 'str'},
4808        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
4809        'state': {'key': 'properties.state', 'type': 'str'},
4810        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
4811        'peer_asn': {'key': 'properties.peerASN', 'type': 'long'},
4812        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
4813        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
4814        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
4815        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
4816        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
4817        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
4818        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
4819        'stats': {'key': 'properties.stats', 'type': 'ExpressRouteCircuitStats'},
4820        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4821        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
4822        'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'},
4823        'route_filter': {'key': 'properties.routeFilter', 'type': 'RouteFilter'},
4824        'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'},
4825        'connections': {'key': 'properties.connections', 'type': '[ExpressRouteCircuitConnection]'},
4826    }
4827
4828    def __init__(
4829        self,
4830        *,
4831        id: Optional[str] = None,
4832        name: Optional[str] = None,
4833        peering_type: Optional[Union[str, "ExpressRoutePeeringType"]] = None,
4834        state: Optional[Union[str, "ExpressRoutePeeringState"]] = None,
4835        azure_asn: Optional[int] = None,
4836        peer_asn: Optional[int] = None,
4837        primary_peer_address_prefix: Optional[str] = None,
4838        secondary_peer_address_prefix: Optional[str] = None,
4839        primary_azure_port: Optional[str] = None,
4840        secondary_azure_port: Optional[str] = None,
4841        shared_key: Optional[str] = None,
4842        vlan_id: Optional[int] = None,
4843        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
4844        stats: Optional["ExpressRouteCircuitStats"] = None,
4845        provisioning_state: Optional[str] = None,
4846        gateway_manager_etag: Optional[str] = None,
4847        last_modified_by: Optional[str] = None,
4848        route_filter: Optional["RouteFilter"] = None,
4849        ipv6_peering_config: Optional["Ipv6ExpressRouteCircuitPeeringConfig"] = None,
4850        connections: Optional[List["ExpressRouteCircuitConnection"]] = None,
4851        **kwargs
4852    ):
4853        super(ExpressRouteCircuitPeering, self).__init__(id=id, **kwargs)
4854        self.name = name
4855        self.etag = None
4856        self.peering_type = peering_type
4857        self.state = state
4858        self.azure_asn = azure_asn
4859        self.peer_asn = peer_asn
4860        self.primary_peer_address_prefix = primary_peer_address_prefix
4861        self.secondary_peer_address_prefix = secondary_peer_address_prefix
4862        self.primary_azure_port = primary_azure_port
4863        self.secondary_azure_port = secondary_azure_port
4864        self.shared_key = shared_key
4865        self.vlan_id = vlan_id
4866        self.microsoft_peering_config = microsoft_peering_config
4867        self.stats = stats
4868        self.provisioning_state = provisioning_state
4869        self.gateway_manager_etag = gateway_manager_etag
4870        self.last_modified_by = last_modified_by
4871        self.route_filter = route_filter
4872        self.ipv6_peering_config = ipv6_peering_config
4873        self.connections = connections
4874
4875
4876class ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
4877    """Specifies the peering configuration.
4878
4879    :param advertised_public_prefixes: The reference of AdvertisedPublicPrefixes.
4880    :type advertised_public_prefixes: list[str]
4881    :param advertised_communities: The communities of bgp peering. Specified for microsoft peering.
4882    :type advertised_communities: list[str]
4883    :param advertised_public_prefixes_state: AdvertisedPublicPrefixState of the Peering resource.
4884     Possible values are 'NotConfigured', 'Configuring', 'Configured', and 'ValidationNeeded'.
4885     Possible values include: "NotConfigured", "Configuring", "Configured", "ValidationNeeded".
4886    :type advertised_public_prefixes_state: str or
4887     ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitPeeringAdvertisedPublicPrefixState
4888    :param legacy_mode: The legacy mode of the peering.
4889    :type legacy_mode: int
4890    :param customer_asn: The CustomerASN of the peering.
4891    :type customer_asn: int
4892    :param routing_registry_name: The RoutingRegistryName of the configuration.
4893    :type routing_registry_name: str
4894    """
4895
4896    _attribute_map = {
4897        'advertised_public_prefixes': {'key': 'advertisedPublicPrefixes', 'type': '[str]'},
4898        'advertised_communities': {'key': 'advertisedCommunities', 'type': '[str]'},
4899        'advertised_public_prefixes_state': {'key': 'advertisedPublicPrefixesState', 'type': 'str'},
4900        'legacy_mode': {'key': 'legacyMode', 'type': 'int'},
4901        'customer_asn': {'key': 'customerASN', 'type': 'int'},
4902        'routing_registry_name': {'key': 'routingRegistryName', 'type': 'str'},
4903    }
4904
4905    def __init__(
4906        self,
4907        *,
4908        advertised_public_prefixes: Optional[List[str]] = None,
4909        advertised_communities: Optional[List[str]] = None,
4910        advertised_public_prefixes_state: Optional[Union[str, "ExpressRouteCircuitPeeringAdvertisedPublicPrefixState"]] = None,
4911        legacy_mode: Optional[int] = None,
4912        customer_asn: Optional[int] = None,
4913        routing_registry_name: Optional[str] = None,
4914        **kwargs
4915    ):
4916        super(ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
4917        self.advertised_public_prefixes = advertised_public_prefixes
4918        self.advertised_communities = advertised_communities
4919        self.advertised_public_prefixes_state = advertised_public_prefixes_state
4920        self.legacy_mode = legacy_mode
4921        self.customer_asn = customer_asn
4922        self.routing_registry_name = routing_registry_name
4923
4924
4925class ExpressRouteCircuitPeeringListResult(msrest.serialization.Model):
4926    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCircuit.
4927
4928    :param value: The peerings in an express route circuit.
4929    :type value: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitPeering]
4930    :param next_link: The URL to get the next set of results.
4931    :type next_link: str
4932    """
4933
4934    _attribute_map = {
4935        'value': {'key': 'value', 'type': '[ExpressRouteCircuitPeering]'},
4936        'next_link': {'key': 'nextLink', 'type': 'str'},
4937    }
4938
4939    def __init__(
4940        self,
4941        *,
4942        value: Optional[List["ExpressRouteCircuitPeering"]] = None,
4943        next_link: Optional[str] = None,
4944        **kwargs
4945    ):
4946        super(ExpressRouteCircuitPeeringListResult, self).__init__(**kwargs)
4947        self.value = value
4948        self.next_link = next_link
4949
4950
4951class ExpressRouteCircuitReference(msrest.serialization.Model):
4952    """ExpressRouteCircuitReference.
4953
4954    :param id: Corresponding Express Route Circuit Id.
4955    :type id: str
4956    """
4957
4958    _attribute_map = {
4959        'id': {'key': 'id', 'type': 'str'},
4960    }
4961
4962    def __init__(
4963        self,
4964        *,
4965        id: Optional[str] = None,
4966        **kwargs
4967    ):
4968        super(ExpressRouteCircuitReference, self).__init__(**kwargs)
4969        self.id = id
4970
4971
4972class ExpressRouteCircuitRoutesTable(msrest.serialization.Model):
4973    """The routes table associated with the ExpressRouteCircuit.
4974
4975    :param network: IP address of a network entity.
4976    :type network: str
4977    :param next_hop: NextHop address.
4978    :type next_hop: str
4979    :param loc_prf: Local preference value as set with the set local-preference route-map
4980     configuration command.
4981    :type loc_prf: str
4982    :param weight: Route Weight.
4983    :type weight: int
4984    :param path: Autonomous system paths to the destination network.
4985    :type path: str
4986    """
4987
4988    _attribute_map = {
4989        'network': {'key': 'network', 'type': 'str'},
4990        'next_hop': {'key': 'nextHop', 'type': 'str'},
4991        'loc_prf': {'key': 'locPrf', 'type': 'str'},
4992        'weight': {'key': 'weight', 'type': 'int'},
4993        'path': {'key': 'path', 'type': 'str'},
4994    }
4995
4996    def __init__(
4997        self,
4998        *,
4999        network: Optional[str] = None,
5000        next_hop: Optional[str] = None,
5001        loc_prf: Optional[str] = None,
5002        weight: Optional[int] = None,
5003        path: Optional[str] = None,
5004        **kwargs
5005    ):
5006        super(ExpressRouteCircuitRoutesTable, self).__init__(**kwargs)
5007        self.network = network
5008        self.next_hop = next_hop
5009        self.loc_prf = loc_prf
5010        self.weight = weight
5011        self.path = path
5012
5013
5014class ExpressRouteCircuitRoutesTableSummary(msrest.serialization.Model):
5015    """The routes table associated with the ExpressRouteCircuit.
5016
5017    :param neighbor: IP address of the neighbor.
5018    :type neighbor: str
5019    :param v: BGP version number spoken to the neighbor.
5020    :type v: int
5021    :param as_property: Autonomous system number.
5022    :type as_property: int
5023    :param up_down: The length of time that the BGP session has been in the Established state, or
5024     the current status if not in the Established state.
5025    :type up_down: str
5026    :param state_pfx_rcd: Current state of the BGP session, and the number of prefixes that have
5027     been received from a neighbor or peer group.
5028    :type state_pfx_rcd: str
5029    """
5030
5031    _attribute_map = {
5032        'neighbor': {'key': 'neighbor', 'type': 'str'},
5033        'v': {'key': 'v', 'type': 'int'},
5034        'as_property': {'key': 'as', 'type': 'int'},
5035        'up_down': {'key': 'upDown', 'type': 'str'},
5036        'state_pfx_rcd': {'key': 'statePfxRcd', 'type': 'str'},
5037    }
5038
5039    def __init__(
5040        self,
5041        *,
5042        neighbor: Optional[str] = None,
5043        v: Optional[int] = None,
5044        as_property: Optional[int] = None,
5045        up_down: Optional[str] = None,
5046        state_pfx_rcd: Optional[str] = None,
5047        **kwargs
5048    ):
5049        super(ExpressRouteCircuitRoutesTableSummary, self).__init__(**kwargs)
5050        self.neighbor = neighbor
5051        self.v = v
5052        self.as_property = as_property
5053        self.up_down = up_down
5054        self.state_pfx_rcd = state_pfx_rcd
5055
5056
5057class ExpressRouteCircuitsArpTableListResult(msrest.serialization.Model):
5058    """Response for ListArpTable associated with the Express Route Circuits API.
5059
5060    :param value: Gets list of the ARP table.
5061    :type value: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitArpTable]
5062    :param next_link: The URL to get the next set of results.
5063    :type next_link: str
5064    """
5065
5066    _attribute_map = {
5067        'value': {'key': 'value', 'type': '[ExpressRouteCircuitArpTable]'},
5068        'next_link': {'key': 'nextLink', 'type': 'str'},
5069    }
5070
5071    def __init__(
5072        self,
5073        *,
5074        value: Optional[List["ExpressRouteCircuitArpTable"]] = None,
5075        next_link: Optional[str] = None,
5076        **kwargs
5077    ):
5078        super(ExpressRouteCircuitsArpTableListResult, self).__init__(**kwargs)
5079        self.value = value
5080        self.next_link = next_link
5081
5082
5083class ExpressRouteCircuitServiceProviderProperties(msrest.serialization.Model):
5084    """Contains ServiceProviderProperties in an ExpressRouteCircuit.
5085
5086    :param service_provider_name: The serviceProviderName.
5087    :type service_provider_name: str
5088    :param peering_location: The peering location.
5089    :type peering_location: str
5090    :param bandwidth_in_mbps: The BandwidthInMbps.
5091    :type bandwidth_in_mbps: int
5092    """
5093
5094    _attribute_map = {
5095        'service_provider_name': {'key': 'serviceProviderName', 'type': 'str'},
5096        'peering_location': {'key': 'peeringLocation', 'type': 'str'},
5097        'bandwidth_in_mbps': {'key': 'bandwidthInMbps', 'type': 'int'},
5098    }
5099
5100    def __init__(
5101        self,
5102        *,
5103        service_provider_name: Optional[str] = None,
5104        peering_location: Optional[str] = None,
5105        bandwidth_in_mbps: Optional[int] = None,
5106        **kwargs
5107    ):
5108        super(ExpressRouteCircuitServiceProviderProperties, self).__init__(**kwargs)
5109        self.service_provider_name = service_provider_name
5110        self.peering_location = peering_location
5111        self.bandwidth_in_mbps = bandwidth_in_mbps
5112
5113
5114class ExpressRouteCircuitSku(msrest.serialization.Model):
5115    """Contains SKU in an ExpressRouteCircuit.
5116
5117    :param name: The name of the SKU.
5118    :type name: str
5119    :param tier: The tier of the SKU. Possible values are 'Standard' and 'Premium'. Possible values
5120     include: "Standard", "Premium".
5121    :type tier: str or ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitSkuTier
5122    :param family: The family of the SKU. Possible values are: 'UnlimitedData' and 'MeteredData'.
5123     Possible values include: "UnlimitedData", "MeteredData".
5124    :type family: str or ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitSkuFamily
5125    """
5126
5127    _attribute_map = {
5128        'name': {'key': 'name', 'type': 'str'},
5129        'tier': {'key': 'tier', 'type': 'str'},
5130        'family': {'key': 'family', 'type': 'str'},
5131    }
5132
5133    def __init__(
5134        self,
5135        *,
5136        name: Optional[str] = None,
5137        tier: Optional[Union[str, "ExpressRouteCircuitSkuTier"]] = None,
5138        family: Optional[Union[str, "ExpressRouteCircuitSkuFamily"]] = None,
5139        **kwargs
5140    ):
5141        super(ExpressRouteCircuitSku, self).__init__(**kwargs)
5142        self.name = name
5143        self.tier = tier
5144        self.family = family
5145
5146
5147class ExpressRouteCircuitsRoutesTableListResult(msrest.serialization.Model):
5148    """Response for ListRoutesTable associated with the Express Route Circuits API.
5149
5150    :param value: The list of routes table.
5151    :type value: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitRoutesTable]
5152    :param next_link: The URL to get the next set of results.
5153    :type next_link: str
5154    """
5155
5156    _attribute_map = {
5157        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTable]'},
5158        'next_link': {'key': 'nextLink', 'type': 'str'},
5159    }
5160
5161    def __init__(
5162        self,
5163        *,
5164        value: Optional[List["ExpressRouteCircuitRoutesTable"]] = None,
5165        next_link: Optional[str] = None,
5166        **kwargs
5167    ):
5168        super(ExpressRouteCircuitsRoutesTableListResult, self).__init__(**kwargs)
5169        self.value = value
5170        self.next_link = next_link
5171
5172
5173class ExpressRouteCircuitsRoutesTableSummaryListResult(msrest.serialization.Model):
5174    """Response for ListRoutesTable associated with the Express Route Circuits API.
5175
5176    :param value: A list of the routes table.
5177    :type value: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitRoutesTableSummary]
5178    :param next_link: The URL to get the next set of results.
5179    :type next_link: str
5180    """
5181
5182    _attribute_map = {
5183        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTableSummary]'},
5184        'next_link': {'key': 'nextLink', 'type': 'str'},
5185    }
5186
5187    def __init__(
5188        self,
5189        *,
5190        value: Optional[List["ExpressRouteCircuitRoutesTableSummary"]] = None,
5191        next_link: Optional[str] = None,
5192        **kwargs
5193    ):
5194        super(ExpressRouteCircuitsRoutesTableSummaryListResult, self).__init__(**kwargs)
5195        self.value = value
5196        self.next_link = next_link
5197
5198
5199class ExpressRouteCircuitStats(msrest.serialization.Model):
5200    """Contains stats associated with the peering.
5201
5202    :param primarybytes_in: Gets BytesIn of the peering.
5203    :type primarybytes_in: long
5204    :param primarybytes_out: Gets BytesOut of the peering.
5205    :type primarybytes_out: long
5206    :param secondarybytes_in: Gets BytesIn of the peering.
5207    :type secondarybytes_in: long
5208    :param secondarybytes_out: Gets BytesOut of the peering.
5209    :type secondarybytes_out: long
5210    """
5211
5212    _attribute_map = {
5213        'primarybytes_in': {'key': 'primarybytesIn', 'type': 'long'},
5214        'primarybytes_out': {'key': 'primarybytesOut', 'type': 'long'},
5215        'secondarybytes_in': {'key': 'secondarybytesIn', 'type': 'long'},
5216        'secondarybytes_out': {'key': 'secondarybytesOut', 'type': 'long'},
5217    }
5218
5219    def __init__(
5220        self,
5221        *,
5222        primarybytes_in: Optional[int] = None,
5223        primarybytes_out: Optional[int] = None,
5224        secondarybytes_in: Optional[int] = None,
5225        secondarybytes_out: Optional[int] = None,
5226        **kwargs
5227    ):
5228        super(ExpressRouteCircuitStats, self).__init__(**kwargs)
5229        self.primarybytes_in = primarybytes_in
5230        self.primarybytes_out = primarybytes_out
5231        self.secondarybytes_in = secondarybytes_in
5232        self.secondarybytes_out = secondarybytes_out
5233
5234
5235class ExpressRouteCrossConnection(Resource):
5236    """ExpressRouteCrossConnection resource.
5237
5238    Variables are only populated by the server, and will be ignored when sending a request.
5239
5240    :param id: Resource ID.
5241    :type id: str
5242    :ivar name: Resource name.
5243    :vartype name: str
5244    :ivar type: Resource type.
5245    :vartype type: str
5246    :param location: Resource location.
5247    :type location: str
5248    :param tags: A set of tags. Resource tags.
5249    :type tags: dict[str, str]
5250    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
5251    :vartype etag: str
5252    :ivar primary_azure_port: The name of the primary  port.
5253    :vartype primary_azure_port: str
5254    :ivar secondary_azure_port: The name of the secondary  port.
5255    :vartype secondary_azure_port: str
5256    :ivar s_tag: The identifier of the circuit traffic.
5257    :vartype s_tag: int
5258    :param peering_location: The peering location of the ExpressRoute circuit.
5259    :type peering_location: str
5260    :param bandwidth_in_mbps: The circuit bandwidth In Mbps.
5261    :type bandwidth_in_mbps: int
5262    :param express_route_circuit: The ExpressRouteCircuit.
5263    :type express_route_circuit:
5264     ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitReference
5265    :param service_provider_provisioning_state: The provisioning state of the circuit in the
5266     connectivity provider system. Possible values are 'NotProvisioned', 'Provisioning',
5267     'Provisioned'. Possible values include: "NotProvisioned", "Provisioning", "Provisioned",
5268     "Deprovisioning".
5269    :type service_provider_provisioning_state: str or
5270     ~azure.mgmt.network.v2018_04_01.models.ServiceProviderProvisioningState
5271    :param service_provider_notes: Additional read only notes set by the connectivity provider.
5272    :type service_provider_notes: str
5273    :ivar provisioning_state: Gets the provisioning state of the public IP resource. Possible
5274     values are: 'Updating', 'Deleting', and 'Failed'.
5275    :vartype provisioning_state: str
5276    :param peerings: The list of peerings.
5277    :type peerings: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCrossConnectionPeering]
5278    """
5279
5280    _validation = {
5281        'name': {'readonly': True},
5282        'type': {'readonly': True},
5283        'etag': {'readonly': True},
5284        'primary_azure_port': {'readonly': True},
5285        'secondary_azure_port': {'readonly': True},
5286        's_tag': {'readonly': True},
5287        'provisioning_state': {'readonly': True},
5288    }
5289
5290    _attribute_map = {
5291        'id': {'key': 'id', 'type': 'str'},
5292        'name': {'key': 'name', 'type': 'str'},
5293        'type': {'key': 'type', 'type': 'str'},
5294        'location': {'key': 'location', 'type': 'str'},
5295        'tags': {'key': 'tags', 'type': '{str}'},
5296        'etag': {'key': 'etag', 'type': 'str'},
5297        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
5298        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
5299        's_tag': {'key': 'properties.sTag', 'type': 'int'},
5300        'peering_location': {'key': 'properties.peeringLocation', 'type': 'str'},
5301        'bandwidth_in_mbps': {'key': 'properties.bandwidthInMbps', 'type': 'int'},
5302        'express_route_circuit': {'key': 'properties.expressRouteCircuit', 'type': 'ExpressRouteCircuitReference'},
5303        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
5304        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
5305        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5306        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCrossConnectionPeering]'},
5307    }
5308
5309    def __init__(
5310        self,
5311        *,
5312        id: Optional[str] = None,
5313        location: Optional[str] = None,
5314        tags: Optional[Dict[str, str]] = None,
5315        peering_location: Optional[str] = None,
5316        bandwidth_in_mbps: Optional[int] = None,
5317        express_route_circuit: Optional["ExpressRouteCircuitReference"] = None,
5318        service_provider_provisioning_state: Optional[Union[str, "ServiceProviderProvisioningState"]] = None,
5319        service_provider_notes: Optional[str] = None,
5320        peerings: Optional[List["ExpressRouteCrossConnectionPeering"]] = None,
5321        **kwargs
5322    ):
5323        super(ExpressRouteCrossConnection, self).__init__(id=id, location=location, tags=tags, **kwargs)
5324        self.etag = None
5325        self.primary_azure_port = None
5326        self.secondary_azure_port = None
5327        self.s_tag = None
5328        self.peering_location = peering_location
5329        self.bandwidth_in_mbps = bandwidth_in_mbps
5330        self.express_route_circuit = express_route_circuit
5331        self.service_provider_provisioning_state = service_provider_provisioning_state
5332        self.service_provider_notes = service_provider_notes
5333        self.provisioning_state = None
5334        self.peerings = peerings
5335
5336
5337class ExpressRouteCrossConnectionListResult(msrest.serialization.Model):
5338    """Response for ListExpressRouteCrossConnection API service call.
5339
5340    Variables are only populated by the server, and will be ignored when sending a request.
5341
5342    :param value: A list of ExpressRouteCrossConnection resources.
5343    :type value: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCrossConnection]
5344    :ivar next_link: The URL to get the next set of results.
5345    :vartype next_link: str
5346    """
5347
5348    _validation = {
5349        'next_link': {'readonly': True},
5350    }
5351
5352    _attribute_map = {
5353        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnection]'},
5354        'next_link': {'key': 'nextLink', 'type': 'str'},
5355    }
5356
5357    def __init__(
5358        self,
5359        *,
5360        value: Optional[List["ExpressRouteCrossConnection"]] = None,
5361        **kwargs
5362    ):
5363        super(ExpressRouteCrossConnectionListResult, self).__init__(**kwargs)
5364        self.value = value
5365        self.next_link = None
5366
5367
5368class ExpressRouteCrossConnectionPeering(SubResource):
5369    """Peering in an ExpressRoute Cross Connection resource.
5370
5371    Variables are only populated by the server, and will be ignored when sending a request.
5372
5373    :param id: Resource ID.
5374    :type id: str
5375    :param name: Gets name of the resource that is unique within a resource group. This name can be
5376     used to access the resource.
5377    :type name: str
5378    :ivar etag: A unique read-only string that changes whenever the resource is updated.
5379    :vartype etag: str
5380    :param peering_type: The peering type. Possible values include: "AzurePublicPeering",
5381     "AzurePrivatePeering", "MicrosoftPeering".
5382    :type peering_type: str or ~azure.mgmt.network.v2018_04_01.models.ExpressRoutePeeringType
5383    :param state: The peering state. Possible values include: "Disabled", "Enabled".
5384    :type state: str or ~azure.mgmt.network.v2018_04_01.models.ExpressRoutePeeringState
5385    :ivar azure_asn: The Azure ASN.
5386    :vartype azure_asn: int
5387    :param peer_asn: The peer ASN.
5388    :type peer_asn: long
5389    :param primary_peer_address_prefix: The primary address prefix.
5390    :type primary_peer_address_prefix: str
5391    :param secondary_peer_address_prefix: The secondary address prefix.
5392    :type secondary_peer_address_prefix: str
5393    :ivar primary_azure_port: The primary port.
5394    :vartype primary_azure_port: str
5395    :ivar secondary_azure_port: The secondary port.
5396    :vartype secondary_azure_port: str
5397    :param shared_key: The shared key.
5398    :type shared_key: str
5399    :param vlan_id: The VLAN ID.
5400    :type vlan_id: int
5401    :param microsoft_peering_config: The Microsoft peering configuration.
5402    :type microsoft_peering_config:
5403     ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitPeeringConfig
5404    :ivar provisioning_state: Gets the provisioning state of the public IP resource. Possible
5405     values are: 'Updating', 'Deleting', and 'Failed'.
5406    :vartype provisioning_state: str
5407    :param gateway_manager_etag: The GatewayManager Etag.
5408    :type gateway_manager_etag: str
5409    :param last_modified_by: Gets whether the provider or the customer last modified the peering.
5410    :type last_modified_by: str
5411    :param ipv6_peering_config: The IPv6 peering configuration.
5412    :type ipv6_peering_config:
5413     ~azure.mgmt.network.v2018_04_01.models.Ipv6ExpressRouteCircuitPeeringConfig
5414    """
5415
5416    _validation = {
5417        'etag': {'readonly': True},
5418        'azure_asn': {'readonly': True},
5419        'peer_asn': {'maximum': 4294967295, 'minimum': 1},
5420        'primary_azure_port': {'readonly': True},
5421        'secondary_azure_port': {'readonly': True},
5422        'provisioning_state': {'readonly': True},
5423    }
5424
5425    _attribute_map = {
5426        'id': {'key': 'id', 'type': 'str'},
5427        'name': {'key': 'name', 'type': 'str'},
5428        'etag': {'key': 'etag', 'type': 'str'},
5429        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
5430        'state': {'key': 'properties.state', 'type': 'str'},
5431        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
5432        'peer_asn': {'key': 'properties.peerASN', 'type': 'long'},
5433        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
5434        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
5435        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
5436        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
5437        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
5438        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
5439        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
5440        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5441        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
5442        'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'},
5443        'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'},
5444    }
5445
5446    def __init__(
5447        self,
5448        *,
5449        id: Optional[str] = None,
5450        name: Optional[str] = None,
5451        peering_type: Optional[Union[str, "ExpressRoutePeeringType"]] = None,
5452        state: Optional[Union[str, "ExpressRoutePeeringState"]] = None,
5453        peer_asn: Optional[int] = None,
5454        primary_peer_address_prefix: Optional[str] = None,
5455        secondary_peer_address_prefix: Optional[str] = None,
5456        shared_key: Optional[str] = None,
5457        vlan_id: Optional[int] = None,
5458        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
5459        gateway_manager_etag: Optional[str] = None,
5460        last_modified_by: Optional[str] = None,
5461        ipv6_peering_config: Optional["Ipv6ExpressRouteCircuitPeeringConfig"] = None,
5462        **kwargs
5463    ):
5464        super(ExpressRouteCrossConnectionPeering, self).__init__(id=id, **kwargs)
5465        self.name = name
5466        self.etag = None
5467        self.peering_type = peering_type
5468        self.state = state
5469        self.azure_asn = None
5470        self.peer_asn = peer_asn
5471        self.primary_peer_address_prefix = primary_peer_address_prefix
5472        self.secondary_peer_address_prefix = secondary_peer_address_prefix
5473        self.primary_azure_port = None
5474        self.secondary_azure_port = None
5475        self.shared_key = shared_key
5476        self.vlan_id = vlan_id
5477        self.microsoft_peering_config = microsoft_peering_config
5478        self.provisioning_state = None
5479        self.gateway_manager_etag = gateway_manager_etag
5480        self.last_modified_by = last_modified_by
5481        self.ipv6_peering_config = ipv6_peering_config
5482
5483
5484class ExpressRouteCrossConnectionPeeringList(msrest.serialization.Model):
5485    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCrossConnection.
5486
5487    Variables are only populated by the server, and will be ignored when sending a request.
5488
5489    :param value: The peerings in an express route cross connection.
5490    :type value: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCrossConnectionPeering]
5491    :ivar next_link: The URL to get the next set of results.
5492    :vartype next_link: str
5493    """
5494
5495    _validation = {
5496        'next_link': {'readonly': True},
5497    }
5498
5499    _attribute_map = {
5500        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnectionPeering]'},
5501        'next_link': {'key': 'nextLink', 'type': 'str'},
5502    }
5503
5504    def __init__(
5505        self,
5506        *,
5507        value: Optional[List["ExpressRouteCrossConnectionPeering"]] = None,
5508        **kwargs
5509    ):
5510        super(ExpressRouteCrossConnectionPeeringList, self).__init__(**kwargs)
5511        self.value = value
5512        self.next_link = None
5513
5514
5515class ExpressRouteCrossConnectionRoutesTableSummary(msrest.serialization.Model):
5516    """The routes table associated with the ExpressRouteCircuit.
5517
5518    :param neighbor: IP address of Neighbor router.
5519    :type neighbor: str
5520    :param asn: Autonomous system number.
5521    :type asn: int
5522    :param up_down: The length of time that the BGP session has been in the Established state, or
5523     the current status if not in the Established state.
5524    :type up_down: str
5525    :param state_or_prefixes_received: Current state of the BGP session, and the number of prefixes
5526     that have been received from a neighbor or peer group.
5527    :type state_or_prefixes_received: str
5528    """
5529
5530    _attribute_map = {
5531        'neighbor': {'key': 'neighbor', 'type': 'str'},
5532        'asn': {'key': 'asn', 'type': 'int'},
5533        'up_down': {'key': 'upDown', 'type': 'str'},
5534        'state_or_prefixes_received': {'key': 'stateOrPrefixesReceived', 'type': 'str'},
5535    }
5536
5537    def __init__(
5538        self,
5539        *,
5540        neighbor: Optional[str] = None,
5541        asn: Optional[int] = None,
5542        up_down: Optional[str] = None,
5543        state_or_prefixes_received: Optional[str] = None,
5544        **kwargs
5545    ):
5546        super(ExpressRouteCrossConnectionRoutesTableSummary, self).__init__(**kwargs)
5547        self.neighbor = neighbor
5548        self.asn = asn
5549        self.up_down = up_down
5550        self.state_or_prefixes_received = state_or_prefixes_received
5551
5552
5553class ExpressRouteCrossConnectionsRoutesTableSummaryListResult(msrest.serialization.Model):
5554    """Response for ListRoutesTable associated with the Express Route Cross Connections.
5555
5556    Variables are only populated by the server, and will be ignored when sending a request.
5557
5558    :param value: A list of the routes table.
5559    :type value:
5560     list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCrossConnectionRoutesTableSummary]
5561    :ivar next_link: The URL to get the next set of results.
5562    :vartype next_link: str
5563    """
5564
5565    _validation = {
5566        'next_link': {'readonly': True},
5567    }
5568
5569    _attribute_map = {
5570        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnectionRoutesTableSummary]'},
5571        'next_link': {'key': 'nextLink', 'type': 'str'},
5572    }
5573
5574    def __init__(
5575        self,
5576        *,
5577        value: Optional[List["ExpressRouteCrossConnectionRoutesTableSummary"]] = None,
5578        **kwargs
5579    ):
5580        super(ExpressRouteCrossConnectionsRoutesTableSummaryListResult, self).__init__(**kwargs)
5581        self.value = value
5582        self.next_link = None
5583
5584
5585class ExpressRouteServiceProvider(Resource):
5586    """A ExpressRouteResourceProvider object.
5587
5588    Variables are only populated by the server, and will be ignored when sending a request.
5589
5590    :param id: Resource ID.
5591    :type id: str
5592    :ivar name: Resource name.
5593    :vartype name: str
5594    :ivar type: Resource type.
5595    :vartype type: str
5596    :param location: Resource location.
5597    :type location: str
5598    :param tags: A set of tags. Resource tags.
5599    :type tags: dict[str, str]
5600    :param peering_locations: Get a list of peering locations.
5601    :type peering_locations: list[str]
5602    :param bandwidths_offered: Gets bandwidths offered.
5603    :type bandwidths_offered:
5604     list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteServiceProviderBandwidthsOffered]
5605    :param provisioning_state: Gets the provisioning state of the resource.
5606    :type provisioning_state: str
5607    """
5608
5609    _validation = {
5610        'name': {'readonly': True},
5611        'type': {'readonly': True},
5612    }
5613
5614    _attribute_map = {
5615        'id': {'key': 'id', 'type': 'str'},
5616        'name': {'key': 'name', 'type': 'str'},
5617        'type': {'key': 'type', 'type': 'str'},
5618        'location': {'key': 'location', 'type': 'str'},
5619        'tags': {'key': 'tags', 'type': '{str}'},
5620        'peering_locations': {'key': 'properties.peeringLocations', 'type': '[str]'},
5621        'bandwidths_offered': {'key': 'properties.bandwidthsOffered', 'type': '[ExpressRouteServiceProviderBandwidthsOffered]'},
5622        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5623    }
5624
5625    def __init__(
5626        self,
5627        *,
5628        id: Optional[str] = None,
5629        location: Optional[str] = None,
5630        tags: Optional[Dict[str, str]] = None,
5631        peering_locations: Optional[List[str]] = None,
5632        bandwidths_offered: Optional[List["ExpressRouteServiceProviderBandwidthsOffered"]] = None,
5633        provisioning_state: Optional[str] = None,
5634        **kwargs
5635    ):
5636        super(ExpressRouteServiceProvider, self).__init__(id=id, location=location, tags=tags, **kwargs)
5637        self.peering_locations = peering_locations
5638        self.bandwidths_offered = bandwidths_offered
5639        self.provisioning_state = provisioning_state
5640
5641
5642class ExpressRouteServiceProviderBandwidthsOffered(msrest.serialization.Model):
5643    """Contains bandwidths offered in ExpressRouteServiceProvider resources.
5644
5645    :param offer_name: The OfferName.
5646    :type offer_name: str
5647    :param value_in_mbps: The ValueInMbps.
5648    :type value_in_mbps: int
5649    """
5650
5651    _attribute_map = {
5652        'offer_name': {'key': 'offerName', 'type': 'str'},
5653        'value_in_mbps': {'key': 'valueInMbps', 'type': 'int'},
5654    }
5655
5656    def __init__(
5657        self,
5658        *,
5659        offer_name: Optional[str] = None,
5660        value_in_mbps: Optional[int] = None,
5661        **kwargs
5662    ):
5663        super(ExpressRouteServiceProviderBandwidthsOffered, self).__init__(**kwargs)
5664        self.offer_name = offer_name
5665        self.value_in_mbps = value_in_mbps
5666
5667
5668class ExpressRouteServiceProviderListResult(msrest.serialization.Model):
5669    """Response for the ListExpressRouteServiceProvider API service call.
5670
5671    :param value: A list of ExpressRouteResourceProvider resources.
5672    :type value: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteServiceProvider]
5673    :param next_link: The URL to get the next set of results.
5674    :type next_link: str
5675    """
5676
5677    _attribute_map = {
5678        'value': {'key': 'value', 'type': '[ExpressRouteServiceProvider]'},
5679        'next_link': {'key': 'nextLink', 'type': 'str'},
5680    }
5681
5682    def __init__(
5683        self,
5684        *,
5685        value: Optional[List["ExpressRouteServiceProvider"]] = None,
5686        next_link: Optional[str] = None,
5687        **kwargs
5688    ):
5689        super(ExpressRouteServiceProviderListResult, self).__init__(**kwargs)
5690        self.value = value
5691        self.next_link = next_link
5692
5693
5694class FlowLogInformation(msrest.serialization.Model):
5695    """Information on the configuration of flow log and traffic analytics (optional) .
5696
5697    All required parameters must be populated in order to send to Azure.
5698
5699    :param target_resource_id: Required. The ID of the resource to configure for flow log and
5700     traffic analytics (optional) .
5701    :type target_resource_id: str
5702    :param flow_analytics_configuration: Parameters that define the configuration of traffic
5703     analytics.
5704    :type flow_analytics_configuration:
5705     ~azure.mgmt.network.v2018_04_01.models.TrafficAnalyticsProperties
5706    :param storage_id: Required. ID of the storage account which is used to store the flow log.
5707    :type storage_id: str
5708    :param enabled: Required. Flag to enable/disable flow logging.
5709    :type enabled: bool
5710    :param retention_policy: Parameters that define the retention policy for flow log.
5711    :type retention_policy: ~azure.mgmt.network.v2018_04_01.models.RetentionPolicyParameters
5712    """
5713
5714    _validation = {
5715        'target_resource_id': {'required': True},
5716        'storage_id': {'required': True},
5717        'enabled': {'required': True},
5718    }
5719
5720    _attribute_map = {
5721        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
5722        'flow_analytics_configuration': {'key': 'flowAnalyticsConfiguration', 'type': 'TrafficAnalyticsProperties'},
5723        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
5724        'enabled': {'key': 'properties.enabled', 'type': 'bool'},
5725        'retention_policy': {'key': 'properties.retentionPolicy', 'type': 'RetentionPolicyParameters'},
5726    }
5727
5728    def __init__(
5729        self,
5730        *,
5731        target_resource_id: str,
5732        storage_id: str,
5733        enabled: bool,
5734        flow_analytics_configuration: Optional["TrafficAnalyticsProperties"] = None,
5735        retention_policy: Optional["RetentionPolicyParameters"] = None,
5736        **kwargs
5737    ):
5738        super(FlowLogInformation, self).__init__(**kwargs)
5739        self.target_resource_id = target_resource_id
5740        self.flow_analytics_configuration = flow_analytics_configuration
5741        self.storage_id = storage_id
5742        self.enabled = enabled
5743        self.retention_policy = retention_policy
5744
5745
5746class FlowLogStatusParameters(msrest.serialization.Model):
5747    """Parameters that define a resource to query flow log and traffic analytics (optional) status.
5748
5749    All required parameters must be populated in order to send to Azure.
5750
5751    :param target_resource_id: Required. The target resource where getting the flow log and traffic
5752     analytics (optional) status.
5753    :type target_resource_id: str
5754    """
5755
5756    _validation = {
5757        'target_resource_id': {'required': True},
5758    }
5759
5760    _attribute_map = {
5761        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
5762    }
5763
5764    def __init__(
5765        self,
5766        *,
5767        target_resource_id: str,
5768        **kwargs
5769    ):
5770        super(FlowLogStatusParameters, self).__init__(**kwargs)
5771        self.target_resource_id = target_resource_id
5772
5773
5774class FrontendIPConfiguration(SubResource):
5775    """Frontend IP address of the load balancer.
5776
5777    Variables are only populated by the server, and will be ignored when sending a request.
5778
5779    :param id: Resource ID.
5780    :type id: str
5781    :param name: The name of the resource that is unique within a resource group. This name can be
5782     used to access the resource.
5783    :type name: str
5784    :param etag: A unique read-only string that changes whenever the resource is updated.
5785    :type etag: str
5786    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
5787     come from.
5788    :type zones: list[str]
5789    :ivar inbound_nat_rules: Read only. Inbound rules URIs that use this frontend IP.
5790    :vartype inbound_nat_rules: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
5791    :ivar inbound_nat_pools: Read only. Inbound pools URIs that use this frontend IP.
5792    :vartype inbound_nat_pools: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
5793    :ivar outbound_nat_rules: Read only. Outbound rules URIs that use this frontend IP.
5794    :vartype outbound_nat_rules: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
5795    :ivar load_balancing_rules: Gets load balancing rules URIs that use this frontend IP.
5796    :vartype load_balancing_rules: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
5797    :param private_ip_address: The private IP address of the IP configuration.
5798    :type private_ip_address: str
5799    :param private_ip_allocation_method: The Private IP allocation method. Possible values are:
5800     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
5801    :type private_ip_allocation_method: str or
5802     ~azure.mgmt.network.v2018_04_01.models.IPAllocationMethod
5803    :param subnet: The reference of the subnet resource.
5804    :type subnet: ~azure.mgmt.network.v2018_04_01.models.Subnet
5805    :param public_ip_address: The reference of the Public IP resource.
5806    :type public_ip_address: ~azure.mgmt.network.v2018_04_01.models.PublicIPAddress
5807    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
5808     values are: 'Updating', 'Deleting', and 'Failed'.
5809    :type provisioning_state: str
5810    """
5811
5812    _validation = {
5813        'inbound_nat_rules': {'readonly': True},
5814        'inbound_nat_pools': {'readonly': True},
5815        'outbound_nat_rules': {'readonly': True},
5816        'load_balancing_rules': {'readonly': True},
5817    }
5818
5819    _attribute_map = {
5820        'id': {'key': 'id', 'type': 'str'},
5821        'name': {'key': 'name', 'type': 'str'},
5822        'etag': {'key': 'etag', 'type': 'str'},
5823        'zones': {'key': 'zones', 'type': '[str]'},
5824        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[SubResource]'},
5825        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[SubResource]'},
5826        'outbound_nat_rules': {'key': 'properties.outboundNatRules', 'type': '[SubResource]'},
5827        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
5828        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
5829        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
5830        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
5831        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
5832        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5833    }
5834
5835    def __init__(
5836        self,
5837        *,
5838        id: Optional[str] = None,
5839        name: Optional[str] = None,
5840        etag: Optional[str] = None,
5841        zones: Optional[List[str]] = None,
5842        private_ip_address: Optional[str] = None,
5843        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
5844        subnet: Optional["Subnet"] = None,
5845        public_ip_address: Optional["PublicIPAddress"] = None,
5846        provisioning_state: Optional[str] = None,
5847        **kwargs
5848    ):
5849        super(FrontendIPConfiguration, self).__init__(id=id, **kwargs)
5850        self.name = name
5851        self.etag = etag
5852        self.zones = zones
5853        self.inbound_nat_rules = None
5854        self.inbound_nat_pools = None
5855        self.outbound_nat_rules = None
5856        self.load_balancing_rules = None
5857        self.private_ip_address = private_ip_address
5858        self.private_ip_allocation_method = private_ip_allocation_method
5859        self.subnet = subnet
5860        self.public_ip_address = public_ip_address
5861        self.provisioning_state = provisioning_state
5862
5863
5864class GatewayRoute(msrest.serialization.Model):
5865    """Gateway routing details.
5866
5867    Variables are only populated by the server, and will be ignored when sending a request.
5868
5869    :ivar local_address: The gateway's local address.
5870    :vartype local_address: str
5871    :ivar network: The route's network prefix.
5872    :vartype network: str
5873    :ivar next_hop: The route's next hop.
5874    :vartype next_hop: str
5875    :ivar source_peer: The peer this route was learned from.
5876    :vartype source_peer: str
5877    :ivar origin: The source this route was learned from.
5878    :vartype origin: str
5879    :ivar as_path: The route's AS path sequence.
5880    :vartype as_path: str
5881    :ivar weight: The route's weight.
5882    :vartype weight: int
5883    """
5884
5885    _validation = {
5886        'local_address': {'readonly': True},
5887        'network': {'readonly': True},
5888        'next_hop': {'readonly': True},
5889        'source_peer': {'readonly': True},
5890        'origin': {'readonly': True},
5891        'as_path': {'readonly': True},
5892        'weight': {'readonly': True},
5893    }
5894
5895    _attribute_map = {
5896        'local_address': {'key': 'localAddress', 'type': 'str'},
5897        'network': {'key': 'network', 'type': 'str'},
5898        'next_hop': {'key': 'nextHop', 'type': 'str'},
5899        'source_peer': {'key': 'sourcePeer', 'type': 'str'},
5900        'origin': {'key': 'origin', 'type': 'str'},
5901        'as_path': {'key': 'asPath', 'type': 'str'},
5902        'weight': {'key': 'weight', 'type': 'int'},
5903    }
5904
5905    def __init__(
5906        self,
5907        **kwargs
5908    ):
5909        super(GatewayRoute, self).__init__(**kwargs)
5910        self.local_address = None
5911        self.network = None
5912        self.next_hop = None
5913        self.source_peer = None
5914        self.origin = None
5915        self.as_path = None
5916        self.weight = None
5917
5918
5919class GatewayRouteListResult(msrest.serialization.Model):
5920    """List of virtual network gateway routes.
5921
5922    :param value: List of gateway routes.
5923    :type value: list[~azure.mgmt.network.v2018_04_01.models.GatewayRoute]
5924    """
5925
5926    _attribute_map = {
5927        'value': {'key': 'value', 'type': '[GatewayRoute]'},
5928    }
5929
5930    def __init__(
5931        self,
5932        *,
5933        value: Optional[List["GatewayRoute"]] = None,
5934        **kwargs
5935    ):
5936        super(GatewayRouteListResult, self).__init__(**kwargs)
5937        self.value = value
5938
5939
5940class GetVpnSitesConfigurationRequest(msrest.serialization.Model):
5941    """List of Vpn-Sites.
5942
5943    :param vpn_sites: List of resource-ids of the vpn-sites for which config is to be downloaded.
5944    :type vpn_sites: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
5945    :param output_blob_sas_url: The sas-url to download the configurations for vpn-sites.
5946    :type output_blob_sas_url: str
5947    """
5948
5949    _attribute_map = {
5950        'vpn_sites': {'key': 'vpnSites', 'type': '[SubResource]'},
5951        'output_blob_sas_url': {'key': 'outputBlobSasUrl', 'type': 'str'},
5952    }
5953
5954    def __init__(
5955        self,
5956        *,
5957        vpn_sites: Optional[List["SubResource"]] = None,
5958        output_blob_sas_url: Optional[str] = None,
5959        **kwargs
5960    ):
5961        super(GetVpnSitesConfigurationRequest, self).__init__(**kwargs)
5962        self.vpn_sites = vpn_sites
5963        self.output_blob_sas_url = output_blob_sas_url
5964
5965
5966class HTTPConfiguration(msrest.serialization.Model):
5967    """HTTP configuration of the connectivity check.
5968
5969    :param method: HTTP method. Possible values include: "Get".
5970    :type method: str or ~azure.mgmt.network.v2018_04_01.models.HTTPMethod
5971    :param headers: List of HTTP headers.
5972    :type headers: list[~azure.mgmt.network.v2018_04_01.models.HTTPHeader]
5973    :param valid_status_codes: Valid status codes.
5974    :type valid_status_codes: list[int]
5975    """
5976
5977    _attribute_map = {
5978        'method': {'key': 'method', 'type': 'str'},
5979        'headers': {'key': 'headers', 'type': '[HTTPHeader]'},
5980        'valid_status_codes': {'key': 'validStatusCodes', 'type': '[int]'},
5981    }
5982
5983    def __init__(
5984        self,
5985        *,
5986        method: Optional[Union[str, "HTTPMethod"]] = None,
5987        headers: Optional[List["HTTPHeader"]] = None,
5988        valid_status_codes: Optional[List[int]] = None,
5989        **kwargs
5990    ):
5991        super(HTTPConfiguration, self).__init__(**kwargs)
5992        self.method = method
5993        self.headers = headers
5994        self.valid_status_codes = valid_status_codes
5995
5996
5997class HTTPHeader(msrest.serialization.Model):
5998    """Describes the HTTP header.
5999
6000    :param name: The name in HTTP header.
6001    :type name: str
6002    :param value: The value in HTTP header.
6003    :type value: str
6004    """
6005
6006    _attribute_map = {
6007        'name': {'key': 'name', 'type': 'str'},
6008        'value': {'key': 'value', 'type': 'str'},
6009    }
6010
6011    def __init__(
6012        self,
6013        *,
6014        name: Optional[str] = None,
6015        value: Optional[str] = None,
6016        **kwargs
6017    ):
6018        super(HTTPHeader, self).__init__(**kwargs)
6019        self.name = name
6020        self.value = value
6021
6022
6023class HubVirtualNetworkConnection(Resource):
6024    """HubVirtualNetworkConnection Resource.
6025
6026    Variables are only populated by the server, and will be ignored when sending a request.
6027
6028    :param id: Resource ID.
6029    :type id: str
6030    :ivar name: Resource name.
6031    :vartype name: str
6032    :ivar type: Resource type.
6033    :vartype type: str
6034    :param location: Resource location.
6035    :type location: str
6036    :param tags: A set of tags. Resource tags.
6037    :type tags: dict[str, str]
6038    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
6039    :vartype etag: str
6040    :param remote_virtual_network: Reference to the remote virtual network.
6041    :type remote_virtual_network: ~azure.mgmt.network.v2018_04_01.models.SubResource
6042    :param allow_hub_to_remote_vnet_transit: VirtualHub to RemoteVnet transit to enabled or not.
6043    :type allow_hub_to_remote_vnet_transit: bool
6044    :param allow_remote_vnet_to_use_hub_vnet_gateways: Allow RemoteVnet to use Virtual Hub's
6045     gateways.
6046    :type allow_remote_vnet_to_use_hub_vnet_gateways: bool
6047    :param provisioning_state: The provisioning state of the resource. Possible values include:
6048     "Succeeded", "Updating", "Deleting", "Failed".
6049    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
6050    """
6051
6052    _validation = {
6053        'name': {'readonly': True},
6054        'type': {'readonly': True},
6055        'etag': {'readonly': True},
6056    }
6057
6058    _attribute_map = {
6059        'id': {'key': 'id', 'type': 'str'},
6060        'name': {'key': 'name', 'type': 'str'},
6061        'type': {'key': 'type', 'type': 'str'},
6062        'location': {'key': 'location', 'type': 'str'},
6063        'tags': {'key': 'tags', 'type': '{str}'},
6064        'etag': {'key': 'etag', 'type': 'str'},
6065        'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'},
6066        'allow_hub_to_remote_vnet_transit': {'key': 'properties.allowHubToRemoteVnetTransit', 'type': 'bool'},
6067        'allow_remote_vnet_to_use_hub_vnet_gateways': {'key': 'properties.allowRemoteVnetToUseHubVnetGateways', 'type': 'bool'},
6068        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6069    }
6070
6071    def __init__(
6072        self,
6073        *,
6074        id: Optional[str] = None,
6075        location: Optional[str] = None,
6076        tags: Optional[Dict[str, str]] = None,
6077        remote_virtual_network: Optional["SubResource"] = None,
6078        allow_hub_to_remote_vnet_transit: Optional[bool] = None,
6079        allow_remote_vnet_to_use_hub_vnet_gateways: Optional[bool] = None,
6080        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
6081        **kwargs
6082    ):
6083        super(HubVirtualNetworkConnection, self).__init__(id=id, location=location, tags=tags, **kwargs)
6084        self.etag = None
6085        self.remote_virtual_network = remote_virtual_network
6086        self.allow_hub_to_remote_vnet_transit = allow_hub_to_remote_vnet_transit
6087        self.allow_remote_vnet_to_use_hub_vnet_gateways = allow_remote_vnet_to_use_hub_vnet_gateways
6088        self.provisioning_state = provisioning_state
6089
6090
6091class InboundNatPool(SubResource):
6092    """Inbound NAT pool of the load balancer.
6093
6094    :param id: Resource ID.
6095    :type id: str
6096    :param name: The name of the resource that is unique within a resource group. This name can be
6097     used to access the resource.
6098    :type name: str
6099    :param etag: A unique read-only string that changes whenever the resource is updated.
6100    :type etag: str
6101    :param frontend_ip_configuration: A reference to frontend IP addresses.
6102    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_04_01.models.SubResource
6103    :param protocol: The transport protocol for the endpoint. Possible values are 'Udp' or 'Tcp' or
6104     'All'. Possible values include: "Udp", "Tcp", "All".
6105    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.TransportProtocol
6106    :param frontend_port_range_start: The first port number in the range of external ports that
6107     will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values
6108     range between 1 and 65534.
6109    :type frontend_port_range_start: int
6110    :param frontend_port_range_end: The last port number in the range of external ports that will
6111     be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range
6112     between 1 and 65535.
6113    :type frontend_port_range_end: int
6114    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
6115     are between 1 and 65535.
6116    :type backend_port: int
6117    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
6118     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
6119     protocol is set to TCP.
6120    :type idle_timeout_in_minutes: int
6121    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
6122     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
6123     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
6124     after you create the endpoint.
6125    :type enable_floating_ip: bool
6126    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
6127     values are: 'Updating', 'Deleting', and 'Failed'.
6128    :type provisioning_state: str
6129    """
6130
6131    _attribute_map = {
6132        'id': {'key': 'id', 'type': 'str'},
6133        'name': {'key': 'name', 'type': 'str'},
6134        'etag': {'key': 'etag', 'type': 'str'},
6135        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
6136        'protocol': {'key': 'properties.protocol', 'type': 'str'},
6137        'frontend_port_range_start': {'key': 'properties.frontendPortRangeStart', 'type': 'int'},
6138        'frontend_port_range_end': {'key': 'properties.frontendPortRangeEnd', 'type': 'int'},
6139        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
6140        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
6141        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
6142        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6143    }
6144
6145    def __init__(
6146        self,
6147        *,
6148        id: Optional[str] = None,
6149        name: Optional[str] = None,
6150        etag: Optional[str] = None,
6151        frontend_ip_configuration: Optional["SubResource"] = None,
6152        protocol: Optional[Union[str, "TransportProtocol"]] = None,
6153        frontend_port_range_start: Optional[int] = None,
6154        frontend_port_range_end: Optional[int] = None,
6155        backend_port: Optional[int] = None,
6156        idle_timeout_in_minutes: Optional[int] = None,
6157        enable_floating_ip: Optional[bool] = None,
6158        provisioning_state: Optional[str] = None,
6159        **kwargs
6160    ):
6161        super(InboundNatPool, self).__init__(id=id, **kwargs)
6162        self.name = name
6163        self.etag = etag
6164        self.frontend_ip_configuration = frontend_ip_configuration
6165        self.protocol = protocol
6166        self.frontend_port_range_start = frontend_port_range_start
6167        self.frontend_port_range_end = frontend_port_range_end
6168        self.backend_port = backend_port
6169        self.idle_timeout_in_minutes = idle_timeout_in_minutes
6170        self.enable_floating_ip = enable_floating_ip
6171        self.provisioning_state = provisioning_state
6172
6173
6174class InboundNatRule(SubResource):
6175    """Inbound NAT rule of the load balancer.
6176
6177    Variables are only populated by the server, and will be ignored when sending a request.
6178
6179    :param id: Resource ID.
6180    :type id: str
6181    :param name: Gets name of the resource that is unique within a resource group. This name can be
6182     used to access the resource.
6183    :type name: str
6184    :param etag: A unique read-only string that changes whenever the resource is updated.
6185    :type etag: str
6186    :param frontend_ip_configuration: A reference to frontend IP addresses.
6187    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_04_01.models.SubResource
6188    :ivar backend_ip_configuration: A reference to a private IP address defined on a network
6189     interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations
6190     is forwarded to the backend IP.
6191    :vartype backend_ip_configuration:
6192     ~azure.mgmt.network.v2018_04_01.models.NetworkInterfaceIPConfiguration
6193    :param protocol: The transport protocol for the endpoint. Possible values are 'Udp' or 'Tcp' or
6194     'All'. Possible values include: "Udp", "Tcp", "All".
6195    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.TransportProtocol
6196    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
6197     unique within the Load Balancer. Acceptable values range from 1 to 65534.
6198    :type frontend_port: int
6199    :param backend_port: The port used for the internal endpoint. Acceptable values range from 1 to
6200     65535.
6201    :type backend_port: int
6202    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
6203     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
6204     protocol is set to TCP.
6205    :type idle_timeout_in_minutes: int
6206    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
6207     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
6208     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
6209     after you create the endpoint.
6210    :type enable_floating_ip: bool
6211    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
6212     values are: 'Updating', 'Deleting', and 'Failed'.
6213    :type provisioning_state: str
6214    """
6215
6216    _validation = {
6217        'backend_ip_configuration': {'readonly': True},
6218    }
6219
6220    _attribute_map = {
6221        'id': {'key': 'id', 'type': 'str'},
6222        'name': {'key': 'name', 'type': 'str'},
6223        'etag': {'key': 'etag', 'type': 'str'},
6224        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
6225        'backend_ip_configuration': {'key': 'properties.backendIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
6226        'protocol': {'key': 'properties.protocol', 'type': 'str'},
6227        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
6228        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
6229        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
6230        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
6231        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6232    }
6233
6234    def __init__(
6235        self,
6236        *,
6237        id: Optional[str] = None,
6238        name: Optional[str] = None,
6239        etag: Optional[str] = None,
6240        frontend_ip_configuration: Optional["SubResource"] = None,
6241        protocol: Optional[Union[str, "TransportProtocol"]] = None,
6242        frontend_port: Optional[int] = None,
6243        backend_port: Optional[int] = None,
6244        idle_timeout_in_minutes: Optional[int] = None,
6245        enable_floating_ip: Optional[bool] = None,
6246        provisioning_state: Optional[str] = None,
6247        **kwargs
6248    ):
6249        super(InboundNatRule, self).__init__(id=id, **kwargs)
6250        self.name = name
6251        self.etag = etag
6252        self.frontend_ip_configuration = frontend_ip_configuration
6253        self.backend_ip_configuration = None
6254        self.protocol = protocol
6255        self.frontend_port = frontend_port
6256        self.backend_port = backend_port
6257        self.idle_timeout_in_minutes = idle_timeout_in_minutes
6258        self.enable_floating_ip = enable_floating_ip
6259        self.provisioning_state = provisioning_state
6260
6261
6262class InboundNatRuleListResult(msrest.serialization.Model):
6263    """Response for ListInboundNatRule API service call.
6264
6265    Variables are only populated by the server, and will be ignored when sending a request.
6266
6267    :param value: A list of inbound nat rules in a load balancer.
6268    :type value: list[~azure.mgmt.network.v2018_04_01.models.InboundNatRule]
6269    :ivar next_link: The URL to get the next set of results.
6270    :vartype next_link: str
6271    """
6272
6273    _validation = {
6274        'next_link': {'readonly': True},
6275    }
6276
6277    _attribute_map = {
6278        'value': {'key': 'value', 'type': '[InboundNatRule]'},
6279        'next_link': {'key': 'nextLink', 'type': 'str'},
6280    }
6281
6282    def __init__(
6283        self,
6284        *,
6285        value: Optional[List["InboundNatRule"]] = None,
6286        **kwargs
6287    ):
6288        super(InboundNatRuleListResult, self).__init__(**kwargs)
6289        self.value = value
6290        self.next_link = None
6291
6292
6293class IPAddressAvailabilityResult(msrest.serialization.Model):
6294    """Response for CheckIPAddressAvailability API service call.
6295
6296    :param available: Private IP address availability.
6297    :type available: bool
6298    :param available_ip_addresses: Contains other available private IP addresses if the asked for
6299     address is taken.
6300    :type available_ip_addresses: list[str]
6301    """
6302
6303    _attribute_map = {
6304        'available': {'key': 'available', 'type': 'bool'},
6305        'available_ip_addresses': {'key': 'availableIPAddresses', 'type': '[str]'},
6306    }
6307
6308    def __init__(
6309        self,
6310        *,
6311        available: Optional[bool] = None,
6312        available_ip_addresses: Optional[List[str]] = None,
6313        **kwargs
6314    ):
6315        super(IPAddressAvailabilityResult, self).__init__(**kwargs)
6316        self.available = available
6317        self.available_ip_addresses = available_ip_addresses
6318
6319
6320class IPConfiguration(SubResource):
6321    """IP configuration.
6322
6323    :param id: Resource ID.
6324    :type id: str
6325    :param name: The name of the resource that is unique within a resource group. This name can be
6326     used to access the resource.
6327    :type name: str
6328    :param etag: A unique read-only string that changes whenever the resource is updated.
6329    :type etag: str
6330    :param private_ip_address: The private IP address of the IP configuration.
6331    :type private_ip_address: str
6332    :param private_ip_allocation_method: The private IP allocation method. Possible values are
6333     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
6334    :type private_ip_allocation_method: str or
6335     ~azure.mgmt.network.v2018_04_01.models.IPAllocationMethod
6336    :param subnet: The reference of the subnet resource.
6337    :type subnet: ~azure.mgmt.network.v2018_04_01.models.Subnet
6338    :param public_ip_address: The reference of the public IP resource.
6339    :type public_ip_address: ~azure.mgmt.network.v2018_04_01.models.PublicIPAddress
6340    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
6341     values are: 'Updating', 'Deleting', and 'Failed'.
6342    :type provisioning_state: str
6343    """
6344
6345    _attribute_map = {
6346        'id': {'key': 'id', 'type': 'str'},
6347        'name': {'key': 'name', 'type': 'str'},
6348        'etag': {'key': 'etag', 'type': 'str'},
6349        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
6350        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
6351        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
6352        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
6353        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6354    }
6355
6356    def __init__(
6357        self,
6358        *,
6359        id: Optional[str] = None,
6360        name: Optional[str] = None,
6361        etag: Optional[str] = None,
6362        private_ip_address: Optional[str] = None,
6363        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
6364        subnet: Optional["Subnet"] = None,
6365        public_ip_address: Optional["PublicIPAddress"] = None,
6366        provisioning_state: Optional[str] = None,
6367        **kwargs
6368    ):
6369        super(IPConfiguration, self).__init__(id=id, **kwargs)
6370        self.name = name
6371        self.etag = etag
6372        self.private_ip_address = private_ip_address
6373        self.private_ip_allocation_method = private_ip_allocation_method
6374        self.subnet = subnet
6375        self.public_ip_address = public_ip_address
6376        self.provisioning_state = provisioning_state
6377
6378
6379class IpsecPolicy(msrest.serialization.Model):
6380    """An IPSec Policy configuration for a virtual network gateway connection.
6381
6382    All required parameters must be populated in order to send to Azure.
6383
6384    :param sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode
6385     or Phase 2 SA) lifetime in seconds for a site to site VPN tunnel.
6386    :type sa_life_time_seconds: int
6387    :param sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode
6388     or Phase 2 SA) payload size in KB for a site to site VPN tunnel.
6389    :type sa_data_size_kilobytes: int
6390    :param ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible
6391     values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192",
6392     "GCMAES256".
6393    :type ipsec_encryption: str or ~azure.mgmt.network.v2018_04_01.models.IpsecEncryption
6394    :param ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values
6395     include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256".
6396    :type ipsec_integrity: str or ~azure.mgmt.network.v2018_04_01.models.IpsecIntegrity
6397    :param ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values
6398     include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128".
6399    :type ike_encryption: str or ~azure.mgmt.network.v2018_04_01.models.IkeEncryption
6400    :param ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values
6401     include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128".
6402    :type ike_integrity: str or ~azure.mgmt.network.v2018_04_01.models.IkeIntegrity
6403    :param dh_group: Required. The DH Groups used in IKE Phase 1 for initial SA. Possible values
6404     include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384",
6405     "DHGroup24".
6406    :type dh_group: str or ~azure.mgmt.network.v2018_04_01.models.DhGroup
6407    :param pfs_group: Required. The Pfs Groups used in IKE Phase 2 for new child SA. Possible
6408     values include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14",
6409     "PFSMM".
6410    :type pfs_group: str or ~azure.mgmt.network.v2018_04_01.models.PfsGroup
6411    """
6412
6413    _validation = {
6414        'sa_life_time_seconds': {'required': True},
6415        'sa_data_size_kilobytes': {'required': True},
6416        'ipsec_encryption': {'required': True},
6417        'ipsec_integrity': {'required': True},
6418        'ike_encryption': {'required': True},
6419        'ike_integrity': {'required': True},
6420        'dh_group': {'required': True},
6421        'pfs_group': {'required': True},
6422    }
6423
6424    _attribute_map = {
6425        'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'},
6426        'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'},
6427        'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'},
6428        'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'},
6429        'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'},
6430        'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'},
6431        'dh_group': {'key': 'dhGroup', 'type': 'str'},
6432        'pfs_group': {'key': 'pfsGroup', 'type': 'str'},
6433    }
6434
6435    def __init__(
6436        self,
6437        *,
6438        sa_life_time_seconds: int,
6439        sa_data_size_kilobytes: int,
6440        ipsec_encryption: Union[str, "IpsecEncryption"],
6441        ipsec_integrity: Union[str, "IpsecIntegrity"],
6442        ike_encryption: Union[str, "IkeEncryption"],
6443        ike_integrity: Union[str, "IkeIntegrity"],
6444        dh_group: Union[str, "DhGroup"],
6445        pfs_group: Union[str, "PfsGroup"],
6446        **kwargs
6447    ):
6448        super(IpsecPolicy, self).__init__(**kwargs)
6449        self.sa_life_time_seconds = sa_life_time_seconds
6450        self.sa_data_size_kilobytes = sa_data_size_kilobytes
6451        self.ipsec_encryption = ipsec_encryption
6452        self.ipsec_integrity = ipsec_integrity
6453        self.ike_encryption = ike_encryption
6454        self.ike_integrity = ike_integrity
6455        self.dh_group = dh_group
6456        self.pfs_group = pfs_group
6457
6458
6459class IpTag(msrest.serialization.Model):
6460    """Contains the IpTag associated with the public IP address.
6461
6462    :param ip_tag_type: Gets or sets the ipTag type: Example FirstPartyUsage.
6463    :type ip_tag_type: str
6464    :param tag: Gets or sets value of the IpTag associated with the public IP. Example SQL, Storage
6465     etc.
6466    :type tag: str
6467    """
6468
6469    _attribute_map = {
6470        'ip_tag_type': {'key': 'ipTagType', 'type': 'str'},
6471        'tag': {'key': 'tag', 'type': 'str'},
6472    }
6473
6474    def __init__(
6475        self,
6476        *,
6477        ip_tag_type: Optional[str] = None,
6478        tag: Optional[str] = None,
6479        **kwargs
6480    ):
6481        super(IpTag, self).__init__(**kwargs)
6482        self.ip_tag_type = ip_tag_type
6483        self.tag = tag
6484
6485
6486class Ipv6ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
6487    """Contains IPv6 peering config.
6488
6489    :param primary_peer_address_prefix: The primary address prefix.
6490    :type primary_peer_address_prefix: str
6491    :param secondary_peer_address_prefix: The secondary address prefix.
6492    :type secondary_peer_address_prefix: str
6493    :param microsoft_peering_config: The Microsoft peering configuration.
6494    :type microsoft_peering_config:
6495     ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitPeeringConfig
6496    :param route_filter: The reference of the RouteFilter resource.
6497    :type route_filter: ~azure.mgmt.network.v2018_04_01.models.RouteFilter
6498    :param state: The state of peering. Possible values are: 'Disabled' and 'Enabled'. Possible
6499     values include: "Disabled", "Enabled".
6500    :type state: str or ~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitPeeringState
6501    """
6502
6503    _attribute_map = {
6504        'primary_peer_address_prefix': {'key': 'primaryPeerAddressPrefix', 'type': 'str'},
6505        'secondary_peer_address_prefix': {'key': 'secondaryPeerAddressPrefix', 'type': 'str'},
6506        'microsoft_peering_config': {'key': 'microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
6507        'route_filter': {'key': 'routeFilter', 'type': 'RouteFilter'},
6508        'state': {'key': 'state', 'type': 'str'},
6509    }
6510
6511    def __init__(
6512        self,
6513        *,
6514        primary_peer_address_prefix: Optional[str] = None,
6515        secondary_peer_address_prefix: Optional[str] = None,
6516        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
6517        route_filter: Optional["RouteFilter"] = None,
6518        state: Optional[Union[str, "ExpressRouteCircuitPeeringState"]] = None,
6519        **kwargs
6520    ):
6521        super(Ipv6ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
6522        self.primary_peer_address_prefix = primary_peer_address_prefix
6523        self.secondary_peer_address_prefix = secondary_peer_address_prefix
6524        self.microsoft_peering_config = microsoft_peering_config
6525        self.route_filter = route_filter
6526        self.state = state
6527
6528
6529class ListHubVirtualNetworkConnectionsResult(msrest.serialization.Model):
6530    """List of HubVirtualNetworkConnections and a URL nextLink to get the next set of results.
6531
6532    :param value: List of HubVirtualNetworkConnections.
6533    :type value: list[~azure.mgmt.network.v2018_04_01.models.HubVirtualNetworkConnection]
6534    :param next_link: URL to get the next set of operation list results if there are any.
6535    :type next_link: str
6536    """
6537
6538    _attribute_map = {
6539        'value': {'key': 'value', 'type': '[HubVirtualNetworkConnection]'},
6540        'next_link': {'key': 'nextLink', 'type': 'str'},
6541    }
6542
6543    def __init__(
6544        self,
6545        *,
6546        value: Optional[List["HubVirtualNetworkConnection"]] = None,
6547        next_link: Optional[str] = None,
6548        **kwargs
6549    ):
6550        super(ListHubVirtualNetworkConnectionsResult, self).__init__(**kwargs)
6551        self.value = value
6552        self.next_link = next_link
6553
6554
6555class ListVirtualHubsResult(msrest.serialization.Model):
6556    """Result of the request to list VirtualHubs. It contains a list of VirtualHubs and a URL nextLink to get the next set of results.
6557
6558    :param value: List of VirtualHubs.
6559    :type value: list[~azure.mgmt.network.v2018_04_01.models.VirtualHub]
6560    :param next_link: URL to get the next set of operation list results if there are any.
6561    :type next_link: str
6562    """
6563
6564    _attribute_map = {
6565        'value': {'key': 'value', 'type': '[VirtualHub]'},
6566        'next_link': {'key': 'nextLink', 'type': 'str'},
6567    }
6568
6569    def __init__(
6570        self,
6571        *,
6572        value: Optional[List["VirtualHub"]] = None,
6573        next_link: Optional[str] = None,
6574        **kwargs
6575    ):
6576        super(ListVirtualHubsResult, self).__init__(**kwargs)
6577        self.value = value
6578        self.next_link = next_link
6579
6580
6581class ListVirtualWANsResult(msrest.serialization.Model):
6582    """Result of the request to list VirtualWANs. It contains a list of VirtualWANs and a URL nextLink to get the next set of results.
6583
6584    :param value: List of VirtualWANs.
6585    :type value: list[~azure.mgmt.network.v2018_04_01.models.VirtualWAN]
6586    :param next_link: URL to get the next set of operation list results if there are any.
6587    :type next_link: str
6588    """
6589
6590    _attribute_map = {
6591        'value': {'key': 'value', 'type': '[VirtualWAN]'},
6592        'next_link': {'key': 'nextLink', 'type': 'str'},
6593    }
6594
6595    def __init__(
6596        self,
6597        *,
6598        value: Optional[List["VirtualWAN"]] = None,
6599        next_link: Optional[str] = None,
6600        **kwargs
6601    ):
6602        super(ListVirtualWANsResult, self).__init__(**kwargs)
6603        self.value = value
6604        self.next_link = next_link
6605
6606
6607class ListVpnConnectionsResult(msrest.serialization.Model):
6608    """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.
6609
6610    :param value: List of Vpn Connections.
6611    :type value: list[~azure.mgmt.network.v2018_04_01.models.VpnConnection]
6612    :param next_link: URL to get the next set of operation list results if there are any.
6613    :type next_link: str
6614    """
6615
6616    _attribute_map = {
6617        'value': {'key': 'value', 'type': '[VpnConnection]'},
6618        'next_link': {'key': 'nextLink', 'type': 'str'},
6619    }
6620
6621    def __init__(
6622        self,
6623        *,
6624        value: Optional[List["VpnConnection"]] = None,
6625        next_link: Optional[str] = None,
6626        **kwargs
6627    ):
6628        super(ListVpnConnectionsResult, self).__init__(**kwargs)
6629        self.value = value
6630        self.next_link = next_link
6631
6632
6633class ListVpnGatewaysResult(msrest.serialization.Model):
6634    """Result of the request to list VpnGateways. It contains a list of VpnGateways and a URL nextLink to get the next set of results.
6635
6636    :param value: List of VpnGateways.
6637    :type value: list[~azure.mgmt.network.v2018_04_01.models.VpnGateway]
6638    :param next_link: URL to get the next set of operation list results if there are any.
6639    :type next_link: str
6640    """
6641
6642    _attribute_map = {
6643        'value': {'key': 'value', 'type': '[VpnGateway]'},
6644        'next_link': {'key': 'nextLink', 'type': 'str'},
6645    }
6646
6647    def __init__(
6648        self,
6649        *,
6650        value: Optional[List["VpnGateway"]] = None,
6651        next_link: Optional[str] = None,
6652        **kwargs
6653    ):
6654        super(ListVpnGatewaysResult, self).__init__(**kwargs)
6655        self.value = value
6656        self.next_link = next_link
6657
6658
6659class ListVpnSitesResult(msrest.serialization.Model):
6660    """Result of the request to list VpnSites. It contains a list of VpnSites and a URL nextLink to get the next set of results.
6661
6662    :param value: List of VpnSites.
6663    :type value: list[~azure.mgmt.network.v2018_04_01.models.VpnSite]
6664    :param next_link: URL to get the next set of operation list results if there are any.
6665    :type next_link: str
6666    """
6667
6668    _attribute_map = {
6669        'value': {'key': 'value', 'type': '[VpnSite]'},
6670        'next_link': {'key': 'nextLink', 'type': 'str'},
6671    }
6672
6673    def __init__(
6674        self,
6675        *,
6676        value: Optional[List["VpnSite"]] = None,
6677        next_link: Optional[str] = None,
6678        **kwargs
6679    ):
6680        super(ListVpnSitesResult, self).__init__(**kwargs)
6681        self.value = value
6682        self.next_link = next_link
6683
6684
6685class LoadBalancer(Resource):
6686    """LoadBalancer resource.
6687
6688    Variables are only populated by the server, and will be ignored when sending a request.
6689
6690    :param id: Resource ID.
6691    :type id: str
6692    :ivar name: Resource name.
6693    :vartype name: str
6694    :ivar type: Resource type.
6695    :vartype type: str
6696    :param location: Resource location.
6697    :type location: str
6698    :param tags: A set of tags. Resource tags.
6699    :type tags: dict[str, str]
6700    :param sku: The load balancer SKU.
6701    :type sku: ~azure.mgmt.network.v2018_04_01.models.LoadBalancerSku
6702    :param etag: A unique read-only string that changes whenever the resource is updated.
6703    :type etag: str
6704    :param frontend_ip_configurations: Object representing the frontend IPs to be used for the load
6705     balancer.
6706    :type frontend_ip_configurations:
6707     list[~azure.mgmt.network.v2018_04_01.models.FrontendIPConfiguration]
6708    :param backend_address_pools: Collection of backend address pools used by a load balancer.
6709    :type backend_address_pools: list[~azure.mgmt.network.v2018_04_01.models.BackendAddressPool]
6710    :param load_balancing_rules: Object collection representing the load balancing rules Gets the
6711     provisioning.
6712    :type load_balancing_rules: list[~azure.mgmt.network.v2018_04_01.models.LoadBalancingRule]
6713    :param probes: Collection of probe objects used in the load balancer.
6714    :type probes: list[~azure.mgmt.network.v2018_04_01.models.Probe]
6715    :param inbound_nat_rules: Collection of inbound NAT Rules used by a load balancer. Defining
6716     inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT
6717     pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are
6718     associated with individual virtual machines cannot reference an Inbound NAT pool. They have to
6719     reference individual inbound NAT rules.
6720    :type inbound_nat_rules: list[~azure.mgmt.network.v2018_04_01.models.InboundNatRule]
6721    :param inbound_nat_pools: Defines an external port range for inbound NAT to a single backend
6722     port on NICs associated with a load balancer. Inbound NAT rules are created automatically for
6723     each NIC associated with the Load Balancer using an external port from this range. Defining an
6724     Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules.
6725     Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with
6726     individual virtual machines cannot reference an inbound NAT pool. They have to reference
6727     individual inbound NAT rules.
6728    :type inbound_nat_pools: list[~azure.mgmt.network.v2018_04_01.models.InboundNatPool]
6729    :param outbound_nat_rules: The outbound NAT rules.
6730    :type outbound_nat_rules: list[~azure.mgmt.network.v2018_04_01.models.OutboundNatRule]
6731    :param resource_guid: The resource GUID property of the load balancer resource.
6732    :type resource_guid: str
6733    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
6734     values are: 'Updating', 'Deleting', and 'Failed'.
6735    :type provisioning_state: str
6736    """
6737
6738    _validation = {
6739        'name': {'readonly': True},
6740        'type': {'readonly': True},
6741    }
6742
6743    _attribute_map = {
6744        'id': {'key': 'id', 'type': 'str'},
6745        'name': {'key': 'name', 'type': 'str'},
6746        'type': {'key': 'type', 'type': 'str'},
6747        'location': {'key': 'location', 'type': 'str'},
6748        'tags': {'key': 'tags', 'type': '{str}'},
6749        'sku': {'key': 'sku', 'type': 'LoadBalancerSku'},
6750        'etag': {'key': 'etag', 'type': 'str'},
6751        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[FrontendIPConfiguration]'},
6752        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[BackendAddressPool]'},
6753        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[LoadBalancingRule]'},
6754        'probes': {'key': 'properties.probes', 'type': '[Probe]'},
6755        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[InboundNatRule]'},
6756        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[InboundNatPool]'},
6757        'outbound_nat_rules': {'key': 'properties.outboundNatRules', 'type': '[OutboundNatRule]'},
6758        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6759        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6760    }
6761
6762    def __init__(
6763        self,
6764        *,
6765        id: Optional[str] = None,
6766        location: Optional[str] = None,
6767        tags: Optional[Dict[str, str]] = None,
6768        sku: Optional["LoadBalancerSku"] = None,
6769        etag: Optional[str] = None,
6770        frontend_ip_configurations: Optional[List["FrontendIPConfiguration"]] = None,
6771        backend_address_pools: Optional[List["BackendAddressPool"]] = None,
6772        load_balancing_rules: Optional[List["LoadBalancingRule"]] = None,
6773        probes: Optional[List["Probe"]] = None,
6774        inbound_nat_rules: Optional[List["InboundNatRule"]] = None,
6775        inbound_nat_pools: Optional[List["InboundNatPool"]] = None,
6776        outbound_nat_rules: Optional[List["OutboundNatRule"]] = None,
6777        resource_guid: Optional[str] = None,
6778        provisioning_state: Optional[str] = None,
6779        **kwargs
6780    ):
6781        super(LoadBalancer, self).__init__(id=id, location=location, tags=tags, **kwargs)
6782        self.sku = sku
6783        self.etag = etag
6784        self.frontend_ip_configurations = frontend_ip_configurations
6785        self.backend_address_pools = backend_address_pools
6786        self.load_balancing_rules = load_balancing_rules
6787        self.probes = probes
6788        self.inbound_nat_rules = inbound_nat_rules
6789        self.inbound_nat_pools = inbound_nat_pools
6790        self.outbound_nat_rules = outbound_nat_rules
6791        self.resource_guid = resource_guid
6792        self.provisioning_state = provisioning_state
6793
6794
6795class LoadBalancerBackendAddressPoolListResult(msrest.serialization.Model):
6796    """Response for ListBackendAddressPool API service call.
6797
6798    Variables are only populated by the server, and will be ignored when sending a request.
6799
6800    :param value: A list of backend address pools in a load balancer.
6801    :type value: list[~azure.mgmt.network.v2018_04_01.models.BackendAddressPool]
6802    :ivar next_link: The URL to get the next set of results.
6803    :vartype next_link: str
6804    """
6805
6806    _validation = {
6807        'next_link': {'readonly': True},
6808    }
6809
6810    _attribute_map = {
6811        'value': {'key': 'value', 'type': '[BackendAddressPool]'},
6812        'next_link': {'key': 'nextLink', 'type': 'str'},
6813    }
6814
6815    def __init__(
6816        self,
6817        *,
6818        value: Optional[List["BackendAddressPool"]] = None,
6819        **kwargs
6820    ):
6821        super(LoadBalancerBackendAddressPoolListResult, self).__init__(**kwargs)
6822        self.value = value
6823        self.next_link = None
6824
6825
6826class LoadBalancerFrontendIPConfigurationListResult(msrest.serialization.Model):
6827    """Response for ListFrontendIPConfiguration API service call.
6828
6829    Variables are only populated by the server, and will be ignored when sending a request.
6830
6831    :param value: A list of frontend IP configurations in a load balancer.
6832    :type value: list[~azure.mgmt.network.v2018_04_01.models.FrontendIPConfiguration]
6833    :ivar next_link: The URL to get the next set of results.
6834    :vartype next_link: str
6835    """
6836
6837    _validation = {
6838        'next_link': {'readonly': True},
6839    }
6840
6841    _attribute_map = {
6842        'value': {'key': 'value', 'type': '[FrontendIPConfiguration]'},
6843        'next_link': {'key': 'nextLink', 'type': 'str'},
6844    }
6845
6846    def __init__(
6847        self,
6848        *,
6849        value: Optional[List["FrontendIPConfiguration"]] = None,
6850        **kwargs
6851    ):
6852        super(LoadBalancerFrontendIPConfigurationListResult, self).__init__(**kwargs)
6853        self.value = value
6854        self.next_link = None
6855
6856
6857class LoadBalancerListResult(msrest.serialization.Model):
6858    """Response for ListLoadBalancers API service call.
6859
6860    Variables are only populated by the server, and will be ignored when sending a request.
6861
6862    :param value: A list of load balancers in a resource group.
6863    :type value: list[~azure.mgmt.network.v2018_04_01.models.LoadBalancer]
6864    :ivar next_link: The URL to get the next set of results.
6865    :vartype next_link: str
6866    """
6867
6868    _validation = {
6869        'next_link': {'readonly': True},
6870    }
6871
6872    _attribute_map = {
6873        'value': {'key': 'value', 'type': '[LoadBalancer]'},
6874        'next_link': {'key': 'nextLink', 'type': 'str'},
6875    }
6876
6877    def __init__(
6878        self,
6879        *,
6880        value: Optional[List["LoadBalancer"]] = None,
6881        **kwargs
6882    ):
6883        super(LoadBalancerListResult, self).__init__(**kwargs)
6884        self.value = value
6885        self.next_link = None
6886
6887
6888class LoadBalancerLoadBalancingRuleListResult(msrest.serialization.Model):
6889    """Response for ListLoadBalancingRule API service call.
6890
6891    Variables are only populated by the server, and will be ignored when sending a request.
6892
6893    :param value: A list of load balancing rules in a load balancer.
6894    :type value: list[~azure.mgmt.network.v2018_04_01.models.LoadBalancingRule]
6895    :ivar next_link: The URL to get the next set of results.
6896    :vartype next_link: str
6897    """
6898
6899    _validation = {
6900        'next_link': {'readonly': True},
6901    }
6902
6903    _attribute_map = {
6904        'value': {'key': 'value', 'type': '[LoadBalancingRule]'},
6905        'next_link': {'key': 'nextLink', 'type': 'str'},
6906    }
6907
6908    def __init__(
6909        self,
6910        *,
6911        value: Optional[List["LoadBalancingRule"]] = None,
6912        **kwargs
6913    ):
6914        super(LoadBalancerLoadBalancingRuleListResult, self).__init__(**kwargs)
6915        self.value = value
6916        self.next_link = None
6917
6918
6919class LoadBalancerProbeListResult(msrest.serialization.Model):
6920    """Response for ListProbe API service call.
6921
6922    Variables are only populated by the server, and will be ignored when sending a request.
6923
6924    :param value: A list of probes in a load balancer.
6925    :type value: list[~azure.mgmt.network.v2018_04_01.models.Probe]
6926    :ivar next_link: The URL to get the next set of results.
6927    :vartype next_link: str
6928    """
6929
6930    _validation = {
6931        'next_link': {'readonly': True},
6932    }
6933
6934    _attribute_map = {
6935        'value': {'key': 'value', 'type': '[Probe]'},
6936        'next_link': {'key': 'nextLink', 'type': 'str'},
6937    }
6938
6939    def __init__(
6940        self,
6941        *,
6942        value: Optional[List["Probe"]] = None,
6943        **kwargs
6944    ):
6945        super(LoadBalancerProbeListResult, self).__init__(**kwargs)
6946        self.value = value
6947        self.next_link = None
6948
6949
6950class LoadBalancerSku(msrest.serialization.Model):
6951    """SKU of a load balancer.
6952
6953    :param name: Name of a load balancer SKU. Possible values include: "Basic", "Standard".
6954    :type name: str or ~azure.mgmt.network.v2018_04_01.models.LoadBalancerSkuName
6955    """
6956
6957    _attribute_map = {
6958        'name': {'key': 'name', 'type': 'str'},
6959    }
6960
6961    def __init__(
6962        self,
6963        *,
6964        name: Optional[Union[str, "LoadBalancerSkuName"]] = None,
6965        **kwargs
6966    ):
6967        super(LoadBalancerSku, self).__init__(**kwargs)
6968        self.name = name
6969
6970
6971class LoadBalancingRule(SubResource):
6972    """A load balancing rule for a load balancer.
6973
6974    :param id: Resource ID.
6975    :type id: str
6976    :param name: The name of the resource that is unique within a resource group. This name can be
6977     used to access the resource.
6978    :type name: str
6979    :param etag: A unique read-only string that changes whenever the resource is updated.
6980    :type etag: str
6981    :param frontend_ip_configuration: A reference to frontend IP addresses.
6982    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_04_01.models.SubResource
6983    :param backend_address_pool: A reference to a pool of DIPs. Inbound traffic is randomly load
6984     balanced across IPs in the backend IPs.
6985    :type backend_address_pool: ~azure.mgmt.network.v2018_04_01.models.SubResource
6986    :param probe: The reference of the load balancer probe used by the load balancing rule.
6987    :type probe: ~azure.mgmt.network.v2018_04_01.models.SubResource
6988    :param protocol: The transport protocol for the endpoint. Possible values are 'Udp' or 'Tcp' or
6989     'All'. Possible values include: "Udp", "Tcp", "All".
6990    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.TransportProtocol
6991    :param load_distribution: The load distribution policy for this rule. Possible values are
6992     'Default', 'SourceIP', and 'SourceIPProtocol'. Possible values include: "Default", "SourceIP",
6993     "SourceIPProtocol".
6994    :type load_distribution: str or ~azure.mgmt.network.v2018_04_01.models.LoadDistribution
6995    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
6996     unique within the Load Balancer. Acceptable values are between 0 and 65534. Note that value 0
6997     enables "Any Port".
6998    :type frontend_port: int
6999    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
7000     are between 0 and 65535. Note that value 0 enables "Any Port".
7001    :type backend_port: int
7002    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
7003     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
7004     protocol is set to TCP.
7005    :type idle_timeout_in_minutes: int
7006    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
7007     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
7008     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
7009     after you create the endpoint.
7010    :type enable_floating_ip: bool
7011    :param disable_outbound_snat: Configures SNAT for the VMs in the backend pool to use the
7012     publicIP address specified in the frontend of the load balancing rule.
7013    :type disable_outbound_snat: bool
7014    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
7015     values are: 'Updating', 'Deleting', and 'Failed'.
7016    :type provisioning_state: str
7017    """
7018
7019    _attribute_map = {
7020        'id': {'key': 'id', 'type': 'str'},
7021        'name': {'key': 'name', 'type': 'str'},
7022        'etag': {'key': 'etag', 'type': 'str'},
7023        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
7024        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
7025        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
7026        'protocol': {'key': 'properties.protocol', 'type': 'str'},
7027        'load_distribution': {'key': 'properties.loadDistribution', 'type': 'str'},
7028        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
7029        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
7030        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
7031        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
7032        'disable_outbound_snat': {'key': 'properties.disableOutboundSnat', 'type': 'bool'},
7033        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7034    }
7035
7036    def __init__(
7037        self,
7038        *,
7039        id: Optional[str] = None,
7040        name: Optional[str] = None,
7041        etag: Optional[str] = None,
7042        frontend_ip_configuration: Optional["SubResource"] = None,
7043        backend_address_pool: Optional["SubResource"] = None,
7044        probe: Optional["SubResource"] = None,
7045        protocol: Optional[Union[str, "TransportProtocol"]] = None,
7046        load_distribution: Optional[Union[str, "LoadDistribution"]] = None,
7047        frontend_port: Optional[int] = None,
7048        backend_port: Optional[int] = None,
7049        idle_timeout_in_minutes: Optional[int] = None,
7050        enable_floating_ip: Optional[bool] = None,
7051        disable_outbound_snat: Optional[bool] = None,
7052        provisioning_state: Optional[str] = None,
7053        **kwargs
7054    ):
7055        super(LoadBalancingRule, self).__init__(id=id, **kwargs)
7056        self.name = name
7057        self.etag = etag
7058        self.frontend_ip_configuration = frontend_ip_configuration
7059        self.backend_address_pool = backend_address_pool
7060        self.probe = probe
7061        self.protocol = protocol
7062        self.load_distribution = load_distribution
7063        self.frontend_port = frontend_port
7064        self.backend_port = backend_port
7065        self.idle_timeout_in_minutes = idle_timeout_in_minutes
7066        self.enable_floating_ip = enable_floating_ip
7067        self.disable_outbound_snat = disable_outbound_snat
7068        self.provisioning_state = provisioning_state
7069
7070
7071class LocalNetworkGateway(Resource):
7072    """A common class for general resource information.
7073
7074    Variables are only populated by the server, and will be ignored when sending a request.
7075
7076    :param id: Resource ID.
7077    :type id: str
7078    :ivar name: Resource name.
7079    :vartype name: str
7080    :ivar type: Resource type.
7081    :vartype type: str
7082    :param location: Resource location.
7083    :type location: str
7084    :param tags: A set of tags. Resource tags.
7085    :type tags: dict[str, str]
7086    :param etag: A unique read-only string that changes whenever the resource is updated.
7087    :type etag: str
7088    :param local_network_address_space: Local network site address space.
7089    :type local_network_address_space: ~azure.mgmt.network.v2018_04_01.models.AddressSpace
7090    :param gateway_ip_address: IP address of local network gateway.
7091    :type gateway_ip_address: str
7092    :param bgp_settings: Local network gateway's BGP speaker settings.
7093    :type bgp_settings: ~azure.mgmt.network.v2018_04_01.models.BgpSettings
7094    :param resource_guid: The resource GUID property of the LocalNetworkGateway resource.
7095    :type resource_guid: str
7096    :ivar provisioning_state: The provisioning state of the LocalNetworkGateway resource. Possible
7097     values are: 'Updating', 'Deleting', and 'Failed'.
7098    :vartype provisioning_state: str
7099    """
7100
7101    _validation = {
7102        'name': {'readonly': True},
7103        'type': {'readonly': True},
7104        'provisioning_state': {'readonly': True},
7105    }
7106
7107    _attribute_map = {
7108        'id': {'key': 'id', 'type': 'str'},
7109        'name': {'key': 'name', 'type': 'str'},
7110        'type': {'key': 'type', 'type': 'str'},
7111        'location': {'key': 'location', 'type': 'str'},
7112        'tags': {'key': 'tags', 'type': '{str}'},
7113        'etag': {'key': 'etag', 'type': 'str'},
7114        'local_network_address_space': {'key': 'properties.localNetworkAddressSpace', 'type': 'AddressSpace'},
7115        'gateway_ip_address': {'key': 'properties.gatewayIpAddress', 'type': 'str'},
7116        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
7117        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
7118        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7119    }
7120
7121    def __init__(
7122        self,
7123        *,
7124        id: Optional[str] = None,
7125        location: Optional[str] = None,
7126        tags: Optional[Dict[str, str]] = None,
7127        etag: Optional[str] = None,
7128        local_network_address_space: Optional["AddressSpace"] = None,
7129        gateway_ip_address: Optional[str] = None,
7130        bgp_settings: Optional["BgpSettings"] = None,
7131        resource_guid: Optional[str] = None,
7132        **kwargs
7133    ):
7134        super(LocalNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
7135        self.etag = etag
7136        self.local_network_address_space = local_network_address_space
7137        self.gateway_ip_address = gateway_ip_address
7138        self.bgp_settings = bgp_settings
7139        self.resource_guid = resource_guid
7140        self.provisioning_state = None
7141
7142
7143class LocalNetworkGatewayListResult(msrest.serialization.Model):
7144    """Response for ListLocalNetworkGateways API service call.
7145
7146    Variables are only populated by the server, and will be ignored when sending a request.
7147
7148    :param value: A list of local network gateways that exists in a resource group.
7149    :type value: list[~azure.mgmt.network.v2018_04_01.models.LocalNetworkGateway]
7150    :ivar next_link: The URL to get the next set of results.
7151    :vartype next_link: str
7152    """
7153
7154    _validation = {
7155        'next_link': {'readonly': True},
7156    }
7157
7158    _attribute_map = {
7159        'value': {'key': 'value', 'type': '[LocalNetworkGateway]'},
7160        'next_link': {'key': 'nextLink', 'type': 'str'},
7161    }
7162
7163    def __init__(
7164        self,
7165        *,
7166        value: Optional[List["LocalNetworkGateway"]] = None,
7167        **kwargs
7168    ):
7169        super(LocalNetworkGatewayListResult, self).__init__(**kwargs)
7170        self.value = value
7171        self.next_link = None
7172
7173
7174class LogSpecification(msrest.serialization.Model):
7175    """Description of logging specification.
7176
7177    :param name: The name of the specification.
7178    :type name: str
7179    :param display_name: The display name of the specification.
7180    :type display_name: str
7181    :param blob_duration: Duration of the blob.
7182    :type blob_duration: str
7183    """
7184
7185    _attribute_map = {
7186        'name': {'key': 'name', 'type': 'str'},
7187        'display_name': {'key': 'displayName', 'type': 'str'},
7188        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
7189    }
7190
7191    def __init__(
7192        self,
7193        *,
7194        name: Optional[str] = None,
7195        display_name: Optional[str] = None,
7196        blob_duration: Optional[str] = None,
7197        **kwargs
7198    ):
7199        super(LogSpecification, self).__init__(**kwargs)
7200        self.name = name
7201        self.display_name = display_name
7202        self.blob_duration = blob_duration
7203
7204
7205class MetricSpecification(msrest.serialization.Model):
7206    """Description of metrics specification.
7207
7208    :param name: The name of the metric.
7209    :type name: str
7210    :param display_name: The display name of the metric.
7211    :type display_name: str
7212    :param display_description: The description of the metric.
7213    :type display_description: str
7214    :param unit: Units the metric to be displayed in.
7215    :type unit: str
7216    :param aggregation_type: The aggregation type.
7217    :type aggregation_type: str
7218    :param availabilities: List of availability.
7219    :type availabilities: list[~azure.mgmt.network.v2018_04_01.models.Availability]
7220    :param enable_regional_mdm_account: Whether regional MDM account enabled.
7221    :type enable_regional_mdm_account: bool
7222    :param fill_gap_with_zero: Whether gaps would be filled with zeros.
7223    :type fill_gap_with_zero: bool
7224    :param metric_filter_pattern: Pattern for the filter of the metric.
7225    :type metric_filter_pattern: str
7226    :param dimensions: List of dimensions.
7227    :type dimensions: list[~azure.mgmt.network.v2018_04_01.models.Dimension]
7228    :param is_internal: Whether the metric is internal.
7229    :type is_internal: bool
7230    :param source_mdm_account: The source MDM account.
7231    :type source_mdm_account: str
7232    :param source_mdm_namespace: The source MDM namespace.
7233    :type source_mdm_namespace: str
7234    :param resource_id_dimension_name_override: The resource Id dimension name override.
7235    :type resource_id_dimension_name_override: str
7236    """
7237
7238    _attribute_map = {
7239        'name': {'key': 'name', 'type': 'str'},
7240        'display_name': {'key': 'displayName', 'type': 'str'},
7241        'display_description': {'key': 'displayDescription', 'type': 'str'},
7242        'unit': {'key': 'unit', 'type': 'str'},
7243        'aggregation_type': {'key': 'aggregationType', 'type': 'str'},
7244        'availabilities': {'key': 'availabilities', 'type': '[Availability]'},
7245        'enable_regional_mdm_account': {'key': 'enableRegionalMdmAccount', 'type': 'bool'},
7246        'fill_gap_with_zero': {'key': 'fillGapWithZero', 'type': 'bool'},
7247        'metric_filter_pattern': {'key': 'metricFilterPattern', 'type': 'str'},
7248        'dimensions': {'key': 'dimensions', 'type': '[Dimension]'},
7249        'is_internal': {'key': 'isInternal', 'type': 'bool'},
7250        'source_mdm_account': {'key': 'sourceMdmAccount', 'type': 'str'},
7251        'source_mdm_namespace': {'key': 'sourceMdmNamespace', 'type': 'str'},
7252        'resource_id_dimension_name_override': {'key': 'resourceIdDimensionNameOverride', 'type': 'str'},
7253    }
7254
7255    def __init__(
7256        self,
7257        *,
7258        name: Optional[str] = None,
7259        display_name: Optional[str] = None,
7260        display_description: Optional[str] = None,
7261        unit: Optional[str] = None,
7262        aggregation_type: Optional[str] = None,
7263        availabilities: Optional[List["Availability"]] = None,
7264        enable_regional_mdm_account: Optional[bool] = None,
7265        fill_gap_with_zero: Optional[bool] = None,
7266        metric_filter_pattern: Optional[str] = None,
7267        dimensions: Optional[List["Dimension"]] = None,
7268        is_internal: Optional[bool] = None,
7269        source_mdm_account: Optional[str] = None,
7270        source_mdm_namespace: Optional[str] = None,
7271        resource_id_dimension_name_override: Optional[str] = None,
7272        **kwargs
7273    ):
7274        super(MetricSpecification, self).__init__(**kwargs)
7275        self.name = name
7276        self.display_name = display_name
7277        self.display_description = display_description
7278        self.unit = unit
7279        self.aggregation_type = aggregation_type
7280        self.availabilities = availabilities
7281        self.enable_regional_mdm_account = enable_regional_mdm_account
7282        self.fill_gap_with_zero = fill_gap_with_zero
7283        self.metric_filter_pattern = metric_filter_pattern
7284        self.dimensions = dimensions
7285        self.is_internal = is_internal
7286        self.source_mdm_account = source_mdm_account
7287        self.source_mdm_namespace = source_mdm_namespace
7288        self.resource_id_dimension_name_override = resource_id_dimension_name_override
7289
7290
7291class NetworkInterface(Resource):
7292    """A network interface in a resource group.
7293
7294    Variables are only populated by the server, and will be ignored when sending a request.
7295
7296    :param id: Resource ID.
7297    :type id: str
7298    :ivar name: Resource name.
7299    :vartype name: str
7300    :ivar type: Resource type.
7301    :vartype type: str
7302    :param location: Resource location.
7303    :type location: str
7304    :param tags: A set of tags. Resource tags.
7305    :type tags: dict[str, str]
7306    :param etag: A unique read-only string that changes whenever the resource is updated.
7307    :type etag: str
7308    :param virtual_machine: The reference of a virtual machine.
7309    :type virtual_machine: ~azure.mgmt.network.v2018_04_01.models.SubResource
7310    :param network_security_group: The reference of the NetworkSecurityGroup resource.
7311    :type network_security_group: ~azure.mgmt.network.v2018_04_01.models.NetworkSecurityGroup
7312    :param ip_configurations: A list of IPConfigurations of the network interface.
7313    :type ip_configurations:
7314     list[~azure.mgmt.network.v2018_04_01.models.NetworkInterfaceIPConfiguration]
7315    :param dns_settings: The DNS settings in network interface.
7316    :type dns_settings: ~azure.mgmt.network.v2018_04_01.models.NetworkInterfaceDnsSettings
7317    :param mac_address: The MAC address of the network interface.
7318    :type mac_address: str
7319    :param primary: Gets whether this is a primary network interface on a virtual machine.
7320    :type primary: bool
7321    :param enable_accelerated_networking: If the network interface is accelerated networking
7322     enabled.
7323    :type enable_accelerated_networking: bool
7324    :param enable_ip_forwarding: Indicates whether IP forwarding is enabled on this network
7325     interface.
7326    :type enable_ip_forwarding: bool
7327    :param resource_guid: The resource GUID property of the network interface resource.
7328    :type resource_guid: str
7329    :param provisioning_state: The provisioning state of the public IP resource. Possible values
7330     are: 'Updating', 'Deleting', and 'Failed'.
7331    :type provisioning_state: str
7332    """
7333
7334    _validation = {
7335        'name': {'readonly': True},
7336        'type': {'readonly': True},
7337    }
7338
7339    _attribute_map = {
7340        'id': {'key': 'id', 'type': 'str'},
7341        'name': {'key': 'name', 'type': 'str'},
7342        'type': {'key': 'type', 'type': 'str'},
7343        'location': {'key': 'location', 'type': 'str'},
7344        'tags': {'key': 'tags', 'type': '{str}'},
7345        'etag': {'key': 'etag', 'type': 'str'},
7346        'virtual_machine': {'key': 'properties.virtualMachine', 'type': 'SubResource'},
7347        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
7348        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
7349        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'NetworkInterfaceDnsSettings'},
7350        'mac_address': {'key': 'properties.macAddress', 'type': 'str'},
7351        'primary': {'key': 'properties.primary', 'type': 'bool'},
7352        'enable_accelerated_networking': {'key': 'properties.enableAcceleratedNetworking', 'type': 'bool'},
7353        'enable_ip_forwarding': {'key': 'properties.enableIPForwarding', 'type': 'bool'},
7354        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
7355        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7356    }
7357
7358    def __init__(
7359        self,
7360        *,
7361        id: Optional[str] = None,
7362        location: Optional[str] = None,
7363        tags: Optional[Dict[str, str]] = None,
7364        etag: Optional[str] = None,
7365        virtual_machine: Optional["SubResource"] = None,
7366        network_security_group: Optional["NetworkSecurityGroup"] = None,
7367        ip_configurations: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
7368        dns_settings: Optional["NetworkInterfaceDnsSettings"] = None,
7369        mac_address: Optional[str] = None,
7370        primary: Optional[bool] = None,
7371        enable_accelerated_networking: Optional[bool] = None,
7372        enable_ip_forwarding: Optional[bool] = None,
7373        resource_guid: Optional[str] = None,
7374        provisioning_state: Optional[str] = None,
7375        **kwargs
7376    ):
7377        super(NetworkInterface, self).__init__(id=id, location=location, tags=tags, **kwargs)
7378        self.etag = etag
7379        self.virtual_machine = virtual_machine
7380        self.network_security_group = network_security_group
7381        self.ip_configurations = ip_configurations
7382        self.dns_settings = dns_settings
7383        self.mac_address = mac_address
7384        self.primary = primary
7385        self.enable_accelerated_networking = enable_accelerated_networking
7386        self.enable_ip_forwarding = enable_ip_forwarding
7387        self.resource_guid = resource_guid
7388        self.provisioning_state = provisioning_state
7389
7390
7391class NetworkInterfaceAssociation(msrest.serialization.Model):
7392    """Network interface and its custom security rules.
7393
7394    Variables are only populated by the server, and will be ignored when sending a request.
7395
7396    :ivar id: Network interface ID.
7397    :vartype id: str
7398    :param security_rules: Collection of custom security rules.
7399    :type security_rules: list[~azure.mgmt.network.v2018_04_01.models.SecurityRule]
7400    """
7401
7402    _validation = {
7403        'id': {'readonly': True},
7404    }
7405
7406    _attribute_map = {
7407        'id': {'key': 'id', 'type': 'str'},
7408        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
7409    }
7410
7411    def __init__(
7412        self,
7413        *,
7414        security_rules: Optional[List["SecurityRule"]] = None,
7415        **kwargs
7416    ):
7417        super(NetworkInterfaceAssociation, self).__init__(**kwargs)
7418        self.id = None
7419        self.security_rules = security_rules
7420
7421
7422class NetworkInterfaceDnsSettings(msrest.serialization.Model):
7423    """DNS settings of a network interface.
7424
7425    :param dns_servers: List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure
7426     provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it must be
7427     the only value in dnsServers collection.
7428    :type dns_servers: list[str]
7429    :param applied_dns_servers: If the VM that uses this NIC is part of an Availability Set, then
7430     this list will have the union of all DNS servers from all NICs that are part of the
7431     Availability Set. This property is what is configured on each of those VMs.
7432    :type applied_dns_servers: list[str]
7433    :param internal_dns_name_label: Relative DNS name for this NIC used for internal communications
7434     between VMs in the same virtual network.
7435    :type internal_dns_name_label: str
7436    :param internal_fqdn: Fully qualified DNS name supporting internal communications between VMs
7437     in the same virtual network.
7438    :type internal_fqdn: str
7439    :param internal_domain_name_suffix: Even if internalDnsNameLabel is not specified, a DNS entry
7440     is created for the primary NIC of the VM. This DNS name can be constructed by concatenating the
7441     VM name with the value of internalDomainNameSuffix.
7442    :type internal_domain_name_suffix: str
7443    """
7444
7445    _attribute_map = {
7446        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
7447        'applied_dns_servers': {'key': 'appliedDnsServers', 'type': '[str]'},
7448        'internal_dns_name_label': {'key': 'internalDnsNameLabel', 'type': 'str'},
7449        'internal_fqdn': {'key': 'internalFqdn', 'type': 'str'},
7450        'internal_domain_name_suffix': {'key': 'internalDomainNameSuffix', 'type': 'str'},
7451    }
7452
7453    def __init__(
7454        self,
7455        *,
7456        dns_servers: Optional[List[str]] = None,
7457        applied_dns_servers: Optional[List[str]] = None,
7458        internal_dns_name_label: Optional[str] = None,
7459        internal_fqdn: Optional[str] = None,
7460        internal_domain_name_suffix: Optional[str] = None,
7461        **kwargs
7462    ):
7463        super(NetworkInterfaceDnsSettings, self).__init__(**kwargs)
7464        self.dns_servers = dns_servers
7465        self.applied_dns_servers = applied_dns_servers
7466        self.internal_dns_name_label = internal_dns_name_label
7467        self.internal_fqdn = internal_fqdn
7468        self.internal_domain_name_suffix = internal_domain_name_suffix
7469
7470
7471class NetworkInterfaceIPConfiguration(SubResource):
7472    """IPConfiguration in a network interface.
7473
7474    :param id: Resource ID.
7475    :type id: str
7476    :param name: The name of the resource that is unique within a resource group. This name can be
7477     used to access the resource.
7478    :type name: str
7479    :param etag: A unique read-only string that changes whenever the resource is updated.
7480    :type etag: str
7481    :param application_gateway_backend_address_pools: The reference of
7482     ApplicationGatewayBackendAddressPool resource.
7483    :type application_gateway_backend_address_pools:
7484     list[~azure.mgmt.network.v2018_04_01.models.ApplicationGatewayBackendAddressPool]
7485    :param load_balancer_backend_address_pools: The reference of LoadBalancerBackendAddressPool
7486     resource.
7487    :type load_balancer_backend_address_pools:
7488     list[~azure.mgmt.network.v2018_04_01.models.BackendAddressPool]
7489    :param load_balancer_inbound_nat_rules: A list of references of LoadBalancerInboundNatRules.
7490    :type load_balancer_inbound_nat_rules:
7491     list[~azure.mgmt.network.v2018_04_01.models.InboundNatRule]
7492    :param private_ip_address: Private IP address of the IP configuration.
7493    :type private_ip_address: str
7494    :param private_ip_allocation_method: Defines how a private IP address is assigned. Possible
7495     values are: 'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
7496    :type private_ip_allocation_method: str or
7497     ~azure.mgmt.network.v2018_04_01.models.IPAllocationMethod
7498    :param private_ip_address_version: Available from Api-Version 2016-03-30 onwards, it represents
7499     whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4.  Possible
7500     values are: 'IPv4' and 'IPv6'. Possible values include: "IPv4", "IPv6".
7501    :type private_ip_address_version: str or ~azure.mgmt.network.v2018_04_01.models.IPVersion
7502    :param subnet: Subnet bound to the IP configuration.
7503    :type subnet: ~azure.mgmt.network.v2018_04_01.models.Subnet
7504    :param primary: Gets whether this is a primary customer address on the network interface.
7505    :type primary: bool
7506    :param public_ip_address: Public IP address bound to the IP configuration.
7507    :type public_ip_address: ~azure.mgmt.network.v2018_04_01.models.PublicIPAddress
7508    :param application_security_groups: Application security groups in which the IP configuration
7509     is included.
7510    :type application_security_groups:
7511     list[~azure.mgmt.network.v2018_04_01.models.ApplicationSecurityGroup]
7512    :param provisioning_state: The provisioning state of the network interface IP configuration.
7513     Possible values are: 'Updating', 'Deleting', and 'Failed'.
7514    :type provisioning_state: str
7515    """
7516
7517    _attribute_map = {
7518        'id': {'key': 'id', 'type': 'str'},
7519        'name': {'key': 'name', 'type': 'str'},
7520        'etag': {'key': 'etag', 'type': 'str'},
7521        'application_gateway_backend_address_pools': {'key': 'properties.applicationGatewayBackendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
7522        'load_balancer_backend_address_pools': {'key': 'properties.loadBalancerBackendAddressPools', 'type': '[BackendAddressPool]'},
7523        'load_balancer_inbound_nat_rules': {'key': 'properties.loadBalancerInboundNatRules', 'type': '[InboundNatRule]'},
7524        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
7525        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
7526        'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'},
7527        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
7528        'primary': {'key': 'properties.primary', 'type': 'bool'},
7529        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
7530        'application_security_groups': {'key': 'properties.applicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
7531        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7532    }
7533
7534    def __init__(
7535        self,
7536        *,
7537        id: Optional[str] = None,
7538        name: Optional[str] = None,
7539        etag: Optional[str] = None,
7540        application_gateway_backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None,
7541        load_balancer_backend_address_pools: Optional[List["BackendAddressPool"]] = None,
7542        load_balancer_inbound_nat_rules: Optional[List["InboundNatRule"]] = None,
7543        private_ip_address: Optional[str] = None,
7544        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
7545        private_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
7546        subnet: Optional["Subnet"] = None,
7547        primary: Optional[bool] = None,
7548        public_ip_address: Optional["PublicIPAddress"] = None,
7549        application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
7550        provisioning_state: Optional[str] = None,
7551        **kwargs
7552    ):
7553        super(NetworkInterfaceIPConfiguration, self).__init__(id=id, **kwargs)
7554        self.name = name
7555        self.etag = etag
7556        self.application_gateway_backend_address_pools = application_gateway_backend_address_pools
7557        self.load_balancer_backend_address_pools = load_balancer_backend_address_pools
7558        self.load_balancer_inbound_nat_rules = load_balancer_inbound_nat_rules
7559        self.private_ip_address = private_ip_address
7560        self.private_ip_allocation_method = private_ip_allocation_method
7561        self.private_ip_address_version = private_ip_address_version
7562        self.subnet = subnet
7563        self.primary = primary
7564        self.public_ip_address = public_ip_address
7565        self.application_security_groups = application_security_groups
7566        self.provisioning_state = provisioning_state
7567
7568
7569class NetworkInterfaceIPConfigurationListResult(msrest.serialization.Model):
7570    """Response for list ip configurations API service call.
7571
7572    Variables are only populated by the server, and will be ignored when sending a request.
7573
7574    :param value: A list of ip configurations.
7575    :type value: list[~azure.mgmt.network.v2018_04_01.models.NetworkInterfaceIPConfiguration]
7576    :ivar next_link: The URL to get the next set of results.
7577    :vartype next_link: str
7578    """
7579
7580    _validation = {
7581        'next_link': {'readonly': True},
7582    }
7583
7584    _attribute_map = {
7585        'value': {'key': 'value', 'type': '[NetworkInterfaceIPConfiguration]'},
7586        'next_link': {'key': 'nextLink', 'type': 'str'},
7587    }
7588
7589    def __init__(
7590        self,
7591        *,
7592        value: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
7593        **kwargs
7594    ):
7595        super(NetworkInterfaceIPConfigurationListResult, self).__init__(**kwargs)
7596        self.value = value
7597        self.next_link = None
7598
7599
7600class NetworkInterfaceListResult(msrest.serialization.Model):
7601    """Response for the ListNetworkInterface API service call.
7602
7603    Variables are only populated by the server, and will be ignored when sending a request.
7604
7605    :param value: A list of network interfaces in a resource group.
7606    :type value: list[~azure.mgmt.network.v2018_04_01.models.NetworkInterface]
7607    :ivar next_link: The URL to get the next set of results.
7608    :vartype next_link: str
7609    """
7610
7611    _validation = {
7612        'next_link': {'readonly': True},
7613    }
7614
7615    _attribute_map = {
7616        'value': {'key': 'value', 'type': '[NetworkInterface]'},
7617        'next_link': {'key': 'nextLink', 'type': 'str'},
7618    }
7619
7620    def __init__(
7621        self,
7622        *,
7623        value: Optional[List["NetworkInterface"]] = None,
7624        **kwargs
7625    ):
7626        super(NetworkInterfaceListResult, self).__init__(**kwargs)
7627        self.value = value
7628        self.next_link = None
7629
7630
7631class NetworkInterfaceLoadBalancerListResult(msrest.serialization.Model):
7632    """Response for list ip configurations API service call.
7633
7634    Variables are only populated by the server, and will be ignored when sending a request.
7635
7636    :param value: A list of load balancers.
7637    :type value: list[~azure.mgmt.network.v2018_04_01.models.LoadBalancer]
7638    :ivar next_link: The URL to get the next set of results.
7639    :vartype next_link: str
7640    """
7641
7642    _validation = {
7643        'next_link': {'readonly': True},
7644    }
7645
7646    _attribute_map = {
7647        'value': {'key': 'value', 'type': '[LoadBalancer]'},
7648        'next_link': {'key': 'nextLink', 'type': 'str'},
7649    }
7650
7651    def __init__(
7652        self,
7653        *,
7654        value: Optional[List["LoadBalancer"]] = None,
7655        **kwargs
7656    ):
7657        super(NetworkInterfaceLoadBalancerListResult, self).__init__(**kwargs)
7658        self.value = value
7659        self.next_link = None
7660
7661
7662class NetworkSecurityGroup(Resource):
7663    """NetworkSecurityGroup resource.
7664
7665    Variables are only populated by the server, and will be ignored when sending a request.
7666
7667    :param id: Resource ID.
7668    :type id: str
7669    :ivar name: Resource name.
7670    :vartype name: str
7671    :ivar type: Resource type.
7672    :vartype type: str
7673    :param location: Resource location.
7674    :type location: str
7675    :param tags: A set of tags. Resource tags.
7676    :type tags: dict[str, str]
7677    :param etag: A unique read-only string that changes whenever the resource is updated.
7678    :type etag: str
7679    :param security_rules: A collection of security rules of the network security group.
7680    :type security_rules: list[~azure.mgmt.network.v2018_04_01.models.SecurityRule]
7681    :param default_security_rules: The default security rules of network security group.
7682    :type default_security_rules: list[~azure.mgmt.network.v2018_04_01.models.SecurityRule]
7683    :ivar network_interfaces: A collection of references to network interfaces.
7684    :vartype network_interfaces: list[~azure.mgmt.network.v2018_04_01.models.NetworkInterface]
7685    :ivar subnets: A collection of references to subnets.
7686    :vartype subnets: list[~azure.mgmt.network.v2018_04_01.models.Subnet]
7687    :param resource_guid: The resource GUID property of the network security group resource.
7688    :type resource_guid: str
7689    :param provisioning_state: The provisioning state of the public IP resource. Possible values
7690     are: 'Updating', 'Deleting', and 'Failed'.
7691    :type provisioning_state: str
7692    """
7693
7694    _validation = {
7695        'name': {'readonly': True},
7696        'type': {'readonly': True},
7697        'network_interfaces': {'readonly': True},
7698        'subnets': {'readonly': True},
7699    }
7700
7701    _attribute_map = {
7702        'id': {'key': 'id', 'type': 'str'},
7703        'name': {'key': 'name', 'type': 'str'},
7704        'type': {'key': 'type', 'type': 'str'},
7705        'location': {'key': 'location', 'type': 'str'},
7706        'tags': {'key': 'tags', 'type': '{str}'},
7707        'etag': {'key': 'etag', 'type': 'str'},
7708        'security_rules': {'key': 'properties.securityRules', 'type': '[SecurityRule]'},
7709        'default_security_rules': {'key': 'properties.defaultSecurityRules', 'type': '[SecurityRule]'},
7710        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
7711        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
7712        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
7713        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7714    }
7715
7716    def __init__(
7717        self,
7718        *,
7719        id: Optional[str] = None,
7720        location: Optional[str] = None,
7721        tags: Optional[Dict[str, str]] = None,
7722        etag: Optional[str] = None,
7723        security_rules: Optional[List["SecurityRule"]] = None,
7724        default_security_rules: Optional[List["SecurityRule"]] = None,
7725        resource_guid: Optional[str] = None,
7726        provisioning_state: Optional[str] = None,
7727        **kwargs
7728    ):
7729        super(NetworkSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
7730        self.etag = etag
7731        self.security_rules = security_rules
7732        self.default_security_rules = default_security_rules
7733        self.network_interfaces = None
7734        self.subnets = None
7735        self.resource_guid = resource_guid
7736        self.provisioning_state = provisioning_state
7737
7738
7739class NetworkSecurityGroupListResult(msrest.serialization.Model):
7740    """Response for ListNetworkSecurityGroups API service call.
7741
7742    :param value: A list of NetworkSecurityGroup resources.
7743    :type value: list[~azure.mgmt.network.v2018_04_01.models.NetworkSecurityGroup]
7744    :param next_link: The URL to get the next set of results.
7745    :type next_link: str
7746    """
7747
7748    _attribute_map = {
7749        'value': {'key': 'value', 'type': '[NetworkSecurityGroup]'},
7750        'next_link': {'key': 'nextLink', 'type': 'str'},
7751    }
7752
7753    def __init__(
7754        self,
7755        *,
7756        value: Optional[List["NetworkSecurityGroup"]] = None,
7757        next_link: Optional[str] = None,
7758        **kwargs
7759    ):
7760        super(NetworkSecurityGroupListResult, self).__init__(**kwargs)
7761        self.value = value
7762        self.next_link = next_link
7763
7764
7765class NetworkWatcher(Resource):
7766    """Network watcher in a resource group.
7767
7768    Variables are only populated by the server, and will be ignored when sending a request.
7769
7770    :param id: Resource ID.
7771    :type id: str
7772    :ivar name: Resource name.
7773    :vartype name: str
7774    :ivar type: Resource type.
7775    :vartype type: str
7776    :param location: Resource location.
7777    :type location: str
7778    :param tags: A set of tags. Resource tags.
7779    :type tags: dict[str, str]
7780    :param etag: A unique read-only string that changes whenever the resource is updated.
7781    :type etag: str
7782    :ivar provisioning_state: The provisioning state of the resource. Possible values include:
7783     "Succeeded", "Updating", "Deleting", "Failed".
7784    :vartype provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
7785    """
7786
7787    _validation = {
7788        'name': {'readonly': True},
7789        'type': {'readonly': True},
7790        'provisioning_state': {'readonly': True},
7791    }
7792
7793    _attribute_map = {
7794        'id': {'key': 'id', 'type': 'str'},
7795        'name': {'key': 'name', 'type': 'str'},
7796        'type': {'key': 'type', 'type': 'str'},
7797        'location': {'key': 'location', 'type': 'str'},
7798        'tags': {'key': 'tags', 'type': '{str}'},
7799        'etag': {'key': 'etag', 'type': 'str'},
7800        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7801    }
7802
7803    def __init__(
7804        self,
7805        *,
7806        id: Optional[str] = None,
7807        location: Optional[str] = None,
7808        tags: Optional[Dict[str, str]] = None,
7809        etag: Optional[str] = None,
7810        **kwargs
7811    ):
7812        super(NetworkWatcher, self).__init__(id=id, location=location, tags=tags, **kwargs)
7813        self.etag = etag
7814        self.provisioning_state = None
7815
7816
7817class NetworkWatcherListResult(msrest.serialization.Model):
7818    """List of network watcher resources.
7819
7820    :param value:
7821    :type value: list[~azure.mgmt.network.v2018_04_01.models.NetworkWatcher]
7822    """
7823
7824    _attribute_map = {
7825        'value': {'key': 'value', 'type': '[NetworkWatcher]'},
7826    }
7827
7828    def __init__(
7829        self,
7830        *,
7831        value: Optional[List["NetworkWatcher"]] = None,
7832        **kwargs
7833    ):
7834        super(NetworkWatcherListResult, self).__init__(**kwargs)
7835        self.value = value
7836
7837
7838class NextHopParameters(msrest.serialization.Model):
7839    """Parameters that define the source and destination endpoint.
7840
7841    All required parameters must be populated in order to send to Azure.
7842
7843    :param target_resource_id: Required. The resource identifier of the target resource against
7844     which the action is to be performed.
7845    :type target_resource_id: str
7846    :param source_ip_address: Required. The source IP address.
7847    :type source_ip_address: str
7848    :param destination_ip_address: Required. The destination IP address.
7849    :type destination_ip_address: str
7850    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
7851     enabled on any of the nics, then this parameter must be specified. Otherwise optional).
7852    :type target_nic_resource_id: str
7853    """
7854
7855    _validation = {
7856        'target_resource_id': {'required': True},
7857        'source_ip_address': {'required': True},
7858        'destination_ip_address': {'required': True},
7859    }
7860
7861    _attribute_map = {
7862        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
7863        'source_ip_address': {'key': 'sourceIPAddress', 'type': 'str'},
7864        'destination_ip_address': {'key': 'destinationIPAddress', 'type': 'str'},
7865        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
7866    }
7867
7868    def __init__(
7869        self,
7870        *,
7871        target_resource_id: str,
7872        source_ip_address: str,
7873        destination_ip_address: str,
7874        target_nic_resource_id: Optional[str] = None,
7875        **kwargs
7876    ):
7877        super(NextHopParameters, self).__init__(**kwargs)
7878        self.target_resource_id = target_resource_id
7879        self.source_ip_address = source_ip_address
7880        self.destination_ip_address = destination_ip_address
7881        self.target_nic_resource_id = target_nic_resource_id
7882
7883
7884class NextHopResult(msrest.serialization.Model):
7885    """The information about next hop from the specified VM.
7886
7887    :param next_hop_type: Next hop type. Possible values include: "Internet", "VirtualAppliance",
7888     "VirtualNetworkGateway", "VnetLocal", "HyperNetGateway", "None".
7889    :type next_hop_type: str or ~azure.mgmt.network.v2018_04_01.models.NextHopType
7890    :param next_hop_ip_address: Next hop IP Address.
7891    :type next_hop_ip_address: str
7892    :param route_table_id: The resource identifier for the route table associated with the route
7893     being returned. If the route being returned does not correspond to any user created routes then
7894     this field will be the string 'System Route'.
7895    :type route_table_id: str
7896    """
7897
7898    _attribute_map = {
7899        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
7900        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'},
7901        'route_table_id': {'key': 'routeTableId', 'type': 'str'},
7902    }
7903
7904    def __init__(
7905        self,
7906        *,
7907        next_hop_type: Optional[Union[str, "NextHopType"]] = None,
7908        next_hop_ip_address: Optional[str] = None,
7909        route_table_id: Optional[str] = None,
7910        **kwargs
7911    ):
7912        super(NextHopResult, self).__init__(**kwargs)
7913        self.next_hop_type = next_hop_type
7914        self.next_hop_ip_address = next_hop_ip_address
7915        self.route_table_id = route_table_id
7916
7917
7918class Operation(msrest.serialization.Model):
7919    """Network REST API operation definition.
7920
7921    :param name: Operation name: {provider}/{resource}/{operation}.
7922    :type name: str
7923    :param display: Display metadata associated with the operation.
7924    :type display: ~azure.mgmt.network.v2018_04_01.models.OperationDisplay
7925    :param origin: Origin of the operation.
7926    :type origin: str
7927    :param service_specification: Specification of the service.
7928    :type service_specification:
7929     ~azure.mgmt.network.v2018_04_01.models.OperationPropertiesFormatServiceSpecification
7930    """
7931
7932    _attribute_map = {
7933        'name': {'key': 'name', 'type': 'str'},
7934        'display': {'key': 'display', 'type': 'OperationDisplay'},
7935        'origin': {'key': 'origin', 'type': 'str'},
7936        'service_specification': {'key': 'properties.serviceSpecification', 'type': 'OperationPropertiesFormatServiceSpecification'},
7937    }
7938
7939    def __init__(
7940        self,
7941        *,
7942        name: Optional[str] = None,
7943        display: Optional["OperationDisplay"] = None,
7944        origin: Optional[str] = None,
7945        service_specification: Optional["OperationPropertiesFormatServiceSpecification"] = None,
7946        **kwargs
7947    ):
7948        super(Operation, self).__init__(**kwargs)
7949        self.name = name
7950        self.display = display
7951        self.origin = origin
7952        self.service_specification = service_specification
7953
7954
7955class OperationDisplay(msrest.serialization.Model):
7956    """Display metadata associated with the operation.
7957
7958    :param provider: Service provider: Microsoft Network.
7959    :type provider: str
7960    :param resource: Resource on which the operation is performed.
7961    :type resource: str
7962    :param operation: Type of the operation: get, read, delete, etc.
7963    :type operation: str
7964    :param description: Description of the operation.
7965    :type description: str
7966    """
7967
7968    _attribute_map = {
7969        'provider': {'key': 'provider', 'type': 'str'},
7970        'resource': {'key': 'resource', 'type': 'str'},
7971        'operation': {'key': 'operation', 'type': 'str'},
7972        'description': {'key': 'description', 'type': 'str'},
7973    }
7974
7975    def __init__(
7976        self,
7977        *,
7978        provider: Optional[str] = None,
7979        resource: Optional[str] = None,
7980        operation: Optional[str] = None,
7981        description: Optional[str] = None,
7982        **kwargs
7983    ):
7984        super(OperationDisplay, self).__init__(**kwargs)
7985        self.provider = provider
7986        self.resource = resource
7987        self.operation = operation
7988        self.description = description
7989
7990
7991class OperationListResult(msrest.serialization.Model):
7992    """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.
7993
7994    :param value: List of Network operations supported by the Network resource provider.
7995    :type value: list[~azure.mgmt.network.v2018_04_01.models.Operation]
7996    :param next_link: URL to get the next set of operation list results if there are any.
7997    :type next_link: str
7998    """
7999
8000    _attribute_map = {
8001        'value': {'key': 'value', 'type': '[Operation]'},
8002        'next_link': {'key': 'nextLink', 'type': 'str'},
8003    }
8004
8005    def __init__(
8006        self,
8007        *,
8008        value: Optional[List["Operation"]] = None,
8009        next_link: Optional[str] = None,
8010        **kwargs
8011    ):
8012        super(OperationListResult, self).__init__(**kwargs)
8013        self.value = value
8014        self.next_link = next_link
8015
8016
8017class OperationPropertiesFormatServiceSpecification(msrest.serialization.Model):
8018    """Specification of the service.
8019
8020    :param metric_specifications: Operation service specification.
8021    :type metric_specifications: list[~azure.mgmt.network.v2018_04_01.models.MetricSpecification]
8022    :param log_specifications: Operation log specification.
8023    :type log_specifications: list[~azure.mgmt.network.v2018_04_01.models.LogSpecification]
8024    """
8025
8026    _attribute_map = {
8027        'metric_specifications': {'key': 'metricSpecifications', 'type': '[MetricSpecification]'},
8028        'log_specifications': {'key': 'logSpecifications', 'type': '[LogSpecification]'},
8029    }
8030
8031    def __init__(
8032        self,
8033        *,
8034        metric_specifications: Optional[List["MetricSpecification"]] = None,
8035        log_specifications: Optional[List["LogSpecification"]] = None,
8036        **kwargs
8037    ):
8038        super(OperationPropertiesFormatServiceSpecification, self).__init__(**kwargs)
8039        self.metric_specifications = metric_specifications
8040        self.log_specifications = log_specifications
8041
8042
8043class OutboundNatRule(SubResource):
8044    """Outbound NAT pool of the load balancer.
8045
8046    :param id: Resource ID.
8047    :type id: str
8048    :param name: The name of the resource that is unique within a resource group. This name can be
8049     used to access the resource.
8050    :type name: str
8051    :param etag: A unique read-only string that changes whenever the resource is updated.
8052    :type etag: str
8053    :param allocated_outbound_ports: The number of outbound ports to be used for NAT.
8054    :type allocated_outbound_ports: int
8055    :param frontend_ip_configurations: The Frontend IP addresses of the load balancer.
8056    :type frontend_ip_configurations: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
8057    :param backend_address_pool: A reference to a pool of DIPs. Outbound traffic is randomly load
8058     balanced across IPs in the backend IPs.
8059    :type backend_address_pool: ~azure.mgmt.network.v2018_04_01.models.SubResource
8060    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
8061     values are: 'Updating', 'Deleting', and 'Failed'.
8062    :type provisioning_state: str
8063    """
8064
8065    _attribute_map = {
8066        'id': {'key': 'id', 'type': 'str'},
8067        'name': {'key': 'name', 'type': 'str'},
8068        'etag': {'key': 'etag', 'type': 'str'},
8069        'allocated_outbound_ports': {'key': 'properties.allocatedOutboundPorts', 'type': 'int'},
8070        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[SubResource]'},
8071        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
8072        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8073    }
8074
8075    def __init__(
8076        self,
8077        *,
8078        id: Optional[str] = None,
8079        name: Optional[str] = None,
8080        etag: Optional[str] = None,
8081        allocated_outbound_ports: Optional[int] = None,
8082        frontend_ip_configurations: Optional[List["SubResource"]] = None,
8083        backend_address_pool: Optional["SubResource"] = None,
8084        provisioning_state: Optional[str] = None,
8085        **kwargs
8086    ):
8087        super(OutboundNatRule, self).__init__(id=id, **kwargs)
8088        self.name = name
8089        self.etag = etag
8090        self.allocated_outbound_ports = allocated_outbound_ports
8091        self.frontend_ip_configurations = frontend_ip_configurations
8092        self.backend_address_pool = backend_address_pool
8093        self.provisioning_state = provisioning_state
8094
8095
8096class PacketCapture(msrest.serialization.Model):
8097    """Parameters that define the create packet capture operation.
8098
8099    All required parameters must be populated in order to send to Azure.
8100
8101    :param target: Required. The ID of the targeted resource, only VM is currently supported.
8102    :type target: str
8103    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
8104     are truncated.
8105    :type bytes_to_capture_per_packet: int
8106    :param total_bytes_per_session: Maximum size of the capture output.
8107    :type total_bytes_per_session: int
8108    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
8109    :type time_limit_in_seconds: int
8110    :param storage_location: Required. Describes the storage location for a packet capture session.
8111    :type storage_location: ~azure.mgmt.network.v2018_04_01.models.PacketCaptureStorageLocation
8112    :param filters:
8113    :type filters: list[~azure.mgmt.network.v2018_04_01.models.PacketCaptureFilter]
8114    """
8115
8116    _validation = {
8117        'target': {'required': True},
8118        'storage_location': {'required': True},
8119    }
8120
8121    _attribute_map = {
8122        'target': {'key': 'properties.target', 'type': 'str'},
8123        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
8124        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
8125        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
8126        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
8127        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
8128    }
8129
8130    def __init__(
8131        self,
8132        *,
8133        target: str,
8134        storage_location: "PacketCaptureStorageLocation",
8135        bytes_to_capture_per_packet: Optional[int] = 0,
8136        total_bytes_per_session: Optional[int] = 1073741824,
8137        time_limit_in_seconds: Optional[int] = 18000,
8138        filters: Optional[List["PacketCaptureFilter"]] = None,
8139        **kwargs
8140    ):
8141        super(PacketCapture, self).__init__(**kwargs)
8142        self.target = target
8143        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
8144        self.total_bytes_per_session = total_bytes_per_session
8145        self.time_limit_in_seconds = time_limit_in_seconds
8146        self.storage_location = storage_location
8147        self.filters = filters
8148
8149
8150class PacketCaptureFilter(msrest.serialization.Model):
8151    """Filter that is applied to packet capture request. Multiple filters can be applied.
8152
8153    :param protocol: Protocol to be filtered on. Possible values include: "TCP", "UDP", "Any".
8154     Default value: "Any".
8155    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.PcProtocol
8156    :param local_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
8157     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple entries.
8158     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
8159     supported. Default = null.
8160    :type local_ip_address: str
8161    :param remote_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
8162     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple entries.
8163     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
8164     supported. Default = null.
8165    :type remote_ip_address: str
8166    :param local_port: Local port to be filtered on. Notation: "80" for single port entry."80-85"
8167     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
8168     ranges with multiple entries not currently supported. Default = null.
8169    :type local_port: str
8170    :param remote_port: Remote port to be filtered on. Notation: "80" for single port entry."80-85"
8171     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
8172     ranges with multiple entries not currently supported. Default = null.
8173    :type remote_port: str
8174    """
8175
8176    _attribute_map = {
8177        'protocol': {'key': 'protocol', 'type': 'str'},
8178        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
8179        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
8180        'local_port': {'key': 'localPort', 'type': 'str'},
8181        'remote_port': {'key': 'remotePort', 'type': 'str'},
8182    }
8183
8184    def __init__(
8185        self,
8186        *,
8187        protocol: Optional[Union[str, "PcProtocol"]] = "Any",
8188        local_ip_address: Optional[str] = None,
8189        remote_ip_address: Optional[str] = None,
8190        local_port: Optional[str] = None,
8191        remote_port: Optional[str] = None,
8192        **kwargs
8193    ):
8194        super(PacketCaptureFilter, self).__init__(**kwargs)
8195        self.protocol = protocol
8196        self.local_ip_address = local_ip_address
8197        self.remote_ip_address = remote_ip_address
8198        self.local_port = local_port
8199        self.remote_port = remote_port
8200
8201
8202class PacketCaptureListResult(msrest.serialization.Model):
8203    """List of packet capture sessions.
8204
8205    :param value: Information about packet capture sessions.
8206    :type value: list[~azure.mgmt.network.v2018_04_01.models.PacketCaptureResult]
8207    """
8208
8209    _attribute_map = {
8210        'value': {'key': 'value', 'type': '[PacketCaptureResult]'},
8211    }
8212
8213    def __init__(
8214        self,
8215        *,
8216        value: Optional[List["PacketCaptureResult"]] = None,
8217        **kwargs
8218    ):
8219        super(PacketCaptureListResult, self).__init__(**kwargs)
8220        self.value = value
8221
8222
8223class PacketCaptureParameters(msrest.serialization.Model):
8224    """Parameters that define the create packet capture operation.
8225
8226    All required parameters must be populated in order to send to Azure.
8227
8228    :param target: Required. The ID of the targeted resource, only VM is currently supported.
8229    :type target: str
8230    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
8231     are truncated.
8232    :type bytes_to_capture_per_packet: int
8233    :param total_bytes_per_session: Maximum size of the capture output.
8234    :type total_bytes_per_session: int
8235    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
8236    :type time_limit_in_seconds: int
8237    :param storage_location: Required. Describes the storage location for a packet capture session.
8238    :type storage_location: ~azure.mgmt.network.v2018_04_01.models.PacketCaptureStorageLocation
8239    :param filters:
8240    :type filters: list[~azure.mgmt.network.v2018_04_01.models.PacketCaptureFilter]
8241    """
8242
8243    _validation = {
8244        'target': {'required': True},
8245        'storage_location': {'required': True},
8246    }
8247
8248    _attribute_map = {
8249        'target': {'key': 'target', 'type': 'str'},
8250        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
8251        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
8252        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
8253        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
8254        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
8255    }
8256
8257    def __init__(
8258        self,
8259        *,
8260        target: str,
8261        storage_location: "PacketCaptureStorageLocation",
8262        bytes_to_capture_per_packet: Optional[int] = 0,
8263        total_bytes_per_session: Optional[int] = 1073741824,
8264        time_limit_in_seconds: Optional[int] = 18000,
8265        filters: Optional[List["PacketCaptureFilter"]] = None,
8266        **kwargs
8267    ):
8268        super(PacketCaptureParameters, self).__init__(**kwargs)
8269        self.target = target
8270        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
8271        self.total_bytes_per_session = total_bytes_per_session
8272        self.time_limit_in_seconds = time_limit_in_seconds
8273        self.storage_location = storage_location
8274        self.filters = filters
8275
8276
8277class PacketCaptureQueryStatusResult(msrest.serialization.Model):
8278    """Status of packet capture session.
8279
8280    :param name: The name of the packet capture resource.
8281    :type name: str
8282    :param id: The ID of the packet capture resource.
8283    :type id: str
8284    :param capture_start_time: The start time of the packet capture session.
8285    :type capture_start_time: ~datetime.datetime
8286    :param packet_capture_status: The status of the packet capture session. Possible values
8287     include: "NotStarted", "Running", "Stopped", "Error", "Unknown".
8288    :type packet_capture_status: str or ~azure.mgmt.network.v2018_04_01.models.PcStatus
8289    :param stop_reason: The reason the current packet capture session was stopped.
8290    :type stop_reason: str
8291    :param packet_capture_error: List of errors of packet capture session.
8292    :type packet_capture_error: list[str or ~azure.mgmt.network.v2018_04_01.models.PcError]
8293    """
8294
8295    _attribute_map = {
8296        'name': {'key': 'name', 'type': 'str'},
8297        'id': {'key': 'id', 'type': 'str'},
8298        'capture_start_time': {'key': 'captureStartTime', 'type': 'iso-8601'},
8299        'packet_capture_status': {'key': 'packetCaptureStatus', 'type': 'str'},
8300        'stop_reason': {'key': 'stopReason', 'type': 'str'},
8301        'packet_capture_error': {'key': 'packetCaptureError', 'type': '[str]'},
8302    }
8303
8304    def __init__(
8305        self,
8306        *,
8307        name: Optional[str] = None,
8308        id: Optional[str] = None,
8309        capture_start_time: Optional[datetime.datetime] = None,
8310        packet_capture_status: Optional[Union[str, "PcStatus"]] = None,
8311        stop_reason: Optional[str] = None,
8312        packet_capture_error: Optional[List[Union[str, "PcError"]]] = None,
8313        **kwargs
8314    ):
8315        super(PacketCaptureQueryStatusResult, self).__init__(**kwargs)
8316        self.name = name
8317        self.id = id
8318        self.capture_start_time = capture_start_time
8319        self.packet_capture_status = packet_capture_status
8320        self.stop_reason = stop_reason
8321        self.packet_capture_error = packet_capture_error
8322
8323
8324class PacketCaptureResult(msrest.serialization.Model):
8325    """Information about packet capture session.
8326
8327    Variables are only populated by the server, and will be ignored when sending a request.
8328
8329    :ivar name: Name of the packet capture session.
8330    :vartype name: str
8331    :ivar id: ID of the packet capture operation.
8332    :vartype id: str
8333    :param etag:
8334    :type etag: str
8335    :param target: The ID of the targeted resource, only VM is currently supported.
8336    :type target: str
8337    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
8338     are truncated.
8339    :type bytes_to_capture_per_packet: int
8340    :param total_bytes_per_session: Maximum size of the capture output.
8341    :type total_bytes_per_session: int
8342    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
8343    :type time_limit_in_seconds: int
8344    :param storage_location: Describes the storage location for a packet capture session.
8345    :type storage_location: ~azure.mgmt.network.v2018_04_01.models.PacketCaptureStorageLocation
8346    :param filters:
8347    :type filters: list[~azure.mgmt.network.v2018_04_01.models.PacketCaptureFilter]
8348    :param provisioning_state: The provisioning state of the packet capture session. Possible
8349     values include: "Succeeded", "Updating", "Deleting", "Failed".
8350    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
8351    """
8352
8353    _validation = {
8354        'name': {'readonly': True},
8355        'id': {'readonly': True},
8356    }
8357
8358    _attribute_map = {
8359        'name': {'key': 'name', 'type': 'str'},
8360        'id': {'key': 'id', 'type': 'str'},
8361        'etag': {'key': 'etag', 'type': 'str'},
8362        'target': {'key': 'properties.target', 'type': 'str'},
8363        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
8364        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
8365        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
8366        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
8367        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
8368        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8369    }
8370
8371    def __init__(
8372        self,
8373        *,
8374        etag: Optional[str] = "A unique read-only string that changes whenever the resource is updated.",
8375        target: Optional[str] = None,
8376        bytes_to_capture_per_packet: Optional[int] = 0,
8377        total_bytes_per_session: Optional[int] = 1073741824,
8378        time_limit_in_seconds: Optional[int] = 18000,
8379        storage_location: Optional["PacketCaptureStorageLocation"] = None,
8380        filters: Optional[List["PacketCaptureFilter"]] = None,
8381        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
8382        **kwargs
8383    ):
8384        super(PacketCaptureResult, self).__init__(**kwargs)
8385        self.name = None
8386        self.id = None
8387        self.etag = etag
8388        self.target = target
8389        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
8390        self.total_bytes_per_session = total_bytes_per_session
8391        self.time_limit_in_seconds = time_limit_in_seconds
8392        self.storage_location = storage_location
8393        self.filters = filters
8394        self.provisioning_state = provisioning_state
8395
8396
8397class PacketCaptureResultProperties(PacketCaptureParameters):
8398    """Describes the properties of a packet capture session.
8399
8400    All required parameters must be populated in order to send to Azure.
8401
8402    :param target: Required. The ID of the targeted resource, only VM is currently supported.
8403    :type target: str
8404    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
8405     are truncated.
8406    :type bytes_to_capture_per_packet: int
8407    :param total_bytes_per_session: Maximum size of the capture output.
8408    :type total_bytes_per_session: int
8409    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
8410    :type time_limit_in_seconds: int
8411    :param storage_location: Required. Describes the storage location for a packet capture session.
8412    :type storage_location: ~azure.mgmt.network.v2018_04_01.models.PacketCaptureStorageLocation
8413    :param filters:
8414    :type filters: list[~azure.mgmt.network.v2018_04_01.models.PacketCaptureFilter]
8415    :param provisioning_state: The provisioning state of the packet capture session. Possible
8416     values include: "Succeeded", "Updating", "Deleting", "Failed".
8417    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
8418    """
8419
8420    _validation = {
8421        'target': {'required': True},
8422        'storage_location': {'required': True},
8423    }
8424
8425    _attribute_map = {
8426        'target': {'key': 'target', 'type': 'str'},
8427        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
8428        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
8429        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
8430        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
8431        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
8432        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
8433    }
8434
8435    def __init__(
8436        self,
8437        *,
8438        target: str,
8439        storage_location: "PacketCaptureStorageLocation",
8440        bytes_to_capture_per_packet: Optional[int] = 0,
8441        total_bytes_per_session: Optional[int] = 1073741824,
8442        time_limit_in_seconds: Optional[int] = 18000,
8443        filters: Optional[List["PacketCaptureFilter"]] = None,
8444        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
8445        **kwargs
8446    ):
8447        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)
8448        self.provisioning_state = provisioning_state
8449
8450
8451class PacketCaptureStorageLocation(msrest.serialization.Model):
8452    """Describes the storage location for a packet capture session.
8453
8454    :param storage_id: The ID of the storage account to save the packet capture session. Required
8455     if no local file path is provided.
8456    :type storage_id: str
8457    :param storage_path: The URI of the storage path to save the packet capture. Must be a
8458     well-formed URI describing the location to save the packet capture.
8459    :type storage_path: str
8460    :param file_path: A valid local path on the targeting VM. Must include the name of the capture
8461     file (*.cap). For linux virtual machine it must start with /var/captures. Required if no
8462     storage ID is provided, otherwise optional.
8463    :type file_path: str
8464    """
8465
8466    _attribute_map = {
8467        'storage_id': {'key': 'storageId', 'type': 'str'},
8468        'storage_path': {'key': 'storagePath', 'type': 'str'},
8469        'file_path': {'key': 'filePath', 'type': 'str'},
8470    }
8471
8472    def __init__(
8473        self,
8474        *,
8475        storage_id: Optional[str] = None,
8476        storage_path: Optional[str] = None,
8477        file_path: Optional[str] = None,
8478        **kwargs
8479    ):
8480        super(PacketCaptureStorageLocation, self).__init__(**kwargs)
8481        self.storage_id = storage_id
8482        self.storage_path = storage_path
8483        self.file_path = file_path
8484
8485
8486class PatchRouteFilter(SubResource):
8487    """Route Filter Resource.
8488
8489    Variables are only populated by the server, and will be ignored when sending a request.
8490
8491    :param id: Resource ID.
8492    :type id: str
8493    :ivar name: The name of the resource that is unique within a resource group. This name can be
8494     used to access the resource.
8495    :vartype name: str
8496    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8497    :vartype etag: str
8498    :ivar type: Resource type.
8499    :vartype type: str
8500    :param tags: A set of tags. Resource tags.
8501    :type tags: dict[str, str]
8502    :param rules: Collection of RouteFilterRules contained within a route filter.
8503    :type rules: list[~azure.mgmt.network.v2018_04_01.models.RouteFilterRule]
8504    :param peerings: A collection of references to express route circuit peerings.
8505    :type peerings: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitPeering]
8506    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
8507     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
8508    :vartype provisioning_state: str
8509    """
8510
8511    _validation = {
8512        'name': {'readonly': True},
8513        'etag': {'readonly': True},
8514        'type': {'readonly': True},
8515        'provisioning_state': {'readonly': True},
8516    }
8517
8518    _attribute_map = {
8519        'id': {'key': 'id', 'type': 'str'},
8520        'name': {'key': 'name', 'type': 'str'},
8521        'etag': {'key': 'etag', 'type': 'str'},
8522        'type': {'key': 'type', 'type': 'str'},
8523        'tags': {'key': 'tags', 'type': '{str}'},
8524        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
8525        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
8526        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8527    }
8528
8529    def __init__(
8530        self,
8531        *,
8532        id: Optional[str] = None,
8533        tags: Optional[Dict[str, str]] = None,
8534        rules: Optional[List["RouteFilterRule"]] = None,
8535        peerings: Optional[List["ExpressRouteCircuitPeering"]] = None,
8536        **kwargs
8537    ):
8538        super(PatchRouteFilter, self).__init__(id=id, **kwargs)
8539        self.name = None
8540        self.etag = None
8541        self.type = None
8542        self.tags = tags
8543        self.rules = rules
8544        self.peerings = peerings
8545        self.provisioning_state = None
8546
8547
8548class PatchRouteFilterRule(SubResource):
8549    """Route Filter Rule Resource.
8550
8551    Variables are only populated by the server, and will be ignored when sending a request.
8552
8553    :param id: Resource ID.
8554    :type id: str
8555    :ivar name: The name of the resource that is unique within a resource group. This name can be
8556     used to access the resource.
8557    :vartype name: str
8558    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8559    :vartype etag: str
8560    :param access: The access type of the rule. Valid values are: 'Allow', 'Deny'. Possible values
8561     include: "Allow", "Deny".
8562    :type access: str or ~azure.mgmt.network.v2018_04_01.models.Access
8563    :param route_filter_rule_type: The rule type of the rule. Valid value is: 'Community'. Possible
8564     values include: "Community".
8565    :type route_filter_rule_type: str or ~azure.mgmt.network.v2018_04_01.models.RouteFilterRuleType
8566    :param communities: The collection for bgp community values to filter on. e.g.
8567     ['12076:5010','12076:5020'].
8568    :type communities: list[str]
8569    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
8570     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
8571    :vartype provisioning_state: str
8572    """
8573
8574    _validation = {
8575        'name': {'readonly': True},
8576        'etag': {'readonly': True},
8577        'provisioning_state': {'readonly': True},
8578    }
8579
8580    _attribute_map = {
8581        'id': {'key': 'id', 'type': 'str'},
8582        'name': {'key': 'name', 'type': 'str'},
8583        'etag': {'key': 'etag', 'type': 'str'},
8584        'access': {'key': 'properties.access', 'type': 'str'},
8585        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
8586        'communities': {'key': 'properties.communities', 'type': '[str]'},
8587        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8588    }
8589
8590    def __init__(
8591        self,
8592        *,
8593        id: Optional[str] = None,
8594        access: Optional[Union[str, "Access"]] = None,
8595        route_filter_rule_type: Optional[Union[str, "RouteFilterRuleType"]] = None,
8596        communities: Optional[List[str]] = None,
8597        **kwargs
8598    ):
8599        super(PatchRouteFilterRule, self).__init__(id=id, **kwargs)
8600        self.name = None
8601        self.etag = None
8602        self.access = access
8603        self.route_filter_rule_type = route_filter_rule_type
8604        self.communities = communities
8605        self.provisioning_state = None
8606
8607
8608class Policies(msrest.serialization.Model):
8609    """Policies for vpn gateway.
8610
8611    :param allow_branch_to_branch_traffic: True if branch to branch traffic is allowed.
8612    :type allow_branch_to_branch_traffic: bool
8613    :param allow_vnet_to_vnet_traffic: True if Vnet to Vnet traffic is allowed.
8614    :type allow_vnet_to_vnet_traffic: bool
8615    """
8616
8617    _attribute_map = {
8618        'allow_branch_to_branch_traffic': {'key': 'allowBranchToBranchTraffic', 'type': 'bool'},
8619        'allow_vnet_to_vnet_traffic': {'key': 'allowVnetToVnetTraffic', 'type': 'bool'},
8620    }
8621
8622    def __init__(
8623        self,
8624        *,
8625        allow_branch_to_branch_traffic: Optional[bool] = None,
8626        allow_vnet_to_vnet_traffic: Optional[bool] = None,
8627        **kwargs
8628    ):
8629        super(Policies, self).__init__(**kwargs)
8630        self.allow_branch_to_branch_traffic = allow_branch_to_branch_traffic
8631        self.allow_vnet_to_vnet_traffic = allow_vnet_to_vnet_traffic
8632
8633
8634class Probe(SubResource):
8635    """A load balancer probe.
8636
8637    Variables are only populated by the server, and will be ignored when sending a request.
8638
8639    :param id: Resource ID.
8640    :type id: str
8641    :param name: Gets name of the resource that is unique within a resource group. This name can be
8642     used to access the resource.
8643    :type name: str
8644    :param etag: A unique read-only string that changes whenever the resource is updated.
8645    :type etag: str
8646    :ivar load_balancing_rules: The load balancer rules that use this probe.
8647    :vartype load_balancing_rules: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
8648    :param protocol: The protocol of the end point. Possible values are: 'Http', 'Tcp', or 'Https'.
8649     If 'Tcp' is specified, a received ACK is required for the probe to be successful. If 'Http' or
8650     'Https' is specified, a 200 OK response from the specifies URI is required for the probe to be
8651     successful. Possible values include: "Http", "Tcp", "Https".
8652    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.ProbeProtocol
8653    :param port: The port for communicating the probe. Possible values range from 1 to 65535,
8654     inclusive.
8655    :type port: int
8656    :param interval_in_seconds: The interval, in seconds, for how frequently to probe the endpoint
8657     for health status. Typically, the interval is slightly less than half the allocated timeout
8658     period (in seconds) which allows two full probes before taking the instance out of rotation.
8659     The default value is 15, the minimum value is 5.
8660    :type interval_in_seconds: int
8661    :param number_of_probes: The number of probes where if no response, will result in stopping
8662     further traffic from being delivered to the endpoint. This values allows endpoints to be taken
8663     out of rotation faster or slower than the typical times used in Azure.
8664    :type number_of_probes: int
8665    :param request_path: The URI used for requesting health status from the VM. Path is required if
8666     a protocol is set to http. Otherwise, it is not allowed. There is no default value.
8667    :type request_path: str
8668    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
8669     values are: 'Updating', 'Deleting', and 'Failed'.
8670    :type provisioning_state: str
8671    """
8672
8673    _validation = {
8674        'load_balancing_rules': {'readonly': True},
8675    }
8676
8677    _attribute_map = {
8678        'id': {'key': 'id', 'type': 'str'},
8679        'name': {'key': 'name', 'type': 'str'},
8680        'etag': {'key': 'etag', 'type': 'str'},
8681        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
8682        'protocol': {'key': 'properties.protocol', 'type': 'str'},
8683        'port': {'key': 'properties.port', 'type': 'int'},
8684        'interval_in_seconds': {'key': 'properties.intervalInSeconds', 'type': 'int'},
8685        'number_of_probes': {'key': 'properties.numberOfProbes', 'type': 'int'},
8686        'request_path': {'key': 'properties.requestPath', 'type': 'str'},
8687        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8688    }
8689
8690    def __init__(
8691        self,
8692        *,
8693        id: Optional[str] = None,
8694        name: Optional[str] = None,
8695        etag: Optional[str] = None,
8696        protocol: Optional[Union[str, "ProbeProtocol"]] = None,
8697        port: Optional[int] = None,
8698        interval_in_seconds: Optional[int] = None,
8699        number_of_probes: Optional[int] = None,
8700        request_path: Optional[str] = None,
8701        provisioning_state: Optional[str] = None,
8702        **kwargs
8703    ):
8704        super(Probe, self).__init__(id=id, **kwargs)
8705        self.name = name
8706        self.etag = etag
8707        self.load_balancing_rules = None
8708        self.protocol = protocol
8709        self.port = port
8710        self.interval_in_seconds = interval_in_seconds
8711        self.number_of_probes = number_of_probes
8712        self.request_path = request_path
8713        self.provisioning_state = provisioning_state
8714
8715
8716class ProtocolConfiguration(msrest.serialization.Model):
8717    """Configuration of the protocol.
8718
8719    :param http_configuration: HTTP configuration of the connectivity check.
8720    :type http_configuration: ~azure.mgmt.network.v2018_04_01.models.HTTPConfiguration
8721    """
8722
8723    _attribute_map = {
8724        'http_configuration': {'key': 'HTTPConfiguration', 'type': 'HTTPConfiguration'},
8725    }
8726
8727    def __init__(
8728        self,
8729        *,
8730        http_configuration: Optional["HTTPConfiguration"] = None,
8731        **kwargs
8732    ):
8733        super(ProtocolConfiguration, self).__init__(**kwargs)
8734        self.http_configuration = http_configuration
8735
8736
8737class PublicIPAddress(Resource):
8738    """Public IP address resource.
8739
8740    Variables are only populated by the server, and will be ignored when sending a request.
8741
8742    :param id: Resource ID.
8743    :type id: str
8744    :ivar name: Resource name.
8745    :vartype name: str
8746    :ivar type: Resource type.
8747    :vartype type: str
8748    :param location: Resource location.
8749    :type location: str
8750    :param tags: A set of tags. Resource tags.
8751    :type tags: dict[str, str]
8752    :param sku: The public IP address SKU.
8753    :type sku: ~azure.mgmt.network.v2018_04_01.models.PublicIPAddressSku
8754    :param etag: A unique read-only string that changes whenever the resource is updated.
8755    :type etag: str
8756    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
8757     come from.
8758    :type zones: list[str]
8759    :param public_ip_allocation_method: The public IP allocation method. Possible values are:
8760     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
8761    :type public_ip_allocation_method: str or
8762     ~azure.mgmt.network.v2018_04_01.models.IPAllocationMethod
8763    :param public_ip_address_version: The public IP address version. Possible values are: 'IPv4'
8764     and 'IPv6'. Possible values include: "IPv4", "IPv6".
8765    :type public_ip_address_version: str or ~azure.mgmt.network.v2018_04_01.models.IPVersion
8766    :ivar ip_configuration: The IP configuration associated with the public IP address.
8767    :vartype ip_configuration: ~azure.mgmt.network.v2018_04_01.models.IPConfiguration
8768    :param dns_settings: The FQDN of the DNS record associated with the public IP address.
8769    :type dns_settings: ~azure.mgmt.network.v2018_04_01.models.PublicIPAddressDnsSettings
8770    :param ip_tags: The list of tags associated with the public IP address.
8771    :type ip_tags: list[~azure.mgmt.network.v2018_04_01.models.IpTag]
8772    :param ip_address: The IP address associated with the public IP address resource.
8773    :type ip_address: str
8774    :param idle_timeout_in_minutes: The idle timeout of the public IP address.
8775    :type idle_timeout_in_minutes: int
8776    :param resource_guid: The resource GUID property of the public IP resource.
8777    :type resource_guid: str
8778    :param provisioning_state: The provisioning state of the PublicIP resource. Possible values
8779     are: 'Updating', 'Deleting', and 'Failed'.
8780    :type provisioning_state: str
8781    """
8782
8783    _validation = {
8784        'name': {'readonly': True},
8785        'type': {'readonly': True},
8786        'ip_configuration': {'readonly': True},
8787    }
8788
8789    _attribute_map = {
8790        'id': {'key': 'id', 'type': 'str'},
8791        'name': {'key': 'name', 'type': 'str'},
8792        'type': {'key': 'type', 'type': 'str'},
8793        'location': {'key': 'location', 'type': 'str'},
8794        'tags': {'key': 'tags', 'type': '{str}'},
8795        'sku': {'key': 'sku', 'type': 'PublicIPAddressSku'},
8796        'etag': {'key': 'etag', 'type': 'str'},
8797        'zones': {'key': 'zones', 'type': '[str]'},
8798        'public_ip_allocation_method': {'key': 'properties.publicIPAllocationMethod', 'type': 'str'},
8799        'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'},
8800        'ip_configuration': {'key': 'properties.ipConfiguration', 'type': 'IPConfiguration'},
8801        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'PublicIPAddressDnsSettings'},
8802        'ip_tags': {'key': 'properties.ipTags', 'type': '[IpTag]'},
8803        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
8804        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
8805        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
8806        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8807    }
8808
8809    def __init__(
8810        self,
8811        *,
8812        id: Optional[str] = None,
8813        location: Optional[str] = None,
8814        tags: Optional[Dict[str, str]] = None,
8815        sku: Optional["PublicIPAddressSku"] = None,
8816        etag: Optional[str] = None,
8817        zones: Optional[List[str]] = None,
8818        public_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
8819        public_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
8820        dns_settings: Optional["PublicIPAddressDnsSettings"] = None,
8821        ip_tags: Optional[List["IpTag"]] = None,
8822        ip_address: Optional[str] = None,
8823        idle_timeout_in_minutes: Optional[int] = None,
8824        resource_guid: Optional[str] = None,
8825        provisioning_state: Optional[str] = None,
8826        **kwargs
8827    ):
8828        super(PublicIPAddress, self).__init__(id=id, location=location, tags=tags, **kwargs)
8829        self.sku = sku
8830        self.etag = etag
8831        self.zones = zones
8832        self.public_ip_allocation_method = public_ip_allocation_method
8833        self.public_ip_address_version = public_ip_address_version
8834        self.ip_configuration = None
8835        self.dns_settings = dns_settings
8836        self.ip_tags = ip_tags
8837        self.ip_address = ip_address
8838        self.idle_timeout_in_minutes = idle_timeout_in_minutes
8839        self.resource_guid = resource_guid
8840        self.provisioning_state = provisioning_state
8841
8842
8843class PublicIPAddressDnsSettings(msrest.serialization.Model):
8844    """Contains FQDN of the DNS record associated with the public IP address.
8845
8846    :param domain_name_label: Gets or sets the Domain name label.The concatenation of the domain
8847     name label and the regionalized DNS zone make up the fully qualified domain name associated
8848     with the public IP address. If a domain name label is specified, an A DNS record is created for
8849     the public IP in the Microsoft Azure DNS system.
8850    :type domain_name_label: str
8851    :param fqdn: Gets the FQDN, Fully qualified domain name of the A DNS record associated with the
8852     public IP. This is the concatenation of the domainNameLabel and the regionalized DNS zone.
8853    :type fqdn: str
8854    :param reverse_fqdn: Gets or Sets the Reverse FQDN. A user-visible, fully qualified domain name
8855     that resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record
8856     is created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN.
8857    :type reverse_fqdn: str
8858    """
8859
8860    _attribute_map = {
8861        'domain_name_label': {'key': 'domainNameLabel', 'type': 'str'},
8862        'fqdn': {'key': 'fqdn', 'type': 'str'},
8863        'reverse_fqdn': {'key': 'reverseFqdn', 'type': 'str'},
8864    }
8865
8866    def __init__(
8867        self,
8868        *,
8869        domain_name_label: Optional[str] = None,
8870        fqdn: Optional[str] = None,
8871        reverse_fqdn: Optional[str] = None,
8872        **kwargs
8873    ):
8874        super(PublicIPAddressDnsSettings, self).__init__(**kwargs)
8875        self.domain_name_label = domain_name_label
8876        self.fqdn = fqdn
8877        self.reverse_fqdn = reverse_fqdn
8878
8879
8880class PublicIPAddressListResult(msrest.serialization.Model):
8881    """Response for ListPublicIpAddresses API service call.
8882
8883    :param value: A list of public IP addresses that exists in a resource group.
8884    :type value: list[~azure.mgmt.network.v2018_04_01.models.PublicIPAddress]
8885    :param next_link: The URL to get the next set of results.
8886    :type next_link: str
8887    """
8888
8889    _attribute_map = {
8890        'value': {'key': 'value', 'type': '[PublicIPAddress]'},
8891        'next_link': {'key': 'nextLink', 'type': 'str'},
8892    }
8893
8894    def __init__(
8895        self,
8896        *,
8897        value: Optional[List["PublicIPAddress"]] = None,
8898        next_link: Optional[str] = None,
8899        **kwargs
8900    ):
8901        super(PublicIPAddressListResult, self).__init__(**kwargs)
8902        self.value = value
8903        self.next_link = next_link
8904
8905
8906class PublicIPAddressSku(msrest.serialization.Model):
8907    """SKU of a public IP address.
8908
8909    :param name: Name of a public IP address SKU. Possible values include: "Basic", "Standard".
8910    :type name: str or ~azure.mgmt.network.v2018_04_01.models.PublicIPAddressSkuName
8911    """
8912
8913    _attribute_map = {
8914        'name': {'key': 'name', 'type': 'str'},
8915    }
8916
8917    def __init__(
8918        self,
8919        *,
8920        name: Optional[Union[str, "PublicIPAddressSkuName"]] = None,
8921        **kwargs
8922    ):
8923        super(PublicIPAddressSku, self).__init__(**kwargs)
8924        self.name = name
8925
8926
8927class QueryTroubleshootingParameters(msrest.serialization.Model):
8928    """Parameters that define the resource to query the troubleshooting result.
8929
8930    All required parameters must be populated in order to send to Azure.
8931
8932    :param target_resource_id: Required. The target resource ID to query the troubleshooting
8933     result.
8934    :type target_resource_id: str
8935    """
8936
8937    _validation = {
8938        'target_resource_id': {'required': True},
8939    }
8940
8941    _attribute_map = {
8942        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
8943    }
8944
8945    def __init__(
8946        self,
8947        *,
8948        target_resource_id: str,
8949        **kwargs
8950    ):
8951        super(QueryTroubleshootingParameters, self).__init__(**kwargs)
8952        self.target_resource_id = target_resource_id
8953
8954
8955class ResourceNavigationLink(SubResource):
8956    """ResourceNavigationLink resource.
8957
8958    Variables are only populated by the server, and will be ignored when sending a request.
8959
8960    :param id: Resource ID.
8961    :type id: str
8962    :param name: Name of the resource that is unique within a resource group. This name can be used
8963     to access the resource.
8964    :type name: str
8965    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8966    :vartype etag: str
8967    :param linked_resource_type: Resource type of the linked resource.
8968    :type linked_resource_type: str
8969    :param link: Link to the external resource.
8970    :type link: str
8971    :ivar provisioning_state: Provisioning state of the ResourceNavigationLink resource.
8972    :vartype provisioning_state: str
8973    """
8974
8975    _validation = {
8976        'etag': {'readonly': True},
8977        'provisioning_state': {'readonly': True},
8978    }
8979
8980    _attribute_map = {
8981        'id': {'key': 'id', 'type': 'str'},
8982        'name': {'key': 'name', 'type': 'str'},
8983        'etag': {'key': 'etag', 'type': 'str'},
8984        'linked_resource_type': {'key': 'properties.linkedResourceType', 'type': 'str'},
8985        'link': {'key': 'properties.link', 'type': 'str'},
8986        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8987    }
8988
8989    def __init__(
8990        self,
8991        *,
8992        id: Optional[str] = None,
8993        name: Optional[str] = None,
8994        linked_resource_type: Optional[str] = None,
8995        link: Optional[str] = None,
8996        **kwargs
8997    ):
8998        super(ResourceNavigationLink, self).__init__(id=id, **kwargs)
8999        self.name = name
9000        self.etag = None
9001        self.linked_resource_type = linked_resource_type
9002        self.link = link
9003        self.provisioning_state = None
9004
9005
9006class RetentionPolicyParameters(msrest.serialization.Model):
9007    """Parameters that define the retention policy for flow log.
9008
9009    :param days: Number of days to retain flow log records.
9010    :type days: int
9011    :param enabled: Flag to enable/disable retention.
9012    :type enabled: bool
9013    """
9014
9015    _attribute_map = {
9016        'days': {'key': 'days', 'type': 'int'},
9017        'enabled': {'key': 'enabled', 'type': 'bool'},
9018    }
9019
9020    def __init__(
9021        self,
9022        *,
9023        days: Optional[int] = 0,
9024        enabled: Optional[bool] = False,
9025        **kwargs
9026    ):
9027        super(RetentionPolicyParameters, self).__init__(**kwargs)
9028        self.days = days
9029        self.enabled = enabled
9030
9031
9032class Route(SubResource):
9033    """Route resource.
9034
9035    :param id: Resource ID.
9036    :type id: str
9037    :param name: The name of the resource that is unique within a resource group. This name can be
9038     used to access the resource.
9039    :type name: str
9040    :param etag: A unique read-only string that changes whenever the resource is updated.
9041    :type etag: str
9042    :param address_prefix: The destination CIDR to which the route applies.
9043    :type address_prefix: str
9044    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values are:
9045     'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', and 'None'. Possible
9046     values include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
9047    :type next_hop_type: str or ~azure.mgmt.network.v2018_04_01.models.RouteNextHopType
9048    :param next_hop_ip_address: The IP address packets should be forwarded to. Next hop values are
9049     only allowed in routes where the next hop type is VirtualAppliance.
9050    :type next_hop_ip_address: str
9051    :param provisioning_state: The provisioning state of the resource. Possible values are:
9052     'Updating', 'Deleting', and 'Failed'.
9053    :type provisioning_state: str
9054    """
9055
9056    _attribute_map = {
9057        'id': {'key': 'id', 'type': 'str'},
9058        'name': {'key': 'name', 'type': 'str'},
9059        'etag': {'key': 'etag', 'type': 'str'},
9060        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
9061        'next_hop_type': {'key': 'properties.nextHopType', 'type': 'str'},
9062        'next_hop_ip_address': {'key': 'properties.nextHopIpAddress', 'type': 'str'},
9063        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9064    }
9065
9066    def __init__(
9067        self,
9068        *,
9069        id: Optional[str] = None,
9070        name: Optional[str] = None,
9071        etag: Optional[str] = None,
9072        address_prefix: Optional[str] = None,
9073        next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None,
9074        next_hop_ip_address: Optional[str] = None,
9075        provisioning_state: Optional[str] = None,
9076        **kwargs
9077    ):
9078        super(Route, self).__init__(id=id, **kwargs)
9079        self.name = name
9080        self.etag = etag
9081        self.address_prefix = address_prefix
9082        self.next_hop_type = next_hop_type
9083        self.next_hop_ip_address = next_hop_ip_address
9084        self.provisioning_state = provisioning_state
9085
9086
9087class RouteFilter(Resource):
9088    """Route Filter Resource.
9089
9090    Variables are only populated by the server, and will be ignored when sending a request.
9091
9092    :param id: Resource ID.
9093    :type id: str
9094    :ivar name: Resource name.
9095    :vartype name: str
9096    :ivar type: Resource type.
9097    :vartype type: str
9098    :param location: Resource location.
9099    :type location: str
9100    :param tags: A set of tags. Resource tags.
9101    :type tags: dict[str, str]
9102    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
9103    :vartype etag: str
9104    :param rules: Collection of RouteFilterRules contained within a route filter.
9105    :type rules: list[~azure.mgmt.network.v2018_04_01.models.RouteFilterRule]
9106    :param peerings: A collection of references to express route circuit peerings.
9107    :type peerings: list[~azure.mgmt.network.v2018_04_01.models.ExpressRouteCircuitPeering]
9108    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
9109     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
9110    :vartype provisioning_state: str
9111    """
9112
9113    _validation = {
9114        'name': {'readonly': True},
9115        'type': {'readonly': True},
9116        'etag': {'readonly': True},
9117        'provisioning_state': {'readonly': True},
9118    }
9119
9120    _attribute_map = {
9121        'id': {'key': 'id', 'type': 'str'},
9122        'name': {'key': 'name', 'type': 'str'},
9123        'type': {'key': 'type', 'type': 'str'},
9124        'location': {'key': 'location', 'type': 'str'},
9125        'tags': {'key': 'tags', 'type': '{str}'},
9126        'etag': {'key': 'etag', 'type': 'str'},
9127        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
9128        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
9129        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9130    }
9131
9132    def __init__(
9133        self,
9134        *,
9135        id: Optional[str] = None,
9136        location: Optional[str] = None,
9137        tags: Optional[Dict[str, str]] = None,
9138        rules: Optional[List["RouteFilterRule"]] = None,
9139        peerings: Optional[List["ExpressRouteCircuitPeering"]] = None,
9140        **kwargs
9141    ):
9142        super(RouteFilter, self).__init__(id=id, location=location, tags=tags, **kwargs)
9143        self.etag = None
9144        self.rules = rules
9145        self.peerings = peerings
9146        self.provisioning_state = None
9147
9148
9149class RouteFilterListResult(msrest.serialization.Model):
9150    """Response for the ListRouteFilters API service call.
9151
9152    :param value: Gets a list of route filters in a resource group.
9153    :type value: list[~azure.mgmt.network.v2018_04_01.models.RouteFilter]
9154    :param next_link: The URL to get the next set of results.
9155    :type next_link: str
9156    """
9157
9158    _attribute_map = {
9159        'value': {'key': 'value', 'type': '[RouteFilter]'},
9160        'next_link': {'key': 'nextLink', 'type': 'str'},
9161    }
9162
9163    def __init__(
9164        self,
9165        *,
9166        value: Optional[List["RouteFilter"]] = None,
9167        next_link: Optional[str] = None,
9168        **kwargs
9169    ):
9170        super(RouteFilterListResult, self).__init__(**kwargs)
9171        self.value = value
9172        self.next_link = next_link
9173
9174
9175class RouteFilterRule(SubResource):
9176    """Route Filter Rule Resource.
9177
9178    Variables are only populated by the server, and will be ignored when sending a request.
9179
9180    :param id: Resource ID.
9181    :type id: str
9182    :param name: The name of the resource that is unique within a resource group. This name can be
9183     used to access the resource.
9184    :type name: str
9185    :param location: Resource location.
9186    :type location: str
9187    :ivar etag: A unique read-only string that changes whenever the resource is updated.
9188    :vartype etag: str
9189    :param access: The access type of the rule. Valid values are: 'Allow', 'Deny'. Possible values
9190     include: "Allow", "Deny".
9191    :type access: str or ~azure.mgmt.network.v2018_04_01.models.Access
9192    :param route_filter_rule_type: The rule type of the rule. Valid value is: 'Community'. Possible
9193     values include: "Community".
9194    :type route_filter_rule_type: str or ~azure.mgmt.network.v2018_04_01.models.RouteFilterRuleType
9195    :param communities: The collection for bgp community values to filter on. e.g.
9196     ['12076:5010','12076:5020'].
9197    :type communities: list[str]
9198    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
9199     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
9200    :vartype provisioning_state: str
9201    """
9202
9203    _validation = {
9204        'etag': {'readonly': True},
9205        'provisioning_state': {'readonly': True},
9206    }
9207
9208    _attribute_map = {
9209        'id': {'key': 'id', 'type': 'str'},
9210        'name': {'key': 'name', 'type': 'str'},
9211        'location': {'key': 'location', 'type': 'str'},
9212        'etag': {'key': 'etag', 'type': 'str'},
9213        'access': {'key': 'properties.access', 'type': 'str'},
9214        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
9215        'communities': {'key': 'properties.communities', 'type': '[str]'},
9216        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9217    }
9218
9219    def __init__(
9220        self,
9221        *,
9222        id: Optional[str] = None,
9223        name: Optional[str] = None,
9224        location: Optional[str] = None,
9225        access: Optional[Union[str, "Access"]] = None,
9226        route_filter_rule_type: Optional[Union[str, "RouteFilterRuleType"]] = None,
9227        communities: Optional[List[str]] = None,
9228        **kwargs
9229    ):
9230        super(RouteFilterRule, self).__init__(id=id, **kwargs)
9231        self.name = name
9232        self.location = location
9233        self.etag = None
9234        self.access = access
9235        self.route_filter_rule_type = route_filter_rule_type
9236        self.communities = communities
9237        self.provisioning_state = None
9238
9239
9240class RouteFilterRuleListResult(msrest.serialization.Model):
9241    """Response for the ListRouteFilterRules API service call.
9242
9243    :param value: Gets a list of RouteFilterRules in a resource group.
9244    :type value: list[~azure.mgmt.network.v2018_04_01.models.RouteFilterRule]
9245    :param next_link: The URL to get the next set of results.
9246    :type next_link: str
9247    """
9248
9249    _attribute_map = {
9250        'value': {'key': 'value', 'type': '[RouteFilterRule]'},
9251        'next_link': {'key': 'nextLink', 'type': 'str'},
9252    }
9253
9254    def __init__(
9255        self,
9256        *,
9257        value: Optional[List["RouteFilterRule"]] = None,
9258        next_link: Optional[str] = None,
9259        **kwargs
9260    ):
9261        super(RouteFilterRuleListResult, self).__init__(**kwargs)
9262        self.value = value
9263        self.next_link = next_link
9264
9265
9266class RouteListResult(msrest.serialization.Model):
9267    """Response for the ListRoute API service call.
9268
9269    :param value: Gets a list of routes in a resource group.
9270    :type value: list[~azure.mgmt.network.v2018_04_01.models.Route]
9271    :param next_link: The URL to get the next set of results.
9272    :type next_link: str
9273    """
9274
9275    _attribute_map = {
9276        'value': {'key': 'value', 'type': '[Route]'},
9277        'next_link': {'key': 'nextLink', 'type': 'str'},
9278    }
9279
9280    def __init__(
9281        self,
9282        *,
9283        value: Optional[List["Route"]] = None,
9284        next_link: Optional[str] = None,
9285        **kwargs
9286    ):
9287        super(RouteListResult, self).__init__(**kwargs)
9288        self.value = value
9289        self.next_link = next_link
9290
9291
9292class RouteTable(Resource):
9293    """Route table resource.
9294
9295    Variables are only populated by the server, and will be ignored when sending a request.
9296
9297    :param id: Resource ID.
9298    :type id: str
9299    :ivar name: Resource name.
9300    :vartype name: str
9301    :ivar type: Resource type.
9302    :vartype type: str
9303    :param location: Resource location.
9304    :type location: str
9305    :param tags: A set of tags. Resource tags.
9306    :type tags: dict[str, str]
9307    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
9308    :type etag: str
9309    :param routes: Collection of routes contained within a route table.
9310    :type routes: list[~azure.mgmt.network.v2018_04_01.models.Route]
9311    :ivar subnets: A collection of references to subnets.
9312    :vartype subnets: list[~azure.mgmt.network.v2018_04_01.models.Subnet]
9313    :param disable_bgp_route_propagation: Gets or sets whether to disable the routes learned by BGP
9314     on that route table. True means disable.
9315    :type disable_bgp_route_propagation: bool
9316    :param provisioning_state: The provisioning state of the resource. Possible values are:
9317     'Updating', 'Deleting', and 'Failed'.
9318    :type provisioning_state: str
9319    """
9320
9321    _validation = {
9322        'name': {'readonly': True},
9323        'type': {'readonly': True},
9324        'subnets': {'readonly': True},
9325    }
9326
9327    _attribute_map = {
9328        'id': {'key': 'id', 'type': 'str'},
9329        'name': {'key': 'name', 'type': 'str'},
9330        'type': {'key': 'type', 'type': 'str'},
9331        'location': {'key': 'location', 'type': 'str'},
9332        'tags': {'key': 'tags', 'type': '{str}'},
9333        'etag': {'key': 'etag', 'type': 'str'},
9334        'routes': {'key': 'properties.routes', 'type': '[Route]'},
9335        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
9336        'disable_bgp_route_propagation': {'key': 'properties.disableBgpRoutePropagation', 'type': 'bool'},
9337        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9338    }
9339
9340    def __init__(
9341        self,
9342        *,
9343        id: Optional[str] = None,
9344        location: Optional[str] = None,
9345        tags: Optional[Dict[str, str]] = None,
9346        etag: Optional[str] = None,
9347        routes: Optional[List["Route"]] = None,
9348        disable_bgp_route_propagation: Optional[bool] = None,
9349        provisioning_state: Optional[str] = None,
9350        **kwargs
9351    ):
9352        super(RouteTable, self).__init__(id=id, location=location, tags=tags, **kwargs)
9353        self.etag = etag
9354        self.routes = routes
9355        self.subnets = None
9356        self.disable_bgp_route_propagation = disable_bgp_route_propagation
9357        self.provisioning_state = provisioning_state
9358
9359
9360class RouteTableListResult(msrest.serialization.Model):
9361    """Response for the ListRouteTable API service call.
9362
9363    :param value: Gets a list of route tables in a resource group.
9364    :type value: list[~azure.mgmt.network.v2018_04_01.models.RouteTable]
9365    :param next_link: The URL to get the next set of results.
9366    :type next_link: str
9367    """
9368
9369    _attribute_map = {
9370        'value': {'key': 'value', 'type': '[RouteTable]'},
9371        'next_link': {'key': 'nextLink', 'type': 'str'},
9372    }
9373
9374    def __init__(
9375        self,
9376        *,
9377        value: Optional[List["RouteTable"]] = None,
9378        next_link: Optional[str] = None,
9379        **kwargs
9380    ):
9381        super(RouteTableListResult, self).__init__(**kwargs)
9382        self.value = value
9383        self.next_link = next_link
9384
9385
9386class SecurityGroupNetworkInterface(msrest.serialization.Model):
9387    """Network interface and all its associated security rules.
9388
9389    :param id: ID of the network interface.
9390    :type id: str
9391    :param security_rule_associations: All security rules associated with the network interface.
9392    :type security_rule_associations:
9393     ~azure.mgmt.network.v2018_04_01.models.SecurityRuleAssociations
9394    """
9395
9396    _attribute_map = {
9397        'id': {'key': 'id', 'type': 'str'},
9398        'security_rule_associations': {'key': 'securityRuleAssociations', 'type': 'SecurityRuleAssociations'},
9399    }
9400
9401    def __init__(
9402        self,
9403        *,
9404        id: Optional[str] = None,
9405        security_rule_associations: Optional["SecurityRuleAssociations"] = None,
9406        **kwargs
9407    ):
9408        super(SecurityGroupNetworkInterface, self).__init__(**kwargs)
9409        self.id = id
9410        self.security_rule_associations = security_rule_associations
9411
9412
9413class SecurityGroupViewParameters(msrest.serialization.Model):
9414    """Parameters that define the VM to check security groups for.
9415
9416    All required parameters must be populated in order to send to Azure.
9417
9418    :param target_resource_id: Required. ID of the target VM.
9419    :type target_resource_id: str
9420    """
9421
9422    _validation = {
9423        'target_resource_id': {'required': True},
9424    }
9425
9426    _attribute_map = {
9427        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
9428    }
9429
9430    def __init__(
9431        self,
9432        *,
9433        target_resource_id: str,
9434        **kwargs
9435    ):
9436        super(SecurityGroupViewParameters, self).__init__(**kwargs)
9437        self.target_resource_id = target_resource_id
9438
9439
9440class SecurityGroupViewResult(msrest.serialization.Model):
9441    """The information about security rules applied to the specified VM.
9442
9443    :param network_interfaces: List of network interfaces on the specified VM.
9444    :type network_interfaces:
9445     list[~azure.mgmt.network.v2018_04_01.models.SecurityGroupNetworkInterface]
9446    """
9447
9448    _attribute_map = {
9449        'network_interfaces': {'key': 'networkInterfaces', 'type': '[SecurityGroupNetworkInterface]'},
9450    }
9451
9452    def __init__(
9453        self,
9454        *,
9455        network_interfaces: Optional[List["SecurityGroupNetworkInterface"]] = None,
9456        **kwargs
9457    ):
9458        super(SecurityGroupViewResult, self).__init__(**kwargs)
9459        self.network_interfaces = network_interfaces
9460
9461
9462class SecurityRule(SubResource):
9463    """Network security rule.
9464
9465    :param id: Resource ID.
9466    :type id: str
9467    :param name: The name of the resource that is unique within a resource group. This name can be
9468     used to access the resource.
9469    :type name: str
9470    :param etag: A unique read-only string that changes whenever the resource is updated.
9471    :type etag: str
9472    :param description: A description for this rule. Restricted to 140 chars.
9473    :type description: str
9474    :param protocol: Network protocol this rule applies to. Possible values are 'Tcp', 'Udp', and
9475     '*'. Possible values include: "Tcp", "Udp", "*".
9476    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.SecurityRuleProtocol
9477    :param source_port_range: The source port or range. Integer or range between 0 and 65535.
9478     Asterisk '*' can also be used to match all ports.
9479    :type source_port_range: str
9480    :param destination_port_range: The destination port or range. Integer or range between 0 and
9481     65535. Asterisk '*' can also be used to match all ports.
9482    :type destination_port_range: str
9483    :param source_address_prefix: The CIDR or source IP range. Asterisk '*' can also be used to
9484     match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet'
9485     can also be used. If this is an ingress rule, specifies where network traffic originates from.
9486    :type source_address_prefix: str
9487    :param source_address_prefixes: The CIDR or source IP ranges.
9488    :type source_address_prefixes: list[str]
9489    :param source_application_security_groups: The application security group specified as source.
9490    :type source_application_security_groups:
9491     list[~azure.mgmt.network.v2018_04_01.models.ApplicationSecurityGroup]
9492    :param destination_address_prefix: The destination address prefix. CIDR or destination IP
9493     range. Asterisk '*' can also be used to match all source IPs. Default tags such as
9494     'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
9495    :type destination_address_prefix: str
9496    :param destination_address_prefixes: The destination address prefixes. CIDR or destination IP
9497     ranges.
9498    :type destination_address_prefixes: list[str]
9499    :param destination_application_security_groups: The application security group specified as
9500     destination.
9501    :type destination_application_security_groups:
9502     list[~azure.mgmt.network.v2018_04_01.models.ApplicationSecurityGroup]
9503    :param source_port_ranges: The source port ranges.
9504    :type source_port_ranges: list[str]
9505    :param destination_port_ranges: The destination port ranges.
9506    :type destination_port_ranges: list[str]
9507    :param access: The network traffic is allowed or denied. Possible values are: 'Allow' and
9508     'Deny'. Possible values include: "Allow", "Deny".
9509    :type access: str or ~azure.mgmt.network.v2018_04_01.models.SecurityRuleAccess
9510    :param priority: The priority of the rule. The value can be between 100 and 4096. The priority
9511     number must be unique for each rule in the collection. The lower the priority number, the
9512     higher the priority of the rule.
9513    :type priority: int
9514    :param direction: The direction of the rule. The direction specifies if rule will be evaluated
9515     on incoming or outgoing traffic. Possible values are: 'Inbound' and 'Outbound'. Possible values
9516     include: "Inbound", "Outbound".
9517    :type direction: str or ~azure.mgmt.network.v2018_04_01.models.SecurityRuleDirection
9518    :param provisioning_state: The provisioning state of the public IP resource. Possible values
9519     are: 'Updating', 'Deleting', and 'Failed'.
9520    :type provisioning_state: str
9521    """
9522
9523    _attribute_map = {
9524        'id': {'key': 'id', 'type': 'str'},
9525        'name': {'key': 'name', 'type': 'str'},
9526        'etag': {'key': 'etag', 'type': 'str'},
9527        'description': {'key': 'properties.description', 'type': 'str'},
9528        'protocol': {'key': 'properties.protocol', 'type': 'str'},
9529        'source_port_range': {'key': 'properties.sourcePortRange', 'type': 'str'},
9530        'destination_port_range': {'key': 'properties.destinationPortRange', 'type': 'str'},
9531        'source_address_prefix': {'key': 'properties.sourceAddressPrefix', 'type': 'str'},
9532        'source_address_prefixes': {'key': 'properties.sourceAddressPrefixes', 'type': '[str]'},
9533        'source_application_security_groups': {'key': 'properties.sourceApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
9534        'destination_address_prefix': {'key': 'properties.destinationAddressPrefix', 'type': 'str'},
9535        'destination_address_prefixes': {'key': 'properties.destinationAddressPrefixes', 'type': '[str]'},
9536        'destination_application_security_groups': {'key': 'properties.destinationApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
9537        'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'},
9538        'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'},
9539        'access': {'key': 'properties.access', 'type': 'str'},
9540        'priority': {'key': 'properties.priority', 'type': 'int'},
9541        'direction': {'key': 'properties.direction', 'type': 'str'},
9542        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9543    }
9544
9545    def __init__(
9546        self,
9547        *,
9548        id: Optional[str] = None,
9549        name: Optional[str] = None,
9550        etag: Optional[str] = None,
9551        description: Optional[str] = None,
9552        protocol: Optional[Union[str, "SecurityRuleProtocol"]] = None,
9553        source_port_range: Optional[str] = None,
9554        destination_port_range: Optional[str] = None,
9555        source_address_prefix: Optional[str] = None,
9556        source_address_prefixes: Optional[List[str]] = None,
9557        source_application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
9558        destination_address_prefix: Optional[str] = None,
9559        destination_address_prefixes: Optional[List[str]] = None,
9560        destination_application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
9561        source_port_ranges: Optional[List[str]] = None,
9562        destination_port_ranges: Optional[List[str]] = None,
9563        access: Optional[Union[str, "SecurityRuleAccess"]] = None,
9564        priority: Optional[int] = None,
9565        direction: Optional[Union[str, "SecurityRuleDirection"]] = None,
9566        provisioning_state: Optional[str] = None,
9567        **kwargs
9568    ):
9569        super(SecurityRule, self).__init__(id=id, **kwargs)
9570        self.name = name
9571        self.etag = etag
9572        self.description = description
9573        self.protocol = protocol
9574        self.source_port_range = source_port_range
9575        self.destination_port_range = destination_port_range
9576        self.source_address_prefix = source_address_prefix
9577        self.source_address_prefixes = source_address_prefixes
9578        self.source_application_security_groups = source_application_security_groups
9579        self.destination_address_prefix = destination_address_prefix
9580        self.destination_address_prefixes = destination_address_prefixes
9581        self.destination_application_security_groups = destination_application_security_groups
9582        self.source_port_ranges = source_port_ranges
9583        self.destination_port_ranges = destination_port_ranges
9584        self.access = access
9585        self.priority = priority
9586        self.direction = direction
9587        self.provisioning_state = provisioning_state
9588
9589
9590class SecurityRuleAssociations(msrest.serialization.Model):
9591    """All security rules associated with the network interface.
9592
9593    :param network_interface_association: Network interface and its custom security rules.
9594    :type network_interface_association:
9595     ~azure.mgmt.network.v2018_04_01.models.NetworkInterfaceAssociation
9596    :param subnet_association: Network interface and its custom security rules.
9597    :type subnet_association: ~azure.mgmt.network.v2018_04_01.models.SubnetAssociation
9598    :param default_security_rules: Collection of default security rules of the network security
9599     group.
9600    :type default_security_rules: list[~azure.mgmt.network.v2018_04_01.models.SecurityRule]
9601    :param effective_security_rules: Collection of effective security rules.
9602    :type effective_security_rules:
9603     list[~azure.mgmt.network.v2018_04_01.models.EffectiveNetworkSecurityRule]
9604    """
9605
9606    _attribute_map = {
9607        'network_interface_association': {'key': 'networkInterfaceAssociation', 'type': 'NetworkInterfaceAssociation'},
9608        'subnet_association': {'key': 'subnetAssociation', 'type': 'SubnetAssociation'},
9609        'default_security_rules': {'key': 'defaultSecurityRules', 'type': '[SecurityRule]'},
9610        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
9611    }
9612
9613    def __init__(
9614        self,
9615        *,
9616        network_interface_association: Optional["NetworkInterfaceAssociation"] = None,
9617        subnet_association: Optional["SubnetAssociation"] = None,
9618        default_security_rules: Optional[List["SecurityRule"]] = None,
9619        effective_security_rules: Optional[List["EffectiveNetworkSecurityRule"]] = None,
9620        **kwargs
9621    ):
9622        super(SecurityRuleAssociations, self).__init__(**kwargs)
9623        self.network_interface_association = network_interface_association
9624        self.subnet_association = subnet_association
9625        self.default_security_rules = default_security_rules
9626        self.effective_security_rules = effective_security_rules
9627
9628
9629class SecurityRuleListResult(msrest.serialization.Model):
9630    """Response for ListSecurityRule API service call. Retrieves all security rules that belongs to a network security group.
9631
9632    :param value: The security rules in a network security group.
9633    :type value: list[~azure.mgmt.network.v2018_04_01.models.SecurityRule]
9634    :param next_link: The URL to get the next set of results.
9635    :type next_link: str
9636    """
9637
9638    _attribute_map = {
9639        'value': {'key': 'value', 'type': '[SecurityRule]'},
9640        'next_link': {'key': 'nextLink', 'type': 'str'},
9641    }
9642
9643    def __init__(
9644        self,
9645        *,
9646        value: Optional[List["SecurityRule"]] = None,
9647        next_link: Optional[str] = None,
9648        **kwargs
9649    ):
9650        super(SecurityRuleListResult, self).__init__(**kwargs)
9651        self.value = value
9652        self.next_link = next_link
9653
9654
9655class ServiceEndpointPropertiesFormat(msrest.serialization.Model):
9656    """The service endpoint properties.
9657
9658    :param service: The type of the endpoint service.
9659    :type service: str
9660    :param locations: A list of locations.
9661    :type locations: list[str]
9662    :param provisioning_state: The provisioning state of the resource.
9663    :type provisioning_state: str
9664    """
9665
9666    _attribute_map = {
9667        'service': {'key': 'service', 'type': 'str'},
9668        'locations': {'key': 'locations', 'type': '[str]'},
9669        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
9670    }
9671
9672    def __init__(
9673        self,
9674        *,
9675        service: Optional[str] = None,
9676        locations: Optional[List[str]] = None,
9677        provisioning_state: Optional[str] = None,
9678        **kwargs
9679    ):
9680        super(ServiceEndpointPropertiesFormat, self).__init__(**kwargs)
9681        self.service = service
9682        self.locations = locations
9683        self.provisioning_state = provisioning_state
9684
9685
9686class Subnet(SubResource):
9687    """Subnet in a virtual network resource.
9688
9689    Variables are only populated by the server, and will be ignored when sending a request.
9690
9691    :param id: Resource ID.
9692    :type id: str
9693    :param name: The name of the resource that is unique within a resource group. This name can be
9694     used to access the resource.
9695    :type name: str
9696    :param etag: A unique read-only string that changes whenever the resource is updated.
9697    :type etag: str
9698    :param address_prefix: The address prefix for the subnet.
9699    :type address_prefix: str
9700    :param network_security_group: The reference of the NetworkSecurityGroup resource.
9701    :type network_security_group: ~azure.mgmt.network.v2018_04_01.models.NetworkSecurityGroup
9702    :param route_table: The reference of the RouteTable resource.
9703    :type route_table: ~azure.mgmt.network.v2018_04_01.models.RouteTable
9704    :param service_endpoints: An array of service endpoints.
9705    :type service_endpoints:
9706     list[~azure.mgmt.network.v2018_04_01.models.ServiceEndpointPropertiesFormat]
9707    :ivar ip_configurations: Gets an array of references to the network interface IP configurations
9708     using subnet.
9709    :vartype ip_configurations: list[~azure.mgmt.network.v2018_04_01.models.IPConfiguration]
9710    :param resource_navigation_links: Gets an array of references to the external resources using
9711     subnet.
9712    :type resource_navigation_links:
9713     list[~azure.mgmt.network.v2018_04_01.models.ResourceNavigationLink]
9714    :param provisioning_state: The provisioning state of the resource.
9715    :type provisioning_state: str
9716    """
9717
9718    _validation = {
9719        'ip_configurations': {'readonly': True},
9720    }
9721
9722    _attribute_map = {
9723        'id': {'key': 'id', 'type': 'str'},
9724        'name': {'key': 'name', 'type': 'str'},
9725        'etag': {'key': 'etag', 'type': 'str'},
9726        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
9727        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
9728        'route_table': {'key': 'properties.routeTable', 'type': 'RouteTable'},
9729        'service_endpoints': {'key': 'properties.serviceEndpoints', 'type': '[ServiceEndpointPropertiesFormat]'},
9730        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfiguration]'},
9731        'resource_navigation_links': {'key': 'properties.resourceNavigationLinks', 'type': '[ResourceNavigationLink]'},
9732        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9733    }
9734
9735    def __init__(
9736        self,
9737        *,
9738        id: Optional[str] = None,
9739        name: Optional[str] = None,
9740        etag: Optional[str] = None,
9741        address_prefix: Optional[str] = None,
9742        network_security_group: Optional["NetworkSecurityGroup"] = None,
9743        route_table: Optional["RouteTable"] = None,
9744        service_endpoints: Optional[List["ServiceEndpointPropertiesFormat"]] = None,
9745        resource_navigation_links: Optional[List["ResourceNavigationLink"]] = None,
9746        provisioning_state: Optional[str] = None,
9747        **kwargs
9748    ):
9749        super(Subnet, self).__init__(id=id, **kwargs)
9750        self.name = name
9751        self.etag = etag
9752        self.address_prefix = address_prefix
9753        self.network_security_group = network_security_group
9754        self.route_table = route_table
9755        self.service_endpoints = service_endpoints
9756        self.ip_configurations = None
9757        self.resource_navigation_links = resource_navigation_links
9758        self.provisioning_state = provisioning_state
9759
9760
9761class SubnetAssociation(msrest.serialization.Model):
9762    """Network interface and its custom security rules.
9763
9764    Variables are only populated by the server, and will be ignored when sending a request.
9765
9766    :ivar id: Subnet ID.
9767    :vartype id: str
9768    :param security_rules: Collection of custom security rules.
9769    :type security_rules: list[~azure.mgmt.network.v2018_04_01.models.SecurityRule]
9770    """
9771
9772    _validation = {
9773        'id': {'readonly': True},
9774    }
9775
9776    _attribute_map = {
9777        'id': {'key': 'id', 'type': 'str'},
9778        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
9779    }
9780
9781    def __init__(
9782        self,
9783        *,
9784        security_rules: Optional[List["SecurityRule"]] = None,
9785        **kwargs
9786    ):
9787        super(SubnetAssociation, self).__init__(**kwargs)
9788        self.id = None
9789        self.security_rules = security_rules
9790
9791
9792class SubnetListResult(msrest.serialization.Model):
9793    """Response for ListSubnets API service callRetrieves all subnet that belongs to a virtual network.
9794
9795    :param value: The subnets in a virtual network.
9796    :type value: list[~azure.mgmt.network.v2018_04_01.models.Subnet]
9797    :param next_link: The URL to get the next set of results.
9798    :type next_link: str
9799    """
9800
9801    _attribute_map = {
9802        'value': {'key': 'value', 'type': '[Subnet]'},
9803        'next_link': {'key': 'nextLink', 'type': 'str'},
9804    }
9805
9806    def __init__(
9807        self,
9808        *,
9809        value: Optional[List["Subnet"]] = None,
9810        next_link: Optional[str] = None,
9811        **kwargs
9812    ):
9813        super(SubnetListResult, self).__init__(**kwargs)
9814        self.value = value
9815        self.next_link = next_link
9816
9817
9818class TagsObject(msrest.serialization.Model):
9819    """Tags object for patch operations.
9820
9821    :param tags: A set of tags. Resource tags.
9822    :type tags: dict[str, str]
9823    """
9824
9825    _attribute_map = {
9826        'tags': {'key': 'tags', 'type': '{str}'},
9827    }
9828
9829    def __init__(
9830        self,
9831        *,
9832        tags: Optional[Dict[str, str]] = None,
9833        **kwargs
9834    ):
9835        super(TagsObject, self).__init__(**kwargs)
9836        self.tags = tags
9837
9838
9839class Topology(msrest.serialization.Model):
9840    """Topology of the specified resource group.
9841
9842    Variables are only populated by the server, and will be ignored when sending a request.
9843
9844    :ivar id: GUID representing the operation id.
9845    :vartype id: str
9846    :ivar created_date_time: The datetime when the topology was initially created for the resource
9847     group.
9848    :vartype created_date_time: ~datetime.datetime
9849    :ivar last_modified: The datetime when the topology was last modified.
9850    :vartype last_modified: ~datetime.datetime
9851    :param resources:
9852    :type resources: list[~azure.mgmt.network.v2018_04_01.models.TopologyResource]
9853    """
9854
9855    _validation = {
9856        'id': {'readonly': True},
9857        'created_date_time': {'readonly': True},
9858        'last_modified': {'readonly': True},
9859    }
9860
9861    _attribute_map = {
9862        'id': {'key': 'id', 'type': 'str'},
9863        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
9864        'last_modified': {'key': 'lastModified', 'type': 'iso-8601'},
9865        'resources': {'key': 'resources', 'type': '[TopologyResource]'},
9866    }
9867
9868    def __init__(
9869        self,
9870        *,
9871        resources: Optional[List["TopologyResource"]] = None,
9872        **kwargs
9873    ):
9874        super(Topology, self).__init__(**kwargs)
9875        self.id = None
9876        self.created_date_time = None
9877        self.last_modified = None
9878        self.resources = resources
9879
9880
9881class TopologyAssociation(msrest.serialization.Model):
9882    """Resources that have an association with the parent resource.
9883
9884    :param name: The name of the resource that is associated with the parent resource.
9885    :type name: str
9886    :param resource_id: The ID of the resource that is associated with the parent resource.
9887    :type resource_id: str
9888    :param association_type: The association type of the child resource to the parent resource.
9889     Possible values include: "Associated", "Contains".
9890    :type association_type: str or ~azure.mgmt.network.v2018_04_01.models.AssociationType
9891    """
9892
9893    _attribute_map = {
9894        'name': {'key': 'name', 'type': 'str'},
9895        'resource_id': {'key': 'resourceId', 'type': 'str'},
9896        'association_type': {'key': 'associationType', 'type': 'str'},
9897    }
9898
9899    def __init__(
9900        self,
9901        *,
9902        name: Optional[str] = None,
9903        resource_id: Optional[str] = None,
9904        association_type: Optional[Union[str, "AssociationType"]] = None,
9905        **kwargs
9906    ):
9907        super(TopologyAssociation, self).__init__(**kwargs)
9908        self.name = name
9909        self.resource_id = resource_id
9910        self.association_type = association_type
9911
9912
9913class TopologyParameters(msrest.serialization.Model):
9914    """Parameters that define the representation of topology.
9915
9916    :param target_resource_group_name: The name of the target resource group to perform topology
9917     on.
9918    :type target_resource_group_name: str
9919    :param target_virtual_network: The reference of the Virtual Network resource.
9920    :type target_virtual_network: ~azure.mgmt.network.v2018_04_01.models.SubResource
9921    :param target_subnet: The reference of the Subnet resource.
9922    :type target_subnet: ~azure.mgmt.network.v2018_04_01.models.SubResource
9923    """
9924
9925    _attribute_map = {
9926        'target_resource_group_name': {'key': 'targetResourceGroupName', 'type': 'str'},
9927        'target_virtual_network': {'key': 'targetVirtualNetwork', 'type': 'SubResource'},
9928        'target_subnet': {'key': 'targetSubnet', 'type': 'SubResource'},
9929    }
9930
9931    def __init__(
9932        self,
9933        *,
9934        target_resource_group_name: Optional[str] = None,
9935        target_virtual_network: Optional["SubResource"] = None,
9936        target_subnet: Optional["SubResource"] = None,
9937        **kwargs
9938    ):
9939        super(TopologyParameters, self).__init__(**kwargs)
9940        self.target_resource_group_name = target_resource_group_name
9941        self.target_virtual_network = target_virtual_network
9942        self.target_subnet = target_subnet
9943
9944
9945class TopologyResource(msrest.serialization.Model):
9946    """The network resource topology information for the given resource group.
9947
9948    :param name: Name of the resource.
9949    :type name: str
9950    :param id: ID of the resource.
9951    :type id: str
9952    :param location: Resource location.
9953    :type location: str
9954    :param associations: Holds the associations the resource has with other resources in the
9955     resource group.
9956    :type associations: list[~azure.mgmt.network.v2018_04_01.models.TopologyAssociation]
9957    """
9958
9959    _attribute_map = {
9960        'name': {'key': 'name', 'type': 'str'},
9961        'id': {'key': 'id', 'type': 'str'},
9962        'location': {'key': 'location', 'type': 'str'},
9963        'associations': {'key': 'associations', 'type': '[TopologyAssociation]'},
9964    }
9965
9966    def __init__(
9967        self,
9968        *,
9969        name: Optional[str] = None,
9970        id: Optional[str] = None,
9971        location: Optional[str] = None,
9972        associations: Optional[List["TopologyAssociation"]] = None,
9973        **kwargs
9974    ):
9975        super(TopologyResource, self).__init__(**kwargs)
9976        self.name = name
9977        self.id = id
9978        self.location = location
9979        self.associations = associations
9980
9981
9982class TrafficAnalyticsConfigurationProperties(msrest.serialization.Model):
9983    """Parameters that define the configuration of traffic analytics.
9984
9985    All required parameters must be populated in order to send to Azure.
9986
9987    :param enabled: Required. Flag to enable/disable traffic analytics.
9988    :type enabled: bool
9989    :param workspace_id: Required. The resource guid of the attached workspace.
9990    :type workspace_id: str
9991    :param workspace_region: Required. The location of the attached workspace.
9992    :type workspace_region: str
9993    :param workspace_resource_id: Required. Resource Id of the attached workspace.
9994    :type workspace_resource_id: str
9995    """
9996
9997    _validation = {
9998        'enabled': {'required': True},
9999        'workspace_id': {'required': True},
10000        'workspace_region': {'required': True},
10001        'workspace_resource_id': {'required': True},
10002    }
10003
10004    _attribute_map = {
10005        'enabled': {'key': 'enabled', 'type': 'bool'},
10006        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
10007        'workspace_region': {'key': 'workspaceRegion', 'type': 'str'},
10008        'workspace_resource_id': {'key': 'workspaceResourceId', 'type': 'str'},
10009    }
10010
10011    def __init__(
10012        self,
10013        *,
10014        enabled: bool,
10015        workspace_id: str,
10016        workspace_region: str,
10017        workspace_resource_id: str,
10018        **kwargs
10019    ):
10020        super(TrafficAnalyticsConfigurationProperties, self).__init__(**kwargs)
10021        self.enabled = enabled
10022        self.workspace_id = workspace_id
10023        self.workspace_region = workspace_region
10024        self.workspace_resource_id = workspace_resource_id
10025
10026
10027class TrafficAnalyticsProperties(msrest.serialization.Model):
10028    """Parameters that define the configuration of traffic analytics.
10029
10030    All required parameters must be populated in order to send to Azure.
10031
10032    :param network_watcher_flow_analytics_configuration: Required. Parameters that define the
10033     configuration of traffic analytics.
10034    :type network_watcher_flow_analytics_configuration:
10035     ~azure.mgmt.network.v2018_04_01.models.TrafficAnalyticsConfigurationProperties
10036    """
10037
10038    _validation = {
10039        'network_watcher_flow_analytics_configuration': {'required': True},
10040    }
10041
10042    _attribute_map = {
10043        'network_watcher_flow_analytics_configuration': {'key': 'networkWatcherFlowAnalyticsConfiguration', 'type': 'TrafficAnalyticsConfigurationProperties'},
10044    }
10045
10046    def __init__(
10047        self,
10048        *,
10049        network_watcher_flow_analytics_configuration: "TrafficAnalyticsConfigurationProperties",
10050        **kwargs
10051    ):
10052        super(TrafficAnalyticsProperties, self).__init__(**kwargs)
10053        self.network_watcher_flow_analytics_configuration = network_watcher_flow_analytics_configuration
10054
10055
10056class TroubleshootingDetails(msrest.serialization.Model):
10057    """Information gained from troubleshooting of specified resource.
10058
10059    :param id: The id of the get troubleshoot operation.
10060    :type id: str
10061    :param reason_type: Reason type of failure.
10062    :type reason_type: str
10063    :param summary: A summary of troubleshooting.
10064    :type summary: str
10065    :param detail: Details on troubleshooting results.
10066    :type detail: str
10067    :param recommended_actions: List of recommended actions.
10068    :type recommended_actions:
10069     list[~azure.mgmt.network.v2018_04_01.models.TroubleshootingRecommendedActions]
10070    """
10071
10072    _attribute_map = {
10073        'id': {'key': 'id', 'type': 'str'},
10074        'reason_type': {'key': 'reasonType', 'type': 'str'},
10075        'summary': {'key': 'summary', 'type': 'str'},
10076        'detail': {'key': 'detail', 'type': 'str'},
10077        'recommended_actions': {'key': 'recommendedActions', 'type': '[TroubleshootingRecommendedActions]'},
10078    }
10079
10080    def __init__(
10081        self,
10082        *,
10083        id: Optional[str] = None,
10084        reason_type: Optional[str] = None,
10085        summary: Optional[str] = None,
10086        detail: Optional[str] = None,
10087        recommended_actions: Optional[List["TroubleshootingRecommendedActions"]] = None,
10088        **kwargs
10089    ):
10090        super(TroubleshootingDetails, self).__init__(**kwargs)
10091        self.id = id
10092        self.reason_type = reason_type
10093        self.summary = summary
10094        self.detail = detail
10095        self.recommended_actions = recommended_actions
10096
10097
10098class TroubleshootingParameters(msrest.serialization.Model):
10099    """Parameters that define the resource to troubleshoot.
10100
10101    All required parameters must be populated in order to send to Azure.
10102
10103    :param target_resource_id: Required. The target resource to troubleshoot.
10104    :type target_resource_id: str
10105    :param storage_id: Required. The ID for the storage account to save the troubleshoot result.
10106    :type storage_id: str
10107    :param storage_path: Required. The path to the blob to save the troubleshoot result in.
10108    :type storage_path: str
10109    """
10110
10111    _validation = {
10112        'target_resource_id': {'required': True},
10113        'storage_id': {'required': True},
10114        'storage_path': {'required': True},
10115    }
10116
10117    _attribute_map = {
10118        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
10119        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
10120        'storage_path': {'key': 'properties.storagePath', 'type': 'str'},
10121    }
10122
10123    def __init__(
10124        self,
10125        *,
10126        target_resource_id: str,
10127        storage_id: str,
10128        storage_path: str,
10129        **kwargs
10130    ):
10131        super(TroubleshootingParameters, self).__init__(**kwargs)
10132        self.target_resource_id = target_resource_id
10133        self.storage_id = storage_id
10134        self.storage_path = storage_path
10135
10136
10137class TroubleshootingRecommendedActions(msrest.serialization.Model):
10138    """Recommended actions based on discovered issues.
10139
10140    :param action_id: ID of the recommended action.
10141    :type action_id: str
10142    :param action_text: Description of recommended actions.
10143    :type action_text: str
10144    :param action_uri: The uri linking to a documentation for the recommended troubleshooting
10145     actions.
10146    :type action_uri: str
10147    :param action_uri_text: The information from the URI for the recommended troubleshooting
10148     actions.
10149    :type action_uri_text: str
10150    """
10151
10152    _attribute_map = {
10153        'action_id': {'key': 'actionId', 'type': 'str'},
10154        'action_text': {'key': 'actionText', 'type': 'str'},
10155        'action_uri': {'key': 'actionUri', 'type': 'str'},
10156        'action_uri_text': {'key': 'actionUriText', 'type': 'str'},
10157    }
10158
10159    def __init__(
10160        self,
10161        *,
10162        action_id: Optional[str] = None,
10163        action_text: Optional[str] = None,
10164        action_uri: Optional[str] = None,
10165        action_uri_text: Optional[str] = None,
10166        **kwargs
10167    ):
10168        super(TroubleshootingRecommendedActions, self).__init__(**kwargs)
10169        self.action_id = action_id
10170        self.action_text = action_text
10171        self.action_uri = action_uri
10172        self.action_uri_text = action_uri_text
10173
10174
10175class TroubleshootingResult(msrest.serialization.Model):
10176    """Troubleshooting information gained from specified resource.
10177
10178    :param start_time: The start time of the troubleshooting.
10179    :type start_time: ~datetime.datetime
10180    :param end_time: The end time of the troubleshooting.
10181    :type end_time: ~datetime.datetime
10182    :param code: The result code of the troubleshooting.
10183    :type code: str
10184    :param results: Information from troubleshooting.
10185    :type results: list[~azure.mgmt.network.v2018_04_01.models.TroubleshootingDetails]
10186    """
10187
10188    _attribute_map = {
10189        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
10190        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
10191        'code': {'key': 'code', 'type': 'str'},
10192        'results': {'key': 'results', 'type': '[TroubleshootingDetails]'},
10193    }
10194
10195    def __init__(
10196        self,
10197        *,
10198        start_time: Optional[datetime.datetime] = None,
10199        end_time: Optional[datetime.datetime] = None,
10200        code: Optional[str] = None,
10201        results: Optional[List["TroubleshootingDetails"]] = None,
10202        **kwargs
10203    ):
10204        super(TroubleshootingResult, self).__init__(**kwargs)
10205        self.start_time = start_time
10206        self.end_time = end_time
10207        self.code = code
10208        self.results = results
10209
10210
10211class TunnelConnectionHealth(msrest.serialization.Model):
10212    """VirtualNetworkGatewayConnection properties.
10213
10214    Variables are only populated by the server, and will be ignored when sending a request.
10215
10216    :ivar tunnel: Tunnel name.
10217    :vartype tunnel: str
10218    :ivar connection_status: Virtual network Gateway connection status. Possible values include:
10219     "Unknown", "Connecting", "Connected", "NotConnected".
10220    :vartype connection_status: str or
10221     ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewayConnectionStatus
10222    :ivar ingress_bytes_transferred: The Ingress Bytes Transferred in this connection.
10223    :vartype ingress_bytes_transferred: long
10224    :ivar egress_bytes_transferred: The Egress Bytes Transferred in this connection.
10225    :vartype egress_bytes_transferred: long
10226    :ivar last_connection_established_utc_time: The time at which connection was established in Utc
10227     format.
10228    :vartype last_connection_established_utc_time: str
10229    """
10230
10231    _validation = {
10232        'tunnel': {'readonly': True},
10233        'connection_status': {'readonly': True},
10234        'ingress_bytes_transferred': {'readonly': True},
10235        'egress_bytes_transferred': {'readonly': True},
10236        'last_connection_established_utc_time': {'readonly': True},
10237    }
10238
10239    _attribute_map = {
10240        'tunnel': {'key': 'tunnel', 'type': 'str'},
10241        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
10242        'ingress_bytes_transferred': {'key': 'ingressBytesTransferred', 'type': 'long'},
10243        'egress_bytes_transferred': {'key': 'egressBytesTransferred', 'type': 'long'},
10244        'last_connection_established_utc_time': {'key': 'lastConnectionEstablishedUtcTime', 'type': 'str'},
10245    }
10246
10247    def __init__(
10248        self,
10249        **kwargs
10250    ):
10251        super(TunnelConnectionHealth, self).__init__(**kwargs)
10252        self.tunnel = None
10253        self.connection_status = None
10254        self.ingress_bytes_transferred = None
10255        self.egress_bytes_transferred = None
10256        self.last_connection_established_utc_time = None
10257
10258
10259class Usage(msrest.serialization.Model):
10260    """Describes network resource usage.
10261
10262    Variables are only populated by the server, and will be ignored when sending a request.
10263
10264    All required parameters must be populated in order to send to Azure.
10265
10266    :ivar id: Resource identifier.
10267    :vartype id: str
10268    :param unit: Required. An enum describing the unit of measurement. Possible values include:
10269     "Count".
10270    :type unit: str or ~azure.mgmt.network.v2018_04_01.models.UsageUnit
10271    :param current_value: Required. The current value of the usage.
10272    :type current_value: long
10273    :param limit: Required. The limit of usage.
10274    :type limit: long
10275    :param name: Required. The name of the type of usage.
10276    :type name: ~azure.mgmt.network.v2018_04_01.models.UsageName
10277    """
10278
10279    _validation = {
10280        'id': {'readonly': True},
10281        'unit': {'required': True},
10282        'current_value': {'required': True},
10283        'limit': {'required': True},
10284        'name': {'required': True},
10285    }
10286
10287    _attribute_map = {
10288        'id': {'key': 'id', 'type': 'str'},
10289        'unit': {'key': 'unit', 'type': 'str'},
10290        'current_value': {'key': 'currentValue', 'type': 'long'},
10291        'limit': {'key': 'limit', 'type': 'long'},
10292        'name': {'key': 'name', 'type': 'UsageName'},
10293    }
10294
10295    def __init__(
10296        self,
10297        *,
10298        unit: Union[str, "UsageUnit"],
10299        current_value: int,
10300        limit: int,
10301        name: "UsageName",
10302        **kwargs
10303    ):
10304        super(Usage, self).__init__(**kwargs)
10305        self.id = None
10306        self.unit = unit
10307        self.current_value = current_value
10308        self.limit = limit
10309        self.name = name
10310
10311
10312class UsageName(msrest.serialization.Model):
10313    """The usage names.
10314
10315    :param value: A string describing the resource name.
10316    :type value: str
10317    :param localized_value: A localized string describing the resource name.
10318    :type localized_value: str
10319    """
10320
10321    _attribute_map = {
10322        'value': {'key': 'value', 'type': 'str'},
10323        'localized_value': {'key': 'localizedValue', 'type': 'str'},
10324    }
10325
10326    def __init__(
10327        self,
10328        *,
10329        value: Optional[str] = None,
10330        localized_value: Optional[str] = None,
10331        **kwargs
10332    ):
10333        super(UsageName, self).__init__(**kwargs)
10334        self.value = value
10335        self.localized_value = localized_value
10336
10337
10338class UsagesListResult(msrest.serialization.Model):
10339    """The list usages operation response.
10340
10341    :param value: The list network resource usages.
10342    :type value: list[~azure.mgmt.network.v2018_04_01.models.Usage]
10343    :param next_link: URL to get the next set of results.
10344    :type next_link: str
10345    """
10346
10347    _attribute_map = {
10348        'value': {'key': 'value', 'type': '[Usage]'},
10349        'next_link': {'key': 'nextLink', 'type': 'str'},
10350    }
10351
10352    def __init__(
10353        self,
10354        *,
10355        value: Optional[List["Usage"]] = None,
10356        next_link: Optional[str] = None,
10357        **kwargs
10358    ):
10359        super(UsagesListResult, self).__init__(**kwargs)
10360        self.value = value
10361        self.next_link = next_link
10362
10363
10364class VerificationIPFlowParameters(msrest.serialization.Model):
10365    """Parameters that define the IP flow to be verified.
10366
10367    All required parameters must be populated in order to send to Azure.
10368
10369    :param target_resource_id: Required. The ID of the target resource to perform next-hop on.
10370    :type target_resource_id: str
10371    :param direction: Required. The direction of the packet represented as a 5-tuple. Possible
10372     values include: "Inbound", "Outbound".
10373    :type direction: str or ~azure.mgmt.network.v2018_04_01.models.Direction
10374    :param protocol: Required. Protocol to be verified on. Possible values include: "TCP", "UDP".
10375    :type protocol: str or ~azure.mgmt.network.v2018_04_01.models.IpFlowProtocol
10376    :param local_port: Required. The local port. Acceptable values are a single integer in the
10377     range (0-65535). Support for * for the source port, which depends on the direction.
10378    :type local_port: str
10379    :param remote_port: Required. The remote port. Acceptable values are a single integer in the
10380     range (0-65535). Support for * for the source port, which depends on the direction.
10381    :type remote_port: str
10382    :param local_ip_address: Required. The local IP address. Acceptable values are valid IPv4
10383     addresses.
10384    :type local_ip_address: str
10385    :param remote_ip_address: Required. The remote IP address. Acceptable values are valid IPv4
10386     addresses.
10387    :type remote_ip_address: str
10388    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
10389     enabled on any of them, then this parameter must be specified. Otherwise optional).
10390    :type target_nic_resource_id: str
10391    """
10392
10393    _validation = {
10394        'target_resource_id': {'required': True},
10395        'direction': {'required': True},
10396        'protocol': {'required': True},
10397        'local_port': {'required': True},
10398        'remote_port': {'required': True},
10399        'local_ip_address': {'required': True},
10400        'remote_ip_address': {'required': True},
10401    }
10402
10403    _attribute_map = {
10404        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
10405        'direction': {'key': 'direction', 'type': 'str'},
10406        'protocol': {'key': 'protocol', 'type': 'str'},
10407        'local_port': {'key': 'localPort', 'type': 'str'},
10408        'remote_port': {'key': 'remotePort', 'type': 'str'},
10409        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
10410        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
10411        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
10412    }
10413
10414    def __init__(
10415        self,
10416        *,
10417        target_resource_id: str,
10418        direction: Union[str, "Direction"],
10419        protocol: Union[str, "IpFlowProtocol"],
10420        local_port: str,
10421        remote_port: str,
10422        local_ip_address: str,
10423        remote_ip_address: str,
10424        target_nic_resource_id: Optional[str] = None,
10425        **kwargs
10426    ):
10427        super(VerificationIPFlowParameters, self).__init__(**kwargs)
10428        self.target_resource_id = target_resource_id
10429        self.direction = direction
10430        self.protocol = protocol
10431        self.local_port = local_port
10432        self.remote_port = remote_port
10433        self.local_ip_address = local_ip_address
10434        self.remote_ip_address = remote_ip_address
10435        self.target_nic_resource_id = target_nic_resource_id
10436
10437
10438class VerificationIPFlowResult(msrest.serialization.Model):
10439    """Results of IP flow verification on the target resource.
10440
10441    :param access: Indicates whether the traffic is allowed or denied. Possible values include:
10442     "Allow", "Deny".
10443    :type access: str or ~azure.mgmt.network.v2018_04_01.models.Access
10444    :param rule_name: Name of the rule. If input is not matched against any security rule, it is
10445     not displayed.
10446    :type rule_name: str
10447    """
10448
10449    _attribute_map = {
10450        'access': {'key': 'access', 'type': 'str'},
10451        'rule_name': {'key': 'ruleName', 'type': 'str'},
10452    }
10453
10454    def __init__(
10455        self,
10456        *,
10457        access: Optional[Union[str, "Access"]] = None,
10458        rule_name: Optional[str] = None,
10459        **kwargs
10460    ):
10461        super(VerificationIPFlowResult, self).__init__(**kwargs)
10462        self.access = access
10463        self.rule_name = rule_name
10464
10465
10466class VirtualHub(Resource):
10467    """VirtualHub Resource.
10468
10469    Variables are only populated by the server, and will be ignored when sending a request.
10470
10471    :param id: Resource ID.
10472    :type id: str
10473    :ivar name: Resource name.
10474    :vartype name: str
10475    :ivar type: Resource type.
10476    :vartype type: str
10477    :param location: Resource location.
10478    :type location: str
10479    :param tags: A set of tags. Resource tags.
10480    :type tags: dict[str, str]
10481    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
10482    :vartype etag: str
10483    :param virtual_wan: The VirtualWAN to which the VirtualHub belongs.
10484    :type virtual_wan: ~azure.mgmt.network.v2018_04_01.models.SubResource
10485    :param hub_virtual_network_connections: list of all vnet connections with this VirtualHub.
10486    :type hub_virtual_network_connections:
10487     list[~azure.mgmt.network.v2018_04_01.models.HubVirtualNetworkConnection]
10488    :param address_prefix: Address-prefix for this VirtualHub.
10489    :type address_prefix: str
10490    :param provisioning_state: The provisioning state of the resource. Possible values include:
10491     "Succeeded", "Updating", "Deleting", "Failed".
10492    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
10493    """
10494
10495    _validation = {
10496        'name': {'readonly': True},
10497        'type': {'readonly': True},
10498        'etag': {'readonly': True},
10499    }
10500
10501    _attribute_map = {
10502        'id': {'key': 'id', 'type': 'str'},
10503        'name': {'key': 'name', 'type': 'str'},
10504        'type': {'key': 'type', 'type': 'str'},
10505        'location': {'key': 'location', 'type': 'str'},
10506        'tags': {'key': 'tags', 'type': '{str}'},
10507        'etag': {'key': 'etag', 'type': 'str'},
10508        'virtual_wan': {'key': 'properties.virtualWan', 'type': 'SubResource'},
10509        'hub_virtual_network_connections': {'key': 'properties.hubVirtualNetworkConnections', 'type': '[HubVirtualNetworkConnection]'},
10510        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
10511        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10512    }
10513
10514    def __init__(
10515        self,
10516        *,
10517        id: Optional[str] = None,
10518        location: Optional[str] = None,
10519        tags: Optional[Dict[str, str]] = None,
10520        virtual_wan: Optional["SubResource"] = None,
10521        hub_virtual_network_connections: Optional[List["HubVirtualNetworkConnection"]] = None,
10522        address_prefix: Optional[str] = None,
10523        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
10524        **kwargs
10525    ):
10526        super(VirtualHub, self).__init__(id=id, location=location, tags=tags, **kwargs)
10527        self.etag = None
10528        self.virtual_wan = virtual_wan
10529        self.hub_virtual_network_connections = hub_virtual_network_connections
10530        self.address_prefix = address_prefix
10531        self.provisioning_state = provisioning_state
10532
10533
10534class VirtualNetwork(Resource):
10535    """Virtual Network resource.
10536
10537    Variables are only populated by the server, and will be ignored when sending a request.
10538
10539    :param id: Resource ID.
10540    :type id: str
10541    :ivar name: Resource name.
10542    :vartype name: str
10543    :ivar type: Resource type.
10544    :vartype type: str
10545    :param location: Resource location.
10546    :type location: str
10547    :param tags: A set of tags. Resource tags.
10548    :type tags: dict[str, str]
10549    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
10550    :type etag: str
10551    :param address_space: The AddressSpace that contains an array of IP address ranges that can be
10552     used by subnets.
10553    :type address_space: ~azure.mgmt.network.v2018_04_01.models.AddressSpace
10554    :param dhcp_options: The dhcpOptions that contains an array of DNS servers available to VMs
10555     deployed in the virtual network.
10556    :type dhcp_options: ~azure.mgmt.network.v2018_04_01.models.DhcpOptions
10557    :param subnets: A list of subnets in a Virtual Network.
10558    :type subnets: list[~azure.mgmt.network.v2018_04_01.models.Subnet]
10559    :param virtual_network_peerings: A list of peerings in a Virtual Network.
10560    :type virtual_network_peerings:
10561     list[~azure.mgmt.network.v2018_04_01.models.VirtualNetworkPeering]
10562    :param resource_guid: The resourceGuid property of the Virtual Network resource.
10563    :type resource_guid: str
10564    :param provisioning_state: The provisioning state of the PublicIP resource. Possible values
10565     are: 'Updating', 'Deleting', and 'Failed'.
10566    :type provisioning_state: str
10567    :param enable_ddos_protection: Indicates if DDoS protection is enabled for all the protected
10568     resources in the virtual network. It requires a DDoS protection plan associated with the
10569     resource.
10570    :type enable_ddos_protection: bool
10571    :param enable_vm_protection: Indicates if VM protection is enabled for all the subnets in the
10572     virtual network.
10573    :type enable_vm_protection: bool
10574    :param ddos_protection_plan: The DDoS protection plan associated with the virtual network.
10575    :type ddos_protection_plan: ~azure.mgmt.network.v2018_04_01.models.SubResource
10576    """
10577
10578    _validation = {
10579        'name': {'readonly': True},
10580        'type': {'readonly': True},
10581    }
10582
10583    _attribute_map = {
10584        'id': {'key': 'id', 'type': 'str'},
10585        'name': {'key': 'name', 'type': 'str'},
10586        'type': {'key': 'type', 'type': 'str'},
10587        'location': {'key': 'location', 'type': 'str'},
10588        'tags': {'key': 'tags', 'type': '{str}'},
10589        'etag': {'key': 'etag', 'type': 'str'},
10590        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
10591        'dhcp_options': {'key': 'properties.dhcpOptions', 'type': 'DhcpOptions'},
10592        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
10593        'virtual_network_peerings': {'key': 'properties.virtualNetworkPeerings', 'type': '[VirtualNetworkPeering]'},
10594        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
10595        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10596        'enable_ddos_protection': {'key': 'properties.enableDdosProtection', 'type': 'bool'},
10597        'enable_vm_protection': {'key': 'properties.enableVmProtection', 'type': 'bool'},
10598        'ddos_protection_plan': {'key': 'properties.ddosProtectionPlan', 'type': 'SubResource'},
10599    }
10600
10601    def __init__(
10602        self,
10603        *,
10604        id: Optional[str] = None,
10605        location: Optional[str] = None,
10606        tags: Optional[Dict[str, str]] = None,
10607        etag: Optional[str] = None,
10608        address_space: Optional["AddressSpace"] = None,
10609        dhcp_options: Optional["DhcpOptions"] = None,
10610        subnets: Optional[List["Subnet"]] = None,
10611        virtual_network_peerings: Optional[List["VirtualNetworkPeering"]] = None,
10612        resource_guid: Optional[str] = None,
10613        provisioning_state: Optional[str] = None,
10614        enable_ddos_protection: Optional[bool] = False,
10615        enable_vm_protection: Optional[bool] = False,
10616        ddos_protection_plan: Optional["SubResource"] = None,
10617        **kwargs
10618    ):
10619        super(VirtualNetwork, self).__init__(id=id, location=location, tags=tags, **kwargs)
10620        self.etag = etag
10621        self.address_space = address_space
10622        self.dhcp_options = dhcp_options
10623        self.subnets = subnets
10624        self.virtual_network_peerings = virtual_network_peerings
10625        self.resource_guid = resource_guid
10626        self.provisioning_state = provisioning_state
10627        self.enable_ddos_protection = enable_ddos_protection
10628        self.enable_vm_protection = enable_vm_protection
10629        self.ddos_protection_plan = ddos_protection_plan
10630
10631
10632class VirtualNetworkConnectionGatewayReference(msrest.serialization.Model):
10633    """A reference to VirtualNetworkGateway or LocalNetworkGateway resource.
10634
10635    All required parameters must be populated in order to send to Azure.
10636
10637    :param id: Required. The ID of VirtualNetworkGateway or LocalNetworkGateway resource.
10638    :type id: str
10639    """
10640
10641    _validation = {
10642        'id': {'required': True},
10643    }
10644
10645    _attribute_map = {
10646        'id': {'key': 'id', 'type': 'str'},
10647    }
10648
10649    def __init__(
10650        self,
10651        *,
10652        id: str,
10653        **kwargs
10654    ):
10655        super(VirtualNetworkConnectionGatewayReference, self).__init__(**kwargs)
10656        self.id = id
10657
10658
10659class VirtualNetworkGateway(Resource):
10660    """A common class for general resource information.
10661
10662    Variables are only populated by the server, and will be ignored when sending a request.
10663
10664    :param id: Resource ID.
10665    :type id: str
10666    :ivar name: Resource name.
10667    :vartype name: str
10668    :ivar type: Resource type.
10669    :vartype type: str
10670    :param location: Resource location.
10671    :type location: str
10672    :param tags: A set of tags. Resource tags.
10673    :type tags: dict[str, str]
10674    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
10675    :type etag: str
10676    :param ip_configurations: IP configurations for virtual network gateway.
10677    :type ip_configurations:
10678     list[~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewayIPConfiguration]
10679    :param gateway_type: The type of this virtual network gateway. Possible values are: 'Vpn' and
10680     'ExpressRoute'. Possible values include: "Vpn", "ExpressRoute".
10681    :type gateway_type: str or ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewayType
10682    :param vpn_type: The type of this virtual network gateway. Possible values are: 'PolicyBased'
10683     and 'RouteBased'. Possible values include: "PolicyBased", "RouteBased".
10684    :type vpn_type: str or ~azure.mgmt.network.v2018_04_01.models.VpnType
10685    :param enable_bgp: Whether BGP is enabled for this virtual network gateway or not.
10686    :type enable_bgp: bool
10687    :param active: ActiveActive flag.
10688    :type active: bool
10689    :param gateway_default_site: The reference of the LocalNetworkGateway resource which represents
10690     local network site having default routes. Assign Null value in case of removing existing
10691     default site setting.
10692    :type gateway_default_site: ~azure.mgmt.network.v2018_04_01.models.SubResource
10693    :param sku: The reference of the VirtualNetworkGatewaySku resource which represents the SKU
10694     selected for Virtual network gateway.
10695    :type sku: ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewaySku
10696    :param vpn_client_configuration: The reference of the VpnClientConfiguration resource which
10697     represents the P2S VpnClient configurations.
10698    :type vpn_client_configuration: ~azure.mgmt.network.v2018_04_01.models.VpnClientConfiguration
10699    :param bgp_settings: Virtual network gateway's BGP speaker settings.
10700    :type bgp_settings: ~azure.mgmt.network.v2018_04_01.models.BgpSettings
10701    :param resource_guid: The resource GUID property of the VirtualNetworkGateway resource.
10702    :type resource_guid: str
10703    :ivar provisioning_state: The provisioning state of the VirtualNetworkGateway resource.
10704     Possible values are: 'Updating', 'Deleting', and 'Failed'.
10705    :vartype provisioning_state: str
10706    """
10707
10708    _validation = {
10709        'name': {'readonly': True},
10710        'type': {'readonly': True},
10711        'provisioning_state': {'readonly': True},
10712    }
10713
10714    _attribute_map = {
10715        'id': {'key': 'id', 'type': 'str'},
10716        'name': {'key': 'name', 'type': 'str'},
10717        'type': {'key': 'type', 'type': 'str'},
10718        'location': {'key': 'location', 'type': 'str'},
10719        'tags': {'key': 'tags', 'type': '{str}'},
10720        'etag': {'key': 'etag', 'type': 'str'},
10721        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[VirtualNetworkGatewayIPConfiguration]'},
10722        'gateway_type': {'key': 'properties.gatewayType', 'type': 'str'},
10723        'vpn_type': {'key': 'properties.vpnType', 'type': 'str'},
10724        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
10725        'active': {'key': 'properties.activeActive', 'type': 'bool'},
10726        'gateway_default_site': {'key': 'properties.gatewayDefaultSite', 'type': 'SubResource'},
10727        'sku': {'key': 'properties.sku', 'type': 'VirtualNetworkGatewaySku'},
10728        'vpn_client_configuration': {'key': 'properties.vpnClientConfiguration', 'type': 'VpnClientConfiguration'},
10729        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
10730        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
10731        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10732    }
10733
10734    def __init__(
10735        self,
10736        *,
10737        id: Optional[str] = None,
10738        location: Optional[str] = None,
10739        tags: Optional[Dict[str, str]] = None,
10740        etag: Optional[str] = None,
10741        ip_configurations: Optional[List["VirtualNetworkGatewayIPConfiguration"]] = None,
10742        gateway_type: Optional[Union[str, "VirtualNetworkGatewayType"]] = None,
10743        vpn_type: Optional[Union[str, "VpnType"]] = None,
10744        enable_bgp: Optional[bool] = None,
10745        active: Optional[bool] = None,
10746        gateway_default_site: Optional["SubResource"] = None,
10747        sku: Optional["VirtualNetworkGatewaySku"] = None,
10748        vpn_client_configuration: Optional["VpnClientConfiguration"] = None,
10749        bgp_settings: Optional["BgpSettings"] = None,
10750        resource_guid: Optional[str] = None,
10751        **kwargs
10752    ):
10753        super(VirtualNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
10754        self.etag = etag
10755        self.ip_configurations = ip_configurations
10756        self.gateway_type = gateway_type
10757        self.vpn_type = vpn_type
10758        self.enable_bgp = enable_bgp
10759        self.active = active
10760        self.gateway_default_site = gateway_default_site
10761        self.sku = sku
10762        self.vpn_client_configuration = vpn_client_configuration
10763        self.bgp_settings = bgp_settings
10764        self.resource_guid = resource_guid
10765        self.provisioning_state = None
10766
10767
10768class VirtualNetworkGatewayConnection(Resource):
10769    """A common class for general resource information.
10770
10771    Variables are only populated by the server, and will be ignored when sending a request.
10772
10773    All required parameters must be populated in order to send to Azure.
10774
10775    :param id: Resource ID.
10776    :type id: str
10777    :ivar name: Resource name.
10778    :vartype name: str
10779    :ivar type: Resource type.
10780    :vartype type: str
10781    :param location: Resource location.
10782    :type location: str
10783    :param tags: A set of tags. Resource tags.
10784    :type tags: dict[str, str]
10785    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
10786    :type etag: str
10787    :param authorization_key: The authorizationKey.
10788    :type authorization_key: str
10789    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
10790    :type virtual_network_gateway1: ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGateway
10791    :param virtual_network_gateway2: The reference to virtual network gateway resource.
10792    :type virtual_network_gateway2: ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGateway
10793    :param local_network_gateway2: The reference to local network gateway resource.
10794    :type local_network_gateway2: ~azure.mgmt.network.v2018_04_01.models.LocalNetworkGateway
10795    :param connection_type: Required. Gateway connection type. Possible values are:
10796     'IPsec','Vnet2Vnet','ExpressRoute', and 'VPNClient. Possible values include: "IPsec",
10797     "Vnet2Vnet", "ExpressRoute", "VPNClient".
10798    :type connection_type: str or
10799     ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewayConnectionType
10800    :param routing_weight: The routing weight.
10801    :type routing_weight: int
10802    :param shared_key: The IPSec shared key.
10803    :type shared_key: str
10804    :ivar connection_status: Virtual network Gateway connection status. Possible values are
10805     'Unknown', 'Connecting', 'Connected' and 'NotConnected'. Possible values include: "Unknown",
10806     "Connecting", "Connected", "NotConnected".
10807    :vartype connection_status: str or
10808     ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewayConnectionStatus
10809    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
10810    :vartype tunnel_connection_status:
10811     list[~azure.mgmt.network.v2018_04_01.models.TunnelConnectionHealth]
10812    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
10813    :vartype egress_bytes_transferred: long
10814    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
10815    :vartype ingress_bytes_transferred: long
10816    :param peer: The reference to peerings resource.
10817    :type peer: ~azure.mgmt.network.v2018_04_01.models.SubResource
10818    :param enable_bgp: EnableBgp flag.
10819    :type enable_bgp: bool
10820    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
10821    :type use_policy_based_traffic_selectors: bool
10822    :param ipsec_policies: The IPSec Policies to be considered by this connection.
10823    :type ipsec_policies: list[~azure.mgmt.network.v2018_04_01.models.IpsecPolicy]
10824    :param resource_guid: The resource GUID property of the VirtualNetworkGatewayConnection
10825     resource.
10826    :type resource_guid: str
10827    :ivar provisioning_state: The provisioning state of the VirtualNetworkGatewayConnection
10828     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
10829    :vartype provisioning_state: str
10830    """
10831
10832    _validation = {
10833        'name': {'readonly': True},
10834        'type': {'readonly': True},
10835        'virtual_network_gateway1': {'required': True},
10836        'connection_type': {'required': True},
10837        'connection_status': {'readonly': True},
10838        'tunnel_connection_status': {'readonly': True},
10839        'egress_bytes_transferred': {'readonly': True},
10840        'ingress_bytes_transferred': {'readonly': True},
10841        'provisioning_state': {'readonly': True},
10842    }
10843
10844    _attribute_map = {
10845        'id': {'key': 'id', 'type': 'str'},
10846        'name': {'key': 'name', 'type': 'str'},
10847        'type': {'key': 'type', 'type': 'str'},
10848        'location': {'key': 'location', 'type': 'str'},
10849        'tags': {'key': 'tags', 'type': '{str}'},
10850        'etag': {'key': 'etag', 'type': 'str'},
10851        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
10852        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkGateway'},
10853        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkGateway'},
10854        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'LocalNetworkGateway'},
10855        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
10856        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
10857        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
10858        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
10859        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
10860        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
10861        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
10862        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
10863        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
10864        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
10865        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
10866        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
10867        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10868    }
10869
10870    def __init__(
10871        self,
10872        *,
10873        virtual_network_gateway1: "VirtualNetworkGateway",
10874        connection_type: Union[str, "VirtualNetworkGatewayConnectionType"],
10875        id: Optional[str] = None,
10876        location: Optional[str] = None,
10877        tags: Optional[Dict[str, str]] = None,
10878        etag: Optional[str] = None,
10879        authorization_key: Optional[str] = None,
10880        virtual_network_gateway2: Optional["VirtualNetworkGateway"] = None,
10881        local_network_gateway2: Optional["LocalNetworkGateway"] = None,
10882        routing_weight: Optional[int] = None,
10883        shared_key: Optional[str] = None,
10884        peer: Optional["SubResource"] = None,
10885        enable_bgp: Optional[bool] = None,
10886        use_policy_based_traffic_selectors: Optional[bool] = None,
10887        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
10888        resource_guid: Optional[str] = None,
10889        **kwargs
10890    ):
10891        super(VirtualNetworkGatewayConnection, self).__init__(id=id, location=location, tags=tags, **kwargs)
10892        self.etag = etag
10893        self.authorization_key = authorization_key
10894        self.virtual_network_gateway1 = virtual_network_gateway1
10895        self.virtual_network_gateway2 = virtual_network_gateway2
10896        self.local_network_gateway2 = local_network_gateway2
10897        self.connection_type = connection_type
10898        self.routing_weight = routing_weight
10899        self.shared_key = shared_key
10900        self.connection_status = None
10901        self.tunnel_connection_status = None
10902        self.egress_bytes_transferred = None
10903        self.ingress_bytes_transferred = None
10904        self.peer = peer
10905        self.enable_bgp = enable_bgp
10906        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
10907        self.ipsec_policies = ipsec_policies
10908        self.resource_guid = resource_guid
10909        self.provisioning_state = None
10910
10911
10912class VirtualNetworkGatewayConnectionListEntity(Resource):
10913    """A common class for general resource information.
10914
10915    Variables are only populated by the server, and will be ignored when sending a request.
10916
10917    All required parameters must be populated in order to send to Azure.
10918
10919    :param id: Resource ID.
10920    :type id: str
10921    :ivar name: Resource name.
10922    :vartype name: str
10923    :ivar type: Resource type.
10924    :vartype type: str
10925    :param location: Resource location.
10926    :type location: str
10927    :param tags: A set of tags. Resource tags.
10928    :type tags: dict[str, str]
10929    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
10930    :type etag: str
10931    :param authorization_key: The authorizationKey.
10932    :type authorization_key: str
10933    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
10934    :type virtual_network_gateway1:
10935     ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkConnectionGatewayReference
10936    :param virtual_network_gateway2: The reference to virtual network gateway resource.
10937    :type virtual_network_gateway2:
10938     ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkConnectionGatewayReference
10939    :param local_network_gateway2: The reference to local network gateway resource.
10940    :type local_network_gateway2:
10941     ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkConnectionGatewayReference
10942    :param connection_type: Required. Gateway connection type. Possible values are:
10943     'IPsec','Vnet2Vnet','ExpressRoute', and 'VPNClient. Possible values include: "IPsec",
10944     "Vnet2Vnet", "ExpressRoute", "VPNClient".
10945    :type connection_type: str or
10946     ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewayConnectionType
10947    :param routing_weight: The routing weight.
10948    :type routing_weight: int
10949    :param shared_key: The IPSec shared key.
10950    :type shared_key: str
10951    :ivar connection_status: Virtual network Gateway connection status. Possible values are
10952     'Unknown', 'Connecting', 'Connected' and 'NotConnected'. Possible values include: "Unknown",
10953     "Connecting", "Connected", "NotConnected".
10954    :vartype connection_status: str or
10955     ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewayConnectionStatus
10956    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
10957    :vartype tunnel_connection_status:
10958     list[~azure.mgmt.network.v2018_04_01.models.TunnelConnectionHealth]
10959    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
10960    :vartype egress_bytes_transferred: long
10961    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
10962    :vartype ingress_bytes_transferred: long
10963    :param peer: The reference to peerings resource.
10964    :type peer: ~azure.mgmt.network.v2018_04_01.models.SubResource
10965    :param enable_bgp: EnableBgp flag.
10966    :type enable_bgp: bool
10967    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
10968    :type use_policy_based_traffic_selectors: bool
10969    :param ipsec_policies: The IPSec Policies to be considered by this connection.
10970    :type ipsec_policies: list[~azure.mgmt.network.v2018_04_01.models.IpsecPolicy]
10971    :param resource_guid: The resource GUID property of the VirtualNetworkGatewayConnection
10972     resource.
10973    :type resource_guid: str
10974    :ivar provisioning_state: The provisioning state of the VirtualNetworkGatewayConnection
10975     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
10976    :vartype provisioning_state: str
10977    """
10978
10979    _validation = {
10980        'name': {'readonly': True},
10981        'type': {'readonly': True},
10982        'virtual_network_gateway1': {'required': True},
10983        'connection_type': {'required': True},
10984        'connection_status': {'readonly': True},
10985        'tunnel_connection_status': {'readonly': True},
10986        'egress_bytes_transferred': {'readonly': True},
10987        'ingress_bytes_transferred': {'readonly': True},
10988        'provisioning_state': {'readonly': True},
10989    }
10990
10991    _attribute_map = {
10992        'id': {'key': 'id', 'type': 'str'},
10993        'name': {'key': 'name', 'type': 'str'},
10994        'type': {'key': 'type', 'type': 'str'},
10995        'location': {'key': 'location', 'type': 'str'},
10996        'tags': {'key': 'tags', 'type': '{str}'},
10997        'etag': {'key': 'etag', 'type': 'str'},
10998        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
10999        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkConnectionGatewayReference'},
11000        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
11001        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
11002        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
11003        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
11004        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
11005        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
11006        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
11007        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
11008        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
11009        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
11010        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
11011        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
11012        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
11013        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
11014        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11015    }
11016
11017    def __init__(
11018        self,
11019        *,
11020        virtual_network_gateway1: "VirtualNetworkConnectionGatewayReference",
11021        connection_type: Union[str, "VirtualNetworkGatewayConnectionType"],
11022        id: Optional[str] = None,
11023        location: Optional[str] = None,
11024        tags: Optional[Dict[str, str]] = None,
11025        etag: Optional[str] = None,
11026        authorization_key: Optional[str] = None,
11027        virtual_network_gateway2: Optional["VirtualNetworkConnectionGatewayReference"] = None,
11028        local_network_gateway2: Optional["VirtualNetworkConnectionGatewayReference"] = None,
11029        routing_weight: Optional[int] = None,
11030        shared_key: Optional[str] = None,
11031        peer: Optional["SubResource"] = None,
11032        enable_bgp: Optional[bool] = None,
11033        use_policy_based_traffic_selectors: Optional[bool] = None,
11034        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
11035        resource_guid: Optional[str] = None,
11036        **kwargs
11037    ):
11038        super(VirtualNetworkGatewayConnectionListEntity, self).__init__(id=id, location=location, tags=tags, **kwargs)
11039        self.etag = etag
11040        self.authorization_key = authorization_key
11041        self.virtual_network_gateway1 = virtual_network_gateway1
11042        self.virtual_network_gateway2 = virtual_network_gateway2
11043        self.local_network_gateway2 = local_network_gateway2
11044        self.connection_type = connection_type
11045        self.routing_weight = routing_weight
11046        self.shared_key = shared_key
11047        self.connection_status = None
11048        self.tunnel_connection_status = None
11049        self.egress_bytes_transferred = None
11050        self.ingress_bytes_transferred = None
11051        self.peer = peer
11052        self.enable_bgp = enable_bgp
11053        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
11054        self.ipsec_policies = ipsec_policies
11055        self.resource_guid = resource_guid
11056        self.provisioning_state = None
11057
11058
11059class VirtualNetworkGatewayConnectionListResult(msrest.serialization.Model):
11060    """Response for the ListVirtualNetworkGatewayConnections API service call.
11061
11062    Variables are only populated by the server, and will be ignored when sending a request.
11063
11064    :param value: Gets a list of VirtualNetworkGatewayConnection resources that exists in a
11065     resource group.
11066    :type value: list[~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewayConnection]
11067    :ivar next_link: The URL to get the next set of results.
11068    :vartype next_link: str
11069    """
11070
11071    _validation = {
11072        'next_link': {'readonly': True},
11073    }
11074
11075    _attribute_map = {
11076        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnection]'},
11077        'next_link': {'key': 'nextLink', 'type': 'str'},
11078    }
11079
11080    def __init__(
11081        self,
11082        *,
11083        value: Optional[List["VirtualNetworkGatewayConnection"]] = None,
11084        **kwargs
11085    ):
11086        super(VirtualNetworkGatewayConnectionListResult, self).__init__(**kwargs)
11087        self.value = value
11088        self.next_link = None
11089
11090
11091class VirtualNetworkGatewayIPConfiguration(SubResource):
11092    """IP configuration for virtual network gateway.
11093
11094    Variables are only populated by the server, and will be ignored when sending a request.
11095
11096    :param id: Resource ID.
11097    :type id: str
11098    :param name: The name of the resource that is unique within a resource group. This name can be
11099     used to access the resource.
11100    :type name: str
11101    :param etag: A unique read-only string that changes whenever the resource is updated.
11102    :type etag: str
11103    :param private_ip_allocation_method: The private IP allocation method. Possible values are:
11104     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
11105    :type private_ip_allocation_method: str or
11106     ~azure.mgmt.network.v2018_04_01.models.IPAllocationMethod
11107    :param subnet: The reference of the subnet resource.
11108    :type subnet: ~azure.mgmt.network.v2018_04_01.models.SubResource
11109    :param public_ip_address: The reference of the public IP resource.
11110    :type public_ip_address: ~azure.mgmt.network.v2018_04_01.models.SubResource
11111    :ivar provisioning_state: The provisioning state of the public IP resource. Possible values
11112     are: 'Updating', 'Deleting', and 'Failed'.
11113    :vartype provisioning_state: str
11114    """
11115
11116    _validation = {
11117        'provisioning_state': {'readonly': True},
11118    }
11119
11120    _attribute_map = {
11121        'id': {'key': 'id', 'type': 'str'},
11122        'name': {'key': 'name', 'type': 'str'},
11123        'etag': {'key': 'etag', 'type': 'str'},
11124        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
11125        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
11126        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
11127        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11128    }
11129
11130    def __init__(
11131        self,
11132        *,
11133        id: Optional[str] = None,
11134        name: Optional[str] = None,
11135        etag: Optional[str] = None,
11136        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
11137        subnet: Optional["SubResource"] = None,
11138        public_ip_address: Optional["SubResource"] = None,
11139        **kwargs
11140    ):
11141        super(VirtualNetworkGatewayIPConfiguration, self).__init__(id=id, **kwargs)
11142        self.name = name
11143        self.etag = etag
11144        self.private_ip_allocation_method = private_ip_allocation_method
11145        self.subnet = subnet
11146        self.public_ip_address = public_ip_address
11147        self.provisioning_state = None
11148
11149
11150class VirtualNetworkGatewayListConnectionsResult(msrest.serialization.Model):
11151    """Response for the VirtualNetworkGatewayListConnections API service call.
11152
11153    Variables are only populated by the server, and will be ignored when sending a request.
11154
11155    :param value: Gets a list of VirtualNetworkGatewayConnection resources that exists in a
11156     resource group.
11157    :type value:
11158     list[~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewayConnectionListEntity]
11159    :ivar next_link: The URL to get the next set of results.
11160    :vartype next_link: str
11161    """
11162
11163    _validation = {
11164        'next_link': {'readonly': True},
11165    }
11166
11167    _attribute_map = {
11168        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnectionListEntity]'},
11169        'next_link': {'key': 'nextLink', 'type': 'str'},
11170    }
11171
11172    def __init__(
11173        self,
11174        *,
11175        value: Optional[List["VirtualNetworkGatewayConnectionListEntity"]] = None,
11176        **kwargs
11177    ):
11178        super(VirtualNetworkGatewayListConnectionsResult, self).__init__(**kwargs)
11179        self.value = value
11180        self.next_link = None
11181
11182
11183class VirtualNetworkGatewayListResult(msrest.serialization.Model):
11184    """Response for the ListVirtualNetworkGateways API service call.
11185
11186    Variables are only populated by the server, and will be ignored when sending a request.
11187
11188    :param value: Gets a list of VirtualNetworkGateway resources that exists in a resource group.
11189    :type value: list[~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGateway]
11190    :ivar next_link: The URL to get the next set of results.
11191    :vartype next_link: str
11192    """
11193
11194    _validation = {
11195        'next_link': {'readonly': True},
11196    }
11197
11198    _attribute_map = {
11199        'value': {'key': 'value', 'type': '[VirtualNetworkGateway]'},
11200        'next_link': {'key': 'nextLink', 'type': 'str'},
11201    }
11202
11203    def __init__(
11204        self,
11205        *,
11206        value: Optional[List["VirtualNetworkGateway"]] = None,
11207        **kwargs
11208    ):
11209        super(VirtualNetworkGatewayListResult, self).__init__(**kwargs)
11210        self.value = value
11211        self.next_link = None
11212
11213
11214class VirtualNetworkGatewaySku(msrest.serialization.Model):
11215    """VirtualNetworkGatewaySku details.
11216
11217    :param name: Gateway SKU name. Possible values include: "Basic", "HighPerformance", "Standard",
11218     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw1AZ", "VpnGw2AZ", "VpnGw3AZ",
11219     "ErGw1AZ", "ErGw2AZ", "ErGw3AZ".
11220    :type name: str or ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewaySkuName
11221    :param tier: Gateway SKU tier. Possible values include: "Basic", "HighPerformance", "Standard",
11222     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw1AZ", "VpnGw2AZ", "VpnGw3AZ",
11223     "ErGw1AZ", "ErGw2AZ", "ErGw3AZ".
11224    :type tier: str or ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkGatewaySkuTier
11225    :param capacity: The capacity.
11226    :type capacity: int
11227    """
11228
11229    _attribute_map = {
11230        'name': {'key': 'name', 'type': 'str'},
11231        'tier': {'key': 'tier', 'type': 'str'},
11232        'capacity': {'key': 'capacity', 'type': 'int'},
11233    }
11234
11235    def __init__(
11236        self,
11237        *,
11238        name: Optional[Union[str, "VirtualNetworkGatewaySkuName"]] = None,
11239        tier: Optional[Union[str, "VirtualNetworkGatewaySkuTier"]] = None,
11240        capacity: Optional[int] = None,
11241        **kwargs
11242    ):
11243        super(VirtualNetworkGatewaySku, self).__init__(**kwargs)
11244        self.name = name
11245        self.tier = tier
11246        self.capacity = capacity
11247
11248
11249class VirtualNetworkListResult(msrest.serialization.Model):
11250    """Response for the ListVirtualNetworks API service call.
11251
11252    :param value: Gets a list of VirtualNetwork resources in a resource group.
11253    :type value: list[~azure.mgmt.network.v2018_04_01.models.VirtualNetwork]
11254    :param next_link: The URL to get the next set of results.
11255    :type next_link: str
11256    """
11257
11258    _attribute_map = {
11259        'value': {'key': 'value', 'type': '[VirtualNetwork]'},
11260        'next_link': {'key': 'nextLink', 'type': 'str'},
11261    }
11262
11263    def __init__(
11264        self,
11265        *,
11266        value: Optional[List["VirtualNetwork"]] = None,
11267        next_link: Optional[str] = None,
11268        **kwargs
11269    ):
11270        super(VirtualNetworkListResult, self).__init__(**kwargs)
11271        self.value = value
11272        self.next_link = next_link
11273
11274
11275class VirtualNetworkListUsageResult(msrest.serialization.Model):
11276    """Response for the virtual networks GetUsage API service call.
11277
11278    Variables are only populated by the server, and will be ignored when sending a request.
11279
11280    :ivar value: VirtualNetwork usage stats.
11281    :vartype value: list[~azure.mgmt.network.v2018_04_01.models.VirtualNetworkUsage]
11282    :param next_link: The URL to get the next set of results.
11283    :type next_link: str
11284    """
11285
11286    _validation = {
11287        'value': {'readonly': True},
11288    }
11289
11290    _attribute_map = {
11291        'value': {'key': 'value', 'type': '[VirtualNetworkUsage]'},
11292        'next_link': {'key': 'nextLink', 'type': 'str'},
11293    }
11294
11295    def __init__(
11296        self,
11297        *,
11298        next_link: Optional[str] = None,
11299        **kwargs
11300    ):
11301        super(VirtualNetworkListUsageResult, self).__init__(**kwargs)
11302        self.value = None
11303        self.next_link = next_link
11304
11305
11306class VirtualNetworkPeering(SubResource):
11307    """Peerings in a virtual network resource.
11308
11309    :param id: Resource ID.
11310    :type id: str
11311    :param name: The name of the resource that is unique within a resource group. This name can be
11312     used to access the resource.
11313    :type name: str
11314    :param etag: A unique read-only string that changes whenever the resource is updated.
11315    :type etag: str
11316    :param allow_virtual_network_access: Whether the VMs in the linked virtual network space would
11317     be able to access all the VMs in local Virtual network space.
11318    :type allow_virtual_network_access: bool
11319    :param allow_forwarded_traffic: Whether the forwarded traffic from the VMs in the remote
11320     virtual network will be allowed/disallowed.
11321    :type allow_forwarded_traffic: bool
11322    :param allow_gateway_transit: If gateway links can be used in remote virtual networking to link
11323     to this virtual network.
11324    :type allow_gateway_transit: bool
11325    :param use_remote_gateways: If remote gateways can be used on this virtual network. If the flag
11326     is set to true, and allowGatewayTransit on remote peering is also true, virtual network will
11327     use gateways of remote virtual network for transit. Only one peering can have this flag set to
11328     true. This flag cannot be set if virtual network already has a gateway.
11329    :type use_remote_gateways: bool
11330    :param remote_virtual_network: The reference of the remote virtual network. The remote virtual
11331     network can be in the same or different region (preview). See here to register for the preview
11332     and learn more
11333     (https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-create-peering).
11334    :type remote_virtual_network: ~azure.mgmt.network.v2018_04_01.models.SubResource
11335    :param remote_address_space: The reference of the remote virtual network address space.
11336    :type remote_address_space: ~azure.mgmt.network.v2018_04_01.models.AddressSpace
11337    :param peering_state: The status of the virtual network peering. Possible values are
11338     'Initiated', 'Connected', and 'Disconnected'. Possible values include: "Initiated",
11339     "Connected", "Disconnected".
11340    :type peering_state: str or ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkPeeringState
11341    :param provisioning_state: The provisioning state of the resource.
11342    :type provisioning_state: str
11343    """
11344
11345    _attribute_map = {
11346        'id': {'key': 'id', 'type': 'str'},
11347        'name': {'key': 'name', 'type': 'str'},
11348        'etag': {'key': 'etag', 'type': 'str'},
11349        'allow_virtual_network_access': {'key': 'properties.allowVirtualNetworkAccess', 'type': 'bool'},
11350        'allow_forwarded_traffic': {'key': 'properties.allowForwardedTraffic', 'type': 'bool'},
11351        'allow_gateway_transit': {'key': 'properties.allowGatewayTransit', 'type': 'bool'},
11352        'use_remote_gateways': {'key': 'properties.useRemoteGateways', 'type': 'bool'},
11353        'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'},
11354        'remote_address_space': {'key': 'properties.remoteAddressSpace', 'type': 'AddressSpace'},
11355        'peering_state': {'key': 'properties.peeringState', 'type': 'str'},
11356        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11357    }
11358
11359    def __init__(
11360        self,
11361        *,
11362        id: Optional[str] = None,
11363        name: Optional[str] = None,
11364        etag: Optional[str] = None,
11365        allow_virtual_network_access: Optional[bool] = None,
11366        allow_forwarded_traffic: Optional[bool] = None,
11367        allow_gateway_transit: Optional[bool] = None,
11368        use_remote_gateways: Optional[bool] = None,
11369        remote_virtual_network: Optional["SubResource"] = None,
11370        remote_address_space: Optional["AddressSpace"] = None,
11371        peering_state: Optional[Union[str, "VirtualNetworkPeeringState"]] = None,
11372        provisioning_state: Optional[str] = None,
11373        **kwargs
11374    ):
11375        super(VirtualNetworkPeering, self).__init__(id=id, **kwargs)
11376        self.name = name
11377        self.etag = etag
11378        self.allow_virtual_network_access = allow_virtual_network_access
11379        self.allow_forwarded_traffic = allow_forwarded_traffic
11380        self.allow_gateway_transit = allow_gateway_transit
11381        self.use_remote_gateways = use_remote_gateways
11382        self.remote_virtual_network = remote_virtual_network
11383        self.remote_address_space = remote_address_space
11384        self.peering_state = peering_state
11385        self.provisioning_state = provisioning_state
11386
11387
11388class VirtualNetworkPeeringListResult(msrest.serialization.Model):
11389    """Response for ListSubnets API service call. Retrieves all subnets that belong to a virtual network.
11390
11391    :param value: The peerings in a virtual network.
11392    :type value: list[~azure.mgmt.network.v2018_04_01.models.VirtualNetworkPeering]
11393    :param next_link: The URL to get the next set of results.
11394    :type next_link: str
11395    """
11396
11397    _attribute_map = {
11398        'value': {'key': 'value', 'type': '[VirtualNetworkPeering]'},
11399        'next_link': {'key': 'nextLink', 'type': 'str'},
11400    }
11401
11402    def __init__(
11403        self,
11404        *,
11405        value: Optional[List["VirtualNetworkPeering"]] = None,
11406        next_link: Optional[str] = None,
11407        **kwargs
11408    ):
11409        super(VirtualNetworkPeeringListResult, self).__init__(**kwargs)
11410        self.value = value
11411        self.next_link = next_link
11412
11413
11414class VirtualNetworkUsage(msrest.serialization.Model):
11415    """Usage details for subnet.
11416
11417    Variables are only populated by the server, and will be ignored when sending a request.
11418
11419    :ivar current_value: Indicates number of IPs used from the Subnet.
11420    :vartype current_value: float
11421    :ivar id: Subnet identifier.
11422    :vartype id: str
11423    :ivar limit: Indicates the size of the subnet.
11424    :vartype limit: float
11425    :ivar name: The name containing common and localized value for usage.
11426    :vartype name: ~azure.mgmt.network.v2018_04_01.models.VirtualNetworkUsageName
11427    :ivar unit: Usage units. Returns 'Count'.
11428    :vartype unit: str
11429    """
11430
11431    _validation = {
11432        'current_value': {'readonly': True},
11433        'id': {'readonly': True},
11434        'limit': {'readonly': True},
11435        'name': {'readonly': True},
11436        'unit': {'readonly': True},
11437    }
11438
11439    _attribute_map = {
11440        'current_value': {'key': 'currentValue', 'type': 'float'},
11441        'id': {'key': 'id', 'type': 'str'},
11442        'limit': {'key': 'limit', 'type': 'float'},
11443        'name': {'key': 'name', 'type': 'VirtualNetworkUsageName'},
11444        'unit': {'key': 'unit', 'type': 'str'},
11445    }
11446
11447    def __init__(
11448        self,
11449        **kwargs
11450    ):
11451        super(VirtualNetworkUsage, self).__init__(**kwargs)
11452        self.current_value = None
11453        self.id = None
11454        self.limit = None
11455        self.name = None
11456        self.unit = None
11457
11458
11459class VirtualNetworkUsageName(msrest.serialization.Model):
11460    """Usage strings container.
11461
11462    Variables are only populated by the server, and will be ignored when sending a request.
11463
11464    :ivar localized_value: Localized subnet size and usage string.
11465    :vartype localized_value: str
11466    :ivar value: Subnet size and usage string.
11467    :vartype value: str
11468    """
11469
11470    _validation = {
11471        'localized_value': {'readonly': True},
11472        'value': {'readonly': True},
11473    }
11474
11475    _attribute_map = {
11476        'localized_value': {'key': 'localizedValue', 'type': 'str'},
11477        'value': {'key': 'value', 'type': 'str'},
11478    }
11479
11480    def __init__(
11481        self,
11482        **kwargs
11483    ):
11484        super(VirtualNetworkUsageName, self).__init__(**kwargs)
11485        self.localized_value = None
11486        self.value = None
11487
11488
11489class VirtualWAN(Resource):
11490    """VirtualWAN Resource.
11491
11492    Variables are only populated by the server, and will be ignored when sending a request.
11493
11494    :param id: Resource ID.
11495    :type id: str
11496    :ivar name: Resource name.
11497    :vartype name: str
11498    :ivar type: Resource type.
11499    :vartype type: str
11500    :param location: Resource location.
11501    :type location: str
11502    :param tags: A set of tags. Resource tags.
11503    :type tags: dict[str, str]
11504    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
11505    :vartype etag: str
11506    :param disable_vpn_encryption: Vpn encryption to be disabled or not.
11507    :type disable_vpn_encryption: bool
11508    :ivar virtual_hubs: List of VirtualHubs in the VirtualWAN.
11509    :vartype virtual_hubs: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
11510    :ivar vpn_sites:
11511    :vartype vpn_sites: list[~azure.mgmt.network.v2018_04_01.models.SubResource]
11512    :param provisioning_state: The provisioning state of the resource. Possible values include:
11513     "Succeeded", "Updating", "Deleting", "Failed".
11514    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
11515    """
11516
11517    _validation = {
11518        'name': {'readonly': True},
11519        'type': {'readonly': True},
11520        'etag': {'readonly': True},
11521        'virtual_hubs': {'readonly': True},
11522        'vpn_sites': {'readonly': True},
11523    }
11524
11525    _attribute_map = {
11526        'id': {'key': 'id', 'type': 'str'},
11527        'name': {'key': 'name', 'type': 'str'},
11528        'type': {'key': 'type', 'type': 'str'},
11529        'location': {'key': 'location', 'type': 'str'},
11530        'tags': {'key': 'tags', 'type': '{str}'},
11531        'etag': {'key': 'etag', 'type': 'str'},
11532        'disable_vpn_encryption': {'key': 'properties.disableVpnEncryption', 'type': 'bool'},
11533        'virtual_hubs': {'key': 'properties.virtualHubs', 'type': '[SubResource]'},
11534        'vpn_sites': {'key': 'properties.vpnSites', 'type': '[SubResource]'},
11535        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11536    }
11537
11538    def __init__(
11539        self,
11540        *,
11541        id: Optional[str] = None,
11542        location: Optional[str] = None,
11543        tags: Optional[Dict[str, str]] = None,
11544        disable_vpn_encryption: Optional[bool] = None,
11545        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
11546        **kwargs
11547    ):
11548        super(VirtualWAN, self).__init__(id=id, location=location, tags=tags, **kwargs)
11549        self.etag = None
11550        self.disable_vpn_encryption = disable_vpn_encryption
11551        self.virtual_hubs = None
11552        self.vpn_sites = None
11553        self.provisioning_state = provisioning_state
11554
11555
11556class VpnClientConfiguration(msrest.serialization.Model):
11557    """VpnClientConfiguration for P2S client.
11558
11559    :param vpn_client_address_pool: The reference of the address space resource which represents
11560     Address space for P2S VpnClient.
11561    :type vpn_client_address_pool: ~azure.mgmt.network.v2018_04_01.models.AddressSpace
11562    :param vpn_client_root_certificates: VpnClientRootCertificate for virtual network gateway.
11563    :type vpn_client_root_certificates:
11564     list[~azure.mgmt.network.v2018_04_01.models.VpnClientRootCertificate]
11565    :param vpn_client_revoked_certificates: VpnClientRevokedCertificate for Virtual network
11566     gateway.
11567    :type vpn_client_revoked_certificates:
11568     list[~azure.mgmt.network.v2018_04_01.models.VpnClientRevokedCertificate]
11569    :param vpn_client_protocols: VpnClientProtocols for Virtual network gateway.
11570    :type vpn_client_protocols: list[str or
11571     ~azure.mgmt.network.v2018_04_01.models.VpnClientProtocol]
11572    :param vpn_client_ipsec_policies: VpnClientIpsecPolicies for virtual network gateway P2S
11573     client.
11574    :type vpn_client_ipsec_policies: list[~azure.mgmt.network.v2018_04_01.models.IpsecPolicy]
11575    :param radius_server_address: The radius server address property of the VirtualNetworkGateway
11576     resource for vpn client connection.
11577    :type radius_server_address: str
11578    :param radius_server_secret: The radius secret property of the VirtualNetworkGateway resource
11579     for vpn client connection.
11580    :type radius_server_secret: str
11581    """
11582
11583    _attribute_map = {
11584        'vpn_client_address_pool': {'key': 'vpnClientAddressPool', 'type': 'AddressSpace'},
11585        'vpn_client_root_certificates': {'key': 'vpnClientRootCertificates', 'type': '[VpnClientRootCertificate]'},
11586        'vpn_client_revoked_certificates': {'key': 'vpnClientRevokedCertificates', 'type': '[VpnClientRevokedCertificate]'},
11587        'vpn_client_protocols': {'key': 'vpnClientProtocols', 'type': '[str]'},
11588        'vpn_client_ipsec_policies': {'key': 'vpnClientIpsecPolicies', 'type': '[IpsecPolicy]'},
11589        'radius_server_address': {'key': 'radiusServerAddress', 'type': 'str'},
11590        'radius_server_secret': {'key': 'radiusServerSecret', 'type': 'str'},
11591    }
11592
11593    def __init__(
11594        self,
11595        *,
11596        vpn_client_address_pool: Optional["AddressSpace"] = None,
11597        vpn_client_root_certificates: Optional[List["VpnClientRootCertificate"]] = None,
11598        vpn_client_revoked_certificates: Optional[List["VpnClientRevokedCertificate"]] = None,
11599        vpn_client_protocols: Optional[List[Union[str, "VpnClientProtocol"]]] = None,
11600        vpn_client_ipsec_policies: Optional[List["IpsecPolicy"]] = None,
11601        radius_server_address: Optional[str] = None,
11602        radius_server_secret: Optional[str] = None,
11603        **kwargs
11604    ):
11605        super(VpnClientConfiguration, self).__init__(**kwargs)
11606        self.vpn_client_address_pool = vpn_client_address_pool
11607        self.vpn_client_root_certificates = vpn_client_root_certificates
11608        self.vpn_client_revoked_certificates = vpn_client_revoked_certificates
11609        self.vpn_client_protocols = vpn_client_protocols
11610        self.vpn_client_ipsec_policies = vpn_client_ipsec_policies
11611        self.radius_server_address = radius_server_address
11612        self.radius_server_secret = radius_server_secret
11613
11614
11615class VpnClientIPsecParameters(msrest.serialization.Model):
11616    """An IPSec parameters for a virtual network gateway P2S connection.
11617
11618    All required parameters must be populated in order to send to Azure.
11619
11620    :param sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode
11621     or Phase 2 SA) lifetime in seconds for P2S client.
11622    :type sa_life_time_seconds: int
11623    :param sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode
11624     or Phase 2 SA) payload size in KB for P2S client..
11625    :type sa_data_size_kilobytes: int
11626    :param ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible
11627     values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192",
11628     "GCMAES256".
11629    :type ipsec_encryption: str or ~azure.mgmt.network.v2018_04_01.models.IpsecEncryption
11630    :param ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values
11631     include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256".
11632    :type ipsec_integrity: str or ~azure.mgmt.network.v2018_04_01.models.IpsecIntegrity
11633    :param ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values
11634     include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128".
11635    :type ike_encryption: str or ~azure.mgmt.network.v2018_04_01.models.IkeEncryption
11636    :param ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values
11637     include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128".
11638    :type ike_integrity: str or ~azure.mgmt.network.v2018_04_01.models.IkeIntegrity
11639    :param dh_group: Required. The DH Groups used in IKE Phase 1 for initial SA. Possible values
11640     include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384",
11641     "DHGroup24".
11642    :type dh_group: str or ~azure.mgmt.network.v2018_04_01.models.DhGroup
11643    :param pfs_group: Required. The Pfs Groups used in IKE Phase 2 for new child SA. Possible
11644     values include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14",
11645     "PFSMM".
11646    :type pfs_group: str or ~azure.mgmt.network.v2018_04_01.models.PfsGroup
11647    """
11648
11649    _validation = {
11650        'sa_life_time_seconds': {'required': True},
11651        'sa_data_size_kilobytes': {'required': True},
11652        'ipsec_encryption': {'required': True},
11653        'ipsec_integrity': {'required': True},
11654        'ike_encryption': {'required': True},
11655        'ike_integrity': {'required': True},
11656        'dh_group': {'required': True},
11657        'pfs_group': {'required': True},
11658    }
11659
11660    _attribute_map = {
11661        'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'},
11662        'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'},
11663        'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'},
11664        'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'},
11665        'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'},
11666        'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'},
11667        'dh_group': {'key': 'dhGroup', 'type': 'str'},
11668        'pfs_group': {'key': 'pfsGroup', 'type': 'str'},
11669    }
11670
11671    def __init__(
11672        self,
11673        *,
11674        sa_life_time_seconds: int,
11675        sa_data_size_kilobytes: int,
11676        ipsec_encryption: Union[str, "IpsecEncryption"],
11677        ipsec_integrity: Union[str, "IpsecIntegrity"],
11678        ike_encryption: Union[str, "IkeEncryption"],
11679        ike_integrity: Union[str, "IkeIntegrity"],
11680        dh_group: Union[str, "DhGroup"],
11681        pfs_group: Union[str, "PfsGroup"],
11682        **kwargs
11683    ):
11684        super(VpnClientIPsecParameters, self).__init__(**kwargs)
11685        self.sa_life_time_seconds = sa_life_time_seconds
11686        self.sa_data_size_kilobytes = sa_data_size_kilobytes
11687        self.ipsec_encryption = ipsec_encryption
11688        self.ipsec_integrity = ipsec_integrity
11689        self.ike_encryption = ike_encryption
11690        self.ike_integrity = ike_integrity
11691        self.dh_group = dh_group
11692        self.pfs_group = pfs_group
11693
11694
11695class VpnClientParameters(msrest.serialization.Model):
11696    """Vpn Client Parameters for package generation.
11697
11698    :param processor_architecture: VPN client Processor Architecture. Possible values are: 'AMD64'
11699     and 'X86'. Possible values include: "Amd64", "X86".
11700    :type processor_architecture: str or
11701     ~azure.mgmt.network.v2018_04_01.models.ProcessorArchitecture
11702    :param authentication_method: VPN client Authentication Method. Possible values are: 'EAPTLS'
11703     and 'EAPMSCHAPv2'. Possible values include: "EAPTLS", "EAPMSCHAPv2".
11704    :type authentication_method: str or ~azure.mgmt.network.v2018_04_01.models.AuthenticationMethod
11705    :param radius_server_auth_certificate: The public certificate data for the radius server
11706     authentication certificate as a Base-64 encoded string. Required only if external radius
11707     authentication has been configured with EAPTLS authentication.
11708    :type radius_server_auth_certificate: str
11709    :param client_root_certificates: A list of client root certificates public certificate data
11710     encoded as Base-64 strings. Optional parameter for external radius based authentication with
11711     EAPTLS.
11712    :type client_root_certificates: list[str]
11713    """
11714
11715    _attribute_map = {
11716        'processor_architecture': {'key': 'processorArchitecture', 'type': 'str'},
11717        'authentication_method': {'key': 'authenticationMethod', 'type': 'str'},
11718        'radius_server_auth_certificate': {'key': 'radiusServerAuthCertificate', 'type': 'str'},
11719        'client_root_certificates': {'key': 'clientRootCertificates', 'type': '[str]'},
11720    }
11721
11722    def __init__(
11723        self,
11724        *,
11725        processor_architecture: Optional[Union[str, "ProcessorArchitecture"]] = None,
11726        authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None,
11727        radius_server_auth_certificate: Optional[str] = None,
11728        client_root_certificates: Optional[List[str]] = None,
11729        **kwargs
11730    ):
11731        super(VpnClientParameters, self).__init__(**kwargs)
11732        self.processor_architecture = processor_architecture
11733        self.authentication_method = authentication_method
11734        self.radius_server_auth_certificate = radius_server_auth_certificate
11735        self.client_root_certificates = client_root_certificates
11736
11737
11738class VpnClientRevokedCertificate(SubResource):
11739    """VPN client revoked certificate of virtual network gateway.
11740
11741    Variables are only populated by the server, and will be ignored when sending a request.
11742
11743    :param id: Resource ID.
11744    :type id: str
11745    :param name: The name of the resource that is unique within a resource group. This name can be
11746     used to access the resource.
11747    :type name: str
11748    :param etag: A unique read-only string that changes whenever the resource is updated.
11749    :type etag: str
11750    :param thumbprint: The revoked VPN client certificate thumbprint.
11751    :type thumbprint: str
11752    :ivar provisioning_state: The provisioning state of the VPN client revoked certificate
11753     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
11754    :vartype provisioning_state: str
11755    """
11756
11757    _validation = {
11758        'provisioning_state': {'readonly': True},
11759    }
11760
11761    _attribute_map = {
11762        'id': {'key': 'id', 'type': 'str'},
11763        'name': {'key': 'name', 'type': 'str'},
11764        'etag': {'key': 'etag', 'type': 'str'},
11765        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
11766        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11767    }
11768
11769    def __init__(
11770        self,
11771        *,
11772        id: Optional[str] = None,
11773        name: Optional[str] = None,
11774        etag: Optional[str] = None,
11775        thumbprint: Optional[str] = None,
11776        **kwargs
11777    ):
11778        super(VpnClientRevokedCertificate, self).__init__(id=id, **kwargs)
11779        self.name = name
11780        self.etag = etag
11781        self.thumbprint = thumbprint
11782        self.provisioning_state = None
11783
11784
11785class VpnClientRootCertificate(SubResource):
11786    """VPN client root certificate of virtual network gateway.
11787
11788    Variables are only populated by the server, and will be ignored when sending a request.
11789
11790    All required parameters must be populated in order to send to Azure.
11791
11792    :param id: Resource ID.
11793    :type id: str
11794    :param name: The name of the resource that is unique within a resource group. This name can be
11795     used to access the resource.
11796    :type name: str
11797    :param etag: A unique read-only string that changes whenever the resource is updated.
11798    :type etag: str
11799    :param public_cert_data: Required. The certificate public data.
11800    :type public_cert_data: str
11801    :ivar provisioning_state: The provisioning state of the VPN client root certificate resource.
11802     Possible values are: 'Updating', 'Deleting', and 'Failed'.
11803    :vartype provisioning_state: str
11804    """
11805
11806    _validation = {
11807        'public_cert_data': {'required': True},
11808        'provisioning_state': {'readonly': True},
11809    }
11810
11811    _attribute_map = {
11812        'id': {'key': 'id', 'type': 'str'},
11813        'name': {'key': 'name', 'type': 'str'},
11814        'etag': {'key': 'etag', 'type': 'str'},
11815        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
11816        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11817    }
11818
11819    def __init__(
11820        self,
11821        *,
11822        public_cert_data: str,
11823        id: Optional[str] = None,
11824        name: Optional[str] = None,
11825        etag: Optional[str] = None,
11826        **kwargs
11827    ):
11828        super(VpnClientRootCertificate, self).__init__(id=id, **kwargs)
11829        self.name = name
11830        self.etag = etag
11831        self.public_cert_data = public_cert_data
11832        self.provisioning_state = None
11833
11834
11835class VpnConnection(SubResource):
11836    """VpnConnection Resource.
11837
11838    Variables are only populated by the server, and will be ignored when sending a request.
11839
11840    :param id: Resource ID.
11841    :type id: str
11842    :param name: The name of the resource that is unique within a resource group. This name can be
11843     used to access the resource.
11844    :type name: str
11845    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
11846    :vartype etag: str
11847    :param remote_vpn_site: Id of the connected vpn site.
11848    :type remote_vpn_site: ~azure.mgmt.network.v2018_04_01.models.SubResource
11849    :param routing_weight: routing weight for vpn connection.
11850    :type routing_weight: int
11851    :ivar connection_status: The connection status. Possible values include: "Unknown",
11852     "Connecting", "Connected", "NotConnected".
11853    :vartype connection_status: str or ~azure.mgmt.network.v2018_04_01.models.VpnConnectionStatus
11854    :ivar ingress_bytes_transferred: Ingress bytes transferred.
11855    :vartype ingress_bytes_transferred: long
11856    :ivar egress_bytes_transferred: Egress bytes transferred.
11857    :vartype egress_bytes_transferred: long
11858    :ivar connection_bandwidth: Expected bandwidth in MBPS.
11859    :vartype connection_bandwidth: int
11860    :param shared_key: SharedKey for the vpn connection.
11861    :type shared_key: str
11862    :param enable_bgp: EnableBgp flag.
11863    :type enable_bgp: bool
11864    :param ipsec_policies: The IPSec Policies to be considered by this connection.
11865    :type ipsec_policies: list[~azure.mgmt.network.v2018_04_01.models.IpsecPolicy]
11866    :param provisioning_state: The provisioning state of the resource. Possible values include:
11867     "Succeeded", "Updating", "Deleting", "Failed".
11868    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
11869    """
11870
11871    _validation = {
11872        'etag': {'readonly': True},
11873        'connection_status': {'readonly': True},
11874        'ingress_bytes_transferred': {'readonly': True},
11875        'egress_bytes_transferred': {'readonly': True},
11876        'connection_bandwidth': {'readonly': True},
11877    }
11878
11879    _attribute_map = {
11880        'id': {'key': 'id', 'type': 'str'},
11881        'name': {'key': 'name', 'type': 'str'},
11882        'etag': {'key': 'etag', 'type': 'str'},
11883        'remote_vpn_site': {'key': 'properties.remoteVpnSite', 'type': 'SubResource'},
11884        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
11885        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
11886        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
11887        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
11888        'connection_bandwidth': {'key': 'properties.connectionBandwidth', 'type': 'int'},
11889        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
11890        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
11891        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
11892        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11893    }
11894
11895    def __init__(
11896        self,
11897        *,
11898        id: Optional[str] = None,
11899        name: Optional[str] = None,
11900        remote_vpn_site: Optional["SubResource"] = None,
11901        routing_weight: Optional[int] = None,
11902        shared_key: Optional[str] = None,
11903        enable_bgp: Optional[bool] = None,
11904        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
11905        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
11906        **kwargs
11907    ):
11908        super(VpnConnection, self).__init__(id=id, **kwargs)
11909        self.name = name
11910        self.etag = None
11911        self.remote_vpn_site = remote_vpn_site
11912        self.routing_weight = routing_weight
11913        self.connection_status = None
11914        self.ingress_bytes_transferred = None
11915        self.egress_bytes_transferred = None
11916        self.connection_bandwidth = None
11917        self.shared_key = shared_key
11918        self.enable_bgp = enable_bgp
11919        self.ipsec_policies = ipsec_policies
11920        self.provisioning_state = provisioning_state
11921
11922
11923class VpnDeviceScriptParameters(msrest.serialization.Model):
11924    """Vpn device configuration script generation parameters.
11925
11926    :param vendor: The vendor for the vpn device.
11927    :type vendor: str
11928    :param device_family: The device family for the vpn device.
11929    :type device_family: str
11930    :param firmware_version: The firmware version for the vpn device.
11931    :type firmware_version: str
11932    """
11933
11934    _attribute_map = {
11935        'vendor': {'key': 'vendor', 'type': 'str'},
11936        'device_family': {'key': 'deviceFamily', 'type': 'str'},
11937        'firmware_version': {'key': 'firmwareVersion', 'type': 'str'},
11938    }
11939
11940    def __init__(
11941        self,
11942        *,
11943        vendor: Optional[str] = None,
11944        device_family: Optional[str] = None,
11945        firmware_version: Optional[str] = None,
11946        **kwargs
11947    ):
11948        super(VpnDeviceScriptParameters, self).__init__(**kwargs)
11949        self.vendor = vendor
11950        self.device_family = device_family
11951        self.firmware_version = firmware_version
11952
11953
11954class VpnGateway(Resource):
11955    """VpnGateway Resource.
11956
11957    Variables are only populated by the server, and will be ignored when sending a request.
11958
11959    :param id: Resource ID.
11960    :type id: str
11961    :ivar name: Resource name.
11962    :vartype name: str
11963    :ivar type: Resource type.
11964    :vartype type: str
11965    :param location: Resource location.
11966    :type location: str
11967    :param tags: A set of tags. Resource tags.
11968    :type tags: dict[str, str]
11969    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
11970    :vartype etag: str
11971    :param virtual_hub: The VirtualHub to which the gateway belongs.
11972    :type virtual_hub: ~azure.mgmt.network.v2018_04_01.models.SubResource
11973    :param connections: list of all vpn connections to the gateway.
11974    :type connections: list[~azure.mgmt.network.v2018_04_01.models.VpnConnection]
11975    :param bgp_settings: Local network gateway's BGP speaker settings.
11976    :type bgp_settings: ~azure.mgmt.network.v2018_04_01.models.BgpSettings
11977    :param provisioning_state: The provisioning state of the resource. Possible values include:
11978     "Succeeded", "Updating", "Deleting", "Failed".
11979    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
11980    :param policies: The policies applied to this vpn gateway.
11981    :type policies: ~azure.mgmt.network.v2018_04_01.models.Policies
11982    """
11983
11984    _validation = {
11985        'name': {'readonly': True},
11986        'type': {'readonly': True},
11987        'etag': {'readonly': True},
11988    }
11989
11990    _attribute_map = {
11991        'id': {'key': 'id', 'type': 'str'},
11992        'name': {'key': 'name', 'type': 'str'},
11993        'type': {'key': 'type', 'type': 'str'},
11994        'location': {'key': 'location', 'type': 'str'},
11995        'tags': {'key': 'tags', 'type': '{str}'},
11996        'etag': {'key': 'etag', 'type': 'str'},
11997        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
11998        'connections': {'key': 'properties.connections', 'type': '[VpnConnection]'},
11999        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
12000        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
12001        'policies': {'key': 'properties.policies', 'type': 'Policies'},
12002    }
12003
12004    def __init__(
12005        self,
12006        *,
12007        id: Optional[str] = None,
12008        location: Optional[str] = None,
12009        tags: Optional[Dict[str, str]] = None,
12010        virtual_hub: Optional["SubResource"] = None,
12011        connections: Optional[List["VpnConnection"]] = None,
12012        bgp_settings: Optional["BgpSettings"] = None,
12013        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
12014        policies: Optional["Policies"] = None,
12015        **kwargs
12016    ):
12017        super(VpnGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
12018        self.etag = None
12019        self.virtual_hub = virtual_hub
12020        self.connections = connections
12021        self.bgp_settings = bgp_settings
12022        self.provisioning_state = provisioning_state
12023        self.policies = policies
12024
12025
12026class VpnSite(Resource):
12027    """VpnSite Resource.
12028
12029    Variables are only populated by the server, and will be ignored when sending a request.
12030
12031    :param id: Resource ID.
12032    :type id: str
12033    :ivar name: Resource name.
12034    :vartype name: str
12035    :ivar type: Resource type.
12036    :vartype type: str
12037    :param location: Resource location.
12038    :type location: str
12039    :param tags: A set of tags. Resource tags.
12040    :type tags: dict[str, str]
12041    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
12042    :vartype etag: str
12043    :param virtual_wan: The VirtualWAN to which the vpnSite belongs.
12044    :type virtual_wan: ~azure.mgmt.network.v2018_04_01.models.SubResource
12045    :param device_properties: The device properties.
12046    :type device_properties: ~azure.mgmt.network.v2018_04_01.models.DeviceProperties
12047    :param ip_address: The ip-address for the vpn-site.
12048    :type ip_address: str
12049    :param site_key: The key for vpn-site that can be used for connections.
12050    :type site_key: str
12051    :param address_space: The AddressSpace that contains an array of IP address ranges.
12052    :type address_space: ~azure.mgmt.network.v2018_04_01.models.AddressSpace
12053    :param bgp_properties: The set of bgp properties.
12054    :type bgp_properties: ~azure.mgmt.network.v2018_04_01.models.BgpSettings
12055    :param provisioning_state: The provisioning state of the resource. Possible values include:
12056     "Succeeded", "Updating", "Deleting", "Failed".
12057    :type provisioning_state: str or ~azure.mgmt.network.v2018_04_01.models.ProvisioningState
12058    """
12059
12060    _validation = {
12061        'name': {'readonly': True},
12062        'type': {'readonly': True},
12063        'etag': {'readonly': True},
12064    }
12065
12066    _attribute_map = {
12067        'id': {'key': 'id', 'type': 'str'},
12068        'name': {'key': 'name', 'type': 'str'},
12069        'type': {'key': 'type', 'type': 'str'},
12070        'location': {'key': 'location', 'type': 'str'},
12071        'tags': {'key': 'tags', 'type': '{str}'},
12072        'etag': {'key': 'etag', 'type': 'str'},
12073        'virtual_wan': {'key': 'properties.virtualWAN', 'type': 'SubResource'},
12074        'device_properties': {'key': 'properties.deviceProperties', 'type': 'DeviceProperties'},
12075        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
12076        'site_key': {'key': 'properties.siteKey', 'type': 'str'},
12077        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
12078        'bgp_properties': {'key': 'properties.bgpProperties', 'type': 'BgpSettings'},
12079        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
12080    }
12081
12082    def __init__(
12083        self,
12084        *,
12085        id: Optional[str] = None,
12086        location: Optional[str] = None,
12087        tags: Optional[Dict[str, str]] = None,
12088        virtual_wan: Optional["SubResource"] = None,
12089        device_properties: Optional["DeviceProperties"] = None,
12090        ip_address: Optional[str] = None,
12091        site_key: Optional[str] = None,
12092        address_space: Optional["AddressSpace"] = None,
12093        bgp_properties: Optional["BgpSettings"] = None,
12094        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
12095        **kwargs
12096    ):
12097        super(VpnSite, self).__init__(id=id, location=location, tags=tags, **kwargs)
12098        self.etag = None
12099        self.virtual_wan = virtual_wan
12100        self.device_properties = device_properties
12101        self.ip_address = ip_address
12102        self.site_key = site_key
12103        self.address_space = address_space
12104        self.bgp_properties = bgp_properties
12105        self.provisioning_state = provisioning_state
12106
12107
12108class VpnSiteId(msrest.serialization.Model):
12109    """VpnSite Resource.
12110
12111    Variables are only populated by the server, and will be ignored when sending a request.
12112
12113    :ivar vpn_site: The resource-uri of the vpn-site for which config is to be fetched.
12114    :vartype vpn_site: str
12115    """
12116
12117    _validation = {
12118        'vpn_site': {'readonly': True},
12119    }
12120
12121    _attribute_map = {
12122        'vpn_site': {'key': 'vpnSite', 'type': 'str'},
12123    }
12124
12125    def __init__(
12126        self,
12127        **kwargs
12128    ):
12129        super(VpnSiteId, self).__init__(**kwargs)
12130        self.vpn_site = None
12131