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
12import msrest.serialization
13
14from ._network_management_client_enums import *
15
16
17class AddressSpace(msrest.serialization.Model):
18    """AddressSpace contains an array of IP address ranges that can be used by subnets of the virtual network.
19
20    :param address_prefixes: A list of address blocks reserved for this virtual network in CIDR
21     notation.
22    :type address_prefixes: list[str]
23    """
24
25    _attribute_map = {
26        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
27    }
28
29    def __init__(
30        self,
31        *,
32        address_prefixes: Optional[List[str]] = None,
33        **kwargs
34    ):
35        super(AddressSpace, self).__init__(**kwargs)
36        self.address_prefixes = address_prefixes
37
38
39class Resource(msrest.serialization.Model):
40    """Common resource representation.
41
42    Variables are only populated by the server, and will be ignored when sending a request.
43
44    :param id: Resource ID.
45    :type id: str
46    :ivar name: Resource name.
47    :vartype name: str
48    :ivar type: Resource type.
49    :vartype type: str
50    :param location: Resource location.
51    :type location: str
52    :param tags: A set of tags. Resource tags.
53    :type tags: dict[str, str]
54    """
55
56    _validation = {
57        'name': {'readonly': True},
58        'type': {'readonly': True},
59    }
60
61    _attribute_map = {
62        'id': {'key': 'id', 'type': 'str'},
63        'name': {'key': 'name', 'type': 'str'},
64        'type': {'key': 'type', 'type': 'str'},
65        'location': {'key': 'location', 'type': 'str'},
66        'tags': {'key': 'tags', 'type': '{str}'},
67    }
68
69    def __init__(
70        self,
71        *,
72        id: Optional[str] = None,
73        location: Optional[str] = None,
74        tags: Optional[Dict[str, str]] = None,
75        **kwargs
76    ):
77        super(Resource, self).__init__(**kwargs)
78        self.id = id
79        self.name = None
80        self.type = None
81        self.location = location
82        self.tags = tags
83
84
85class ApplicationGateway(Resource):
86    """Application gateway resource.
87
88    Variables are only populated by the server, and will be ignored when sending a request.
89
90    :param id: Resource ID.
91    :type id: str
92    :ivar name: Resource name.
93    :vartype name: str
94    :ivar type: Resource type.
95    :vartype type: str
96    :param location: Resource location.
97    :type location: str
98    :param tags: A set of tags. Resource tags.
99    :type tags: dict[str, str]
100    :param etag: A unique read-only string that changes whenever the resource is updated.
101    :type etag: str
102    :param sku: SKU of the application gateway resource.
103    :type sku: ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySku
104    :param ssl_policy: SSL policy of the application gateway resource.
105    :type ssl_policy: ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslPolicy
106    :ivar operational_state: Operational state of the application gateway resource. Possible values
107     include: "Stopped", "Starting", "Running", "Stopping".
108    :vartype operational_state: str or
109     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayOperationalState
110    :param gateway_ip_configurations: Subnets of application the gateway resource.
111    :type gateway_ip_configurations:
112     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayIPConfiguration]
113    :param authentication_certificates: Authentication certificates of the application gateway
114     resource.
115    :type authentication_certificates:
116     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayAuthenticationCertificate]
117    :param ssl_certificates: SSL certificates of the application gateway resource.
118    :type ssl_certificates:
119     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslCertificate]
120    :param frontend_ip_configurations: Frontend IP addresses of the application gateway resource.
121    :type frontend_ip_configurations:
122     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayFrontendIPConfiguration]
123    :param frontend_ports: Frontend ports of the application gateway resource.
124    :type frontend_ports:
125     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayFrontendPort]
126    :param probes: Probes of the application gateway resource.
127    :type probes: list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayProbe]
128    :param backend_address_pools: Backend address pool of the application gateway resource.
129    :type backend_address_pools:
130     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayBackendAddressPool]
131    :param backend_http_settings_collection: Backend http settings of the application gateway
132     resource.
133    :type backend_http_settings_collection:
134     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayBackendHttpSettings]
135    :param http_listeners: Http listeners of the application gateway resource.
136    :type http_listeners:
137     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayHttpListener]
138    :param url_path_maps: URL path map of the application gateway resource.
139    :type url_path_maps: list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayUrlPathMap]
140    :param request_routing_rules: Request routing rules of the application gateway resource.
141    :type request_routing_rules:
142     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayRequestRoutingRule]
143    :param redirect_configurations: Redirect configurations of the application gateway resource.
144    :type redirect_configurations:
145     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayRedirectConfiguration]
146    :param web_application_firewall_configuration: Web application firewall configuration.
147    :type web_application_firewall_configuration:
148     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayWebApplicationFirewallConfiguration
149    :param enable_http2: Whether HTTP2 is enabled on the application gateway resource.
150    :type enable_http2: bool
151    :param resource_guid: Resource GUID property of the application gateway resource.
152    :type resource_guid: str
153    :param provisioning_state: Provisioning state of the application gateway resource. Possible
154     values are: 'Updating', 'Deleting', and 'Failed'.
155    :type provisioning_state: str
156    """
157
158    _validation = {
159        'name': {'readonly': True},
160        'type': {'readonly': True},
161        'operational_state': {'readonly': True},
162    }
163
164    _attribute_map = {
165        'id': {'key': 'id', 'type': 'str'},
166        'name': {'key': 'name', 'type': 'str'},
167        'type': {'key': 'type', 'type': 'str'},
168        'location': {'key': 'location', 'type': 'str'},
169        'tags': {'key': 'tags', 'type': '{str}'},
170        'etag': {'key': 'etag', 'type': 'str'},
171        'sku': {'key': 'properties.sku', 'type': 'ApplicationGatewaySku'},
172        'ssl_policy': {'key': 'properties.sslPolicy', 'type': 'ApplicationGatewaySslPolicy'},
173        'operational_state': {'key': 'properties.operationalState', 'type': 'str'},
174        'gateway_ip_configurations': {'key': 'properties.gatewayIPConfigurations', 'type': '[ApplicationGatewayIPConfiguration]'},
175        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[ApplicationGatewayAuthenticationCertificate]'},
176        'ssl_certificates': {'key': 'properties.sslCertificates', 'type': '[ApplicationGatewaySslCertificate]'},
177        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[ApplicationGatewayFrontendIPConfiguration]'},
178        'frontend_ports': {'key': 'properties.frontendPorts', 'type': '[ApplicationGatewayFrontendPort]'},
179        'probes': {'key': 'properties.probes', 'type': '[ApplicationGatewayProbe]'},
180        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
181        'backend_http_settings_collection': {'key': 'properties.backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHttpSettings]'},
182        'http_listeners': {'key': 'properties.httpListeners', 'type': '[ApplicationGatewayHttpListener]'},
183        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[ApplicationGatewayUrlPathMap]'},
184        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[ApplicationGatewayRequestRoutingRule]'},
185        'redirect_configurations': {'key': 'properties.redirectConfigurations', 'type': '[ApplicationGatewayRedirectConfiguration]'},
186        'web_application_firewall_configuration': {'key': 'properties.webApplicationFirewallConfiguration', 'type': 'ApplicationGatewayWebApplicationFirewallConfiguration'},
187        'enable_http2': {'key': 'properties.enableHttp2', 'type': 'bool'},
188        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
189        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
190    }
191
192    def __init__(
193        self,
194        *,
195        id: Optional[str] = None,
196        location: Optional[str] = None,
197        tags: Optional[Dict[str, str]] = None,
198        etag: Optional[str] = None,
199        sku: Optional["ApplicationGatewaySku"] = None,
200        ssl_policy: Optional["ApplicationGatewaySslPolicy"] = None,
201        gateway_ip_configurations: Optional[List["ApplicationGatewayIPConfiguration"]] = None,
202        authentication_certificates: Optional[List["ApplicationGatewayAuthenticationCertificate"]] = None,
203        ssl_certificates: Optional[List["ApplicationGatewaySslCertificate"]] = None,
204        frontend_ip_configurations: Optional[List["ApplicationGatewayFrontendIPConfiguration"]] = None,
205        frontend_ports: Optional[List["ApplicationGatewayFrontendPort"]] = None,
206        probes: Optional[List["ApplicationGatewayProbe"]] = None,
207        backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None,
208        backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHttpSettings"]] = None,
209        http_listeners: Optional[List["ApplicationGatewayHttpListener"]] = None,
210        url_path_maps: Optional[List["ApplicationGatewayUrlPathMap"]] = None,
211        request_routing_rules: Optional[List["ApplicationGatewayRequestRoutingRule"]] = None,
212        redirect_configurations: Optional[List["ApplicationGatewayRedirectConfiguration"]] = None,
213        web_application_firewall_configuration: Optional["ApplicationGatewayWebApplicationFirewallConfiguration"] = None,
214        enable_http2: Optional[bool] = None,
215        resource_guid: Optional[str] = None,
216        provisioning_state: Optional[str] = None,
217        **kwargs
218    ):
219        super(ApplicationGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
220        self.etag = etag
221        self.sku = sku
222        self.ssl_policy = ssl_policy
223        self.operational_state = None
224        self.gateway_ip_configurations = gateway_ip_configurations
225        self.authentication_certificates = authentication_certificates
226        self.ssl_certificates = ssl_certificates
227        self.frontend_ip_configurations = frontend_ip_configurations
228        self.frontend_ports = frontend_ports
229        self.probes = probes
230        self.backend_address_pools = backend_address_pools
231        self.backend_http_settings_collection = backend_http_settings_collection
232        self.http_listeners = http_listeners
233        self.url_path_maps = url_path_maps
234        self.request_routing_rules = request_routing_rules
235        self.redirect_configurations = redirect_configurations
236        self.web_application_firewall_configuration = web_application_firewall_configuration
237        self.enable_http2 = enable_http2
238        self.resource_guid = resource_guid
239        self.provisioning_state = provisioning_state
240
241
242class SubResource(msrest.serialization.Model):
243    """Reference to another subresource.
244
245    :param id: Resource ID.
246    :type id: str
247    """
248
249    _attribute_map = {
250        'id': {'key': 'id', 'type': 'str'},
251    }
252
253    def __init__(
254        self,
255        *,
256        id: Optional[str] = None,
257        **kwargs
258    ):
259        super(SubResource, self).__init__(**kwargs)
260        self.id = id
261
262
263class ApplicationGatewayAuthenticationCertificate(SubResource):
264    """Authentication certificates of an application gateway.
265
266    :param id: Resource ID.
267    :type id: str
268    :param name: Name of the resource that is unique within a resource group. This name can be used
269     to access the resource.
270    :type name: str
271    :param etag: A unique read-only string that changes whenever the resource is updated.
272    :type etag: str
273    :param type: Type of the resource.
274    :type type: str
275    :param data: Certificate public data.
276    :type data: str
277    :param provisioning_state: Provisioning state of the authentication certificate resource.
278     Possible values are: 'Updating', 'Deleting', and 'Failed'.
279    :type provisioning_state: str
280    """
281
282    _attribute_map = {
283        'id': {'key': 'id', 'type': 'str'},
284        'name': {'key': 'name', 'type': 'str'},
285        'etag': {'key': 'etag', 'type': 'str'},
286        'type': {'key': 'type', 'type': 'str'},
287        'data': {'key': 'properties.data', 'type': 'str'},
288        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
289    }
290
291    def __init__(
292        self,
293        *,
294        id: Optional[str] = None,
295        name: Optional[str] = None,
296        etag: Optional[str] = None,
297        type: Optional[str] = None,
298        data: Optional[str] = None,
299        provisioning_state: Optional[str] = None,
300        **kwargs
301    ):
302        super(ApplicationGatewayAuthenticationCertificate, self).__init__(id=id, **kwargs)
303        self.name = name
304        self.etag = etag
305        self.type = type
306        self.data = data
307        self.provisioning_state = provisioning_state
308
309
310class ApplicationGatewayAvailableSslOptions(Resource):
311    """Response for ApplicationGatewayAvailableSslOptions API service call.
312
313    Variables are only populated by the server, and will be ignored when sending a request.
314
315    :param id: Resource ID.
316    :type id: str
317    :ivar name: Resource name.
318    :vartype name: str
319    :ivar type: Resource type.
320    :vartype type: str
321    :param location: Resource location.
322    :type location: str
323    :param tags: A set of tags. Resource tags.
324    :type tags: dict[str, str]
325    :param predefined_policies: List of available Ssl predefined policy.
326    :type predefined_policies: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
327    :param default_policy: Name of the Ssl predefined policy applied by default to application
328     gateway. Possible values include: "AppGwSslPolicy20150501", "AppGwSslPolicy20170401",
329     "AppGwSslPolicy20170401S".
330    :type default_policy: str or
331     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslPolicyName
332    :param available_cipher_suites: List of available Ssl cipher suites.
333    :type available_cipher_suites: list[str or
334     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslCipherSuite]
335    :param available_protocols: List of available Ssl protocols.
336    :type available_protocols: list[str or
337     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslProtocol]
338    """
339
340    _validation = {
341        'name': {'readonly': True},
342        'type': {'readonly': True},
343    }
344
345    _attribute_map = {
346        'id': {'key': 'id', 'type': 'str'},
347        'name': {'key': 'name', 'type': 'str'},
348        'type': {'key': 'type', 'type': 'str'},
349        'location': {'key': 'location', 'type': 'str'},
350        'tags': {'key': 'tags', 'type': '{str}'},
351        'predefined_policies': {'key': 'properties.predefinedPolicies', 'type': '[SubResource]'},
352        'default_policy': {'key': 'properties.defaultPolicy', 'type': 'str'},
353        'available_cipher_suites': {'key': 'properties.availableCipherSuites', 'type': '[str]'},
354        'available_protocols': {'key': 'properties.availableProtocols', 'type': '[str]'},
355    }
356
357    def __init__(
358        self,
359        *,
360        id: Optional[str] = None,
361        location: Optional[str] = None,
362        tags: Optional[Dict[str, str]] = None,
363        predefined_policies: Optional[List["SubResource"]] = None,
364        default_policy: Optional[Union[str, "ApplicationGatewaySslPolicyName"]] = None,
365        available_cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
366        available_protocols: Optional[List[Union[str, "ApplicationGatewaySslProtocol"]]] = None,
367        **kwargs
368    ):
369        super(ApplicationGatewayAvailableSslOptions, self).__init__(id=id, location=location, tags=tags, **kwargs)
370        self.predefined_policies = predefined_policies
371        self.default_policy = default_policy
372        self.available_cipher_suites = available_cipher_suites
373        self.available_protocols = available_protocols
374
375
376class ApplicationGatewayAvailableSslPredefinedPolicies(msrest.serialization.Model):
377    """Response for ApplicationGatewayAvailableSslOptions API service call.
378
379    :param value: List of available Ssl predefined policy.
380    :type value: list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslPredefinedPolicy]
381    :param next_link: URL to get the next set of results.
382    :type next_link: str
383    """
384
385    _attribute_map = {
386        'value': {'key': 'value', 'type': '[ApplicationGatewaySslPredefinedPolicy]'},
387        'next_link': {'key': 'nextLink', 'type': 'str'},
388    }
389
390    def __init__(
391        self,
392        *,
393        value: Optional[List["ApplicationGatewaySslPredefinedPolicy"]] = None,
394        next_link: Optional[str] = None,
395        **kwargs
396    ):
397        super(ApplicationGatewayAvailableSslPredefinedPolicies, self).__init__(**kwargs)
398        self.value = value
399        self.next_link = next_link
400
401
402class ApplicationGatewayAvailableWafRuleSetsResult(msrest.serialization.Model):
403    """Response for ApplicationGatewayAvailableWafRuleSets API service call.
404
405    :param value: The list of application gateway rule sets.
406    :type value: list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayFirewallRuleSet]
407    """
408
409    _attribute_map = {
410        'value': {'key': 'value', 'type': '[ApplicationGatewayFirewallRuleSet]'},
411    }
412
413    def __init__(
414        self,
415        *,
416        value: Optional[List["ApplicationGatewayFirewallRuleSet"]] = None,
417        **kwargs
418    ):
419        super(ApplicationGatewayAvailableWafRuleSetsResult, self).__init__(**kwargs)
420        self.value = value
421
422
423class ApplicationGatewayBackendAddress(msrest.serialization.Model):
424    """Backend address of an application gateway.
425
426    :param fqdn: Fully qualified domain name (FQDN).
427    :type fqdn: str
428    :param ip_address: IP address.
429    :type ip_address: str
430    """
431
432    _attribute_map = {
433        'fqdn': {'key': 'fqdn', 'type': 'str'},
434        'ip_address': {'key': 'ipAddress', 'type': 'str'},
435    }
436
437    def __init__(
438        self,
439        *,
440        fqdn: Optional[str] = None,
441        ip_address: Optional[str] = None,
442        **kwargs
443    ):
444        super(ApplicationGatewayBackendAddress, self).__init__(**kwargs)
445        self.fqdn = fqdn
446        self.ip_address = ip_address
447
448
449class ApplicationGatewayBackendAddressPool(SubResource):
450    """Backend Address Pool of an application gateway.
451
452    :param id: Resource ID.
453    :type id: str
454    :param name: Resource that is unique within a resource group. This name can be used to access
455     the resource.
456    :type name: str
457    :param etag: A unique read-only string that changes whenever the resource is updated.
458    :type etag: str
459    :param type: Type of the resource.
460    :type type: str
461    :param backend_ip_configurations: Collection of references to IPs defined in network
462     interfaces.
463    :type backend_ip_configurations:
464     list[~azure.mgmt.network.v2018_01_01.models.NetworkInterfaceIPConfiguration]
465    :param backend_addresses: Backend addresses.
466    :type backend_addresses:
467     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayBackendAddress]
468    :param provisioning_state: Provisioning state of the backend address pool resource. Possible
469     values are: 'Updating', 'Deleting', and 'Failed'.
470    :type provisioning_state: str
471    """
472
473    _attribute_map = {
474        'id': {'key': 'id', 'type': 'str'},
475        'name': {'key': 'name', 'type': 'str'},
476        'etag': {'key': 'etag', 'type': 'str'},
477        'type': {'key': 'type', 'type': 'str'},
478        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
479        'backend_addresses': {'key': 'properties.backendAddresses', 'type': '[ApplicationGatewayBackendAddress]'},
480        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
481    }
482
483    def __init__(
484        self,
485        *,
486        id: Optional[str] = None,
487        name: Optional[str] = None,
488        etag: Optional[str] = None,
489        type: Optional[str] = None,
490        backend_ip_configurations: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
491        backend_addresses: Optional[List["ApplicationGatewayBackendAddress"]] = None,
492        provisioning_state: Optional[str] = None,
493        **kwargs
494    ):
495        super(ApplicationGatewayBackendAddressPool, self).__init__(id=id, **kwargs)
496        self.name = name
497        self.etag = etag
498        self.type = type
499        self.backend_ip_configurations = backend_ip_configurations
500        self.backend_addresses = backend_addresses
501        self.provisioning_state = provisioning_state
502
503
504class ApplicationGatewayBackendHealth(msrest.serialization.Model):
505    """List of ApplicationGatewayBackendHealthPool resources.
506
507    :param backend_address_pools:
508    :type backend_address_pools:
509     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayBackendHealthPool]
510    """
511
512    _attribute_map = {
513        'backend_address_pools': {'key': 'backendAddressPools', 'type': '[ApplicationGatewayBackendHealthPool]'},
514    }
515
516    def __init__(
517        self,
518        *,
519        backend_address_pools: Optional[List["ApplicationGatewayBackendHealthPool"]] = None,
520        **kwargs
521    ):
522        super(ApplicationGatewayBackendHealth, self).__init__(**kwargs)
523        self.backend_address_pools = backend_address_pools
524
525
526class ApplicationGatewayBackendHealthHttpSettings(msrest.serialization.Model):
527    """Application gateway BackendHealthHttp settings.
528
529    :param backend_http_settings: Reference of an ApplicationGatewayBackendHttpSettings resource.
530    :type backend_http_settings:
531     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayBackendHttpSettings
532    :param servers: List of ApplicationGatewayBackendHealthServer resources.
533    :type servers:
534     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayBackendHealthServer]
535    """
536
537    _attribute_map = {
538        'backend_http_settings': {'key': 'backendHttpSettings', 'type': 'ApplicationGatewayBackendHttpSettings'},
539        'servers': {'key': 'servers', 'type': '[ApplicationGatewayBackendHealthServer]'},
540    }
541
542    def __init__(
543        self,
544        *,
545        backend_http_settings: Optional["ApplicationGatewayBackendHttpSettings"] = None,
546        servers: Optional[List["ApplicationGatewayBackendHealthServer"]] = None,
547        **kwargs
548    ):
549        super(ApplicationGatewayBackendHealthHttpSettings, self).__init__(**kwargs)
550        self.backend_http_settings = backend_http_settings
551        self.servers = servers
552
553
554class ApplicationGatewayBackendHealthPool(msrest.serialization.Model):
555    """Application gateway BackendHealth pool.
556
557    :param backend_address_pool: Reference of an ApplicationGatewayBackendAddressPool resource.
558    :type backend_address_pool:
559     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayBackendAddressPool
560    :param backend_http_settings_collection: List of ApplicationGatewayBackendHealthHttpSettings
561     resources.
562    :type backend_http_settings_collection:
563     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayBackendHealthHttpSettings]
564    """
565
566    _attribute_map = {
567        'backend_address_pool': {'key': 'backendAddressPool', 'type': 'ApplicationGatewayBackendAddressPool'},
568        'backend_http_settings_collection': {'key': 'backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHealthHttpSettings]'},
569    }
570
571    def __init__(
572        self,
573        *,
574        backend_address_pool: Optional["ApplicationGatewayBackendAddressPool"] = None,
575        backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHealthHttpSettings"]] = None,
576        **kwargs
577    ):
578        super(ApplicationGatewayBackendHealthPool, self).__init__(**kwargs)
579        self.backend_address_pool = backend_address_pool
580        self.backend_http_settings_collection = backend_http_settings_collection
581
582
583class ApplicationGatewayBackendHealthServer(msrest.serialization.Model):
584    """Application gateway backendhealth http settings.
585
586    :param address: IP address or FQDN of backend server.
587    :type address: str
588    :param ip_configuration: Reference of IP configuration of backend server.
589    :type ip_configuration: ~azure.mgmt.network.v2018_01_01.models.NetworkInterfaceIPConfiguration
590    :param health: Health of backend server. Possible values include: "Unknown", "Up", "Down",
591     "Partial", "Draining".
592    :type health: str or
593     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayBackendHealthServerHealth
594    """
595
596    _attribute_map = {
597        'address': {'key': 'address', 'type': 'str'},
598        'ip_configuration': {'key': 'ipConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
599        'health': {'key': 'health', 'type': 'str'},
600    }
601
602    def __init__(
603        self,
604        *,
605        address: Optional[str] = None,
606        ip_configuration: Optional["NetworkInterfaceIPConfiguration"] = None,
607        health: Optional[Union[str, "ApplicationGatewayBackendHealthServerHealth"]] = None,
608        **kwargs
609    ):
610        super(ApplicationGatewayBackendHealthServer, self).__init__(**kwargs)
611        self.address = address
612        self.ip_configuration = ip_configuration
613        self.health = health
614
615
616class ApplicationGatewayBackendHttpSettings(SubResource):
617    """Backend address pool settings of an application gateway.
618
619    :param id: Resource ID.
620    :type id: str
621    :param name: Name of the resource that is unique within a resource group. This name can be used
622     to access the resource.
623    :type name: str
624    :param etag: A unique read-only string that changes whenever the resource is updated.
625    :type etag: str
626    :param type: Type of the resource.
627    :type type: str
628    :param port: Port.
629    :type port: int
630    :param protocol: Protocol. Possible values include: "Http", "Https".
631    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayProtocol
632    :param cookie_based_affinity: Cookie based affinity. Possible values include: "Enabled",
633     "Disabled".
634    :type cookie_based_affinity: str or
635     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayCookieBasedAffinity
636    :param request_timeout: Request timeout in seconds. Application Gateway will fail the request
637     if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400
638     seconds.
639    :type request_timeout: int
640    :param probe: Probe resource of an application gateway.
641    :type probe: ~azure.mgmt.network.v2018_01_01.models.SubResource
642    :param authentication_certificates: Array of references to application gateway authentication
643     certificates.
644    :type authentication_certificates: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
645    :param connection_draining: Connection draining of the backend http settings resource.
646    :type connection_draining:
647     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayConnectionDraining
648    :param host_name: Host header to be sent to the backend servers.
649    :type host_name: str
650    :param pick_host_name_from_backend_address: Whether to pick host header should be picked from
651     the host name of the backend server. Default value is false.
652    :type pick_host_name_from_backend_address: bool
653    :param affinity_cookie_name: Cookie name to use for the affinity cookie.
654    :type affinity_cookie_name: str
655    :param probe_enabled: Whether the probe is enabled. Default value is false.
656    :type probe_enabled: bool
657    :param path: Path which should be used as a prefix for all HTTP requests. Null means no path
658     will be prefixed. Default value is null.
659    :type path: str
660    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
661     values are: 'Updating', 'Deleting', and 'Failed'.
662    :type provisioning_state: str
663    """
664
665    _attribute_map = {
666        'id': {'key': 'id', 'type': 'str'},
667        'name': {'key': 'name', 'type': 'str'},
668        'etag': {'key': 'etag', 'type': 'str'},
669        'type': {'key': 'type', 'type': 'str'},
670        'port': {'key': 'properties.port', 'type': 'int'},
671        'protocol': {'key': 'properties.protocol', 'type': 'str'},
672        'cookie_based_affinity': {'key': 'properties.cookieBasedAffinity', 'type': 'str'},
673        'request_timeout': {'key': 'properties.requestTimeout', 'type': 'int'},
674        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
675        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[SubResource]'},
676        'connection_draining': {'key': 'properties.connectionDraining', 'type': 'ApplicationGatewayConnectionDraining'},
677        'host_name': {'key': 'properties.hostName', 'type': 'str'},
678        'pick_host_name_from_backend_address': {'key': 'properties.pickHostNameFromBackendAddress', 'type': 'bool'},
679        'affinity_cookie_name': {'key': 'properties.affinityCookieName', 'type': 'str'},
680        'probe_enabled': {'key': 'properties.probeEnabled', 'type': 'bool'},
681        'path': {'key': 'properties.path', 'type': 'str'},
682        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
683    }
684
685    def __init__(
686        self,
687        *,
688        id: Optional[str] = None,
689        name: Optional[str] = None,
690        etag: Optional[str] = None,
691        type: Optional[str] = None,
692        port: Optional[int] = None,
693        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
694        cookie_based_affinity: Optional[Union[str, "ApplicationGatewayCookieBasedAffinity"]] = None,
695        request_timeout: Optional[int] = None,
696        probe: Optional["SubResource"] = None,
697        authentication_certificates: Optional[List["SubResource"]] = None,
698        connection_draining: Optional["ApplicationGatewayConnectionDraining"] = None,
699        host_name: Optional[str] = None,
700        pick_host_name_from_backend_address: Optional[bool] = None,
701        affinity_cookie_name: Optional[str] = None,
702        probe_enabled: Optional[bool] = None,
703        path: Optional[str] = None,
704        provisioning_state: Optional[str] = None,
705        **kwargs
706    ):
707        super(ApplicationGatewayBackendHttpSettings, self).__init__(id=id, **kwargs)
708        self.name = name
709        self.etag = etag
710        self.type = type
711        self.port = port
712        self.protocol = protocol
713        self.cookie_based_affinity = cookie_based_affinity
714        self.request_timeout = request_timeout
715        self.probe = probe
716        self.authentication_certificates = authentication_certificates
717        self.connection_draining = connection_draining
718        self.host_name = host_name
719        self.pick_host_name_from_backend_address = pick_host_name_from_backend_address
720        self.affinity_cookie_name = affinity_cookie_name
721        self.probe_enabled = probe_enabled
722        self.path = path
723        self.provisioning_state = provisioning_state
724
725
726class ApplicationGatewayConnectionDraining(msrest.serialization.Model):
727    """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.
728
729    All required parameters must be populated in order to send to Azure.
730
731    :param enabled: Required. Whether connection draining is enabled or not.
732    :type enabled: bool
733    :param drain_timeout_in_sec: Required. The number of seconds connection draining is active.
734     Acceptable values are from 1 second to 3600 seconds.
735    :type drain_timeout_in_sec: int
736    """
737
738    _validation = {
739        'enabled': {'required': True},
740        'drain_timeout_in_sec': {'required': True, 'maximum': 3600, 'minimum': 1},
741    }
742
743    _attribute_map = {
744        'enabled': {'key': 'enabled', 'type': 'bool'},
745        'drain_timeout_in_sec': {'key': 'drainTimeoutInSec', 'type': 'int'},
746    }
747
748    def __init__(
749        self,
750        *,
751        enabled: bool,
752        drain_timeout_in_sec: int,
753        **kwargs
754    ):
755        super(ApplicationGatewayConnectionDraining, self).__init__(**kwargs)
756        self.enabled = enabled
757        self.drain_timeout_in_sec = drain_timeout_in_sec
758
759
760class ApplicationGatewayFirewallDisabledRuleGroup(msrest.serialization.Model):
761    """Allows to disable rules within a rule group or an entire rule group.
762
763    All required parameters must be populated in order to send to Azure.
764
765    :param rule_group_name: Required. The name of the rule group that will be disabled.
766    :type rule_group_name: str
767    :param rules: The list of rules that will be disabled. If null, all rules of the rule group
768     will be disabled.
769    :type rules: list[int]
770    """
771
772    _validation = {
773        'rule_group_name': {'required': True},
774    }
775
776    _attribute_map = {
777        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
778        'rules': {'key': 'rules', 'type': '[int]'},
779    }
780
781    def __init__(
782        self,
783        *,
784        rule_group_name: str,
785        rules: Optional[List[int]] = None,
786        **kwargs
787    ):
788        super(ApplicationGatewayFirewallDisabledRuleGroup, self).__init__(**kwargs)
789        self.rule_group_name = rule_group_name
790        self.rules = rules
791
792
793class ApplicationGatewayFirewallRule(msrest.serialization.Model):
794    """A web application firewall rule.
795
796    All required parameters must be populated in order to send to Azure.
797
798    :param rule_id: Required. The identifier of the web application firewall rule.
799    :type rule_id: int
800    :param description: The description of the web application firewall rule.
801    :type description: str
802    """
803
804    _validation = {
805        'rule_id': {'required': True},
806    }
807
808    _attribute_map = {
809        'rule_id': {'key': 'ruleId', 'type': 'int'},
810        'description': {'key': 'description', 'type': 'str'},
811    }
812
813    def __init__(
814        self,
815        *,
816        rule_id: int,
817        description: Optional[str] = None,
818        **kwargs
819    ):
820        super(ApplicationGatewayFirewallRule, self).__init__(**kwargs)
821        self.rule_id = rule_id
822        self.description = description
823
824
825class ApplicationGatewayFirewallRuleGroup(msrest.serialization.Model):
826    """A web application firewall rule group.
827
828    All required parameters must be populated in order to send to Azure.
829
830    :param rule_group_name: Required. The name of the web application firewall rule group.
831    :type rule_group_name: str
832    :param description: The description of the web application firewall rule group.
833    :type description: str
834    :param rules: Required. The rules of the web application firewall rule group.
835    :type rules: list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayFirewallRule]
836    """
837
838    _validation = {
839        'rule_group_name': {'required': True},
840        'rules': {'required': True},
841    }
842
843    _attribute_map = {
844        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
845        'description': {'key': 'description', 'type': 'str'},
846        'rules': {'key': 'rules', 'type': '[ApplicationGatewayFirewallRule]'},
847    }
848
849    def __init__(
850        self,
851        *,
852        rule_group_name: str,
853        rules: List["ApplicationGatewayFirewallRule"],
854        description: Optional[str] = None,
855        **kwargs
856    ):
857        super(ApplicationGatewayFirewallRuleGroup, self).__init__(**kwargs)
858        self.rule_group_name = rule_group_name
859        self.description = description
860        self.rules = rules
861
862
863class ApplicationGatewayFirewallRuleSet(Resource):
864    """A web application firewall rule set.
865
866    Variables are only populated by the server, and will be ignored when sending a request.
867
868    :param id: Resource ID.
869    :type id: str
870    :ivar name: Resource name.
871    :vartype name: str
872    :ivar type: Resource type.
873    :vartype type: str
874    :param location: Resource location.
875    :type location: str
876    :param tags: A set of tags. Resource tags.
877    :type tags: dict[str, str]
878    :param provisioning_state: The provisioning state of the web application firewall rule set.
879    :type provisioning_state: str
880    :param rule_set_type: The type of the web application firewall rule set.
881    :type rule_set_type: str
882    :param rule_set_version: The version of the web application firewall rule set type.
883    :type rule_set_version: str
884    :param rule_groups: The rule groups of the web application firewall rule set.
885    :type rule_groups:
886     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayFirewallRuleGroup]
887    """
888
889    _validation = {
890        'name': {'readonly': True},
891        'type': {'readonly': True},
892    }
893
894    _attribute_map = {
895        'id': {'key': 'id', 'type': 'str'},
896        'name': {'key': 'name', 'type': 'str'},
897        'type': {'key': 'type', 'type': 'str'},
898        'location': {'key': 'location', 'type': 'str'},
899        'tags': {'key': 'tags', 'type': '{str}'},
900        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
901        'rule_set_type': {'key': 'properties.ruleSetType', 'type': 'str'},
902        'rule_set_version': {'key': 'properties.ruleSetVersion', 'type': 'str'},
903        'rule_groups': {'key': 'properties.ruleGroups', 'type': '[ApplicationGatewayFirewallRuleGroup]'},
904    }
905
906    def __init__(
907        self,
908        *,
909        id: Optional[str] = None,
910        location: Optional[str] = None,
911        tags: Optional[Dict[str, str]] = None,
912        provisioning_state: Optional[str] = None,
913        rule_set_type: Optional[str] = None,
914        rule_set_version: Optional[str] = None,
915        rule_groups: Optional[List["ApplicationGatewayFirewallRuleGroup"]] = None,
916        **kwargs
917    ):
918        super(ApplicationGatewayFirewallRuleSet, self).__init__(id=id, location=location, tags=tags, **kwargs)
919        self.provisioning_state = provisioning_state
920        self.rule_set_type = rule_set_type
921        self.rule_set_version = rule_set_version
922        self.rule_groups = rule_groups
923
924
925class ApplicationGatewayFrontendIPConfiguration(SubResource):
926    """Frontend IP configuration of an application gateway.
927
928    :param id: Resource ID.
929    :type id: str
930    :param name: Name of the resource that is unique within a resource group. This name can be used
931     to access the resource.
932    :type name: str
933    :param etag: A unique read-only string that changes whenever the resource is updated.
934    :type etag: str
935    :param type: Type of the resource.
936    :type type: str
937    :param private_ip_address: PrivateIPAddress of the network interface IP Configuration.
938    :type private_ip_address: str
939    :param private_ip_allocation_method: PrivateIP allocation method. Possible values include:
940     "Static", "Dynamic".
941    :type private_ip_allocation_method: str or
942     ~azure.mgmt.network.v2018_01_01.models.IPAllocationMethod
943    :param subnet: Reference of the subnet resource.
944    :type subnet: ~azure.mgmt.network.v2018_01_01.models.SubResource
945    :param public_ip_address: Reference of the PublicIP resource.
946    :type public_ip_address: ~azure.mgmt.network.v2018_01_01.models.SubResource
947    :param provisioning_state: Provisioning state of the public IP resource. Possible values are:
948     'Updating', 'Deleting', and 'Failed'.
949    :type provisioning_state: str
950    """
951
952    _attribute_map = {
953        'id': {'key': 'id', 'type': 'str'},
954        'name': {'key': 'name', 'type': 'str'},
955        'etag': {'key': 'etag', 'type': 'str'},
956        'type': {'key': 'type', 'type': 'str'},
957        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
958        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
959        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
960        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
961        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
962    }
963
964    def __init__(
965        self,
966        *,
967        id: Optional[str] = None,
968        name: Optional[str] = None,
969        etag: Optional[str] = None,
970        type: Optional[str] = None,
971        private_ip_address: Optional[str] = None,
972        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
973        subnet: Optional["SubResource"] = None,
974        public_ip_address: Optional["SubResource"] = None,
975        provisioning_state: Optional[str] = None,
976        **kwargs
977    ):
978        super(ApplicationGatewayFrontendIPConfiguration, self).__init__(id=id, **kwargs)
979        self.name = name
980        self.etag = etag
981        self.type = type
982        self.private_ip_address = private_ip_address
983        self.private_ip_allocation_method = private_ip_allocation_method
984        self.subnet = subnet
985        self.public_ip_address = public_ip_address
986        self.provisioning_state = provisioning_state
987
988
989class ApplicationGatewayFrontendPort(SubResource):
990    """Frontend port of an application gateway.
991
992    :param id: Resource ID.
993    :type id: str
994    :param name: Name of the resource that is unique within a resource group. This name can be used
995     to access the resource.
996    :type name: str
997    :param etag: A unique read-only string that changes whenever the resource is updated.
998    :type etag: str
999    :param type: Type of the resource.
1000    :type type: str
1001    :param port: Frontend port.
1002    :type port: int
1003    :param provisioning_state: Provisioning state of the frontend port resource. Possible values
1004     are: 'Updating', 'Deleting', and 'Failed'.
1005    :type provisioning_state: str
1006    """
1007
1008    _attribute_map = {
1009        'id': {'key': 'id', 'type': 'str'},
1010        'name': {'key': 'name', 'type': 'str'},
1011        'etag': {'key': 'etag', 'type': 'str'},
1012        'type': {'key': 'type', 'type': 'str'},
1013        'port': {'key': 'properties.port', 'type': 'int'},
1014        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1015    }
1016
1017    def __init__(
1018        self,
1019        *,
1020        id: Optional[str] = None,
1021        name: Optional[str] = None,
1022        etag: Optional[str] = None,
1023        type: Optional[str] = None,
1024        port: Optional[int] = None,
1025        provisioning_state: Optional[str] = None,
1026        **kwargs
1027    ):
1028        super(ApplicationGatewayFrontendPort, self).__init__(id=id, **kwargs)
1029        self.name = name
1030        self.etag = etag
1031        self.type = type
1032        self.port = port
1033        self.provisioning_state = provisioning_state
1034
1035
1036class ApplicationGatewayHttpListener(SubResource):
1037    """Http listener of an application gateway.
1038
1039    :param id: Resource ID.
1040    :type id: str
1041    :param name: Name of the resource that is unique within a resource group. This name can be used
1042     to access the resource.
1043    :type name: str
1044    :param etag: A unique read-only string that changes whenever the resource is updated.
1045    :type etag: str
1046    :param type: Type of the resource.
1047    :type type: str
1048    :param frontend_ip_configuration: Frontend IP configuration resource of an application gateway.
1049    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_01_01.models.SubResource
1050    :param frontend_port: Frontend port resource of an application gateway.
1051    :type frontend_port: ~azure.mgmt.network.v2018_01_01.models.SubResource
1052    :param protocol: Protocol. Possible values include: "Http", "Https".
1053    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayProtocol
1054    :param host_name: Host name of HTTP listener.
1055    :type host_name: str
1056    :param ssl_certificate: SSL certificate resource of an application gateway.
1057    :type ssl_certificate: ~azure.mgmt.network.v2018_01_01.models.SubResource
1058    :param require_server_name_indication: Applicable only if protocol is https. Enables SNI for
1059     multi-hosting.
1060    :type require_server_name_indication: bool
1061    :param provisioning_state: Provisioning state of the HTTP listener resource. Possible values
1062     are: 'Updating', 'Deleting', and 'Failed'.
1063    :type provisioning_state: str
1064    """
1065
1066    _attribute_map = {
1067        'id': {'key': 'id', 'type': 'str'},
1068        'name': {'key': 'name', 'type': 'str'},
1069        'etag': {'key': 'etag', 'type': 'str'},
1070        'type': {'key': 'type', 'type': 'str'},
1071        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
1072        'frontend_port': {'key': 'properties.frontendPort', 'type': 'SubResource'},
1073        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1074        'host_name': {'key': 'properties.hostName', 'type': 'str'},
1075        'ssl_certificate': {'key': 'properties.sslCertificate', 'type': 'SubResource'},
1076        'require_server_name_indication': {'key': 'properties.requireServerNameIndication', 'type': 'bool'},
1077        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1078    }
1079
1080    def __init__(
1081        self,
1082        *,
1083        id: Optional[str] = None,
1084        name: Optional[str] = None,
1085        etag: Optional[str] = None,
1086        type: Optional[str] = None,
1087        frontend_ip_configuration: Optional["SubResource"] = None,
1088        frontend_port: Optional["SubResource"] = None,
1089        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
1090        host_name: Optional[str] = None,
1091        ssl_certificate: Optional["SubResource"] = None,
1092        require_server_name_indication: Optional[bool] = None,
1093        provisioning_state: Optional[str] = None,
1094        **kwargs
1095    ):
1096        super(ApplicationGatewayHttpListener, self).__init__(id=id, **kwargs)
1097        self.name = name
1098        self.etag = etag
1099        self.type = type
1100        self.frontend_ip_configuration = frontend_ip_configuration
1101        self.frontend_port = frontend_port
1102        self.protocol = protocol
1103        self.host_name = host_name
1104        self.ssl_certificate = ssl_certificate
1105        self.require_server_name_indication = require_server_name_indication
1106        self.provisioning_state = provisioning_state
1107
1108
1109class ApplicationGatewayIPConfiguration(SubResource):
1110    """IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.
1111
1112    :param id: Resource ID.
1113    :type id: str
1114    :param name: Name of the resource that is unique within a resource group. This name can be used
1115     to access the resource.
1116    :type name: str
1117    :param etag: A unique read-only string that changes whenever the resource is updated.
1118    :type etag: str
1119    :param type: Type of the resource.
1120    :type type: str
1121    :param subnet: Reference of the subnet resource. A subnet from where application gateway gets
1122     its private address.
1123    :type subnet: ~azure.mgmt.network.v2018_01_01.models.SubResource
1124    :param provisioning_state: Provisioning state of the application gateway subnet resource.
1125     Possible values are: 'Updating', 'Deleting', and 'Failed'.
1126    :type provisioning_state: str
1127    """
1128
1129    _attribute_map = {
1130        'id': {'key': 'id', 'type': 'str'},
1131        'name': {'key': 'name', 'type': 'str'},
1132        'etag': {'key': 'etag', 'type': 'str'},
1133        'type': {'key': 'type', 'type': 'str'},
1134        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
1135        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1136    }
1137
1138    def __init__(
1139        self,
1140        *,
1141        id: Optional[str] = None,
1142        name: Optional[str] = None,
1143        etag: Optional[str] = None,
1144        type: Optional[str] = None,
1145        subnet: Optional["SubResource"] = None,
1146        provisioning_state: Optional[str] = None,
1147        **kwargs
1148    ):
1149        super(ApplicationGatewayIPConfiguration, self).__init__(id=id, **kwargs)
1150        self.name = name
1151        self.etag = etag
1152        self.type = type
1153        self.subnet = subnet
1154        self.provisioning_state = provisioning_state
1155
1156
1157class ApplicationGatewayListResult(msrest.serialization.Model):
1158    """Response for ListApplicationGateways API service call.
1159
1160    :param value: List of an application gateways in a resource group.
1161    :type value: list[~azure.mgmt.network.v2018_01_01.models.ApplicationGateway]
1162    :param next_link: URL to get the next set of results.
1163    :type next_link: str
1164    """
1165
1166    _attribute_map = {
1167        'value': {'key': 'value', 'type': '[ApplicationGateway]'},
1168        'next_link': {'key': 'nextLink', 'type': 'str'},
1169    }
1170
1171    def __init__(
1172        self,
1173        *,
1174        value: Optional[List["ApplicationGateway"]] = None,
1175        next_link: Optional[str] = None,
1176        **kwargs
1177    ):
1178        super(ApplicationGatewayListResult, self).__init__(**kwargs)
1179        self.value = value
1180        self.next_link = next_link
1181
1182
1183class ApplicationGatewayPathRule(SubResource):
1184    """Path rule of URL path map of an application gateway.
1185
1186    :param id: Resource ID.
1187    :type id: str
1188    :param name: Name of the resource that is unique within a resource group. This name can be used
1189     to access the resource.
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 paths: Path rules of URL path map.
1196    :type paths: list[str]
1197    :param backend_address_pool: Backend address pool resource of URL path map path rule.
1198    :type backend_address_pool: ~azure.mgmt.network.v2018_01_01.models.SubResource
1199    :param backend_http_settings: Backend http settings resource of URL path map path rule.
1200    :type backend_http_settings: ~azure.mgmt.network.v2018_01_01.models.SubResource
1201    :param redirect_configuration: Redirect configuration resource of URL path map path rule.
1202    :type redirect_configuration: ~azure.mgmt.network.v2018_01_01.models.SubResource
1203    :param provisioning_state: Path rule of URL path map resource. Possible values are: 'Updating',
1204     'Deleting', and 'Failed'.
1205    :type provisioning_state: str
1206    """
1207
1208    _attribute_map = {
1209        'id': {'key': 'id', 'type': 'str'},
1210        'name': {'key': 'name', 'type': 'str'},
1211        'etag': {'key': 'etag', 'type': 'str'},
1212        'type': {'key': 'type', 'type': 'str'},
1213        'paths': {'key': 'properties.paths', 'type': '[str]'},
1214        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1215        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1216        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1217        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1218    }
1219
1220    def __init__(
1221        self,
1222        *,
1223        id: Optional[str] = None,
1224        name: Optional[str] = None,
1225        etag: Optional[str] = None,
1226        type: Optional[str] = None,
1227        paths: Optional[List[str]] = None,
1228        backend_address_pool: Optional["SubResource"] = None,
1229        backend_http_settings: Optional["SubResource"] = None,
1230        redirect_configuration: Optional["SubResource"] = None,
1231        provisioning_state: Optional[str] = None,
1232        **kwargs
1233    ):
1234        super(ApplicationGatewayPathRule, self).__init__(id=id, **kwargs)
1235        self.name = name
1236        self.etag = etag
1237        self.type = type
1238        self.paths = paths
1239        self.backend_address_pool = backend_address_pool
1240        self.backend_http_settings = backend_http_settings
1241        self.redirect_configuration = redirect_configuration
1242        self.provisioning_state = provisioning_state
1243
1244
1245class ApplicationGatewayProbe(SubResource):
1246    """Probe of the application gateway.
1247
1248    :param id: Resource ID.
1249    :type id: str
1250    :param name: Name of the resource that is unique within a resource group. This name can be used
1251     to access the resource.
1252    :type name: str
1253    :param etag: A unique read-only string that changes whenever the resource is updated.
1254    :type etag: str
1255    :param type: Type of the resource.
1256    :type type: str
1257    :param protocol: Protocol. Possible values include: "Http", "Https".
1258    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayProtocol
1259    :param host: Host name to send the probe to.
1260    :type host: str
1261    :param path: Relative path of probe. Valid path starts from '/'. Probe is sent to
1262     :code:`<Protocol>`://:code:`<host>`::code:`<port>`:code:`<path>`.
1263    :type path: str
1264    :param interval: The probing interval in seconds. This is the time interval between two
1265     consecutive probes. Acceptable values are from 1 second to 86400 seconds.
1266    :type interval: int
1267    :param timeout: the probe timeout in seconds. Probe marked as failed if valid response is not
1268     received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
1269    :type timeout: int
1270    :param unhealthy_threshold: The probe retry count. Backend server is marked down after
1271     consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second
1272     to 20.
1273    :type unhealthy_threshold: int
1274    :param pick_host_name_from_backend_http_settings: Whether the host header should be picked from
1275     the backend http settings. Default value is false.
1276    :type pick_host_name_from_backend_http_settings: bool
1277    :param min_servers: Minimum number of servers that are always marked healthy. Default value is
1278     0.
1279    :type min_servers: int
1280    :param match: Criterion for classifying a healthy probe response.
1281    :type match: ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayProbeHealthResponseMatch
1282    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
1283     values are: 'Updating', 'Deleting', and 'Failed'.
1284    :type provisioning_state: str
1285    """
1286
1287    _attribute_map = {
1288        'id': {'key': 'id', 'type': 'str'},
1289        'name': {'key': 'name', 'type': 'str'},
1290        'etag': {'key': 'etag', 'type': 'str'},
1291        'type': {'key': 'type', 'type': 'str'},
1292        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1293        'host': {'key': 'properties.host', 'type': 'str'},
1294        'path': {'key': 'properties.path', 'type': 'str'},
1295        'interval': {'key': 'properties.interval', 'type': 'int'},
1296        'timeout': {'key': 'properties.timeout', 'type': 'int'},
1297        'unhealthy_threshold': {'key': 'properties.unhealthyThreshold', 'type': 'int'},
1298        'pick_host_name_from_backend_http_settings': {'key': 'properties.pickHostNameFromBackendHttpSettings', 'type': 'bool'},
1299        'min_servers': {'key': 'properties.minServers', 'type': 'int'},
1300        'match': {'key': 'properties.match', 'type': 'ApplicationGatewayProbeHealthResponseMatch'},
1301        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1302    }
1303
1304    def __init__(
1305        self,
1306        *,
1307        id: Optional[str] = None,
1308        name: Optional[str] = None,
1309        etag: Optional[str] = None,
1310        type: Optional[str] = None,
1311        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
1312        host: Optional[str] = None,
1313        path: Optional[str] = None,
1314        interval: Optional[int] = None,
1315        timeout: Optional[int] = None,
1316        unhealthy_threshold: Optional[int] = None,
1317        pick_host_name_from_backend_http_settings: Optional[bool] = None,
1318        min_servers: Optional[int] = None,
1319        match: Optional["ApplicationGatewayProbeHealthResponseMatch"] = None,
1320        provisioning_state: Optional[str] = None,
1321        **kwargs
1322    ):
1323        super(ApplicationGatewayProbe, self).__init__(id=id, **kwargs)
1324        self.name = name
1325        self.etag = etag
1326        self.type = type
1327        self.protocol = protocol
1328        self.host = host
1329        self.path = path
1330        self.interval = interval
1331        self.timeout = timeout
1332        self.unhealthy_threshold = unhealthy_threshold
1333        self.pick_host_name_from_backend_http_settings = pick_host_name_from_backend_http_settings
1334        self.min_servers = min_servers
1335        self.match = match
1336        self.provisioning_state = provisioning_state
1337
1338
1339class ApplicationGatewayProbeHealthResponseMatch(msrest.serialization.Model):
1340    """Application gateway probe health response match.
1341
1342    :param body: Body that must be contained in the health response. Default value is empty.
1343    :type body: str
1344    :param status_codes: Allowed ranges of healthy status codes. Default range of healthy status
1345     codes is 200-399.
1346    :type status_codes: list[str]
1347    """
1348
1349    _attribute_map = {
1350        'body': {'key': 'body', 'type': 'str'},
1351        'status_codes': {'key': 'statusCodes', 'type': '[str]'},
1352    }
1353
1354    def __init__(
1355        self,
1356        *,
1357        body: Optional[str] = None,
1358        status_codes: Optional[List[str]] = None,
1359        **kwargs
1360    ):
1361        super(ApplicationGatewayProbeHealthResponseMatch, self).__init__(**kwargs)
1362        self.body = body
1363        self.status_codes = status_codes
1364
1365
1366class ApplicationGatewayRedirectConfiguration(SubResource):
1367    """Redirect configuration of an application gateway.
1368
1369    :param id: Resource ID.
1370    :type id: str
1371    :param name: Name of the resource that is unique within a resource group. This name can be used
1372     to access the resource.
1373    :type name: str
1374    :param etag: A unique read-only string that changes whenever the resource is updated.
1375    :type etag: str
1376    :param type: Type of the resource.
1377    :type type: str
1378    :param redirect_type: Supported http redirection types - Permanent, Temporary, Found, SeeOther.
1379     Possible values include: "Permanent", "Found", "SeeOther", "Temporary".
1380    :type redirect_type: str or
1381     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayRedirectType
1382    :param target_listener: Reference to a listener to redirect the request to.
1383    :type target_listener: ~azure.mgmt.network.v2018_01_01.models.SubResource
1384    :param target_url: Url to redirect the request to.
1385    :type target_url: str
1386    :param include_path: Include path in the redirected url.
1387    :type include_path: bool
1388    :param include_query_string: Include query string in the redirected url.
1389    :type include_query_string: bool
1390    :param request_routing_rules: Request routing specifying redirect configuration.
1391    :type request_routing_rules: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
1392    :param url_path_maps: Url path maps specifying default redirect configuration.
1393    :type url_path_maps: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
1394    :param path_rules: Path rules specifying redirect configuration.
1395    :type path_rules: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
1396    """
1397
1398    _attribute_map = {
1399        'id': {'key': 'id', 'type': 'str'},
1400        'name': {'key': 'name', 'type': 'str'},
1401        'etag': {'key': 'etag', 'type': 'str'},
1402        'type': {'key': 'type', 'type': 'str'},
1403        'redirect_type': {'key': 'properties.redirectType', 'type': 'str'},
1404        'target_listener': {'key': 'properties.targetListener', 'type': 'SubResource'},
1405        'target_url': {'key': 'properties.targetUrl', 'type': 'str'},
1406        'include_path': {'key': 'properties.includePath', 'type': 'bool'},
1407        'include_query_string': {'key': 'properties.includeQueryString', 'type': 'bool'},
1408        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[SubResource]'},
1409        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[SubResource]'},
1410        'path_rules': {'key': 'properties.pathRules', 'type': '[SubResource]'},
1411    }
1412
1413    def __init__(
1414        self,
1415        *,
1416        id: Optional[str] = None,
1417        name: Optional[str] = None,
1418        etag: Optional[str] = None,
1419        type: Optional[str] = None,
1420        redirect_type: Optional[Union[str, "ApplicationGatewayRedirectType"]] = None,
1421        target_listener: Optional["SubResource"] = None,
1422        target_url: Optional[str] = None,
1423        include_path: Optional[bool] = None,
1424        include_query_string: Optional[bool] = None,
1425        request_routing_rules: Optional[List["SubResource"]] = None,
1426        url_path_maps: Optional[List["SubResource"]] = None,
1427        path_rules: Optional[List["SubResource"]] = None,
1428        **kwargs
1429    ):
1430        super(ApplicationGatewayRedirectConfiguration, self).__init__(id=id, **kwargs)
1431        self.name = name
1432        self.etag = etag
1433        self.type = type
1434        self.redirect_type = redirect_type
1435        self.target_listener = target_listener
1436        self.target_url = target_url
1437        self.include_path = include_path
1438        self.include_query_string = include_query_string
1439        self.request_routing_rules = request_routing_rules
1440        self.url_path_maps = url_path_maps
1441        self.path_rules = path_rules
1442
1443
1444class ApplicationGatewayRequestRoutingRule(SubResource):
1445    """Request routing rule of an application gateway.
1446
1447    :param id: Resource ID.
1448    :type id: str
1449    :param name: Name of the resource that is unique within a resource group. This name can be used
1450     to access the resource.
1451    :type name: str
1452    :param etag: A unique read-only string that changes whenever the resource is updated.
1453    :type etag: str
1454    :param type: Type of the resource.
1455    :type type: str
1456    :param rule_type: Rule type. Possible values include: "Basic", "PathBasedRouting".
1457    :type rule_type: str or
1458     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayRequestRoutingRuleType
1459    :param backend_address_pool: Backend address pool resource of the application gateway.
1460    :type backend_address_pool: ~azure.mgmt.network.v2018_01_01.models.SubResource
1461    :param backend_http_settings: Frontend port resource of the application gateway.
1462    :type backend_http_settings: ~azure.mgmt.network.v2018_01_01.models.SubResource
1463    :param http_listener: Http listener resource of the application gateway.
1464    :type http_listener: ~azure.mgmt.network.v2018_01_01.models.SubResource
1465    :param url_path_map: URL path map resource of the application gateway.
1466    :type url_path_map: ~azure.mgmt.network.v2018_01_01.models.SubResource
1467    :param redirect_configuration: Redirect configuration resource of the application gateway.
1468    :type redirect_configuration: ~azure.mgmt.network.v2018_01_01.models.SubResource
1469    :param provisioning_state: Provisioning state of the request routing rule resource. Possible
1470     values are: 'Updating', 'Deleting', and 'Failed'.
1471    :type provisioning_state: str
1472    """
1473
1474    _attribute_map = {
1475        'id': {'key': 'id', 'type': 'str'},
1476        'name': {'key': 'name', 'type': 'str'},
1477        'etag': {'key': 'etag', 'type': 'str'},
1478        'type': {'key': 'type', 'type': 'str'},
1479        'rule_type': {'key': 'properties.ruleType', 'type': 'str'},
1480        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1481        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1482        'http_listener': {'key': 'properties.httpListener', 'type': 'SubResource'},
1483        'url_path_map': {'key': 'properties.urlPathMap', 'type': 'SubResource'},
1484        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1485        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1486    }
1487
1488    def __init__(
1489        self,
1490        *,
1491        id: Optional[str] = None,
1492        name: Optional[str] = None,
1493        etag: Optional[str] = None,
1494        type: Optional[str] = None,
1495        rule_type: Optional[Union[str, "ApplicationGatewayRequestRoutingRuleType"]] = None,
1496        backend_address_pool: Optional["SubResource"] = None,
1497        backend_http_settings: Optional["SubResource"] = None,
1498        http_listener: Optional["SubResource"] = None,
1499        url_path_map: Optional["SubResource"] = None,
1500        redirect_configuration: Optional["SubResource"] = None,
1501        provisioning_state: Optional[str] = None,
1502        **kwargs
1503    ):
1504        super(ApplicationGatewayRequestRoutingRule, self).__init__(id=id, **kwargs)
1505        self.name = name
1506        self.etag = etag
1507        self.type = type
1508        self.rule_type = rule_type
1509        self.backend_address_pool = backend_address_pool
1510        self.backend_http_settings = backend_http_settings
1511        self.http_listener = http_listener
1512        self.url_path_map = url_path_map
1513        self.redirect_configuration = redirect_configuration
1514        self.provisioning_state = provisioning_state
1515
1516
1517class ApplicationGatewaySku(msrest.serialization.Model):
1518    """SKU of an application gateway.
1519
1520    :param name: Name of an application gateway SKU. Possible values include: "Standard_Small",
1521     "Standard_Medium", "Standard_Large", "WAF_Medium", "WAF_Large".
1522    :type name: str or ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySkuName
1523    :param tier: Tier of an application gateway. Possible values include: "Standard", "WAF".
1524    :type tier: str or ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayTier
1525    :param capacity: Capacity (instance count) of an application gateway.
1526    :type capacity: int
1527    """
1528
1529    _attribute_map = {
1530        'name': {'key': 'name', 'type': 'str'},
1531        'tier': {'key': 'tier', 'type': 'str'},
1532        'capacity': {'key': 'capacity', 'type': 'int'},
1533    }
1534
1535    def __init__(
1536        self,
1537        *,
1538        name: Optional[Union[str, "ApplicationGatewaySkuName"]] = None,
1539        tier: Optional[Union[str, "ApplicationGatewayTier"]] = None,
1540        capacity: Optional[int] = None,
1541        **kwargs
1542    ):
1543        super(ApplicationGatewaySku, self).__init__(**kwargs)
1544        self.name = name
1545        self.tier = tier
1546        self.capacity = capacity
1547
1548
1549class ApplicationGatewaySslCertificate(SubResource):
1550    """SSL certificates of an application gateway.
1551
1552    :param id: Resource ID.
1553    :type id: str
1554    :param name: Name of the resource that is unique within a resource group. This name can be used
1555     to access the resource.
1556    :type name: str
1557    :param etag: A unique read-only string that changes whenever the resource is updated.
1558    :type etag: str
1559    :param type: Type of the resource.
1560    :type type: str
1561    :param data: Base-64 encoded pfx certificate. Only applicable in PUT Request.
1562    :type data: str
1563    :param password: Password for the pfx file specified in data. Only applicable in PUT request.
1564    :type password: str
1565    :param public_cert_data: Base-64 encoded Public cert data corresponding to pfx specified in
1566     data. Only applicable in GET request.
1567    :type public_cert_data: str
1568    :param provisioning_state: Provisioning state of the SSL certificate resource Possible values
1569     are: 'Updating', 'Deleting', and 'Failed'.
1570    :type provisioning_state: str
1571    """
1572
1573    _attribute_map = {
1574        'id': {'key': 'id', 'type': 'str'},
1575        'name': {'key': 'name', 'type': 'str'},
1576        'etag': {'key': 'etag', 'type': 'str'},
1577        'type': {'key': 'type', 'type': 'str'},
1578        'data': {'key': 'properties.data', 'type': 'str'},
1579        'password': {'key': 'properties.password', 'type': 'str'},
1580        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
1581        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1582    }
1583
1584    def __init__(
1585        self,
1586        *,
1587        id: Optional[str] = None,
1588        name: Optional[str] = None,
1589        etag: Optional[str] = None,
1590        type: Optional[str] = None,
1591        data: Optional[str] = None,
1592        password: Optional[str] = None,
1593        public_cert_data: Optional[str] = None,
1594        provisioning_state: Optional[str] = None,
1595        **kwargs
1596    ):
1597        super(ApplicationGatewaySslCertificate, self).__init__(id=id, **kwargs)
1598        self.name = name
1599        self.etag = etag
1600        self.type = type
1601        self.data = data
1602        self.password = password
1603        self.public_cert_data = public_cert_data
1604        self.provisioning_state = provisioning_state
1605
1606
1607class ApplicationGatewaySslPolicy(msrest.serialization.Model):
1608    """Application Gateway Ssl policy.
1609
1610    :param disabled_ssl_protocols: Ssl protocols to be disabled on application gateway.
1611    :type disabled_ssl_protocols: list[str or
1612     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslProtocol]
1613    :param policy_type: Type of Ssl Policy. Possible values include: "Predefined", "Custom".
1614    :type policy_type: str or
1615     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslPolicyType
1616    :param policy_name: Name of Ssl predefined policy. Possible values include:
1617     "AppGwSslPolicy20150501", "AppGwSslPolicy20170401", "AppGwSslPolicy20170401S".
1618    :type policy_name: str or
1619     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslPolicyName
1620    :param cipher_suites: Ssl cipher suites to be enabled in the specified order to application
1621     gateway.
1622    :type cipher_suites: list[str or
1623     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslCipherSuite]
1624    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
1625     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
1626    :type min_protocol_version: str or
1627     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslProtocol
1628    """
1629
1630    _attribute_map = {
1631        'disabled_ssl_protocols': {'key': 'disabledSslProtocols', 'type': '[str]'},
1632        'policy_type': {'key': 'policyType', 'type': 'str'},
1633        'policy_name': {'key': 'policyName', 'type': 'str'},
1634        'cipher_suites': {'key': 'cipherSuites', 'type': '[str]'},
1635        'min_protocol_version': {'key': 'minProtocolVersion', 'type': 'str'},
1636    }
1637
1638    def __init__(
1639        self,
1640        *,
1641        disabled_ssl_protocols: Optional[List[Union[str, "ApplicationGatewaySslProtocol"]]] = None,
1642        policy_type: Optional[Union[str, "ApplicationGatewaySslPolicyType"]] = None,
1643        policy_name: Optional[Union[str, "ApplicationGatewaySslPolicyName"]] = None,
1644        cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
1645        min_protocol_version: Optional[Union[str, "ApplicationGatewaySslProtocol"]] = None,
1646        **kwargs
1647    ):
1648        super(ApplicationGatewaySslPolicy, self).__init__(**kwargs)
1649        self.disabled_ssl_protocols = disabled_ssl_protocols
1650        self.policy_type = policy_type
1651        self.policy_name = policy_name
1652        self.cipher_suites = cipher_suites
1653        self.min_protocol_version = min_protocol_version
1654
1655
1656class ApplicationGatewaySslPredefinedPolicy(SubResource):
1657    """An Ssl predefined policy.
1658
1659    :param id: Resource ID.
1660    :type id: str
1661    :param name: Name of Ssl predefined policy.
1662    :type name: str
1663    :param cipher_suites: Ssl cipher suites to be enabled in the specified order for application
1664     gateway.
1665    :type cipher_suites: list[str or
1666     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslCipherSuite]
1667    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
1668     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
1669    :type min_protocol_version: str or
1670     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewaySslProtocol
1671    """
1672
1673    _attribute_map = {
1674        'id': {'key': 'id', 'type': 'str'},
1675        'name': {'key': 'name', 'type': 'str'},
1676        'cipher_suites': {'key': 'properties.cipherSuites', 'type': '[str]'},
1677        'min_protocol_version': {'key': 'properties.minProtocolVersion', 'type': 'str'},
1678    }
1679
1680    def __init__(
1681        self,
1682        *,
1683        id: Optional[str] = None,
1684        name: Optional[str] = None,
1685        cipher_suites: Optional[List[Union[str, "ApplicationGatewaySslCipherSuite"]]] = None,
1686        min_protocol_version: Optional[Union[str, "ApplicationGatewaySslProtocol"]] = None,
1687        **kwargs
1688    ):
1689        super(ApplicationGatewaySslPredefinedPolicy, self).__init__(id=id, **kwargs)
1690        self.name = name
1691        self.cipher_suites = cipher_suites
1692        self.min_protocol_version = min_protocol_version
1693
1694
1695class ApplicationGatewayUrlPathMap(SubResource):
1696    """UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.
1697
1698    :param id: Resource ID.
1699    :type id: str
1700    :param name: Name of the resource that is unique within a resource group. This name can be used
1701     to access the resource.
1702    :type name: str
1703    :param etag: A unique read-only string that changes whenever the resource is updated.
1704    :type etag: str
1705    :param type: Type of the resource.
1706    :type type: str
1707    :param default_backend_address_pool: Default backend address pool resource of URL path map.
1708    :type default_backend_address_pool: ~azure.mgmt.network.v2018_01_01.models.SubResource
1709    :param default_backend_http_settings: Default backend http settings resource of URL path map.
1710    :type default_backend_http_settings: ~azure.mgmt.network.v2018_01_01.models.SubResource
1711    :param default_redirect_configuration: Default redirect configuration resource of URL path map.
1712    :type default_redirect_configuration: ~azure.mgmt.network.v2018_01_01.models.SubResource
1713    :param path_rules: Path rule of URL path map resource.
1714    :type path_rules: list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayPathRule]
1715    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
1716     values are: 'Updating', 'Deleting', and 'Failed'.
1717    :type provisioning_state: str
1718    """
1719
1720    _attribute_map = {
1721        'id': {'key': 'id', 'type': 'str'},
1722        'name': {'key': 'name', 'type': 'str'},
1723        'etag': {'key': 'etag', 'type': 'str'},
1724        'type': {'key': 'type', 'type': 'str'},
1725        'default_backend_address_pool': {'key': 'properties.defaultBackendAddressPool', 'type': 'SubResource'},
1726        'default_backend_http_settings': {'key': 'properties.defaultBackendHttpSettings', 'type': 'SubResource'},
1727        'default_redirect_configuration': {'key': 'properties.defaultRedirectConfiguration', 'type': 'SubResource'},
1728        'path_rules': {'key': 'properties.pathRules', 'type': '[ApplicationGatewayPathRule]'},
1729        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1730    }
1731
1732    def __init__(
1733        self,
1734        *,
1735        id: Optional[str] = None,
1736        name: Optional[str] = None,
1737        etag: Optional[str] = None,
1738        type: Optional[str] = None,
1739        default_backend_address_pool: Optional["SubResource"] = None,
1740        default_backend_http_settings: Optional["SubResource"] = None,
1741        default_redirect_configuration: Optional["SubResource"] = None,
1742        path_rules: Optional[List["ApplicationGatewayPathRule"]] = None,
1743        provisioning_state: Optional[str] = None,
1744        **kwargs
1745    ):
1746        super(ApplicationGatewayUrlPathMap, self).__init__(id=id, **kwargs)
1747        self.name = name
1748        self.etag = etag
1749        self.type = type
1750        self.default_backend_address_pool = default_backend_address_pool
1751        self.default_backend_http_settings = default_backend_http_settings
1752        self.default_redirect_configuration = default_redirect_configuration
1753        self.path_rules = path_rules
1754        self.provisioning_state = provisioning_state
1755
1756
1757class ApplicationGatewayWebApplicationFirewallConfiguration(msrest.serialization.Model):
1758    """Application gateway web application firewall configuration.
1759
1760    All required parameters must be populated in order to send to Azure.
1761
1762    :param enabled: Required. Whether the web application firewall is enabled or not.
1763    :type enabled: bool
1764    :param firewall_mode: Required. Web application firewall mode. Possible values include:
1765     "Detection", "Prevention".
1766    :type firewall_mode: str or
1767     ~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayFirewallMode
1768    :param rule_set_type: Required. The type of the web application firewall rule set. Possible
1769     values are: 'OWASP'.
1770    :type rule_set_type: str
1771    :param rule_set_version: Required. The version of the rule set type.
1772    :type rule_set_version: str
1773    :param disabled_rule_groups: The disabled rule groups.
1774    :type disabled_rule_groups:
1775     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayFirewallDisabledRuleGroup]
1776    :param request_body_check: Whether allow WAF to check request Body.
1777    :type request_body_check: bool
1778    :param max_request_body_size: Maximum request body size for WAF.
1779    :type max_request_body_size: int
1780    """
1781
1782    _validation = {
1783        'enabled': {'required': True},
1784        'firewall_mode': {'required': True},
1785        'rule_set_type': {'required': True},
1786        'rule_set_version': {'required': True},
1787        'max_request_body_size': {'maximum': 128, 'minimum': 8},
1788    }
1789
1790    _attribute_map = {
1791        'enabled': {'key': 'enabled', 'type': 'bool'},
1792        'firewall_mode': {'key': 'firewallMode', 'type': 'str'},
1793        'rule_set_type': {'key': 'ruleSetType', 'type': 'str'},
1794        'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'},
1795        'disabled_rule_groups': {'key': 'disabledRuleGroups', 'type': '[ApplicationGatewayFirewallDisabledRuleGroup]'},
1796        'request_body_check': {'key': 'requestBodyCheck', 'type': 'bool'},
1797        'max_request_body_size': {'key': 'maxRequestBodySize', 'type': 'int'},
1798    }
1799
1800    def __init__(
1801        self,
1802        *,
1803        enabled: bool,
1804        firewall_mode: Union[str, "ApplicationGatewayFirewallMode"],
1805        rule_set_type: str,
1806        rule_set_version: str,
1807        disabled_rule_groups: Optional[List["ApplicationGatewayFirewallDisabledRuleGroup"]] = None,
1808        request_body_check: Optional[bool] = None,
1809        max_request_body_size: Optional[int] = None,
1810        **kwargs
1811    ):
1812        super(ApplicationGatewayWebApplicationFirewallConfiguration, self).__init__(**kwargs)
1813        self.enabled = enabled
1814        self.firewall_mode = firewall_mode
1815        self.rule_set_type = rule_set_type
1816        self.rule_set_version = rule_set_version
1817        self.disabled_rule_groups = disabled_rule_groups
1818        self.request_body_check = request_body_check
1819        self.max_request_body_size = max_request_body_size
1820
1821
1822class ApplicationSecurityGroup(Resource):
1823    """An application security group in a resource group.
1824
1825    Variables are only populated by the server, and will be ignored when sending a request.
1826
1827    :param id: Resource ID.
1828    :type id: str
1829    :ivar name: Resource name.
1830    :vartype name: str
1831    :ivar type: Resource type.
1832    :vartype type: str
1833    :param location: Resource location.
1834    :type location: str
1835    :param tags: A set of tags. Resource tags.
1836    :type tags: dict[str, str]
1837    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1838    :vartype etag: str
1839    :ivar resource_guid: The resource GUID property of the application security group resource. It
1840     uniquely identifies a resource, even if the user changes its name or migrate the resource
1841     across subscriptions or resource groups.
1842    :vartype resource_guid: str
1843    :ivar provisioning_state: The provisioning state of the application security group resource.
1844     Possible values are: 'Succeeded', 'Updating', 'Deleting', and 'Failed'.
1845    :vartype provisioning_state: str
1846    """
1847
1848    _validation = {
1849        'name': {'readonly': True},
1850        'type': {'readonly': True},
1851        'etag': {'readonly': True},
1852        'resource_guid': {'readonly': True},
1853        'provisioning_state': {'readonly': True},
1854    }
1855
1856    _attribute_map = {
1857        'id': {'key': 'id', 'type': 'str'},
1858        'name': {'key': 'name', 'type': 'str'},
1859        'type': {'key': 'type', 'type': 'str'},
1860        'location': {'key': 'location', 'type': 'str'},
1861        'tags': {'key': 'tags', 'type': '{str}'},
1862        'etag': {'key': 'etag', 'type': 'str'},
1863        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
1864        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1865    }
1866
1867    def __init__(
1868        self,
1869        *,
1870        id: Optional[str] = None,
1871        location: Optional[str] = None,
1872        tags: Optional[Dict[str, str]] = None,
1873        **kwargs
1874    ):
1875        super(ApplicationSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
1876        self.etag = None
1877        self.resource_guid = None
1878        self.provisioning_state = None
1879
1880
1881class ApplicationSecurityGroupListResult(msrest.serialization.Model):
1882    """A list of application security groups.
1883
1884    Variables are only populated by the server, and will be ignored when sending a request.
1885
1886    :param value: A list of application security groups.
1887    :type value: list[~azure.mgmt.network.v2018_01_01.models.ApplicationSecurityGroup]
1888    :ivar next_link: The URL to get the next set of results.
1889    :vartype next_link: str
1890    """
1891
1892    _validation = {
1893        'next_link': {'readonly': True},
1894    }
1895
1896    _attribute_map = {
1897        'value': {'key': 'value', 'type': '[ApplicationSecurityGroup]'},
1898        'next_link': {'key': 'nextLink', 'type': 'str'},
1899    }
1900
1901    def __init__(
1902        self,
1903        *,
1904        value: Optional[List["ApplicationSecurityGroup"]] = None,
1905        **kwargs
1906    ):
1907        super(ApplicationSecurityGroupListResult, self).__init__(**kwargs)
1908        self.value = value
1909        self.next_link = None
1910
1911
1912class AuthorizationListResult(msrest.serialization.Model):
1913    """Response for ListAuthorizations API service call retrieves all authorizations that belongs to an ExpressRouteCircuit.
1914
1915    :param value: The authorizations in an ExpressRoute Circuit.
1916    :type value: list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitAuthorization]
1917    :param next_link: The URL to get the next set of results.
1918    :type next_link: str
1919    """
1920
1921    _attribute_map = {
1922        'value': {'key': 'value', 'type': '[ExpressRouteCircuitAuthorization]'},
1923        'next_link': {'key': 'nextLink', 'type': 'str'},
1924    }
1925
1926    def __init__(
1927        self,
1928        *,
1929        value: Optional[List["ExpressRouteCircuitAuthorization"]] = None,
1930        next_link: Optional[str] = None,
1931        **kwargs
1932    ):
1933        super(AuthorizationListResult, self).__init__(**kwargs)
1934        self.value = value
1935        self.next_link = next_link
1936
1937
1938class Availability(msrest.serialization.Model):
1939    """Availability of the metric.
1940
1941    :param time_grain: The time grain of the availability.
1942    :type time_grain: str
1943    :param retention: The retention of the availability.
1944    :type retention: str
1945    :param blob_duration: Duration of the availability blob.
1946    :type blob_duration: str
1947    """
1948
1949    _attribute_map = {
1950        'time_grain': {'key': 'timeGrain', 'type': 'str'},
1951        'retention': {'key': 'retention', 'type': 'str'},
1952        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
1953    }
1954
1955    def __init__(
1956        self,
1957        *,
1958        time_grain: Optional[str] = None,
1959        retention: Optional[str] = None,
1960        blob_duration: Optional[str] = None,
1961        **kwargs
1962    ):
1963        super(Availability, self).__init__(**kwargs)
1964        self.time_grain = time_grain
1965        self.retention = retention
1966        self.blob_duration = blob_duration
1967
1968
1969class AvailableProvidersList(msrest.serialization.Model):
1970    """List of available countries with details.
1971
1972    All required parameters must be populated in order to send to Azure.
1973
1974    :param countries: Required. List of available countries.
1975    :type countries: list[~azure.mgmt.network.v2018_01_01.models.AvailableProvidersListCountry]
1976    """
1977
1978    _validation = {
1979        'countries': {'required': True},
1980    }
1981
1982    _attribute_map = {
1983        'countries': {'key': 'countries', 'type': '[AvailableProvidersListCountry]'},
1984    }
1985
1986    def __init__(
1987        self,
1988        *,
1989        countries: List["AvailableProvidersListCountry"],
1990        **kwargs
1991    ):
1992        super(AvailableProvidersList, self).__init__(**kwargs)
1993        self.countries = countries
1994
1995
1996class AvailableProvidersListCity(msrest.serialization.Model):
1997    """City or town details.
1998
1999    :param city_name: The city or town name.
2000    :type city_name: str
2001    :param providers: A list of Internet service providers.
2002    :type providers: list[str]
2003    """
2004
2005    _attribute_map = {
2006        'city_name': {'key': 'cityName', 'type': 'str'},
2007        'providers': {'key': 'providers', 'type': '[str]'},
2008    }
2009
2010    def __init__(
2011        self,
2012        *,
2013        city_name: Optional[str] = None,
2014        providers: Optional[List[str]] = None,
2015        **kwargs
2016    ):
2017        super(AvailableProvidersListCity, self).__init__(**kwargs)
2018        self.city_name = city_name
2019        self.providers = providers
2020
2021
2022class AvailableProvidersListCountry(msrest.serialization.Model):
2023    """Country details.
2024
2025    :param country_name: The country name.
2026    :type country_name: str
2027    :param providers: A list of Internet service providers.
2028    :type providers: list[str]
2029    :param states: List of available states in the country.
2030    :type states: list[~azure.mgmt.network.v2018_01_01.models.AvailableProvidersListState]
2031    """
2032
2033    _attribute_map = {
2034        'country_name': {'key': 'countryName', 'type': 'str'},
2035        'providers': {'key': 'providers', 'type': '[str]'},
2036        'states': {'key': 'states', 'type': '[AvailableProvidersListState]'},
2037    }
2038
2039    def __init__(
2040        self,
2041        *,
2042        country_name: Optional[str] = None,
2043        providers: Optional[List[str]] = None,
2044        states: Optional[List["AvailableProvidersListState"]] = None,
2045        **kwargs
2046    ):
2047        super(AvailableProvidersListCountry, self).__init__(**kwargs)
2048        self.country_name = country_name
2049        self.providers = providers
2050        self.states = states
2051
2052
2053class AvailableProvidersListParameters(msrest.serialization.Model):
2054    """Constraints that determine the list of available Internet service providers.
2055
2056    :param azure_locations: A list of Azure regions.
2057    :type azure_locations: list[str]
2058    :param country: The country for available providers list.
2059    :type country: str
2060    :param state: The state for available providers list.
2061    :type state: str
2062    :param city: The city or town for available providers list.
2063    :type city: str
2064    """
2065
2066    _attribute_map = {
2067        'azure_locations': {'key': 'azureLocations', 'type': '[str]'},
2068        'country': {'key': 'country', 'type': 'str'},
2069        'state': {'key': 'state', 'type': 'str'},
2070        'city': {'key': 'city', 'type': 'str'},
2071    }
2072
2073    def __init__(
2074        self,
2075        *,
2076        azure_locations: Optional[List[str]] = None,
2077        country: Optional[str] = None,
2078        state: Optional[str] = None,
2079        city: Optional[str] = None,
2080        **kwargs
2081    ):
2082        super(AvailableProvidersListParameters, self).__init__(**kwargs)
2083        self.azure_locations = azure_locations
2084        self.country = country
2085        self.state = state
2086        self.city = city
2087
2088
2089class AvailableProvidersListState(msrest.serialization.Model):
2090    """State details.
2091
2092    :param state_name: The state name.
2093    :type state_name: str
2094    :param providers: A list of Internet service providers.
2095    :type providers: list[str]
2096    :param cities: List of available cities or towns in the state.
2097    :type cities: list[~azure.mgmt.network.v2018_01_01.models.AvailableProvidersListCity]
2098    """
2099
2100    _attribute_map = {
2101        'state_name': {'key': 'stateName', 'type': 'str'},
2102        'providers': {'key': 'providers', 'type': '[str]'},
2103        'cities': {'key': 'cities', 'type': '[AvailableProvidersListCity]'},
2104    }
2105
2106    def __init__(
2107        self,
2108        *,
2109        state_name: Optional[str] = None,
2110        providers: Optional[List[str]] = None,
2111        cities: Optional[List["AvailableProvidersListCity"]] = None,
2112        **kwargs
2113    ):
2114        super(AvailableProvidersListState, self).__init__(**kwargs)
2115        self.state_name = state_name
2116        self.providers = providers
2117        self.cities = cities
2118
2119
2120class AzureAsyncOperationResult(msrest.serialization.Model):
2121    """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.
2122
2123    :param status: Status of the Azure async operation. Possible values are: 'InProgress',
2124     'Succeeded', and 'Failed'. Possible values include: "InProgress", "Succeeded", "Failed".
2125    :type status: str or ~azure.mgmt.network.v2018_01_01.models.NetworkOperationStatus
2126    :param error:
2127    :type error: ~azure.mgmt.network.v2018_01_01.models.Error
2128    """
2129
2130    _attribute_map = {
2131        'status': {'key': 'status', 'type': 'str'},
2132        'error': {'key': 'error', 'type': 'Error'},
2133    }
2134
2135    def __init__(
2136        self,
2137        *,
2138        status: Optional[Union[str, "NetworkOperationStatus"]] = None,
2139        error: Optional["Error"] = None,
2140        **kwargs
2141    ):
2142        super(AzureAsyncOperationResult, self).__init__(**kwargs)
2143        self.status = status
2144        self.error = error
2145
2146
2147class AzureReachabilityReport(msrest.serialization.Model):
2148    """Azure reachability report details.
2149
2150    All required parameters must be populated in order to send to Azure.
2151
2152    :param aggregation_level: Required. The aggregation level of Azure reachability report. Can be
2153     Country, State or City.
2154    :type aggregation_level: str
2155    :param provider_location: Required. Parameters that define a geographic location.
2156    :type provider_location: ~azure.mgmt.network.v2018_01_01.models.AzureReachabilityReportLocation
2157    :param reachability_report: Required. List of Azure reachability report items.
2158    :type reachability_report:
2159     list[~azure.mgmt.network.v2018_01_01.models.AzureReachabilityReportItem]
2160    """
2161
2162    _validation = {
2163        'aggregation_level': {'required': True},
2164        'provider_location': {'required': True},
2165        'reachability_report': {'required': True},
2166    }
2167
2168    _attribute_map = {
2169        'aggregation_level': {'key': 'aggregationLevel', 'type': 'str'},
2170        'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'},
2171        'reachability_report': {'key': 'reachabilityReport', 'type': '[AzureReachabilityReportItem]'},
2172    }
2173
2174    def __init__(
2175        self,
2176        *,
2177        aggregation_level: str,
2178        provider_location: "AzureReachabilityReportLocation",
2179        reachability_report: List["AzureReachabilityReportItem"],
2180        **kwargs
2181    ):
2182        super(AzureReachabilityReport, self).__init__(**kwargs)
2183        self.aggregation_level = aggregation_level
2184        self.provider_location = provider_location
2185        self.reachability_report = reachability_report
2186
2187
2188class AzureReachabilityReportItem(msrest.serialization.Model):
2189    """Azure reachability report details for a given provider location.
2190
2191    :param provider: The Internet service provider.
2192    :type provider: str
2193    :param azure_location: The Azure region.
2194    :type azure_location: str
2195    :param latencies: List of latency details for each of the time series.
2196    :type latencies:
2197     list[~azure.mgmt.network.v2018_01_01.models.AzureReachabilityReportLatencyInfo]
2198    """
2199
2200    _attribute_map = {
2201        'provider': {'key': 'provider', 'type': 'str'},
2202        'azure_location': {'key': 'azureLocation', 'type': 'str'},
2203        'latencies': {'key': 'latencies', 'type': '[AzureReachabilityReportLatencyInfo]'},
2204    }
2205
2206    def __init__(
2207        self,
2208        *,
2209        provider: Optional[str] = None,
2210        azure_location: Optional[str] = None,
2211        latencies: Optional[List["AzureReachabilityReportLatencyInfo"]] = None,
2212        **kwargs
2213    ):
2214        super(AzureReachabilityReportItem, self).__init__(**kwargs)
2215        self.provider = provider
2216        self.azure_location = azure_location
2217        self.latencies = latencies
2218
2219
2220class AzureReachabilityReportLatencyInfo(msrest.serialization.Model):
2221    """Details on latency for a time series.
2222
2223    :param time_stamp: The time stamp.
2224    :type time_stamp: ~datetime.datetime
2225    :param score: The relative latency score between 1 and 100, higher values indicating a faster
2226     connection.
2227    :type score: int
2228    """
2229
2230    _validation = {
2231        'score': {'maximum': 100, 'minimum': 1},
2232    }
2233
2234    _attribute_map = {
2235        'time_stamp': {'key': 'timeStamp', 'type': 'iso-8601'},
2236        'score': {'key': 'score', 'type': 'int'},
2237    }
2238
2239    def __init__(
2240        self,
2241        *,
2242        time_stamp: Optional[datetime.datetime] = None,
2243        score: Optional[int] = None,
2244        **kwargs
2245    ):
2246        super(AzureReachabilityReportLatencyInfo, self).__init__(**kwargs)
2247        self.time_stamp = time_stamp
2248        self.score = score
2249
2250
2251class AzureReachabilityReportLocation(msrest.serialization.Model):
2252    """Parameters that define a geographic location.
2253
2254    All required parameters must be populated in order to send to Azure.
2255
2256    :param country: Required. The name of the country.
2257    :type country: str
2258    :param state: The name of the state.
2259    :type state: str
2260    :param city: The name of the city or town.
2261    :type city: str
2262    """
2263
2264    _validation = {
2265        'country': {'required': True},
2266    }
2267
2268    _attribute_map = {
2269        'country': {'key': 'country', 'type': 'str'},
2270        'state': {'key': 'state', 'type': 'str'},
2271        'city': {'key': 'city', 'type': 'str'},
2272    }
2273
2274    def __init__(
2275        self,
2276        *,
2277        country: str,
2278        state: Optional[str] = None,
2279        city: Optional[str] = None,
2280        **kwargs
2281    ):
2282        super(AzureReachabilityReportLocation, self).__init__(**kwargs)
2283        self.country = country
2284        self.state = state
2285        self.city = city
2286
2287
2288class AzureReachabilityReportParameters(msrest.serialization.Model):
2289    """Geographic and time constraints for Azure reachability report.
2290
2291    All required parameters must be populated in order to send to Azure.
2292
2293    :param provider_location: Required. Parameters that define a geographic location.
2294    :type provider_location: ~azure.mgmt.network.v2018_01_01.models.AzureReachabilityReportLocation
2295    :param providers: List of Internet service providers.
2296    :type providers: list[str]
2297    :param azure_locations: Optional Azure regions to scope the query to.
2298    :type azure_locations: list[str]
2299    :param start_time: Required. The start time for the Azure reachability report.
2300    :type start_time: ~datetime.datetime
2301    :param end_time: Required. The end time for the Azure reachability report.
2302    :type end_time: ~datetime.datetime
2303    """
2304
2305    _validation = {
2306        'provider_location': {'required': True},
2307        'start_time': {'required': True},
2308        'end_time': {'required': True},
2309    }
2310
2311    _attribute_map = {
2312        'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'},
2313        'providers': {'key': 'providers', 'type': '[str]'},
2314        'azure_locations': {'key': 'azureLocations', 'type': '[str]'},
2315        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
2316        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
2317    }
2318
2319    def __init__(
2320        self,
2321        *,
2322        provider_location: "AzureReachabilityReportLocation",
2323        start_time: datetime.datetime,
2324        end_time: datetime.datetime,
2325        providers: Optional[List[str]] = None,
2326        azure_locations: Optional[List[str]] = None,
2327        **kwargs
2328    ):
2329        super(AzureReachabilityReportParameters, self).__init__(**kwargs)
2330        self.provider_location = provider_location
2331        self.providers = providers
2332        self.azure_locations = azure_locations
2333        self.start_time = start_time
2334        self.end_time = end_time
2335
2336
2337class BackendAddressPool(SubResource):
2338    """Pool of backend IP addresses.
2339
2340    Variables are only populated by the server, and will be ignored when sending a request.
2341
2342    :param id: Resource ID.
2343    :type id: str
2344    :param name: Gets name of the resource that is unique within a resource group. This name can be
2345     used to access the resource.
2346    :type name: str
2347    :param etag: A unique read-only string that changes whenever the resource is updated.
2348    :type etag: str
2349    :ivar backend_ip_configurations: Gets collection of references to IP addresses defined in
2350     network interfaces.
2351    :vartype backend_ip_configurations:
2352     list[~azure.mgmt.network.v2018_01_01.models.NetworkInterfaceIPConfiguration]
2353    :ivar load_balancing_rules: Gets load balancing rules that use this backend address pool.
2354    :vartype load_balancing_rules: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
2355    :ivar outbound_nat_rule: Gets outbound rules that use this backend address pool.
2356    :vartype outbound_nat_rule: ~azure.mgmt.network.v2018_01_01.models.SubResource
2357    :param provisioning_state: Get provisioning state of the public IP resource. Possible values
2358     are: 'Updating', 'Deleting', and 'Failed'.
2359    :type provisioning_state: str
2360    """
2361
2362    _validation = {
2363        'backend_ip_configurations': {'readonly': True},
2364        'load_balancing_rules': {'readonly': True},
2365        'outbound_nat_rule': {'readonly': True},
2366    }
2367
2368    _attribute_map = {
2369        'id': {'key': 'id', 'type': 'str'},
2370        'name': {'key': 'name', 'type': 'str'},
2371        'etag': {'key': 'etag', 'type': 'str'},
2372        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
2373        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
2374        'outbound_nat_rule': {'key': 'properties.outboundNatRule', 'type': 'SubResource'},
2375        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2376    }
2377
2378    def __init__(
2379        self,
2380        *,
2381        id: Optional[str] = None,
2382        name: Optional[str] = None,
2383        etag: Optional[str] = None,
2384        provisioning_state: Optional[str] = None,
2385        **kwargs
2386    ):
2387        super(BackendAddressPool, self).__init__(id=id, **kwargs)
2388        self.name = name
2389        self.etag = etag
2390        self.backend_ip_configurations = None
2391        self.load_balancing_rules = None
2392        self.outbound_nat_rule = None
2393        self.provisioning_state = provisioning_state
2394
2395
2396class BGPCommunity(msrest.serialization.Model):
2397    """Contains bgp community information offered in Service Community resources.
2398
2399    :param service_supported_region: The region which the service support. e.g. For O365, region is
2400     Global.
2401    :type service_supported_region: str
2402    :param community_name: The name of the bgp community. e.g. Skype.
2403    :type community_name: str
2404    :param community_value: The value of the bgp community. For more information:
2405     https://docs.microsoft.com/en-us/azure/expressroute/expressroute-routing.
2406    :type community_value: str
2407    :param community_prefixes: The prefixes that the bgp community contains.
2408    :type community_prefixes: list[str]
2409    :param is_authorized_to_use: Customer is authorized to use bgp community or not.
2410    :type is_authorized_to_use: bool
2411    :param service_group: The service group of the bgp community contains.
2412    :type service_group: str
2413    """
2414
2415    _attribute_map = {
2416        'service_supported_region': {'key': 'serviceSupportedRegion', 'type': 'str'},
2417        'community_name': {'key': 'communityName', 'type': 'str'},
2418        'community_value': {'key': 'communityValue', 'type': 'str'},
2419        'community_prefixes': {'key': 'communityPrefixes', 'type': '[str]'},
2420        'is_authorized_to_use': {'key': 'isAuthorizedToUse', 'type': 'bool'},
2421        'service_group': {'key': 'serviceGroup', 'type': 'str'},
2422    }
2423
2424    def __init__(
2425        self,
2426        *,
2427        service_supported_region: Optional[str] = None,
2428        community_name: Optional[str] = None,
2429        community_value: Optional[str] = None,
2430        community_prefixes: Optional[List[str]] = None,
2431        is_authorized_to_use: Optional[bool] = None,
2432        service_group: Optional[str] = None,
2433        **kwargs
2434    ):
2435        super(BGPCommunity, self).__init__(**kwargs)
2436        self.service_supported_region = service_supported_region
2437        self.community_name = community_name
2438        self.community_value = community_value
2439        self.community_prefixes = community_prefixes
2440        self.is_authorized_to_use = is_authorized_to_use
2441        self.service_group = service_group
2442
2443
2444class BgpPeerStatus(msrest.serialization.Model):
2445    """BGP peer status details.
2446
2447    Variables are only populated by the server, and will be ignored when sending a request.
2448
2449    :ivar local_address: The virtual network gateway's local address.
2450    :vartype local_address: str
2451    :ivar neighbor: The remote BGP peer.
2452    :vartype neighbor: str
2453    :ivar asn: The autonomous system number of the remote BGP peer.
2454    :vartype asn: int
2455    :ivar state: The BGP peer state. Possible values include: "Unknown", "Stopped", "Idle",
2456     "Connecting", "Connected".
2457    :vartype state: str or ~azure.mgmt.network.v2018_01_01.models.BgpPeerState
2458    :ivar connected_duration: For how long the peering has been up.
2459    :vartype connected_duration: str
2460    :ivar routes_received: The number of routes learned from this peer.
2461    :vartype routes_received: long
2462    :ivar messages_sent: The number of BGP messages sent.
2463    :vartype messages_sent: long
2464    :ivar messages_received: The number of BGP messages received.
2465    :vartype messages_received: long
2466    """
2467
2468    _validation = {
2469        'local_address': {'readonly': True},
2470        'neighbor': {'readonly': True},
2471        'asn': {'readonly': True},
2472        'state': {'readonly': True},
2473        'connected_duration': {'readonly': True},
2474        'routes_received': {'readonly': True},
2475        'messages_sent': {'readonly': True},
2476        'messages_received': {'readonly': True},
2477    }
2478
2479    _attribute_map = {
2480        'local_address': {'key': 'localAddress', 'type': 'str'},
2481        'neighbor': {'key': 'neighbor', 'type': 'str'},
2482        'asn': {'key': 'asn', 'type': 'int'},
2483        'state': {'key': 'state', 'type': 'str'},
2484        'connected_duration': {'key': 'connectedDuration', 'type': 'str'},
2485        'routes_received': {'key': 'routesReceived', 'type': 'long'},
2486        'messages_sent': {'key': 'messagesSent', 'type': 'long'},
2487        'messages_received': {'key': 'messagesReceived', 'type': 'long'},
2488    }
2489
2490    def __init__(
2491        self,
2492        **kwargs
2493    ):
2494        super(BgpPeerStatus, self).__init__(**kwargs)
2495        self.local_address = None
2496        self.neighbor = None
2497        self.asn = None
2498        self.state = None
2499        self.connected_duration = None
2500        self.routes_received = None
2501        self.messages_sent = None
2502        self.messages_received = None
2503
2504
2505class BgpPeerStatusListResult(msrest.serialization.Model):
2506    """Response for list BGP peer status API service call.
2507
2508    :param value: List of BGP peers.
2509    :type value: list[~azure.mgmt.network.v2018_01_01.models.BgpPeerStatus]
2510    """
2511
2512    _attribute_map = {
2513        'value': {'key': 'value', 'type': '[BgpPeerStatus]'},
2514    }
2515
2516    def __init__(
2517        self,
2518        *,
2519        value: Optional[List["BgpPeerStatus"]] = None,
2520        **kwargs
2521    ):
2522        super(BgpPeerStatusListResult, self).__init__(**kwargs)
2523        self.value = value
2524
2525
2526class BgpServiceCommunity(Resource):
2527    """Service Community Properties.
2528
2529    Variables are only populated by the server, and will be ignored when sending a request.
2530
2531    :param id: Resource ID.
2532    :type id: str
2533    :ivar name: Resource name.
2534    :vartype name: str
2535    :ivar type: Resource type.
2536    :vartype type: str
2537    :param location: Resource location.
2538    :type location: str
2539    :param tags: A set of tags. Resource tags.
2540    :type tags: dict[str, str]
2541    :param service_name: The name of the bgp community. e.g. Skype.
2542    :type service_name: str
2543    :param bgp_communities: Get a list of bgp communities.
2544    :type bgp_communities: list[~azure.mgmt.network.v2018_01_01.models.BGPCommunity]
2545    """
2546
2547    _validation = {
2548        'name': {'readonly': True},
2549        'type': {'readonly': True},
2550    }
2551
2552    _attribute_map = {
2553        'id': {'key': 'id', 'type': 'str'},
2554        'name': {'key': 'name', 'type': 'str'},
2555        'type': {'key': 'type', 'type': 'str'},
2556        'location': {'key': 'location', 'type': 'str'},
2557        'tags': {'key': 'tags', 'type': '{str}'},
2558        'service_name': {'key': 'properties.serviceName', 'type': 'str'},
2559        'bgp_communities': {'key': 'properties.bgpCommunities', 'type': '[BGPCommunity]'},
2560    }
2561
2562    def __init__(
2563        self,
2564        *,
2565        id: Optional[str] = None,
2566        location: Optional[str] = None,
2567        tags: Optional[Dict[str, str]] = None,
2568        service_name: Optional[str] = None,
2569        bgp_communities: Optional[List["BGPCommunity"]] = None,
2570        **kwargs
2571    ):
2572        super(BgpServiceCommunity, self).__init__(id=id, location=location, tags=tags, **kwargs)
2573        self.service_name = service_name
2574        self.bgp_communities = bgp_communities
2575
2576
2577class BgpServiceCommunityListResult(msrest.serialization.Model):
2578    """Response for the ListServiceCommunity API service call.
2579
2580    :param value: A list of service community resources.
2581    :type value: list[~azure.mgmt.network.v2018_01_01.models.BgpServiceCommunity]
2582    :param next_link: The URL to get the next set of results.
2583    :type next_link: str
2584    """
2585
2586    _attribute_map = {
2587        'value': {'key': 'value', 'type': '[BgpServiceCommunity]'},
2588        'next_link': {'key': 'nextLink', 'type': 'str'},
2589    }
2590
2591    def __init__(
2592        self,
2593        *,
2594        value: Optional[List["BgpServiceCommunity"]] = None,
2595        next_link: Optional[str] = None,
2596        **kwargs
2597    ):
2598        super(BgpServiceCommunityListResult, self).__init__(**kwargs)
2599        self.value = value
2600        self.next_link = next_link
2601
2602
2603class BgpSettings(msrest.serialization.Model):
2604    """BGP settings details.
2605
2606    :param asn: The BGP speaker's ASN.
2607    :type asn: long
2608    :param bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker.
2609    :type bgp_peering_address: str
2610    :param peer_weight: The weight added to routes learned from this BGP speaker.
2611    :type peer_weight: int
2612    """
2613
2614    _attribute_map = {
2615        'asn': {'key': 'asn', 'type': 'long'},
2616        'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'},
2617        'peer_weight': {'key': 'peerWeight', 'type': 'int'},
2618    }
2619
2620    def __init__(
2621        self,
2622        *,
2623        asn: Optional[int] = None,
2624        bgp_peering_address: Optional[str] = None,
2625        peer_weight: Optional[int] = None,
2626        **kwargs
2627    ):
2628        super(BgpSettings, self).__init__(**kwargs)
2629        self.asn = asn
2630        self.bgp_peering_address = bgp_peering_address
2631        self.peer_weight = peer_weight
2632
2633
2634class ConnectionMonitor(msrest.serialization.Model):
2635    """Parameters that define the operation to create a connection monitor.
2636
2637    All required parameters must be populated in order to send to Azure.
2638
2639    :param location: Connection monitor location.
2640    :type location: str
2641    :param tags: A set of tags. Connection monitor tags.
2642    :type tags: dict[str, str]
2643    :param source: Required. Describes the source of connection monitor.
2644    :type source: ~azure.mgmt.network.v2018_01_01.models.ConnectionMonitorSource
2645    :param destination: Required. Describes the destination of connection monitor.
2646    :type destination: ~azure.mgmt.network.v2018_01_01.models.ConnectionMonitorDestination
2647    :param auto_start: Determines if the connection monitor will start automatically once created.
2648    :type auto_start: bool
2649    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
2650    :type monitoring_interval_in_seconds: int
2651    """
2652
2653    _validation = {
2654        'source': {'required': True},
2655        'destination': {'required': True},
2656    }
2657
2658    _attribute_map = {
2659        'location': {'key': 'location', 'type': 'str'},
2660        'tags': {'key': 'tags', 'type': '{str}'},
2661        'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'},
2662        'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'},
2663        'auto_start': {'key': 'properties.autoStart', 'type': 'bool'},
2664        'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'},
2665    }
2666
2667    def __init__(
2668        self,
2669        *,
2670        source: "ConnectionMonitorSource",
2671        destination: "ConnectionMonitorDestination",
2672        location: Optional[str] = None,
2673        tags: Optional[Dict[str, str]] = None,
2674        auto_start: Optional[bool] = True,
2675        monitoring_interval_in_seconds: Optional[int] = 60,
2676        **kwargs
2677    ):
2678        super(ConnectionMonitor, self).__init__(**kwargs)
2679        self.location = location
2680        self.tags = tags
2681        self.source = source
2682        self.destination = destination
2683        self.auto_start = auto_start
2684        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
2685
2686
2687class ConnectionMonitorDestination(msrest.serialization.Model):
2688    """Describes the destination of connection monitor.
2689
2690    :param resource_id: The ID of the resource used as the destination by connection monitor.
2691    :type resource_id: str
2692    :param address: Address of the connection monitor destination (IP or domain name).
2693    :type address: str
2694    :param port: The destination port used by connection monitor.
2695    :type port: int
2696    """
2697
2698    _attribute_map = {
2699        'resource_id': {'key': 'resourceId', 'type': 'str'},
2700        'address': {'key': 'address', 'type': 'str'},
2701        'port': {'key': 'port', 'type': 'int'},
2702    }
2703
2704    def __init__(
2705        self,
2706        *,
2707        resource_id: Optional[str] = None,
2708        address: Optional[str] = None,
2709        port: Optional[int] = None,
2710        **kwargs
2711    ):
2712        super(ConnectionMonitorDestination, self).__init__(**kwargs)
2713        self.resource_id = resource_id
2714        self.address = address
2715        self.port = port
2716
2717
2718class ConnectionMonitorListResult(msrest.serialization.Model):
2719    """List of connection monitors.
2720
2721    :param value: Information about connection monitors.
2722    :type value: list[~azure.mgmt.network.v2018_01_01.models.ConnectionMonitorResult]
2723    """
2724
2725    _attribute_map = {
2726        'value': {'key': 'value', 'type': '[ConnectionMonitorResult]'},
2727    }
2728
2729    def __init__(
2730        self,
2731        *,
2732        value: Optional[List["ConnectionMonitorResult"]] = None,
2733        **kwargs
2734    ):
2735        super(ConnectionMonitorListResult, self).__init__(**kwargs)
2736        self.value = value
2737
2738
2739class ConnectionMonitorParameters(msrest.serialization.Model):
2740    """Parameters that define the operation to create a connection monitor.
2741
2742    All required parameters must be populated in order to send to Azure.
2743
2744    :param source: Required. Describes the source of connection monitor.
2745    :type source: ~azure.mgmt.network.v2018_01_01.models.ConnectionMonitorSource
2746    :param destination: Required. Describes the destination of connection monitor.
2747    :type destination: ~azure.mgmt.network.v2018_01_01.models.ConnectionMonitorDestination
2748    :param auto_start: Determines if the connection monitor will start automatically once created.
2749    :type auto_start: bool
2750    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
2751    :type monitoring_interval_in_seconds: int
2752    """
2753
2754    _validation = {
2755        'source': {'required': True},
2756        'destination': {'required': True},
2757    }
2758
2759    _attribute_map = {
2760        'source': {'key': 'source', 'type': 'ConnectionMonitorSource'},
2761        'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'},
2762        'auto_start': {'key': 'autoStart', 'type': 'bool'},
2763        'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'},
2764    }
2765
2766    def __init__(
2767        self,
2768        *,
2769        source: "ConnectionMonitorSource",
2770        destination: "ConnectionMonitorDestination",
2771        auto_start: Optional[bool] = True,
2772        monitoring_interval_in_seconds: Optional[int] = 60,
2773        **kwargs
2774    ):
2775        super(ConnectionMonitorParameters, self).__init__(**kwargs)
2776        self.source = source
2777        self.destination = destination
2778        self.auto_start = auto_start
2779        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
2780
2781
2782class ConnectionMonitorQueryResult(msrest.serialization.Model):
2783    """List of connection states snapshots.
2784
2785    :param states: Information about connection states.
2786    :type states: list[~azure.mgmt.network.v2018_01_01.models.ConnectionStateSnapshot]
2787    """
2788
2789    _attribute_map = {
2790        'states': {'key': 'states', 'type': '[ConnectionStateSnapshot]'},
2791    }
2792
2793    def __init__(
2794        self,
2795        *,
2796        states: Optional[List["ConnectionStateSnapshot"]] = None,
2797        **kwargs
2798    ):
2799        super(ConnectionMonitorQueryResult, self).__init__(**kwargs)
2800        self.states = states
2801
2802
2803class ConnectionMonitorResult(msrest.serialization.Model):
2804    """Information about the connection monitor.
2805
2806    Variables are only populated by the server, and will be ignored when sending a request.
2807
2808    :ivar name: Name of the connection monitor.
2809    :vartype name: str
2810    :ivar id: ID of the connection monitor.
2811    :vartype id: str
2812    :param etag:
2813    :type etag: str
2814    :ivar type: Connection monitor type.
2815    :vartype type: str
2816    :param location: Connection monitor location.
2817    :type location: str
2818    :param tags: A set of tags. Connection monitor tags.
2819    :type tags: dict[str, str]
2820    :param source: Describes the source of connection monitor.
2821    :type source: ~azure.mgmt.network.v2018_01_01.models.ConnectionMonitorSource
2822    :param destination: Describes the destination of connection monitor.
2823    :type destination: ~azure.mgmt.network.v2018_01_01.models.ConnectionMonitorDestination
2824    :param auto_start: Determines if the connection monitor will start automatically once created.
2825    :type auto_start: bool
2826    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
2827    :type monitoring_interval_in_seconds: int
2828    :param provisioning_state: The provisioning state of the connection monitor. Possible values
2829     include: "Succeeded", "Updating", "Deleting", "Failed".
2830    :type provisioning_state: str or ~azure.mgmt.network.v2018_01_01.models.ProvisioningState
2831    :param start_time: The date and time when the connection monitor was started.
2832    :type start_time: ~datetime.datetime
2833    :param monitoring_status: The monitoring status of the connection monitor.
2834    :type monitoring_status: str
2835    """
2836
2837    _validation = {
2838        'name': {'readonly': True},
2839        'id': {'readonly': True},
2840        'type': {'readonly': True},
2841    }
2842
2843    _attribute_map = {
2844        'name': {'key': 'name', 'type': 'str'},
2845        'id': {'key': 'id', 'type': 'str'},
2846        'etag': {'key': 'etag', 'type': 'str'},
2847        'type': {'key': 'type', 'type': 'str'},
2848        'location': {'key': 'location', 'type': 'str'},
2849        'tags': {'key': 'tags', 'type': '{str}'},
2850        'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'},
2851        'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'},
2852        'auto_start': {'key': 'properties.autoStart', 'type': 'bool'},
2853        'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'},
2854        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2855        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
2856        'monitoring_status': {'key': 'properties.monitoringStatus', 'type': 'str'},
2857    }
2858
2859    def __init__(
2860        self,
2861        *,
2862        etag: Optional[str] = "A unique read-only string that changes whenever the resource is updated.",
2863        location: Optional[str] = None,
2864        tags: Optional[Dict[str, str]] = None,
2865        source: Optional["ConnectionMonitorSource"] = None,
2866        destination: Optional["ConnectionMonitorDestination"] = None,
2867        auto_start: Optional[bool] = True,
2868        monitoring_interval_in_seconds: Optional[int] = 60,
2869        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
2870        start_time: Optional[datetime.datetime] = None,
2871        monitoring_status: Optional[str] = None,
2872        **kwargs
2873    ):
2874        super(ConnectionMonitorResult, self).__init__(**kwargs)
2875        self.name = None
2876        self.id = None
2877        self.etag = etag
2878        self.type = None
2879        self.location = location
2880        self.tags = tags
2881        self.source = source
2882        self.destination = destination
2883        self.auto_start = auto_start
2884        self.monitoring_interval_in_seconds = monitoring_interval_in_seconds
2885        self.provisioning_state = provisioning_state
2886        self.start_time = start_time
2887        self.monitoring_status = monitoring_status
2888
2889
2890class ConnectionMonitorResultProperties(ConnectionMonitorParameters):
2891    """Describes the properties of a connection monitor.
2892
2893    All required parameters must be populated in order to send to Azure.
2894
2895    :param source: Required. Describes the source of connection monitor.
2896    :type source: ~azure.mgmt.network.v2018_01_01.models.ConnectionMonitorSource
2897    :param destination: Required. Describes the destination of connection monitor.
2898    :type destination: ~azure.mgmt.network.v2018_01_01.models.ConnectionMonitorDestination
2899    :param auto_start: Determines if the connection monitor will start automatically once created.
2900    :type auto_start: bool
2901    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
2902    :type monitoring_interval_in_seconds: int
2903    :param provisioning_state: The provisioning state of the connection monitor. Possible values
2904     include: "Succeeded", "Updating", "Deleting", "Failed".
2905    :type provisioning_state: str or ~azure.mgmt.network.v2018_01_01.models.ProvisioningState
2906    :param start_time: The date and time when the connection monitor was started.
2907    :type start_time: ~datetime.datetime
2908    :param monitoring_status: The monitoring status of the connection monitor.
2909    :type monitoring_status: str
2910    """
2911
2912    _validation = {
2913        'source': {'required': True},
2914        'destination': {'required': True},
2915    }
2916
2917    _attribute_map = {
2918        'source': {'key': 'source', 'type': 'ConnectionMonitorSource'},
2919        'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'},
2920        'auto_start': {'key': 'autoStart', 'type': 'bool'},
2921        'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'},
2922        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
2923        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
2924        'monitoring_status': {'key': 'monitoringStatus', 'type': 'str'},
2925    }
2926
2927    def __init__(
2928        self,
2929        *,
2930        source: "ConnectionMonitorSource",
2931        destination: "ConnectionMonitorDestination",
2932        auto_start: Optional[bool] = True,
2933        monitoring_interval_in_seconds: Optional[int] = 60,
2934        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
2935        start_time: Optional[datetime.datetime] = None,
2936        monitoring_status: Optional[str] = None,
2937        **kwargs
2938    ):
2939        super(ConnectionMonitorResultProperties, self).__init__(source=source, destination=destination, auto_start=auto_start, monitoring_interval_in_seconds=monitoring_interval_in_seconds, **kwargs)
2940        self.provisioning_state = provisioning_state
2941        self.start_time = start_time
2942        self.monitoring_status = monitoring_status
2943
2944
2945class ConnectionMonitorSource(msrest.serialization.Model):
2946    """Describes the source of connection monitor.
2947
2948    All required parameters must be populated in order to send to Azure.
2949
2950    :param resource_id: Required. The ID of the resource used as the source by connection monitor.
2951    :type resource_id: str
2952    :param port: The source port used by connection monitor.
2953    :type port: int
2954    """
2955
2956    _validation = {
2957        'resource_id': {'required': True},
2958    }
2959
2960    _attribute_map = {
2961        'resource_id': {'key': 'resourceId', 'type': 'str'},
2962        'port': {'key': 'port', 'type': 'int'},
2963    }
2964
2965    def __init__(
2966        self,
2967        *,
2968        resource_id: str,
2969        port: Optional[int] = None,
2970        **kwargs
2971    ):
2972        super(ConnectionMonitorSource, self).__init__(**kwargs)
2973        self.resource_id = resource_id
2974        self.port = port
2975
2976
2977class ConnectionResetSharedKey(msrest.serialization.Model):
2978    """The virtual network connection reset shared key.
2979
2980    All required parameters must be populated in order to send to Azure.
2981
2982    :param key_length: Required. The virtual network connection reset shared key length, should
2983     between 1 and 128.
2984    :type key_length: int
2985    """
2986
2987    _validation = {
2988        'key_length': {'required': True, 'maximum': 128, 'minimum': 1},
2989    }
2990
2991    _attribute_map = {
2992        'key_length': {'key': 'keyLength', 'type': 'int'},
2993    }
2994
2995    def __init__(
2996        self,
2997        *,
2998        key_length: int,
2999        **kwargs
3000    ):
3001        super(ConnectionResetSharedKey, self).__init__(**kwargs)
3002        self.key_length = key_length
3003
3004
3005class ConnectionSharedKey(msrest.serialization.Model):
3006    """Response for GetConnectionSharedKey API service call.
3007
3008    All required parameters must be populated in order to send to Azure.
3009
3010    :param value: Required. The virtual network connection shared key value.
3011    :type value: str
3012    """
3013
3014    _validation = {
3015        'value': {'required': True},
3016    }
3017
3018    _attribute_map = {
3019        'value': {'key': 'value', 'type': 'str'},
3020    }
3021
3022    def __init__(
3023        self,
3024        *,
3025        value: str,
3026        **kwargs
3027    ):
3028        super(ConnectionSharedKey, self).__init__(**kwargs)
3029        self.value = value
3030
3031
3032class ConnectionStateSnapshot(msrest.serialization.Model):
3033    """Connection state snapshot.
3034
3035    Variables are only populated by the server, and will be ignored when sending a request.
3036
3037    :param connection_state: The connection state. Possible values include: "Reachable",
3038     "Unreachable", "Unknown".
3039    :type connection_state: str or ~azure.mgmt.network.v2018_01_01.models.ConnectionState
3040    :param start_time: The start time of the connection snapshot.
3041    :type start_time: ~datetime.datetime
3042    :param end_time: The end time of the connection snapshot.
3043    :type end_time: ~datetime.datetime
3044    :param evaluation_state: Connectivity analysis evaluation state. Possible values include:
3045     "NotStarted", "InProgress", "Completed".
3046    :type evaluation_state: str or ~azure.mgmt.network.v2018_01_01.models.EvaluationState
3047    :ivar hops: List of hops between the source and the destination.
3048    :vartype hops: list[~azure.mgmt.network.v2018_01_01.models.ConnectivityHop]
3049    """
3050
3051    _validation = {
3052        'hops': {'readonly': True},
3053    }
3054
3055    _attribute_map = {
3056        'connection_state': {'key': 'connectionState', 'type': 'str'},
3057        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
3058        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
3059        'evaluation_state': {'key': 'evaluationState', 'type': 'str'},
3060        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
3061    }
3062
3063    def __init__(
3064        self,
3065        *,
3066        connection_state: Optional[Union[str, "ConnectionState"]] = None,
3067        start_time: Optional[datetime.datetime] = None,
3068        end_time: Optional[datetime.datetime] = None,
3069        evaluation_state: Optional[Union[str, "EvaluationState"]] = None,
3070        **kwargs
3071    ):
3072        super(ConnectionStateSnapshot, self).__init__(**kwargs)
3073        self.connection_state = connection_state
3074        self.start_time = start_time
3075        self.end_time = end_time
3076        self.evaluation_state = evaluation_state
3077        self.hops = None
3078
3079
3080class ConnectivityDestination(msrest.serialization.Model):
3081    """Parameters that define destination of connection.
3082
3083    :param resource_id: The ID of the resource to which a connection attempt will be made.
3084    :type resource_id: str
3085    :param address: The IP address or URI the resource to which a connection attempt will be made.
3086    :type address: str
3087    :param port: Port on which check connectivity will be performed.
3088    :type port: int
3089    """
3090
3091    _attribute_map = {
3092        'resource_id': {'key': 'resourceId', 'type': 'str'},
3093        'address': {'key': 'address', 'type': 'str'},
3094        'port': {'key': 'port', 'type': 'int'},
3095    }
3096
3097    def __init__(
3098        self,
3099        *,
3100        resource_id: Optional[str] = None,
3101        address: Optional[str] = None,
3102        port: Optional[int] = None,
3103        **kwargs
3104    ):
3105        super(ConnectivityDestination, self).__init__(**kwargs)
3106        self.resource_id = resource_id
3107        self.address = address
3108        self.port = port
3109
3110
3111class ConnectivityHop(msrest.serialization.Model):
3112    """Information about a hop between the source and the destination.
3113
3114    Variables are only populated by the server, and will be ignored when sending a request.
3115
3116    :ivar type: The type of the hop.
3117    :vartype type: str
3118    :ivar id: The ID of the hop.
3119    :vartype id: str
3120    :ivar address: The IP address of the hop.
3121    :vartype address: str
3122    :ivar resource_id: The ID of the resource corresponding to this hop.
3123    :vartype resource_id: str
3124    :ivar next_hop_ids: List of next hop identifiers.
3125    :vartype next_hop_ids: list[str]
3126    :ivar issues: List of issues.
3127    :vartype issues: list[~azure.mgmt.network.v2018_01_01.models.ConnectivityIssue]
3128    """
3129
3130    _validation = {
3131        'type': {'readonly': True},
3132        'id': {'readonly': True},
3133        'address': {'readonly': True},
3134        'resource_id': {'readonly': True},
3135        'next_hop_ids': {'readonly': True},
3136        'issues': {'readonly': True},
3137    }
3138
3139    _attribute_map = {
3140        'type': {'key': 'type', 'type': 'str'},
3141        'id': {'key': 'id', 'type': 'str'},
3142        'address': {'key': 'address', 'type': 'str'},
3143        'resource_id': {'key': 'resourceId', 'type': 'str'},
3144        'next_hop_ids': {'key': 'nextHopIds', 'type': '[str]'},
3145        'issues': {'key': 'issues', 'type': '[ConnectivityIssue]'},
3146    }
3147
3148    def __init__(
3149        self,
3150        **kwargs
3151    ):
3152        super(ConnectivityHop, self).__init__(**kwargs)
3153        self.type = None
3154        self.id = None
3155        self.address = None
3156        self.resource_id = None
3157        self.next_hop_ids = None
3158        self.issues = None
3159
3160
3161class ConnectivityInformation(msrest.serialization.Model):
3162    """Information on the connectivity status.
3163
3164    Variables are only populated by the server, and will be ignored when sending a request.
3165
3166    :ivar hops: List of hops between the source and the destination.
3167    :vartype hops: list[~azure.mgmt.network.v2018_01_01.models.ConnectivityHop]
3168    :ivar connection_status: The connection status. Possible values include: "Unknown",
3169     "Connected", "Disconnected", "Degraded".
3170    :vartype connection_status: str or ~azure.mgmt.network.v2018_01_01.models.ConnectionStatus
3171    :ivar avg_latency_in_ms: Average latency in milliseconds.
3172    :vartype avg_latency_in_ms: int
3173    :ivar min_latency_in_ms: Minimum latency in milliseconds.
3174    :vartype min_latency_in_ms: int
3175    :ivar max_latency_in_ms: Maximum latency in milliseconds.
3176    :vartype max_latency_in_ms: int
3177    :ivar probes_sent: Total number of probes sent.
3178    :vartype probes_sent: int
3179    :ivar probes_failed: Number of failed probes.
3180    :vartype probes_failed: int
3181    """
3182
3183    _validation = {
3184        'hops': {'readonly': True},
3185        'connection_status': {'readonly': True},
3186        'avg_latency_in_ms': {'readonly': True},
3187        'min_latency_in_ms': {'readonly': True},
3188        'max_latency_in_ms': {'readonly': True},
3189        'probes_sent': {'readonly': True},
3190        'probes_failed': {'readonly': True},
3191    }
3192
3193    _attribute_map = {
3194        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
3195        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
3196        'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'int'},
3197        'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'int'},
3198        'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'int'},
3199        'probes_sent': {'key': 'probesSent', 'type': 'int'},
3200        'probes_failed': {'key': 'probesFailed', 'type': 'int'},
3201    }
3202
3203    def __init__(
3204        self,
3205        **kwargs
3206    ):
3207        super(ConnectivityInformation, self).__init__(**kwargs)
3208        self.hops = None
3209        self.connection_status = None
3210        self.avg_latency_in_ms = None
3211        self.min_latency_in_ms = None
3212        self.max_latency_in_ms = None
3213        self.probes_sent = None
3214        self.probes_failed = None
3215
3216
3217class ConnectivityIssue(msrest.serialization.Model):
3218    """Information about an issue encountered in the process of checking for connectivity.
3219
3220    Variables are only populated by the server, and will be ignored when sending a request.
3221
3222    :ivar origin: The origin of the issue. Possible values include: "Local", "Inbound", "Outbound".
3223    :vartype origin: str or ~azure.mgmt.network.v2018_01_01.models.Origin
3224    :ivar severity: The severity of the issue. Possible values include: "Error", "Warning".
3225    :vartype severity: str or ~azure.mgmt.network.v2018_01_01.models.Severity
3226    :ivar type: The type of issue. Possible values include: "Unknown", "AgentStopped",
3227     "GuestFirewall", "DnsResolution", "SocketBind", "NetworkSecurityRule", "UserDefinedRoute",
3228     "PortThrottled", "Platform".
3229    :vartype type: str or ~azure.mgmt.network.v2018_01_01.models.IssueType
3230    :ivar context: Provides additional context on the issue.
3231    :vartype context: list[dict[str, str]]
3232    """
3233
3234    _validation = {
3235        'origin': {'readonly': True},
3236        'severity': {'readonly': True},
3237        'type': {'readonly': True},
3238        'context': {'readonly': True},
3239    }
3240
3241    _attribute_map = {
3242        'origin': {'key': 'origin', 'type': 'str'},
3243        'severity': {'key': 'severity', 'type': 'str'},
3244        'type': {'key': 'type', 'type': 'str'},
3245        'context': {'key': 'context', 'type': '[{str}]'},
3246    }
3247
3248    def __init__(
3249        self,
3250        **kwargs
3251    ):
3252        super(ConnectivityIssue, self).__init__(**kwargs)
3253        self.origin = None
3254        self.severity = None
3255        self.type = None
3256        self.context = None
3257
3258
3259class ConnectivityParameters(msrest.serialization.Model):
3260    """Parameters that determine how the connectivity check will be performed.
3261
3262    All required parameters must be populated in order to send to Azure.
3263
3264    :param source: Required. Parameters that define the source of the connection.
3265    :type source: ~azure.mgmt.network.v2018_01_01.models.ConnectivitySource
3266    :param destination: Required. Parameters that define destination of connection.
3267    :type destination: ~azure.mgmt.network.v2018_01_01.models.ConnectivityDestination
3268    """
3269
3270    _validation = {
3271        'source': {'required': True},
3272        'destination': {'required': True},
3273    }
3274
3275    _attribute_map = {
3276        'source': {'key': 'source', 'type': 'ConnectivitySource'},
3277        'destination': {'key': 'destination', 'type': 'ConnectivityDestination'},
3278    }
3279
3280    def __init__(
3281        self,
3282        *,
3283        source: "ConnectivitySource",
3284        destination: "ConnectivityDestination",
3285        **kwargs
3286    ):
3287        super(ConnectivityParameters, self).__init__(**kwargs)
3288        self.source = source
3289        self.destination = destination
3290
3291
3292class ConnectivitySource(msrest.serialization.Model):
3293    """Parameters that define the source of the connection.
3294
3295    All required parameters must be populated in order to send to Azure.
3296
3297    :param resource_id: Required. The ID of the resource from which a connectivity check will be
3298     initiated.
3299    :type resource_id: str
3300    :param port: The source port from which a connectivity check will be performed.
3301    :type port: int
3302    """
3303
3304    _validation = {
3305        'resource_id': {'required': True},
3306    }
3307
3308    _attribute_map = {
3309        'resource_id': {'key': 'resourceId', 'type': 'str'},
3310        'port': {'key': 'port', 'type': 'int'},
3311    }
3312
3313    def __init__(
3314        self,
3315        *,
3316        resource_id: str,
3317        port: Optional[int] = None,
3318        **kwargs
3319    ):
3320        super(ConnectivitySource, self).__init__(**kwargs)
3321        self.resource_id = resource_id
3322        self.port = port
3323
3324
3325class DhcpOptions(msrest.serialization.Model):
3326    """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.
3327
3328    :param dns_servers: The list of DNS servers IP addresses.
3329    :type dns_servers: list[str]
3330    """
3331
3332    _attribute_map = {
3333        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
3334    }
3335
3336    def __init__(
3337        self,
3338        *,
3339        dns_servers: Optional[List[str]] = None,
3340        **kwargs
3341    ):
3342        super(DhcpOptions, self).__init__(**kwargs)
3343        self.dns_servers = dns_servers
3344
3345
3346class Dimension(msrest.serialization.Model):
3347    """Dimension of the metric.
3348
3349    :param name: The name of the dimension.
3350    :type name: str
3351    :param display_name: The display name of the dimension.
3352    :type display_name: str
3353    :param internal_name: The internal name of the dimension.
3354    :type internal_name: str
3355    """
3356
3357    _attribute_map = {
3358        'name': {'key': 'name', 'type': 'str'},
3359        'display_name': {'key': 'displayName', 'type': 'str'},
3360        'internal_name': {'key': 'internalName', 'type': 'str'},
3361    }
3362
3363    def __init__(
3364        self,
3365        *,
3366        name: Optional[str] = None,
3367        display_name: Optional[str] = None,
3368        internal_name: Optional[str] = None,
3369        **kwargs
3370    ):
3371        super(Dimension, self).__init__(**kwargs)
3372        self.name = name
3373        self.display_name = display_name
3374        self.internal_name = internal_name
3375
3376
3377class DnsNameAvailabilityResult(msrest.serialization.Model):
3378    """Response for the CheckDnsNameAvailability API service call.
3379
3380    :param available: Domain availability (True/False).
3381    :type available: bool
3382    """
3383
3384    _attribute_map = {
3385        'available': {'key': 'available', 'type': 'bool'},
3386    }
3387
3388    def __init__(
3389        self,
3390        *,
3391        available: Optional[bool] = None,
3392        **kwargs
3393    ):
3394        super(DnsNameAvailabilityResult, self).__init__(**kwargs)
3395        self.available = available
3396
3397
3398class EffectiveNetworkSecurityGroup(msrest.serialization.Model):
3399    """Effective network security group.
3400
3401    :param network_security_group: The ID of network security group that is applied.
3402    :type network_security_group: ~azure.mgmt.network.v2018_01_01.models.SubResource
3403    :param association: Associated resources.
3404    :type association:
3405     ~azure.mgmt.network.v2018_01_01.models.EffectiveNetworkSecurityGroupAssociation
3406    :param effective_security_rules: A collection of effective security rules.
3407    :type effective_security_rules:
3408     list[~azure.mgmt.network.v2018_01_01.models.EffectiveNetworkSecurityRule]
3409    :param tag_map: Mapping of tags to list of IP Addresses included within the tag.
3410    :type tag_map: str
3411    """
3412
3413    _attribute_map = {
3414        'network_security_group': {'key': 'networkSecurityGroup', 'type': 'SubResource'},
3415        'association': {'key': 'association', 'type': 'EffectiveNetworkSecurityGroupAssociation'},
3416        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
3417        'tag_map': {'key': 'tagMap', 'type': 'str'},
3418    }
3419
3420    def __init__(
3421        self,
3422        *,
3423        network_security_group: Optional["SubResource"] = None,
3424        association: Optional["EffectiveNetworkSecurityGroupAssociation"] = None,
3425        effective_security_rules: Optional[List["EffectiveNetworkSecurityRule"]] = None,
3426        tag_map: Optional[str] = None,
3427        **kwargs
3428    ):
3429        super(EffectiveNetworkSecurityGroup, self).__init__(**kwargs)
3430        self.network_security_group = network_security_group
3431        self.association = association
3432        self.effective_security_rules = effective_security_rules
3433        self.tag_map = tag_map
3434
3435
3436class EffectiveNetworkSecurityGroupAssociation(msrest.serialization.Model):
3437    """The effective network security group association.
3438
3439    :param subnet: The ID of the subnet if assigned.
3440    :type subnet: ~azure.mgmt.network.v2018_01_01.models.SubResource
3441    :param network_interface: The ID of the network interface if assigned.
3442    :type network_interface: ~azure.mgmt.network.v2018_01_01.models.SubResource
3443    """
3444
3445    _attribute_map = {
3446        'subnet': {'key': 'subnet', 'type': 'SubResource'},
3447        'network_interface': {'key': 'networkInterface', 'type': 'SubResource'},
3448    }
3449
3450    def __init__(
3451        self,
3452        *,
3453        subnet: Optional["SubResource"] = None,
3454        network_interface: Optional["SubResource"] = None,
3455        **kwargs
3456    ):
3457        super(EffectiveNetworkSecurityGroupAssociation, self).__init__(**kwargs)
3458        self.subnet = subnet
3459        self.network_interface = network_interface
3460
3461
3462class EffectiveNetworkSecurityGroupListResult(msrest.serialization.Model):
3463    """Response for list effective network security groups API service call.
3464
3465    Variables are only populated by the server, and will be ignored when sending a request.
3466
3467    :param value: A list of effective network security groups.
3468    :type value: list[~azure.mgmt.network.v2018_01_01.models.EffectiveNetworkSecurityGroup]
3469    :ivar next_link: The URL to get the next set of results.
3470    :vartype next_link: str
3471    """
3472
3473    _validation = {
3474        'next_link': {'readonly': True},
3475    }
3476
3477    _attribute_map = {
3478        'value': {'key': 'value', 'type': '[EffectiveNetworkSecurityGroup]'},
3479        'next_link': {'key': 'nextLink', 'type': 'str'},
3480    }
3481
3482    def __init__(
3483        self,
3484        *,
3485        value: Optional[List["EffectiveNetworkSecurityGroup"]] = None,
3486        **kwargs
3487    ):
3488        super(EffectiveNetworkSecurityGroupListResult, self).__init__(**kwargs)
3489        self.value = value
3490        self.next_link = None
3491
3492
3493class EffectiveNetworkSecurityRule(msrest.serialization.Model):
3494    """Effective network security rules.
3495
3496    :param name: The name of the security rule specified by the user (if created by the user).
3497    :type name: str
3498    :param protocol: The network protocol this rule applies to. Possible values are: 'Tcp', 'Udp',
3499     and 'All'. Possible values include: "Tcp", "Udp", "All".
3500    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.EffectiveSecurityRuleProtocol
3501    :param source_port_range: The source port or range.
3502    :type source_port_range: str
3503    :param destination_port_range: The destination port or range.
3504    :type destination_port_range: str
3505    :param source_port_ranges: The source port ranges. Expected values include a single integer
3506     between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
3507    :type source_port_ranges: list[str]
3508    :param destination_port_ranges: The destination port ranges. Expected values include a single
3509     integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
3510    :type destination_port_ranges: list[str]
3511    :param source_address_prefix: The source address prefix.
3512    :type source_address_prefix: str
3513    :param destination_address_prefix: The destination address prefix.
3514    :type destination_address_prefix: str
3515    :param source_address_prefixes: The source address prefixes. Expected values include CIDR IP
3516     ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the
3517     asterisk (*).
3518    :type source_address_prefixes: list[str]
3519    :param destination_address_prefixes: The destination address prefixes. Expected values include
3520     CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and
3521     the asterisk (*).
3522    :type destination_address_prefixes: list[str]
3523    :param expanded_source_address_prefix: The expanded source address prefix.
3524    :type expanded_source_address_prefix: list[str]
3525    :param expanded_destination_address_prefix: Expanded destination address prefix.
3526    :type expanded_destination_address_prefix: list[str]
3527    :param access: Whether network traffic is allowed or denied. Possible values are: 'Allow' and
3528     'Deny'. Possible values include: "Allow", "Deny".
3529    :type access: str or ~azure.mgmt.network.v2018_01_01.models.SecurityRuleAccess
3530    :param priority: The priority of the rule.
3531    :type priority: int
3532    :param direction: The direction of the rule. Possible values are: 'Inbound and Outbound'.
3533     Possible values include: "Inbound", "Outbound".
3534    :type direction: str or ~azure.mgmt.network.v2018_01_01.models.SecurityRuleDirection
3535    """
3536
3537    _attribute_map = {
3538        'name': {'key': 'name', 'type': 'str'},
3539        'protocol': {'key': 'protocol', 'type': 'str'},
3540        'source_port_range': {'key': 'sourcePortRange', 'type': 'str'},
3541        'destination_port_range': {'key': 'destinationPortRange', 'type': 'str'},
3542        'source_port_ranges': {'key': 'sourcePortRanges', 'type': '[str]'},
3543        'destination_port_ranges': {'key': 'destinationPortRanges', 'type': '[str]'},
3544        'source_address_prefix': {'key': 'sourceAddressPrefix', 'type': 'str'},
3545        'destination_address_prefix': {'key': 'destinationAddressPrefix', 'type': 'str'},
3546        'source_address_prefixes': {'key': 'sourceAddressPrefixes', 'type': '[str]'},
3547        'destination_address_prefixes': {'key': 'destinationAddressPrefixes', 'type': '[str]'},
3548        'expanded_source_address_prefix': {'key': 'expandedSourceAddressPrefix', 'type': '[str]'},
3549        'expanded_destination_address_prefix': {'key': 'expandedDestinationAddressPrefix', 'type': '[str]'},
3550        'access': {'key': 'access', 'type': 'str'},
3551        'priority': {'key': 'priority', 'type': 'int'},
3552        'direction': {'key': 'direction', 'type': 'str'},
3553    }
3554
3555    def __init__(
3556        self,
3557        *,
3558        name: Optional[str] = None,
3559        protocol: Optional[Union[str, "EffectiveSecurityRuleProtocol"]] = None,
3560        source_port_range: Optional[str] = None,
3561        destination_port_range: Optional[str] = None,
3562        source_port_ranges: Optional[List[str]] = None,
3563        destination_port_ranges: Optional[List[str]] = None,
3564        source_address_prefix: Optional[str] = None,
3565        destination_address_prefix: Optional[str] = None,
3566        source_address_prefixes: Optional[List[str]] = None,
3567        destination_address_prefixes: Optional[List[str]] = None,
3568        expanded_source_address_prefix: Optional[List[str]] = None,
3569        expanded_destination_address_prefix: Optional[List[str]] = None,
3570        access: Optional[Union[str, "SecurityRuleAccess"]] = None,
3571        priority: Optional[int] = None,
3572        direction: Optional[Union[str, "SecurityRuleDirection"]] = None,
3573        **kwargs
3574    ):
3575        super(EffectiveNetworkSecurityRule, self).__init__(**kwargs)
3576        self.name = name
3577        self.protocol = protocol
3578        self.source_port_range = source_port_range
3579        self.destination_port_range = destination_port_range
3580        self.source_port_ranges = source_port_ranges
3581        self.destination_port_ranges = destination_port_ranges
3582        self.source_address_prefix = source_address_prefix
3583        self.destination_address_prefix = destination_address_prefix
3584        self.source_address_prefixes = source_address_prefixes
3585        self.destination_address_prefixes = destination_address_prefixes
3586        self.expanded_source_address_prefix = expanded_source_address_prefix
3587        self.expanded_destination_address_prefix = expanded_destination_address_prefix
3588        self.access = access
3589        self.priority = priority
3590        self.direction = direction
3591
3592
3593class EffectiveRoute(msrest.serialization.Model):
3594    """Effective Route.
3595
3596    :param name: The name of the user defined route. This is optional.
3597    :type name: str
3598    :param source: Who created the route. Possible values are: 'Unknown', 'User',
3599     'VirtualNetworkGateway', and 'Default'. Possible values include: "Unknown", "User",
3600     "VirtualNetworkGateway", "Default".
3601    :type source: str or ~azure.mgmt.network.v2018_01_01.models.EffectiveRouteSource
3602    :param state: The value of effective route. Possible values are: 'Active' and 'Invalid'.
3603     Possible values include: "Active", "Invalid".
3604    :type state: str or ~azure.mgmt.network.v2018_01_01.models.EffectiveRouteState
3605    :param address_prefix: The address prefixes of the effective routes in CIDR notation.
3606    :type address_prefix: list[str]
3607    :param next_hop_ip_address: The IP address of the next hop of the effective route.
3608    :type next_hop_ip_address: list[str]
3609    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values are:
3610     'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', and 'None'. Possible
3611     values include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
3612    :type next_hop_type: str or ~azure.mgmt.network.v2018_01_01.models.RouteNextHopType
3613    """
3614
3615    _attribute_map = {
3616        'name': {'key': 'name', 'type': 'str'},
3617        'source': {'key': 'source', 'type': 'str'},
3618        'state': {'key': 'state', 'type': 'str'},
3619        'address_prefix': {'key': 'addressPrefix', 'type': '[str]'},
3620        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': '[str]'},
3621        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
3622    }
3623
3624    def __init__(
3625        self,
3626        *,
3627        name: Optional[str] = None,
3628        source: Optional[Union[str, "EffectiveRouteSource"]] = None,
3629        state: Optional[Union[str, "EffectiveRouteState"]] = None,
3630        address_prefix: Optional[List[str]] = None,
3631        next_hop_ip_address: Optional[List[str]] = None,
3632        next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None,
3633        **kwargs
3634    ):
3635        super(EffectiveRoute, self).__init__(**kwargs)
3636        self.name = name
3637        self.source = source
3638        self.state = state
3639        self.address_prefix = address_prefix
3640        self.next_hop_ip_address = next_hop_ip_address
3641        self.next_hop_type = next_hop_type
3642
3643
3644class EffectiveRouteListResult(msrest.serialization.Model):
3645    """Response for list effective route API service call.
3646
3647    Variables are only populated by the server, and will be ignored when sending a request.
3648
3649    :param value: A list of effective routes.
3650    :type value: list[~azure.mgmt.network.v2018_01_01.models.EffectiveRoute]
3651    :ivar next_link: The URL to get the next set of results.
3652    :vartype next_link: str
3653    """
3654
3655    _validation = {
3656        'next_link': {'readonly': True},
3657    }
3658
3659    _attribute_map = {
3660        'value': {'key': 'value', 'type': '[EffectiveRoute]'},
3661        'next_link': {'key': 'nextLink', 'type': 'str'},
3662    }
3663
3664    def __init__(
3665        self,
3666        *,
3667        value: Optional[List["EffectiveRoute"]] = None,
3668        **kwargs
3669    ):
3670        super(EffectiveRouteListResult, self).__init__(**kwargs)
3671        self.value = value
3672        self.next_link = None
3673
3674
3675class EndpointServiceResult(SubResource):
3676    """Endpoint service.
3677
3678    Variables are only populated by the server, and will be ignored when sending a request.
3679
3680    :param id: Resource ID.
3681    :type id: str
3682    :ivar name: Name of the endpoint service.
3683    :vartype name: str
3684    :ivar type: Type of the endpoint service.
3685    :vartype type: str
3686    """
3687
3688    _validation = {
3689        'name': {'readonly': True},
3690        'type': {'readonly': True},
3691    }
3692
3693    _attribute_map = {
3694        'id': {'key': 'id', 'type': 'str'},
3695        'name': {'key': 'name', 'type': 'str'},
3696        'type': {'key': 'type', 'type': 'str'},
3697    }
3698
3699    def __init__(
3700        self,
3701        *,
3702        id: Optional[str] = None,
3703        **kwargs
3704    ):
3705        super(EndpointServiceResult, self).__init__(id=id, **kwargs)
3706        self.name = None
3707        self.type = None
3708
3709
3710class EndpointServicesListResult(msrest.serialization.Model):
3711    """Response for the ListAvailableEndpointServices API service call.
3712
3713    :param value: List of available endpoint services in a region.
3714    :type value: list[~azure.mgmt.network.v2018_01_01.models.EndpointServiceResult]
3715    :param next_link: The URL to get the next set of results.
3716    :type next_link: str
3717    """
3718
3719    _attribute_map = {
3720        'value': {'key': 'value', 'type': '[EndpointServiceResult]'},
3721        'next_link': {'key': 'nextLink', 'type': 'str'},
3722    }
3723
3724    def __init__(
3725        self,
3726        *,
3727        value: Optional[List["EndpointServiceResult"]] = None,
3728        next_link: Optional[str] = None,
3729        **kwargs
3730    ):
3731        super(EndpointServicesListResult, self).__init__(**kwargs)
3732        self.value = value
3733        self.next_link = next_link
3734
3735
3736class Error(msrest.serialization.Model):
3737    """Error.
3738
3739    :param code:
3740    :type code: str
3741    :param message:
3742    :type message: str
3743    :param target:
3744    :type target: str
3745    :param details:
3746    :type details: list[~azure.mgmt.network.v2018_01_01.models.ErrorDetails]
3747    :param inner_error:
3748    :type inner_error: str
3749    """
3750
3751    _attribute_map = {
3752        'code': {'key': 'code', 'type': 'str'},
3753        'message': {'key': 'message', 'type': 'str'},
3754        'target': {'key': 'target', 'type': 'str'},
3755        'details': {'key': 'details', 'type': '[ErrorDetails]'},
3756        'inner_error': {'key': 'innerError', 'type': 'str'},
3757    }
3758
3759    def __init__(
3760        self,
3761        *,
3762        code: Optional[str] = None,
3763        message: Optional[str] = None,
3764        target: Optional[str] = None,
3765        details: Optional[List["ErrorDetails"]] = None,
3766        inner_error: Optional[str] = None,
3767        **kwargs
3768    ):
3769        super(Error, self).__init__(**kwargs)
3770        self.code = code
3771        self.message = message
3772        self.target = target
3773        self.details = details
3774        self.inner_error = inner_error
3775
3776
3777class ErrorDetails(msrest.serialization.Model):
3778    """ErrorDetails.
3779
3780    :param code:
3781    :type code: str
3782    :param target:
3783    :type target: str
3784    :param message:
3785    :type message: str
3786    """
3787
3788    _attribute_map = {
3789        'code': {'key': 'code', 'type': 'str'},
3790        'target': {'key': 'target', 'type': 'str'},
3791        'message': {'key': 'message', 'type': 'str'},
3792    }
3793
3794    def __init__(
3795        self,
3796        *,
3797        code: Optional[str] = None,
3798        target: Optional[str] = None,
3799        message: Optional[str] = None,
3800        **kwargs
3801    ):
3802        super(ErrorDetails, self).__init__(**kwargs)
3803        self.code = code
3804        self.target = target
3805        self.message = message
3806
3807
3808class ExpressRouteCircuit(Resource):
3809    """ExpressRouteCircuit resource.
3810
3811    Variables are only populated by the server, and will be ignored when sending a request.
3812
3813    :param id: Resource ID.
3814    :type id: str
3815    :ivar name: Resource name.
3816    :vartype name: str
3817    :ivar type: Resource type.
3818    :vartype type: str
3819    :param location: Resource location.
3820    :type location: str
3821    :param tags: A set of tags. Resource tags.
3822    :type tags: dict[str, str]
3823    :param sku: The SKU.
3824    :type sku: ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitSku
3825    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
3826    :vartype etag: str
3827    :param allow_classic_operations: Allow classic operations.
3828    :type allow_classic_operations: bool
3829    :param circuit_provisioning_state: The CircuitProvisioningState state of the resource.
3830    :type circuit_provisioning_state: str
3831    :param service_provider_provisioning_state: The ServiceProviderProvisioningState state of the
3832     resource. Possible values are 'NotProvisioned', 'Provisioning', 'Provisioned', and
3833     'Deprovisioning'. Possible values include: "NotProvisioned", "Provisioning", "Provisioned",
3834     "Deprovisioning".
3835    :type service_provider_provisioning_state: str or
3836     ~azure.mgmt.network.v2018_01_01.models.ServiceProviderProvisioningState
3837    :param authorizations: The list of authorizations.
3838    :type authorizations:
3839     list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitAuthorization]
3840    :param peerings: The list of peerings.
3841    :type peerings: list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitPeering]
3842    :param service_key: The ServiceKey.
3843    :type service_key: str
3844    :param service_provider_notes: The ServiceProviderNotes.
3845    :type service_provider_notes: str
3846    :param service_provider_properties: The ServiceProviderProperties.
3847    :type service_provider_properties:
3848     ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitServiceProviderProperties
3849    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
3850     values are: 'Updating', 'Deleting', and 'Failed'.
3851    :type provisioning_state: str
3852    :param gateway_manager_etag: The GatewayManager Etag.
3853    :type gateway_manager_etag: str
3854    """
3855
3856    _validation = {
3857        'name': {'readonly': True},
3858        'type': {'readonly': True},
3859        'etag': {'readonly': True},
3860    }
3861
3862    _attribute_map = {
3863        'id': {'key': 'id', 'type': 'str'},
3864        'name': {'key': 'name', 'type': 'str'},
3865        'type': {'key': 'type', 'type': 'str'},
3866        'location': {'key': 'location', 'type': 'str'},
3867        'tags': {'key': 'tags', 'type': '{str}'},
3868        'sku': {'key': 'sku', 'type': 'ExpressRouteCircuitSku'},
3869        'etag': {'key': 'etag', 'type': 'str'},
3870        'allow_classic_operations': {'key': 'properties.allowClassicOperations', 'type': 'bool'},
3871        'circuit_provisioning_state': {'key': 'properties.circuitProvisioningState', 'type': 'str'},
3872        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
3873        'authorizations': {'key': 'properties.authorizations', 'type': '[ExpressRouteCircuitAuthorization]'},
3874        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
3875        'service_key': {'key': 'properties.serviceKey', 'type': 'str'},
3876        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
3877        'service_provider_properties': {'key': 'properties.serviceProviderProperties', 'type': 'ExpressRouteCircuitServiceProviderProperties'},
3878        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3879        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
3880    }
3881
3882    def __init__(
3883        self,
3884        *,
3885        id: Optional[str] = None,
3886        location: Optional[str] = None,
3887        tags: Optional[Dict[str, str]] = None,
3888        sku: Optional["ExpressRouteCircuitSku"] = None,
3889        allow_classic_operations: Optional[bool] = None,
3890        circuit_provisioning_state: Optional[str] = None,
3891        service_provider_provisioning_state: Optional[Union[str, "ServiceProviderProvisioningState"]] = None,
3892        authorizations: Optional[List["ExpressRouteCircuitAuthorization"]] = None,
3893        peerings: Optional[List["ExpressRouteCircuitPeering"]] = None,
3894        service_key: Optional[str] = None,
3895        service_provider_notes: Optional[str] = None,
3896        service_provider_properties: Optional["ExpressRouteCircuitServiceProviderProperties"] = None,
3897        provisioning_state: Optional[str] = None,
3898        gateway_manager_etag: Optional[str] = None,
3899        **kwargs
3900    ):
3901        super(ExpressRouteCircuit, self).__init__(id=id, location=location, tags=tags, **kwargs)
3902        self.sku = sku
3903        self.etag = None
3904        self.allow_classic_operations = allow_classic_operations
3905        self.circuit_provisioning_state = circuit_provisioning_state
3906        self.service_provider_provisioning_state = service_provider_provisioning_state
3907        self.authorizations = authorizations
3908        self.peerings = peerings
3909        self.service_key = service_key
3910        self.service_provider_notes = service_provider_notes
3911        self.service_provider_properties = service_provider_properties
3912        self.provisioning_state = provisioning_state
3913        self.gateway_manager_etag = gateway_manager_etag
3914
3915
3916class ExpressRouteCircuitArpTable(msrest.serialization.Model):
3917    """The ARP table associated with the ExpressRouteCircuit.
3918
3919    :param age: Age.
3920    :type age: int
3921    :param interface: Interface.
3922    :type interface: str
3923    :param ip_address: The IP address.
3924    :type ip_address: str
3925    :param mac_address: The MAC address.
3926    :type mac_address: str
3927    """
3928
3929    _attribute_map = {
3930        'age': {'key': 'age', 'type': 'int'},
3931        'interface': {'key': 'interface', 'type': 'str'},
3932        'ip_address': {'key': 'ipAddress', 'type': 'str'},
3933        'mac_address': {'key': 'macAddress', 'type': 'str'},
3934    }
3935
3936    def __init__(
3937        self,
3938        *,
3939        age: Optional[int] = None,
3940        interface: Optional[str] = None,
3941        ip_address: Optional[str] = None,
3942        mac_address: Optional[str] = None,
3943        **kwargs
3944    ):
3945        super(ExpressRouteCircuitArpTable, self).__init__(**kwargs)
3946        self.age = age
3947        self.interface = interface
3948        self.ip_address = ip_address
3949        self.mac_address = mac_address
3950
3951
3952class ExpressRouteCircuitAuthorization(SubResource):
3953    """Authorization in an ExpressRouteCircuit resource.
3954
3955    Variables are only populated by the server, and will be ignored when sending a request.
3956
3957    :param id: Resource ID.
3958    :type id: str
3959    :param name: Gets name of the resource that is unique within a resource group. This name can be
3960     used to access the resource.
3961    :type name: str
3962    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3963    :vartype etag: str
3964    :param authorization_key: The authorization key.
3965    :type authorization_key: str
3966    :param authorization_use_status: AuthorizationUseStatus. Possible values are: 'Available' and
3967     'InUse'. Possible values include: "Available", "InUse".
3968    :type authorization_use_status: str or
3969     ~azure.mgmt.network.v2018_01_01.models.AuthorizationUseStatus
3970    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
3971     values are: 'Updating', 'Deleting', and 'Failed'.
3972    :type provisioning_state: str
3973    """
3974
3975    _validation = {
3976        'etag': {'readonly': True},
3977    }
3978
3979    _attribute_map = {
3980        'id': {'key': 'id', 'type': 'str'},
3981        'name': {'key': 'name', 'type': 'str'},
3982        'etag': {'key': 'etag', 'type': 'str'},
3983        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
3984        'authorization_use_status': {'key': 'properties.authorizationUseStatus', 'type': 'str'},
3985        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3986    }
3987
3988    def __init__(
3989        self,
3990        *,
3991        id: Optional[str] = None,
3992        name: Optional[str] = None,
3993        authorization_key: Optional[str] = None,
3994        authorization_use_status: Optional[Union[str, "AuthorizationUseStatus"]] = None,
3995        provisioning_state: Optional[str] = None,
3996        **kwargs
3997    ):
3998        super(ExpressRouteCircuitAuthorization, self).__init__(id=id, **kwargs)
3999        self.name = name
4000        self.etag = None
4001        self.authorization_key = authorization_key
4002        self.authorization_use_status = authorization_use_status
4003        self.provisioning_state = provisioning_state
4004
4005
4006class ExpressRouteCircuitListResult(msrest.serialization.Model):
4007    """Response for ListExpressRouteCircuit API service call.
4008
4009    :param value: A list of ExpressRouteCircuits in a resource group.
4010    :type value: list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuit]
4011    :param next_link: The URL to get the next set of results.
4012    :type next_link: str
4013    """
4014
4015    _attribute_map = {
4016        'value': {'key': 'value', 'type': '[ExpressRouteCircuit]'},
4017        'next_link': {'key': 'nextLink', 'type': 'str'},
4018    }
4019
4020    def __init__(
4021        self,
4022        *,
4023        value: Optional[List["ExpressRouteCircuit"]] = None,
4024        next_link: Optional[str] = None,
4025        **kwargs
4026    ):
4027        super(ExpressRouteCircuitListResult, self).__init__(**kwargs)
4028        self.value = value
4029        self.next_link = next_link
4030
4031
4032class ExpressRouteCircuitPeering(SubResource):
4033    """Peering in an ExpressRouteCircuit resource.
4034
4035    Variables are only populated by the server, and will be ignored when sending a request.
4036
4037    :param id: Resource ID.
4038    :type id: str
4039    :param name: Gets name of the resource that is unique within a resource group. This name can be
4040     used to access the resource.
4041    :type name: str
4042    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4043    :vartype etag: str
4044    :param peering_type: The PeeringType. Possible values are: 'AzurePublicPeering',
4045     'AzurePrivatePeering', and 'MicrosoftPeering'. Possible values include: "AzurePublicPeering",
4046     "AzurePrivatePeering", "MicrosoftPeering".
4047    :type peering_type: str or
4048     ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitPeeringType
4049    :param state: The state of peering. Possible values are: 'Disabled' and 'Enabled'. Possible
4050     values include: "Disabled", "Enabled".
4051    :type state: str or ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitPeeringState
4052    :param azure_asn: The Azure ASN.
4053    :type azure_asn: int
4054    :param peer_asn: The peer ASN.
4055    :type peer_asn: long
4056    :param primary_peer_address_prefix: The primary address prefix.
4057    :type primary_peer_address_prefix: str
4058    :param secondary_peer_address_prefix: The secondary address prefix.
4059    :type secondary_peer_address_prefix: str
4060    :param primary_azure_port: The primary port.
4061    :type primary_azure_port: str
4062    :param secondary_azure_port: The secondary port.
4063    :type secondary_azure_port: str
4064    :param shared_key: The shared key.
4065    :type shared_key: str
4066    :param vlan_id: The VLAN ID.
4067    :type vlan_id: int
4068    :param microsoft_peering_config: The Microsoft peering configuration.
4069    :type microsoft_peering_config:
4070     ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitPeeringConfig
4071    :param stats: Gets peering stats.
4072    :type stats: ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitStats
4073    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
4074     values are: 'Updating', 'Deleting', and 'Failed'.
4075    :type provisioning_state: str
4076    :param gateway_manager_etag: The GatewayManager Etag.
4077    :type gateway_manager_etag: str
4078    :param last_modified_by: Gets whether the provider or the customer last modified the peering.
4079    :type last_modified_by: str
4080    :param route_filter: The reference of the RouteFilter resource.
4081    :type route_filter: ~azure.mgmt.network.v2018_01_01.models.RouteFilter
4082    :param ipv6_peering_config: The IPv6 peering configuration.
4083    :type ipv6_peering_config:
4084     ~azure.mgmt.network.v2018_01_01.models.Ipv6ExpressRouteCircuitPeeringConfig
4085    """
4086
4087    _validation = {
4088        'etag': {'readonly': True},
4089        'peer_asn': {'maximum': 4294967295, 'minimum': 1},
4090    }
4091
4092    _attribute_map = {
4093        'id': {'key': 'id', 'type': 'str'},
4094        'name': {'key': 'name', 'type': 'str'},
4095        'etag': {'key': 'etag', 'type': 'str'},
4096        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
4097        'state': {'key': 'properties.state', 'type': 'str'},
4098        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
4099        'peer_asn': {'key': 'properties.peerASN', 'type': 'long'},
4100        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
4101        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
4102        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
4103        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
4104        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
4105        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
4106        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
4107        'stats': {'key': 'properties.stats', 'type': 'ExpressRouteCircuitStats'},
4108        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4109        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
4110        'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'},
4111        'route_filter': {'key': 'properties.routeFilter', 'type': 'RouteFilter'},
4112        'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'},
4113    }
4114
4115    def __init__(
4116        self,
4117        *,
4118        id: Optional[str] = None,
4119        name: Optional[str] = None,
4120        peering_type: Optional[Union[str, "ExpressRouteCircuitPeeringType"]] = None,
4121        state: Optional[Union[str, "ExpressRouteCircuitPeeringState"]] = None,
4122        azure_asn: Optional[int] = None,
4123        peer_asn: Optional[int] = None,
4124        primary_peer_address_prefix: Optional[str] = None,
4125        secondary_peer_address_prefix: Optional[str] = None,
4126        primary_azure_port: Optional[str] = None,
4127        secondary_azure_port: Optional[str] = None,
4128        shared_key: Optional[str] = None,
4129        vlan_id: Optional[int] = None,
4130        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
4131        stats: Optional["ExpressRouteCircuitStats"] = None,
4132        provisioning_state: Optional[str] = None,
4133        gateway_manager_etag: Optional[str] = None,
4134        last_modified_by: Optional[str] = None,
4135        route_filter: Optional["RouteFilter"] = None,
4136        ipv6_peering_config: Optional["Ipv6ExpressRouteCircuitPeeringConfig"] = None,
4137        **kwargs
4138    ):
4139        super(ExpressRouteCircuitPeering, self).__init__(id=id, **kwargs)
4140        self.name = name
4141        self.etag = None
4142        self.peering_type = peering_type
4143        self.state = state
4144        self.azure_asn = azure_asn
4145        self.peer_asn = peer_asn
4146        self.primary_peer_address_prefix = primary_peer_address_prefix
4147        self.secondary_peer_address_prefix = secondary_peer_address_prefix
4148        self.primary_azure_port = primary_azure_port
4149        self.secondary_azure_port = secondary_azure_port
4150        self.shared_key = shared_key
4151        self.vlan_id = vlan_id
4152        self.microsoft_peering_config = microsoft_peering_config
4153        self.stats = stats
4154        self.provisioning_state = provisioning_state
4155        self.gateway_manager_etag = gateway_manager_etag
4156        self.last_modified_by = last_modified_by
4157        self.route_filter = route_filter
4158        self.ipv6_peering_config = ipv6_peering_config
4159
4160
4161class ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
4162    """Specifies the peering configuration.
4163
4164    :param advertised_public_prefixes: The reference of AdvertisedPublicPrefixes.
4165    :type advertised_public_prefixes: list[str]
4166    :param advertised_communities: The communities of bgp peering. Specified for microsoft peering.
4167    :type advertised_communities: list[str]
4168    :param advertised_public_prefixes_state: AdvertisedPublicPrefixState of the Peering resource.
4169     Possible values are 'NotConfigured', 'Configuring', 'Configured', and 'ValidationNeeded'.
4170     Possible values include: "NotConfigured", "Configuring", "Configured", "ValidationNeeded".
4171    :type advertised_public_prefixes_state: str or
4172     ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitPeeringAdvertisedPublicPrefixState
4173    :param legacy_mode: The legacy mode of the peering.
4174    :type legacy_mode: int
4175    :param customer_asn: The CustomerASN of the peering.
4176    :type customer_asn: int
4177    :param routing_registry_name: The RoutingRegistryName of the configuration.
4178    :type routing_registry_name: str
4179    """
4180
4181    _attribute_map = {
4182        'advertised_public_prefixes': {'key': 'advertisedPublicPrefixes', 'type': '[str]'},
4183        'advertised_communities': {'key': 'advertisedCommunities', 'type': '[str]'},
4184        'advertised_public_prefixes_state': {'key': 'advertisedPublicPrefixesState', 'type': 'str'},
4185        'legacy_mode': {'key': 'legacyMode', 'type': 'int'},
4186        'customer_asn': {'key': 'customerASN', 'type': 'int'},
4187        'routing_registry_name': {'key': 'routingRegistryName', 'type': 'str'},
4188    }
4189
4190    def __init__(
4191        self,
4192        *,
4193        advertised_public_prefixes: Optional[List[str]] = None,
4194        advertised_communities: Optional[List[str]] = None,
4195        advertised_public_prefixes_state: Optional[Union[str, "ExpressRouteCircuitPeeringAdvertisedPublicPrefixState"]] = None,
4196        legacy_mode: Optional[int] = None,
4197        customer_asn: Optional[int] = None,
4198        routing_registry_name: Optional[str] = None,
4199        **kwargs
4200    ):
4201        super(ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
4202        self.advertised_public_prefixes = advertised_public_prefixes
4203        self.advertised_communities = advertised_communities
4204        self.advertised_public_prefixes_state = advertised_public_prefixes_state
4205        self.legacy_mode = legacy_mode
4206        self.customer_asn = customer_asn
4207        self.routing_registry_name = routing_registry_name
4208
4209
4210class ExpressRouteCircuitPeeringListResult(msrest.serialization.Model):
4211    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCircuit.
4212
4213    :param value: The peerings in an express route circuit.
4214    :type value: list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitPeering]
4215    :param next_link: The URL to get the next set of results.
4216    :type next_link: str
4217    """
4218
4219    _attribute_map = {
4220        'value': {'key': 'value', 'type': '[ExpressRouteCircuitPeering]'},
4221        'next_link': {'key': 'nextLink', 'type': 'str'},
4222    }
4223
4224    def __init__(
4225        self,
4226        *,
4227        value: Optional[List["ExpressRouteCircuitPeering"]] = None,
4228        next_link: Optional[str] = None,
4229        **kwargs
4230    ):
4231        super(ExpressRouteCircuitPeeringListResult, self).__init__(**kwargs)
4232        self.value = value
4233        self.next_link = next_link
4234
4235
4236class ExpressRouteCircuitRoutesTable(msrest.serialization.Model):
4237    """The routes table associated with the ExpressRouteCircuit.
4238
4239    :param network: network.
4240    :type network: str
4241    :param next_hop: nextHop.
4242    :type next_hop: str
4243    :param loc_prf: locPrf.
4244    :type loc_prf: str
4245    :param weight: weight.
4246    :type weight: int
4247    :param path: path.
4248    :type path: str
4249    """
4250
4251    _attribute_map = {
4252        'network': {'key': 'network', 'type': 'str'},
4253        'next_hop': {'key': 'nextHop', 'type': 'str'},
4254        'loc_prf': {'key': 'locPrf', 'type': 'str'},
4255        'weight': {'key': 'weight', 'type': 'int'},
4256        'path': {'key': 'path', 'type': 'str'},
4257    }
4258
4259    def __init__(
4260        self,
4261        *,
4262        network: Optional[str] = None,
4263        next_hop: Optional[str] = None,
4264        loc_prf: Optional[str] = None,
4265        weight: Optional[int] = None,
4266        path: Optional[str] = None,
4267        **kwargs
4268    ):
4269        super(ExpressRouteCircuitRoutesTable, self).__init__(**kwargs)
4270        self.network = network
4271        self.next_hop = next_hop
4272        self.loc_prf = loc_prf
4273        self.weight = weight
4274        self.path = path
4275
4276
4277class ExpressRouteCircuitRoutesTableSummary(msrest.serialization.Model):
4278    """The routes table associated with the ExpressRouteCircuit.
4279
4280    :param neighbor: Neighbor.
4281    :type neighbor: str
4282    :param v: BGP version number spoken to the neighbor.
4283    :type v: int
4284    :param as_property: Autonomous system number.
4285    :type as_property: int
4286    :param up_down: The length of time that the BGP session has been in the Established state, or
4287     the current status if not in the Established state.
4288    :type up_down: str
4289    :param state_pfx_rcd: Current state of the BGP session, and the number of prefixes that have
4290     been received from a neighbor or peer group.
4291    :type state_pfx_rcd: str
4292    """
4293
4294    _attribute_map = {
4295        'neighbor': {'key': 'neighbor', 'type': 'str'},
4296        'v': {'key': 'v', 'type': 'int'},
4297        'as_property': {'key': 'as', 'type': 'int'},
4298        'up_down': {'key': 'upDown', 'type': 'str'},
4299        'state_pfx_rcd': {'key': 'statePfxRcd', 'type': 'str'},
4300    }
4301
4302    def __init__(
4303        self,
4304        *,
4305        neighbor: Optional[str] = None,
4306        v: Optional[int] = None,
4307        as_property: Optional[int] = None,
4308        up_down: Optional[str] = None,
4309        state_pfx_rcd: Optional[str] = None,
4310        **kwargs
4311    ):
4312        super(ExpressRouteCircuitRoutesTableSummary, self).__init__(**kwargs)
4313        self.neighbor = neighbor
4314        self.v = v
4315        self.as_property = as_property
4316        self.up_down = up_down
4317        self.state_pfx_rcd = state_pfx_rcd
4318
4319
4320class ExpressRouteCircuitsArpTableListResult(msrest.serialization.Model):
4321    """Response for ListArpTable associated with the Express Route Circuits API.
4322
4323    :param value: Gets list of the ARP table.
4324    :type value: list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitArpTable]
4325    :param next_link: The URL to get the next set of results.
4326    :type next_link: str
4327    """
4328
4329    _attribute_map = {
4330        'value': {'key': 'value', 'type': '[ExpressRouteCircuitArpTable]'},
4331        'next_link': {'key': 'nextLink', 'type': 'str'},
4332    }
4333
4334    def __init__(
4335        self,
4336        *,
4337        value: Optional[List["ExpressRouteCircuitArpTable"]] = None,
4338        next_link: Optional[str] = None,
4339        **kwargs
4340    ):
4341        super(ExpressRouteCircuitsArpTableListResult, self).__init__(**kwargs)
4342        self.value = value
4343        self.next_link = next_link
4344
4345
4346class ExpressRouteCircuitServiceProviderProperties(msrest.serialization.Model):
4347    """Contains ServiceProviderProperties in an ExpressRouteCircuit.
4348
4349    :param service_provider_name: The serviceProviderName.
4350    :type service_provider_name: str
4351    :param peering_location: The peering location.
4352    :type peering_location: str
4353    :param bandwidth_in_mbps: The BandwidthInMbps.
4354    :type bandwidth_in_mbps: int
4355    """
4356
4357    _attribute_map = {
4358        'service_provider_name': {'key': 'serviceProviderName', 'type': 'str'},
4359        'peering_location': {'key': 'peeringLocation', 'type': 'str'},
4360        'bandwidth_in_mbps': {'key': 'bandwidthInMbps', 'type': 'int'},
4361    }
4362
4363    def __init__(
4364        self,
4365        *,
4366        service_provider_name: Optional[str] = None,
4367        peering_location: Optional[str] = None,
4368        bandwidth_in_mbps: Optional[int] = None,
4369        **kwargs
4370    ):
4371        super(ExpressRouteCircuitServiceProviderProperties, self).__init__(**kwargs)
4372        self.service_provider_name = service_provider_name
4373        self.peering_location = peering_location
4374        self.bandwidth_in_mbps = bandwidth_in_mbps
4375
4376
4377class ExpressRouteCircuitSku(msrest.serialization.Model):
4378    """Contains SKU in an ExpressRouteCircuit.
4379
4380    :param name: The name of the SKU.
4381    :type name: str
4382    :param tier: The tier of the SKU. Possible values are 'Standard' and 'Premium'. Possible values
4383     include: "Standard", "Premium".
4384    :type tier: str or ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitSkuTier
4385    :param family: The family of the SKU. Possible values are: 'UnlimitedData' and 'MeteredData'.
4386     Possible values include: "UnlimitedData", "MeteredData".
4387    :type family: str or ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitSkuFamily
4388    """
4389
4390    _attribute_map = {
4391        'name': {'key': 'name', 'type': 'str'},
4392        'tier': {'key': 'tier', 'type': 'str'},
4393        'family': {'key': 'family', 'type': 'str'},
4394    }
4395
4396    def __init__(
4397        self,
4398        *,
4399        name: Optional[str] = None,
4400        tier: Optional[Union[str, "ExpressRouteCircuitSkuTier"]] = None,
4401        family: Optional[Union[str, "ExpressRouteCircuitSkuFamily"]] = None,
4402        **kwargs
4403    ):
4404        super(ExpressRouteCircuitSku, self).__init__(**kwargs)
4405        self.name = name
4406        self.tier = tier
4407        self.family = family
4408
4409
4410class ExpressRouteCircuitsRoutesTableListResult(msrest.serialization.Model):
4411    """Response for ListRoutesTable associated with the Express Route Circuits API.
4412
4413    :param value: The list of routes table.
4414    :type value: list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitRoutesTable]
4415    :param next_link: The URL to get the next set of results.
4416    :type next_link: str
4417    """
4418
4419    _attribute_map = {
4420        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTable]'},
4421        'next_link': {'key': 'nextLink', 'type': 'str'},
4422    }
4423
4424    def __init__(
4425        self,
4426        *,
4427        value: Optional[List["ExpressRouteCircuitRoutesTable"]] = None,
4428        next_link: Optional[str] = None,
4429        **kwargs
4430    ):
4431        super(ExpressRouteCircuitsRoutesTableListResult, self).__init__(**kwargs)
4432        self.value = value
4433        self.next_link = next_link
4434
4435
4436class ExpressRouteCircuitsRoutesTableSummaryListResult(msrest.serialization.Model):
4437    """Response for ListRoutesTable associated with the Express Route Circuits API.
4438
4439    :param value: A list of the routes table.
4440    :type value: list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitRoutesTableSummary]
4441    :param next_link: The URL to get the next set of results.
4442    :type next_link: str
4443    """
4444
4445    _attribute_map = {
4446        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTableSummary]'},
4447        'next_link': {'key': 'nextLink', 'type': 'str'},
4448    }
4449
4450    def __init__(
4451        self,
4452        *,
4453        value: Optional[List["ExpressRouteCircuitRoutesTableSummary"]] = None,
4454        next_link: Optional[str] = None,
4455        **kwargs
4456    ):
4457        super(ExpressRouteCircuitsRoutesTableSummaryListResult, self).__init__(**kwargs)
4458        self.value = value
4459        self.next_link = next_link
4460
4461
4462class ExpressRouteCircuitStats(msrest.serialization.Model):
4463    """Contains stats associated with the peering.
4464
4465    :param primarybytes_in: Gets BytesIn of the peering.
4466    :type primarybytes_in: long
4467    :param primarybytes_out: Gets BytesOut of the peering.
4468    :type primarybytes_out: long
4469    :param secondarybytes_in: Gets BytesIn of the peering.
4470    :type secondarybytes_in: long
4471    :param secondarybytes_out: Gets BytesOut of the peering.
4472    :type secondarybytes_out: long
4473    """
4474
4475    _attribute_map = {
4476        'primarybytes_in': {'key': 'primarybytesIn', 'type': 'long'},
4477        'primarybytes_out': {'key': 'primarybytesOut', 'type': 'long'},
4478        'secondarybytes_in': {'key': 'secondarybytesIn', 'type': 'long'},
4479        'secondarybytes_out': {'key': 'secondarybytesOut', 'type': 'long'},
4480    }
4481
4482    def __init__(
4483        self,
4484        *,
4485        primarybytes_in: Optional[int] = None,
4486        primarybytes_out: Optional[int] = None,
4487        secondarybytes_in: Optional[int] = None,
4488        secondarybytes_out: Optional[int] = None,
4489        **kwargs
4490    ):
4491        super(ExpressRouteCircuitStats, self).__init__(**kwargs)
4492        self.primarybytes_in = primarybytes_in
4493        self.primarybytes_out = primarybytes_out
4494        self.secondarybytes_in = secondarybytes_in
4495        self.secondarybytes_out = secondarybytes_out
4496
4497
4498class ExpressRouteServiceProvider(Resource):
4499    """A ExpressRouteResourceProvider object.
4500
4501    Variables are only populated by the server, and will be ignored when sending a request.
4502
4503    :param id: Resource ID.
4504    :type id: str
4505    :ivar name: Resource name.
4506    :vartype name: str
4507    :ivar type: Resource type.
4508    :vartype type: str
4509    :param location: Resource location.
4510    :type location: str
4511    :param tags: A set of tags. Resource tags.
4512    :type tags: dict[str, str]
4513    :param peering_locations: Get a list of peering locations.
4514    :type peering_locations: list[str]
4515    :param bandwidths_offered: Gets bandwidths offered.
4516    :type bandwidths_offered:
4517     list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteServiceProviderBandwidthsOffered]
4518    :param provisioning_state: Gets the provisioning state of the resource.
4519    :type provisioning_state: str
4520    """
4521
4522    _validation = {
4523        'name': {'readonly': True},
4524        'type': {'readonly': True},
4525    }
4526
4527    _attribute_map = {
4528        'id': {'key': 'id', 'type': 'str'},
4529        'name': {'key': 'name', 'type': 'str'},
4530        'type': {'key': 'type', 'type': 'str'},
4531        'location': {'key': 'location', 'type': 'str'},
4532        'tags': {'key': 'tags', 'type': '{str}'},
4533        'peering_locations': {'key': 'properties.peeringLocations', 'type': '[str]'},
4534        'bandwidths_offered': {'key': 'properties.bandwidthsOffered', 'type': '[ExpressRouteServiceProviderBandwidthsOffered]'},
4535        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4536    }
4537
4538    def __init__(
4539        self,
4540        *,
4541        id: Optional[str] = None,
4542        location: Optional[str] = None,
4543        tags: Optional[Dict[str, str]] = None,
4544        peering_locations: Optional[List[str]] = None,
4545        bandwidths_offered: Optional[List["ExpressRouteServiceProviderBandwidthsOffered"]] = None,
4546        provisioning_state: Optional[str] = None,
4547        **kwargs
4548    ):
4549        super(ExpressRouteServiceProvider, self).__init__(id=id, location=location, tags=tags, **kwargs)
4550        self.peering_locations = peering_locations
4551        self.bandwidths_offered = bandwidths_offered
4552        self.provisioning_state = provisioning_state
4553
4554
4555class ExpressRouteServiceProviderBandwidthsOffered(msrest.serialization.Model):
4556    """Contains bandwidths offered in ExpressRouteServiceProvider resources.
4557
4558    :param offer_name: The OfferName.
4559    :type offer_name: str
4560    :param value_in_mbps: The ValueInMbps.
4561    :type value_in_mbps: int
4562    """
4563
4564    _attribute_map = {
4565        'offer_name': {'key': 'offerName', 'type': 'str'},
4566        'value_in_mbps': {'key': 'valueInMbps', 'type': 'int'},
4567    }
4568
4569    def __init__(
4570        self,
4571        *,
4572        offer_name: Optional[str] = None,
4573        value_in_mbps: Optional[int] = None,
4574        **kwargs
4575    ):
4576        super(ExpressRouteServiceProviderBandwidthsOffered, self).__init__(**kwargs)
4577        self.offer_name = offer_name
4578        self.value_in_mbps = value_in_mbps
4579
4580
4581class ExpressRouteServiceProviderListResult(msrest.serialization.Model):
4582    """Response for the ListExpressRouteServiceProvider API service call.
4583
4584    :param value: A list of ExpressRouteResourceProvider resources.
4585    :type value: list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteServiceProvider]
4586    :param next_link: The URL to get the next set of results.
4587    :type next_link: str
4588    """
4589
4590    _attribute_map = {
4591        'value': {'key': 'value', 'type': '[ExpressRouteServiceProvider]'},
4592        'next_link': {'key': 'nextLink', 'type': 'str'},
4593    }
4594
4595    def __init__(
4596        self,
4597        *,
4598        value: Optional[List["ExpressRouteServiceProvider"]] = None,
4599        next_link: Optional[str] = None,
4600        **kwargs
4601    ):
4602        super(ExpressRouteServiceProviderListResult, self).__init__(**kwargs)
4603        self.value = value
4604        self.next_link = next_link
4605
4606
4607class FlowLogInformation(msrest.serialization.Model):
4608    """Information on the configuration of flow log and traffic analytics (optional).
4609
4610    All required parameters must be populated in order to send to Azure.
4611
4612    :param target_resource_id: Required. The ID of the resource to configure for flow logging.
4613    :type target_resource_id: str
4614    :param network_watcher_flow_analytics_configuration: Parameters that define the configuration
4615     of traffic analytics.
4616    :type network_watcher_flow_analytics_configuration:
4617     ~azure.mgmt.network.v2018_01_01.models.TrafficAnalyticsConfigurationProperties
4618    :param storage_id: Required. ID of the storage account which is used to store the flow log.
4619    :type storage_id: str
4620    :param enabled: Required. Flag to enable/disable flow logging.
4621    :type enabled: bool
4622    :param retention_policy: Parameters that define the retention policy for flow log.
4623    :type retention_policy: ~azure.mgmt.network.v2018_01_01.models.RetentionPolicyParameters
4624    """
4625
4626    _validation = {
4627        'target_resource_id': {'required': True},
4628        'storage_id': {'required': True},
4629        'enabled': {'required': True},
4630    }
4631
4632    _attribute_map = {
4633        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
4634        'network_watcher_flow_analytics_configuration': {'key': 'flowAnalyticsConfiguration.networkWatcherFlowAnalyticsConfiguration', 'type': 'TrafficAnalyticsConfigurationProperties'},
4635        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
4636        'enabled': {'key': 'properties.enabled', 'type': 'bool'},
4637        'retention_policy': {'key': 'properties.retentionPolicy', 'type': 'RetentionPolicyParameters'},
4638    }
4639
4640    def __init__(
4641        self,
4642        *,
4643        target_resource_id: str,
4644        storage_id: str,
4645        enabled: bool,
4646        network_watcher_flow_analytics_configuration: Optional["TrafficAnalyticsConfigurationProperties"] = None,
4647        retention_policy: Optional["RetentionPolicyParameters"] = None,
4648        **kwargs
4649    ):
4650        super(FlowLogInformation, self).__init__(**kwargs)
4651        self.target_resource_id = target_resource_id
4652        self.network_watcher_flow_analytics_configuration = network_watcher_flow_analytics_configuration
4653        self.storage_id = storage_id
4654        self.enabled = enabled
4655        self.retention_policy = retention_policy
4656
4657
4658class FlowLogStatusParameters(msrest.serialization.Model):
4659    """Parameters that define a resource to query flow log and traffic analytics (optional) status.
4660
4661    All required parameters must be populated in order to send to Azure.
4662
4663    :param target_resource_id: Required. The target resource where getting the flow logging and
4664     traffic analytics (optional) status.
4665    :type target_resource_id: str
4666    """
4667
4668    _validation = {
4669        'target_resource_id': {'required': True},
4670    }
4671
4672    _attribute_map = {
4673        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
4674    }
4675
4676    def __init__(
4677        self,
4678        *,
4679        target_resource_id: str,
4680        **kwargs
4681    ):
4682        super(FlowLogStatusParameters, self).__init__(**kwargs)
4683        self.target_resource_id = target_resource_id
4684
4685
4686class FrontendIPConfiguration(SubResource):
4687    """Frontend IP address of the load balancer.
4688
4689    Variables are only populated by the server, and will be ignored when sending a request.
4690
4691    :param id: Resource ID.
4692    :type id: str
4693    :param name: The name of the resource that is unique within a resource group. This name can be
4694     used to access the resource.
4695    :type name: str
4696    :param etag: A unique read-only string that changes whenever the resource is updated.
4697    :type etag: str
4698    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
4699     come from.
4700    :type zones: list[str]
4701    :ivar inbound_nat_rules: Read only. Inbound rules URIs that use this frontend IP.
4702    :vartype inbound_nat_rules: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
4703    :ivar inbound_nat_pools: Read only. Inbound pools URIs that use this frontend IP.
4704    :vartype inbound_nat_pools: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
4705    :ivar outbound_nat_rules: Read only. Outbound rules URIs that use this frontend IP.
4706    :vartype outbound_nat_rules: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
4707    :ivar load_balancing_rules: Gets load balancing rules URIs that use this frontend IP.
4708    :vartype load_balancing_rules: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
4709    :param private_ip_address: The private IP address of the IP configuration.
4710    :type private_ip_address: str
4711    :param private_ip_allocation_method: The Private IP allocation method. Possible values are:
4712     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
4713    :type private_ip_allocation_method: str or
4714     ~azure.mgmt.network.v2018_01_01.models.IPAllocationMethod
4715    :param subnet: The reference of the subnet resource.
4716    :type subnet: ~azure.mgmt.network.v2018_01_01.models.Subnet
4717    :param public_ip_address: The reference of the Public IP resource.
4718    :type public_ip_address: ~azure.mgmt.network.v2018_01_01.models.PublicIPAddress
4719    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
4720     values are: 'Updating', 'Deleting', and 'Failed'.
4721    :type provisioning_state: str
4722    """
4723
4724    _validation = {
4725        'inbound_nat_rules': {'readonly': True},
4726        'inbound_nat_pools': {'readonly': True},
4727        'outbound_nat_rules': {'readonly': True},
4728        'load_balancing_rules': {'readonly': True},
4729    }
4730
4731    _attribute_map = {
4732        'id': {'key': 'id', 'type': 'str'},
4733        'name': {'key': 'name', 'type': 'str'},
4734        'etag': {'key': 'etag', 'type': 'str'},
4735        'zones': {'key': 'zones', 'type': '[str]'},
4736        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[SubResource]'},
4737        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[SubResource]'},
4738        'outbound_nat_rules': {'key': 'properties.outboundNatRules', 'type': '[SubResource]'},
4739        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
4740        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
4741        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
4742        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
4743        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
4744        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4745    }
4746
4747    def __init__(
4748        self,
4749        *,
4750        id: Optional[str] = None,
4751        name: Optional[str] = None,
4752        etag: Optional[str] = None,
4753        zones: Optional[List[str]] = None,
4754        private_ip_address: Optional[str] = None,
4755        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
4756        subnet: Optional["Subnet"] = None,
4757        public_ip_address: Optional["PublicIPAddress"] = None,
4758        provisioning_state: Optional[str] = None,
4759        **kwargs
4760    ):
4761        super(FrontendIPConfiguration, self).__init__(id=id, **kwargs)
4762        self.name = name
4763        self.etag = etag
4764        self.zones = zones
4765        self.inbound_nat_rules = None
4766        self.inbound_nat_pools = None
4767        self.outbound_nat_rules = None
4768        self.load_balancing_rules = None
4769        self.private_ip_address = private_ip_address
4770        self.private_ip_allocation_method = private_ip_allocation_method
4771        self.subnet = subnet
4772        self.public_ip_address = public_ip_address
4773        self.provisioning_state = provisioning_state
4774
4775
4776class GatewayRoute(msrest.serialization.Model):
4777    """Gateway routing details.
4778
4779    Variables are only populated by the server, and will be ignored when sending a request.
4780
4781    :ivar local_address: The gateway's local address.
4782    :vartype local_address: str
4783    :ivar network: The route's network prefix.
4784    :vartype network: str
4785    :ivar next_hop: The route's next hop.
4786    :vartype next_hop: str
4787    :ivar source_peer: The peer this route was learned from.
4788    :vartype source_peer: str
4789    :ivar origin: The source this route was learned from.
4790    :vartype origin: str
4791    :ivar as_path: The route's AS path sequence.
4792    :vartype as_path: str
4793    :ivar weight: The route's weight.
4794    :vartype weight: int
4795    """
4796
4797    _validation = {
4798        'local_address': {'readonly': True},
4799        'network': {'readonly': True},
4800        'next_hop': {'readonly': True},
4801        'source_peer': {'readonly': True},
4802        'origin': {'readonly': True},
4803        'as_path': {'readonly': True},
4804        'weight': {'readonly': True},
4805    }
4806
4807    _attribute_map = {
4808        'local_address': {'key': 'localAddress', 'type': 'str'},
4809        'network': {'key': 'network', 'type': 'str'},
4810        'next_hop': {'key': 'nextHop', 'type': 'str'},
4811        'source_peer': {'key': 'sourcePeer', 'type': 'str'},
4812        'origin': {'key': 'origin', 'type': 'str'},
4813        'as_path': {'key': 'asPath', 'type': 'str'},
4814        'weight': {'key': 'weight', 'type': 'int'},
4815    }
4816
4817    def __init__(
4818        self,
4819        **kwargs
4820    ):
4821        super(GatewayRoute, self).__init__(**kwargs)
4822        self.local_address = None
4823        self.network = None
4824        self.next_hop = None
4825        self.source_peer = None
4826        self.origin = None
4827        self.as_path = None
4828        self.weight = None
4829
4830
4831class GatewayRouteListResult(msrest.serialization.Model):
4832    """List of virtual network gateway routes.
4833
4834    :param value: List of gateway routes.
4835    :type value: list[~azure.mgmt.network.v2018_01_01.models.GatewayRoute]
4836    """
4837
4838    _attribute_map = {
4839        'value': {'key': 'value', 'type': '[GatewayRoute]'},
4840    }
4841
4842    def __init__(
4843        self,
4844        *,
4845        value: Optional[List["GatewayRoute"]] = None,
4846        **kwargs
4847    ):
4848        super(GatewayRouteListResult, self).__init__(**kwargs)
4849        self.value = value
4850
4851
4852class InboundNatPool(SubResource):
4853    """Inbound NAT pool of the load balancer.
4854
4855    :param id: Resource ID.
4856    :type id: str
4857    :param name: The name of the resource that is unique within a resource group. This name can be
4858     used to access the resource.
4859    :type name: str
4860    :param etag: A unique read-only string that changes whenever the resource is updated.
4861    :type etag: str
4862    :param frontend_ip_configuration: A reference to frontend IP addresses.
4863    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_01_01.models.SubResource
4864    :param protocol: The transport protocol for the endpoint. Possible values are 'Udp' or 'Tcp' or
4865     'All.'. Possible values include: "Udp", "Tcp", "All".
4866    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.TransportProtocol
4867    :param frontend_port_range_start: The first port number in the range of external ports that
4868     will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values
4869     range between 1 and 65534.
4870    :type frontend_port_range_start: int
4871    :param frontend_port_range_end: The last port number in the range of external ports that will
4872     be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range
4873     between 1 and 65535.
4874    :type frontend_port_range_end: int
4875    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
4876     are between 1 and 65535.
4877    :type backend_port: int
4878    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
4879     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
4880     protocol is set to TCP.
4881    :type idle_timeout_in_minutes: int
4882    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
4883     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
4884     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
4885     after you create the endpoint.
4886    :type enable_floating_ip: bool
4887    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
4888     values are: 'Updating', 'Deleting', and 'Failed'.
4889    :type provisioning_state: str
4890    """
4891
4892    _attribute_map = {
4893        'id': {'key': 'id', 'type': 'str'},
4894        'name': {'key': 'name', 'type': 'str'},
4895        'etag': {'key': 'etag', 'type': 'str'},
4896        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
4897        'protocol': {'key': 'properties.protocol', 'type': 'str'},
4898        'frontend_port_range_start': {'key': 'properties.frontendPortRangeStart', 'type': 'int'},
4899        'frontend_port_range_end': {'key': 'properties.frontendPortRangeEnd', 'type': 'int'},
4900        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
4901        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
4902        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
4903        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4904    }
4905
4906    def __init__(
4907        self,
4908        *,
4909        id: Optional[str] = None,
4910        name: Optional[str] = None,
4911        etag: Optional[str] = None,
4912        frontend_ip_configuration: Optional["SubResource"] = None,
4913        protocol: Optional[Union[str, "TransportProtocol"]] = None,
4914        frontend_port_range_start: Optional[int] = None,
4915        frontend_port_range_end: Optional[int] = None,
4916        backend_port: Optional[int] = None,
4917        idle_timeout_in_minutes: Optional[int] = None,
4918        enable_floating_ip: Optional[bool] = None,
4919        provisioning_state: Optional[str] = None,
4920        **kwargs
4921    ):
4922        super(InboundNatPool, self).__init__(id=id, **kwargs)
4923        self.name = name
4924        self.etag = etag
4925        self.frontend_ip_configuration = frontend_ip_configuration
4926        self.protocol = protocol
4927        self.frontend_port_range_start = frontend_port_range_start
4928        self.frontend_port_range_end = frontend_port_range_end
4929        self.backend_port = backend_port
4930        self.idle_timeout_in_minutes = idle_timeout_in_minutes
4931        self.enable_floating_ip = enable_floating_ip
4932        self.provisioning_state = provisioning_state
4933
4934
4935class InboundNatRule(SubResource):
4936    """Inbound NAT rule of the load balancer.
4937
4938    Variables are only populated by the server, and will be ignored when sending a request.
4939
4940    :param id: Resource ID.
4941    :type id: str
4942    :param name: Gets name of the resource that is unique within a resource group. This name can be
4943     used to access the resource.
4944    :type name: str
4945    :param etag: A unique read-only string that changes whenever the resource is updated.
4946    :type etag: str
4947    :param frontend_ip_configuration: A reference to frontend IP addresses.
4948    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_01_01.models.SubResource
4949    :ivar backend_ip_configuration: A reference to a private IP address defined on a network
4950     interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations
4951     is forwarded to the backend IP.
4952    :vartype backend_ip_configuration:
4953     ~azure.mgmt.network.v2018_01_01.models.NetworkInterfaceIPConfiguration
4954    :param protocol: The transport protocol for the endpoint. Possible values are 'Udp' or 'Tcp' or
4955     'All.'. Possible values include: "Udp", "Tcp", "All".
4956    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.TransportProtocol
4957    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
4958     unique within the Load Balancer. Acceptable values range from 1 to 65534.
4959    :type frontend_port: int
4960    :param backend_port: The port used for the internal endpoint. Acceptable values range from 1 to
4961     65535.
4962    :type backend_port: int
4963    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
4964     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
4965     protocol is set to TCP.
4966    :type idle_timeout_in_minutes: int
4967    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
4968     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
4969     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
4970     after you create the endpoint.
4971    :type enable_floating_ip: bool
4972    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
4973     values are: 'Updating', 'Deleting', and 'Failed'.
4974    :type provisioning_state: str
4975    """
4976
4977    _validation = {
4978        'backend_ip_configuration': {'readonly': True},
4979    }
4980
4981    _attribute_map = {
4982        'id': {'key': 'id', 'type': 'str'},
4983        'name': {'key': 'name', 'type': 'str'},
4984        'etag': {'key': 'etag', 'type': 'str'},
4985        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
4986        'backend_ip_configuration': {'key': 'properties.backendIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
4987        'protocol': {'key': 'properties.protocol', 'type': 'str'},
4988        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
4989        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
4990        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
4991        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
4992        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4993    }
4994
4995    def __init__(
4996        self,
4997        *,
4998        id: Optional[str] = None,
4999        name: Optional[str] = None,
5000        etag: Optional[str] = None,
5001        frontend_ip_configuration: Optional["SubResource"] = None,
5002        protocol: Optional[Union[str, "TransportProtocol"]] = None,
5003        frontend_port: Optional[int] = None,
5004        backend_port: Optional[int] = None,
5005        idle_timeout_in_minutes: Optional[int] = None,
5006        enable_floating_ip: Optional[bool] = None,
5007        provisioning_state: Optional[str] = None,
5008        **kwargs
5009    ):
5010        super(InboundNatRule, self).__init__(id=id, **kwargs)
5011        self.name = name
5012        self.etag = etag
5013        self.frontend_ip_configuration = frontend_ip_configuration
5014        self.backend_ip_configuration = None
5015        self.protocol = protocol
5016        self.frontend_port = frontend_port
5017        self.backend_port = backend_port
5018        self.idle_timeout_in_minutes = idle_timeout_in_minutes
5019        self.enable_floating_ip = enable_floating_ip
5020        self.provisioning_state = provisioning_state
5021
5022
5023class InboundNatRuleListResult(msrest.serialization.Model):
5024    """Response for ListInboundNatRule API service call.
5025
5026    Variables are only populated by the server, and will be ignored when sending a request.
5027
5028    :param value: A list of inbound nat rules in a load balancer.
5029    :type value: list[~azure.mgmt.network.v2018_01_01.models.InboundNatRule]
5030    :ivar next_link: The URL to get the next set of results.
5031    :vartype next_link: str
5032    """
5033
5034    _validation = {
5035        'next_link': {'readonly': True},
5036    }
5037
5038    _attribute_map = {
5039        'value': {'key': 'value', 'type': '[InboundNatRule]'},
5040        'next_link': {'key': 'nextLink', 'type': 'str'},
5041    }
5042
5043    def __init__(
5044        self,
5045        *,
5046        value: Optional[List["InboundNatRule"]] = None,
5047        **kwargs
5048    ):
5049        super(InboundNatRuleListResult, self).__init__(**kwargs)
5050        self.value = value
5051        self.next_link = None
5052
5053
5054class IPAddressAvailabilityResult(msrest.serialization.Model):
5055    """Response for CheckIPAddressAvailability API service call.
5056
5057    :param available: Private IP address availability.
5058    :type available: bool
5059    :param available_ip_addresses: Contains other available private IP addresses if the asked for
5060     address is taken.
5061    :type available_ip_addresses: list[str]
5062    """
5063
5064    _attribute_map = {
5065        'available': {'key': 'available', 'type': 'bool'},
5066        'available_ip_addresses': {'key': 'availableIPAddresses', 'type': '[str]'},
5067    }
5068
5069    def __init__(
5070        self,
5071        *,
5072        available: Optional[bool] = None,
5073        available_ip_addresses: Optional[List[str]] = None,
5074        **kwargs
5075    ):
5076        super(IPAddressAvailabilityResult, self).__init__(**kwargs)
5077        self.available = available
5078        self.available_ip_addresses = available_ip_addresses
5079
5080
5081class IPConfiguration(SubResource):
5082    """IP configuration.
5083
5084    :param id: Resource ID.
5085    :type id: str
5086    :param name: The name of the resource that is unique within a resource group. This name can be
5087     used to access the resource.
5088    :type name: str
5089    :param etag: A unique read-only string that changes whenever the resource is updated.
5090    :type etag: str
5091    :param private_ip_address: The private IP address of the IP configuration.
5092    :type private_ip_address: str
5093    :param private_ip_allocation_method: The private IP allocation method. Possible values are
5094     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
5095    :type private_ip_allocation_method: str or
5096     ~azure.mgmt.network.v2018_01_01.models.IPAllocationMethod
5097    :param subnet: The reference of the subnet resource.
5098    :type subnet: ~azure.mgmt.network.v2018_01_01.models.Subnet
5099    :param public_ip_address: The reference of the public IP resource.
5100    :type public_ip_address: ~azure.mgmt.network.v2018_01_01.models.PublicIPAddress
5101    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
5102     values are: 'Updating', 'Deleting', and 'Failed'.
5103    :type provisioning_state: str
5104    """
5105
5106    _attribute_map = {
5107        'id': {'key': 'id', 'type': 'str'},
5108        'name': {'key': 'name', 'type': 'str'},
5109        'etag': {'key': 'etag', 'type': 'str'},
5110        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
5111        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
5112        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
5113        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
5114        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5115    }
5116
5117    def __init__(
5118        self,
5119        *,
5120        id: Optional[str] = None,
5121        name: Optional[str] = None,
5122        etag: Optional[str] = None,
5123        private_ip_address: Optional[str] = None,
5124        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
5125        subnet: Optional["Subnet"] = None,
5126        public_ip_address: Optional["PublicIPAddress"] = None,
5127        provisioning_state: Optional[str] = None,
5128        **kwargs
5129    ):
5130        super(IPConfiguration, self).__init__(id=id, **kwargs)
5131        self.name = name
5132        self.etag = etag
5133        self.private_ip_address = private_ip_address
5134        self.private_ip_allocation_method = private_ip_allocation_method
5135        self.subnet = subnet
5136        self.public_ip_address = public_ip_address
5137        self.provisioning_state = provisioning_state
5138
5139
5140class IpsecPolicy(msrest.serialization.Model):
5141    """An IPSec Policy configuration for a virtual network gateway connection.
5142
5143    All required parameters must be populated in order to send to Azure.
5144
5145    :param sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode
5146     or Phase 2 SA) lifetime in seconds for a site to site VPN tunnel.
5147    :type sa_life_time_seconds: int
5148    :param sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode
5149     or Phase 2 SA) payload size in KB for a site to site VPN tunnel.
5150    :type sa_data_size_kilobytes: int
5151    :param ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible
5152     values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192",
5153     "GCMAES256".
5154    :type ipsec_encryption: str or ~azure.mgmt.network.v2018_01_01.models.IpsecEncryption
5155    :param ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values
5156     include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256".
5157    :type ipsec_integrity: str or ~azure.mgmt.network.v2018_01_01.models.IpsecIntegrity
5158    :param ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values
5159     include: "DES", "DES3", "AES128", "AES192", "AES256".
5160    :type ike_encryption: str or ~azure.mgmt.network.v2018_01_01.models.IkeEncryption
5161    :param ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values
5162     include: "MD5", "SHA1", "SHA256", "SHA384".
5163    :type ike_integrity: str or ~azure.mgmt.network.v2018_01_01.models.IkeIntegrity
5164    :param dh_group: Required. The DH Groups used in IKE Phase 1 for initial SA. Possible values
5165     include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384",
5166     "DHGroup24".
5167    :type dh_group: str or ~azure.mgmt.network.v2018_01_01.models.DhGroup
5168    :param pfs_group: Required. The DH Groups used in IKE Phase 2 for new child SA. Possible values
5169     include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24".
5170    :type pfs_group: str or ~azure.mgmt.network.v2018_01_01.models.PfsGroup
5171    """
5172
5173    _validation = {
5174        'sa_life_time_seconds': {'required': True},
5175        'sa_data_size_kilobytes': {'required': True},
5176        'ipsec_encryption': {'required': True},
5177        'ipsec_integrity': {'required': True},
5178        'ike_encryption': {'required': True},
5179        'ike_integrity': {'required': True},
5180        'dh_group': {'required': True},
5181        'pfs_group': {'required': True},
5182    }
5183
5184    _attribute_map = {
5185        'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'},
5186        'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'},
5187        'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'},
5188        'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'},
5189        'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'},
5190        'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'},
5191        'dh_group': {'key': 'dhGroup', 'type': 'str'},
5192        'pfs_group': {'key': 'pfsGroup', 'type': 'str'},
5193    }
5194
5195    def __init__(
5196        self,
5197        *,
5198        sa_life_time_seconds: int,
5199        sa_data_size_kilobytes: int,
5200        ipsec_encryption: Union[str, "IpsecEncryption"],
5201        ipsec_integrity: Union[str, "IpsecIntegrity"],
5202        ike_encryption: Union[str, "IkeEncryption"],
5203        ike_integrity: Union[str, "IkeIntegrity"],
5204        dh_group: Union[str, "DhGroup"],
5205        pfs_group: Union[str, "PfsGroup"],
5206        **kwargs
5207    ):
5208        super(IpsecPolicy, self).__init__(**kwargs)
5209        self.sa_life_time_seconds = sa_life_time_seconds
5210        self.sa_data_size_kilobytes = sa_data_size_kilobytes
5211        self.ipsec_encryption = ipsec_encryption
5212        self.ipsec_integrity = ipsec_integrity
5213        self.ike_encryption = ike_encryption
5214        self.ike_integrity = ike_integrity
5215        self.dh_group = dh_group
5216        self.pfs_group = pfs_group
5217
5218
5219class IpTag(msrest.serialization.Model):
5220    """Contains the IpTag associated with the public IP address.
5221
5222    :param ip_tag_type: Gets or sets the ipTag type: Example FirstPartyUsage.
5223    :type ip_tag_type: str
5224    :param tag: Gets or sets value of the IpTag associated with the public IP. Example SQL, Storage
5225     etc.
5226    :type tag: str
5227    """
5228
5229    _attribute_map = {
5230        'ip_tag_type': {'key': 'ipTagType', 'type': 'str'},
5231        'tag': {'key': 'tag', 'type': 'str'},
5232    }
5233
5234    def __init__(
5235        self,
5236        *,
5237        ip_tag_type: Optional[str] = None,
5238        tag: Optional[str] = None,
5239        **kwargs
5240    ):
5241        super(IpTag, self).__init__(**kwargs)
5242        self.ip_tag_type = ip_tag_type
5243        self.tag = tag
5244
5245
5246class Ipv6ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
5247    """Contains IPv6 peering config.
5248
5249    :param primary_peer_address_prefix: The primary address prefix.
5250    :type primary_peer_address_prefix: str
5251    :param secondary_peer_address_prefix: The secondary address prefix.
5252    :type secondary_peer_address_prefix: str
5253    :param microsoft_peering_config: The Microsoft peering configuration.
5254    :type microsoft_peering_config:
5255     ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitPeeringConfig
5256    :param route_filter: The reference of the RouteFilter resource.
5257    :type route_filter: ~azure.mgmt.network.v2018_01_01.models.RouteFilter
5258    :param state: The state of peering. Possible values are: 'Disabled' and 'Enabled'. Possible
5259     values include: "Disabled", "Enabled".
5260    :type state: str or ~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitPeeringState
5261    """
5262
5263    _attribute_map = {
5264        'primary_peer_address_prefix': {'key': 'primaryPeerAddressPrefix', 'type': 'str'},
5265        'secondary_peer_address_prefix': {'key': 'secondaryPeerAddressPrefix', 'type': 'str'},
5266        'microsoft_peering_config': {'key': 'microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
5267        'route_filter': {'key': 'routeFilter', 'type': 'RouteFilter'},
5268        'state': {'key': 'state', 'type': 'str'},
5269    }
5270
5271    def __init__(
5272        self,
5273        *,
5274        primary_peer_address_prefix: Optional[str] = None,
5275        secondary_peer_address_prefix: Optional[str] = None,
5276        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
5277        route_filter: Optional["RouteFilter"] = None,
5278        state: Optional[Union[str, "ExpressRouteCircuitPeeringState"]] = None,
5279        **kwargs
5280    ):
5281        super(Ipv6ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
5282        self.primary_peer_address_prefix = primary_peer_address_prefix
5283        self.secondary_peer_address_prefix = secondary_peer_address_prefix
5284        self.microsoft_peering_config = microsoft_peering_config
5285        self.route_filter = route_filter
5286        self.state = state
5287
5288
5289class LoadBalancer(Resource):
5290    """LoadBalancer resource.
5291
5292    Variables are only populated by the server, and will be ignored when sending a request.
5293
5294    :param id: Resource ID.
5295    :type id: str
5296    :ivar name: Resource name.
5297    :vartype name: str
5298    :ivar type: Resource type.
5299    :vartype type: str
5300    :param location: Resource location.
5301    :type location: str
5302    :param tags: A set of tags. Resource tags.
5303    :type tags: dict[str, str]
5304    :param sku: The load balancer SKU.
5305    :type sku: ~azure.mgmt.network.v2018_01_01.models.LoadBalancerSku
5306    :param etag: A unique read-only string that changes whenever the resource is updated.
5307    :type etag: str
5308    :param frontend_ip_configurations: Object representing the frontend IPs to be used for the load
5309     balancer.
5310    :type frontend_ip_configurations:
5311     list[~azure.mgmt.network.v2018_01_01.models.FrontendIPConfiguration]
5312    :param backend_address_pools: Collection of backend address pools used by a load balancer.
5313    :type backend_address_pools: list[~azure.mgmt.network.v2018_01_01.models.BackendAddressPool]
5314    :param load_balancing_rules: Object collection representing the load balancing rules Gets the
5315     provisioning.
5316    :type load_balancing_rules: list[~azure.mgmt.network.v2018_01_01.models.LoadBalancingRule]
5317    :param probes: Collection of probe objects used in the load balancer.
5318    :type probes: list[~azure.mgmt.network.v2018_01_01.models.Probe]
5319    :param inbound_nat_rules: Collection of inbound NAT Rules used by a load balancer. Defining
5320     inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT
5321     pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are
5322     associated with individual virtual machines cannot reference an Inbound NAT pool. They have to
5323     reference individual inbound NAT rules.
5324    :type inbound_nat_rules: list[~azure.mgmt.network.v2018_01_01.models.InboundNatRule]
5325    :param inbound_nat_pools: Defines an external port range for inbound NAT to a single backend
5326     port on NICs associated with a load balancer. Inbound NAT rules are created automatically for
5327     each NIC associated with the Load Balancer using an external port from this range. Defining an
5328     Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules.
5329     Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with
5330     individual virtual machines cannot reference an inbound NAT pool. They have to reference
5331     individual inbound NAT rules.
5332    :type inbound_nat_pools: list[~azure.mgmt.network.v2018_01_01.models.InboundNatPool]
5333    :param outbound_nat_rules: The outbound NAT rules.
5334    :type outbound_nat_rules: list[~azure.mgmt.network.v2018_01_01.models.OutboundNatRule]
5335    :param resource_guid: The resource GUID property of the load balancer resource.
5336    :type resource_guid: str
5337    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
5338     values are: 'Updating', 'Deleting', and 'Failed'.
5339    :type provisioning_state: str
5340    """
5341
5342    _validation = {
5343        'name': {'readonly': True},
5344        'type': {'readonly': True},
5345    }
5346
5347    _attribute_map = {
5348        'id': {'key': 'id', 'type': 'str'},
5349        'name': {'key': 'name', 'type': 'str'},
5350        'type': {'key': 'type', 'type': 'str'},
5351        'location': {'key': 'location', 'type': 'str'},
5352        'tags': {'key': 'tags', 'type': '{str}'},
5353        'sku': {'key': 'sku', 'type': 'LoadBalancerSku'},
5354        'etag': {'key': 'etag', 'type': 'str'},
5355        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[FrontendIPConfiguration]'},
5356        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[BackendAddressPool]'},
5357        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[LoadBalancingRule]'},
5358        'probes': {'key': 'properties.probes', 'type': '[Probe]'},
5359        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[InboundNatRule]'},
5360        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[InboundNatPool]'},
5361        'outbound_nat_rules': {'key': 'properties.outboundNatRules', 'type': '[OutboundNatRule]'},
5362        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
5363        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5364    }
5365
5366    def __init__(
5367        self,
5368        *,
5369        id: Optional[str] = None,
5370        location: Optional[str] = None,
5371        tags: Optional[Dict[str, str]] = None,
5372        sku: Optional["LoadBalancerSku"] = None,
5373        etag: Optional[str] = None,
5374        frontend_ip_configurations: Optional[List["FrontendIPConfiguration"]] = None,
5375        backend_address_pools: Optional[List["BackendAddressPool"]] = None,
5376        load_balancing_rules: Optional[List["LoadBalancingRule"]] = None,
5377        probes: Optional[List["Probe"]] = None,
5378        inbound_nat_rules: Optional[List["InboundNatRule"]] = None,
5379        inbound_nat_pools: Optional[List["InboundNatPool"]] = None,
5380        outbound_nat_rules: Optional[List["OutboundNatRule"]] = None,
5381        resource_guid: Optional[str] = None,
5382        provisioning_state: Optional[str] = None,
5383        **kwargs
5384    ):
5385        super(LoadBalancer, self).__init__(id=id, location=location, tags=tags, **kwargs)
5386        self.sku = sku
5387        self.etag = etag
5388        self.frontend_ip_configurations = frontend_ip_configurations
5389        self.backend_address_pools = backend_address_pools
5390        self.load_balancing_rules = load_balancing_rules
5391        self.probes = probes
5392        self.inbound_nat_rules = inbound_nat_rules
5393        self.inbound_nat_pools = inbound_nat_pools
5394        self.outbound_nat_rules = outbound_nat_rules
5395        self.resource_guid = resource_guid
5396        self.provisioning_state = provisioning_state
5397
5398
5399class LoadBalancerBackendAddressPoolListResult(msrest.serialization.Model):
5400    """Response for ListBackendAddressPool API service call.
5401
5402    Variables are only populated by the server, and will be ignored when sending a request.
5403
5404    :param value: A list of backend address pools in a load balancer.
5405    :type value: list[~azure.mgmt.network.v2018_01_01.models.BackendAddressPool]
5406    :ivar next_link: The URL to get the next set of results.
5407    :vartype next_link: str
5408    """
5409
5410    _validation = {
5411        'next_link': {'readonly': True},
5412    }
5413
5414    _attribute_map = {
5415        'value': {'key': 'value', 'type': '[BackendAddressPool]'},
5416        'next_link': {'key': 'nextLink', 'type': 'str'},
5417    }
5418
5419    def __init__(
5420        self,
5421        *,
5422        value: Optional[List["BackendAddressPool"]] = None,
5423        **kwargs
5424    ):
5425        super(LoadBalancerBackendAddressPoolListResult, self).__init__(**kwargs)
5426        self.value = value
5427        self.next_link = None
5428
5429
5430class LoadBalancerFrontendIPConfigurationListResult(msrest.serialization.Model):
5431    """Response for ListFrontendIPConfiguration API service call.
5432
5433    Variables are only populated by the server, and will be ignored when sending a request.
5434
5435    :param value: A list of frontend IP configurations in a load balancer.
5436    :type value: list[~azure.mgmt.network.v2018_01_01.models.FrontendIPConfiguration]
5437    :ivar next_link: The URL to get the next set of results.
5438    :vartype next_link: str
5439    """
5440
5441    _validation = {
5442        'next_link': {'readonly': True},
5443    }
5444
5445    _attribute_map = {
5446        'value': {'key': 'value', 'type': '[FrontendIPConfiguration]'},
5447        'next_link': {'key': 'nextLink', 'type': 'str'},
5448    }
5449
5450    def __init__(
5451        self,
5452        *,
5453        value: Optional[List["FrontendIPConfiguration"]] = None,
5454        **kwargs
5455    ):
5456        super(LoadBalancerFrontendIPConfigurationListResult, self).__init__(**kwargs)
5457        self.value = value
5458        self.next_link = None
5459
5460
5461class LoadBalancerListResult(msrest.serialization.Model):
5462    """Response for ListLoadBalancers API service call.
5463
5464    Variables are only populated by the server, and will be ignored when sending a request.
5465
5466    :param value: A list of load balancers in a resource group.
5467    :type value: list[~azure.mgmt.network.v2018_01_01.models.LoadBalancer]
5468    :ivar next_link: The URL to get the next set of results.
5469    :vartype next_link: str
5470    """
5471
5472    _validation = {
5473        'next_link': {'readonly': True},
5474    }
5475
5476    _attribute_map = {
5477        'value': {'key': 'value', 'type': '[LoadBalancer]'},
5478        'next_link': {'key': 'nextLink', 'type': 'str'},
5479    }
5480
5481    def __init__(
5482        self,
5483        *,
5484        value: Optional[List["LoadBalancer"]] = None,
5485        **kwargs
5486    ):
5487        super(LoadBalancerListResult, self).__init__(**kwargs)
5488        self.value = value
5489        self.next_link = None
5490
5491
5492class LoadBalancerLoadBalancingRuleListResult(msrest.serialization.Model):
5493    """Response for ListLoadBalancingRule API service call.
5494
5495    Variables are only populated by the server, and will be ignored when sending a request.
5496
5497    :param value: A list of load balancing rules in a load balancer.
5498    :type value: list[~azure.mgmt.network.v2018_01_01.models.LoadBalancingRule]
5499    :ivar next_link: The URL to get the next set of results.
5500    :vartype next_link: str
5501    """
5502
5503    _validation = {
5504        'next_link': {'readonly': True},
5505    }
5506
5507    _attribute_map = {
5508        'value': {'key': 'value', 'type': '[LoadBalancingRule]'},
5509        'next_link': {'key': 'nextLink', 'type': 'str'},
5510    }
5511
5512    def __init__(
5513        self,
5514        *,
5515        value: Optional[List["LoadBalancingRule"]] = None,
5516        **kwargs
5517    ):
5518        super(LoadBalancerLoadBalancingRuleListResult, self).__init__(**kwargs)
5519        self.value = value
5520        self.next_link = None
5521
5522
5523class LoadBalancerProbeListResult(msrest.serialization.Model):
5524    """Response for ListProbe API service call.
5525
5526    Variables are only populated by the server, and will be ignored when sending a request.
5527
5528    :param value: A list of probes in a load balancer.
5529    :type value: list[~azure.mgmt.network.v2018_01_01.models.Probe]
5530    :ivar next_link: The URL to get the next set of results.
5531    :vartype next_link: str
5532    """
5533
5534    _validation = {
5535        'next_link': {'readonly': True},
5536    }
5537
5538    _attribute_map = {
5539        'value': {'key': 'value', 'type': '[Probe]'},
5540        'next_link': {'key': 'nextLink', 'type': 'str'},
5541    }
5542
5543    def __init__(
5544        self,
5545        *,
5546        value: Optional[List["Probe"]] = None,
5547        **kwargs
5548    ):
5549        super(LoadBalancerProbeListResult, self).__init__(**kwargs)
5550        self.value = value
5551        self.next_link = None
5552
5553
5554class LoadBalancerSku(msrest.serialization.Model):
5555    """SKU of a load balancer.
5556
5557    :param name: Name of a load balancer SKU. Possible values include: "Basic", "Standard".
5558    :type name: str or ~azure.mgmt.network.v2018_01_01.models.LoadBalancerSkuName
5559    """
5560
5561    _attribute_map = {
5562        'name': {'key': 'name', 'type': 'str'},
5563    }
5564
5565    def __init__(
5566        self,
5567        *,
5568        name: Optional[Union[str, "LoadBalancerSkuName"]] = None,
5569        **kwargs
5570    ):
5571        super(LoadBalancerSku, self).__init__(**kwargs)
5572        self.name = name
5573
5574
5575class LoadBalancingRule(SubResource):
5576    """A load balancing rule for a load balancer.
5577
5578    :param id: Resource ID.
5579    :type id: str
5580    :param name: The name of the resource that is unique within a resource group. This name can be
5581     used to access the resource.
5582    :type name: str
5583    :param etag: A unique read-only string that changes whenever the resource is updated.
5584    :type etag: str
5585    :param frontend_ip_configuration: A reference to frontend IP addresses.
5586    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_01_01.models.SubResource
5587    :param backend_address_pool: A reference to a pool of DIPs. Inbound traffic is randomly load
5588     balanced across IPs in the backend IPs.
5589    :type backend_address_pool: ~azure.mgmt.network.v2018_01_01.models.SubResource
5590    :param probe: The reference of the load balancer probe used by the load balancing rule.
5591    :type probe: ~azure.mgmt.network.v2018_01_01.models.SubResource
5592    :param protocol: The transport protocol for the endpoint. Possible values are 'Udp' or 'Tcp' or
5593     'All.'. Possible values include: "Udp", "Tcp", "All".
5594    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.TransportProtocol
5595    :param load_distribution: The load distribution policy for this rule. Possible values are
5596     'Default', 'SourceIP', and 'SourceIPProtocol'. Possible values include: "Default", "SourceIP",
5597     "SourceIPProtocol".
5598    :type load_distribution: str or ~azure.mgmt.network.v2018_01_01.models.LoadDistribution
5599    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
5600     unique within the Load Balancer. Acceptable values are between 0 and 65534. Note that value 0
5601     enables "Any Port".
5602    :type frontend_port: int
5603    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
5604     are between 0 and 65535. Note that value 0 enables "Any Port".
5605    :type backend_port: int
5606    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
5607     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
5608     protocol is set to TCP.
5609    :type idle_timeout_in_minutes: int
5610    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
5611     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
5612     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
5613     after you create the endpoint.
5614    :type enable_floating_ip: bool
5615    :param disable_outbound_snat: Configures SNAT for the VMs in the backend pool to use the
5616     publicIP address specified in the frontend of the load balancing rule.
5617    :type disable_outbound_snat: bool
5618    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
5619     values are: 'Updating', 'Deleting', and 'Failed'.
5620    :type provisioning_state: str
5621    """
5622
5623    _attribute_map = {
5624        'id': {'key': 'id', 'type': 'str'},
5625        'name': {'key': 'name', 'type': 'str'},
5626        'etag': {'key': 'etag', 'type': 'str'},
5627        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
5628        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
5629        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
5630        'protocol': {'key': 'properties.protocol', 'type': 'str'},
5631        'load_distribution': {'key': 'properties.loadDistribution', 'type': 'str'},
5632        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
5633        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
5634        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
5635        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
5636        'disable_outbound_snat': {'key': 'properties.disableOutboundSnat', 'type': 'bool'},
5637        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5638    }
5639
5640    def __init__(
5641        self,
5642        *,
5643        id: Optional[str] = None,
5644        name: Optional[str] = None,
5645        etag: Optional[str] = None,
5646        frontend_ip_configuration: Optional["SubResource"] = None,
5647        backend_address_pool: Optional["SubResource"] = None,
5648        probe: Optional["SubResource"] = None,
5649        protocol: Optional[Union[str, "TransportProtocol"]] = None,
5650        load_distribution: Optional[Union[str, "LoadDistribution"]] = None,
5651        frontend_port: Optional[int] = None,
5652        backend_port: Optional[int] = None,
5653        idle_timeout_in_minutes: Optional[int] = None,
5654        enable_floating_ip: Optional[bool] = None,
5655        disable_outbound_snat: Optional[bool] = None,
5656        provisioning_state: Optional[str] = None,
5657        **kwargs
5658    ):
5659        super(LoadBalancingRule, self).__init__(id=id, **kwargs)
5660        self.name = name
5661        self.etag = etag
5662        self.frontend_ip_configuration = frontend_ip_configuration
5663        self.backend_address_pool = backend_address_pool
5664        self.probe = probe
5665        self.protocol = protocol
5666        self.load_distribution = load_distribution
5667        self.frontend_port = frontend_port
5668        self.backend_port = backend_port
5669        self.idle_timeout_in_minutes = idle_timeout_in_minutes
5670        self.enable_floating_ip = enable_floating_ip
5671        self.disable_outbound_snat = disable_outbound_snat
5672        self.provisioning_state = provisioning_state
5673
5674
5675class LocalNetworkGateway(Resource):
5676    """A common class for general resource information.
5677
5678    Variables are only populated by the server, and will be ignored when sending a request.
5679
5680    :param id: Resource ID.
5681    :type id: str
5682    :ivar name: Resource name.
5683    :vartype name: str
5684    :ivar type: Resource type.
5685    :vartype type: str
5686    :param location: Resource location.
5687    :type location: str
5688    :param tags: A set of tags. Resource tags.
5689    :type tags: dict[str, str]
5690    :param etag: A unique read-only string that changes whenever the resource is updated.
5691    :type etag: str
5692    :param local_network_address_space: Local network site address space.
5693    :type local_network_address_space: ~azure.mgmt.network.v2018_01_01.models.AddressSpace
5694    :param gateway_ip_address: IP address of local network gateway.
5695    :type gateway_ip_address: str
5696    :param bgp_settings: Local network gateway's BGP speaker settings.
5697    :type bgp_settings: ~azure.mgmt.network.v2018_01_01.models.BgpSettings
5698    :param resource_guid: The resource GUID property of the LocalNetworkGateway resource.
5699    :type resource_guid: str
5700    :ivar provisioning_state: The provisioning state of the LocalNetworkGateway resource. Possible
5701     values are: 'Updating', 'Deleting', and 'Failed'.
5702    :vartype provisioning_state: str
5703    """
5704
5705    _validation = {
5706        'name': {'readonly': True},
5707        'type': {'readonly': True},
5708        'provisioning_state': {'readonly': True},
5709    }
5710
5711    _attribute_map = {
5712        'id': {'key': 'id', 'type': 'str'},
5713        'name': {'key': 'name', 'type': 'str'},
5714        'type': {'key': 'type', 'type': 'str'},
5715        'location': {'key': 'location', 'type': 'str'},
5716        'tags': {'key': 'tags', 'type': '{str}'},
5717        'etag': {'key': 'etag', 'type': 'str'},
5718        'local_network_address_space': {'key': 'properties.localNetworkAddressSpace', 'type': 'AddressSpace'},
5719        'gateway_ip_address': {'key': 'properties.gatewayIpAddress', 'type': 'str'},
5720        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
5721        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
5722        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5723    }
5724
5725    def __init__(
5726        self,
5727        *,
5728        id: Optional[str] = None,
5729        location: Optional[str] = None,
5730        tags: Optional[Dict[str, str]] = None,
5731        etag: Optional[str] = None,
5732        local_network_address_space: Optional["AddressSpace"] = None,
5733        gateway_ip_address: Optional[str] = None,
5734        bgp_settings: Optional["BgpSettings"] = None,
5735        resource_guid: Optional[str] = None,
5736        **kwargs
5737    ):
5738        super(LocalNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
5739        self.etag = etag
5740        self.local_network_address_space = local_network_address_space
5741        self.gateway_ip_address = gateway_ip_address
5742        self.bgp_settings = bgp_settings
5743        self.resource_guid = resource_guid
5744        self.provisioning_state = None
5745
5746
5747class LocalNetworkGatewayListResult(msrest.serialization.Model):
5748    """Response for ListLocalNetworkGateways API service call.
5749
5750    Variables are only populated by the server, and will be ignored when sending a request.
5751
5752    :param value: A list of local network gateways that exists in a resource group.
5753    :type value: list[~azure.mgmt.network.v2018_01_01.models.LocalNetworkGateway]
5754    :ivar next_link: The URL to get the next set of results.
5755    :vartype next_link: str
5756    """
5757
5758    _validation = {
5759        'next_link': {'readonly': True},
5760    }
5761
5762    _attribute_map = {
5763        'value': {'key': 'value', 'type': '[LocalNetworkGateway]'},
5764        'next_link': {'key': 'nextLink', 'type': 'str'},
5765    }
5766
5767    def __init__(
5768        self,
5769        *,
5770        value: Optional[List["LocalNetworkGateway"]] = None,
5771        **kwargs
5772    ):
5773        super(LocalNetworkGatewayListResult, self).__init__(**kwargs)
5774        self.value = value
5775        self.next_link = None
5776
5777
5778class LogSpecification(msrest.serialization.Model):
5779    """Description of logging specification.
5780
5781    :param name: The name of the specification.
5782    :type name: str
5783    :param display_name: The display name of the specification.
5784    :type display_name: str
5785    :param blob_duration: Duration of the blob.
5786    :type blob_duration: str
5787    """
5788
5789    _attribute_map = {
5790        'name': {'key': 'name', 'type': 'str'},
5791        'display_name': {'key': 'displayName', 'type': 'str'},
5792        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
5793    }
5794
5795    def __init__(
5796        self,
5797        *,
5798        name: Optional[str] = None,
5799        display_name: Optional[str] = None,
5800        blob_duration: Optional[str] = None,
5801        **kwargs
5802    ):
5803        super(LogSpecification, self).__init__(**kwargs)
5804        self.name = name
5805        self.display_name = display_name
5806        self.blob_duration = blob_duration
5807
5808
5809class MetricSpecification(msrest.serialization.Model):
5810    """Description of metrics specification.
5811
5812    :param name: The name of the metric.
5813    :type name: str
5814    :param display_name: The display name of the metric.
5815    :type display_name: str
5816    :param display_description: The description of the metric.
5817    :type display_description: str
5818    :param unit: Units the metric to be displayed in.
5819    :type unit: str
5820    :param aggregation_type: The aggregation type.
5821    :type aggregation_type: str
5822    :param availabilities: List of availability.
5823    :type availabilities: list[~azure.mgmt.network.v2018_01_01.models.Availability]
5824    :param enable_regional_mdm_account: Whether regional MDM account enabled.
5825    :type enable_regional_mdm_account: bool
5826    :param fill_gap_with_zero: Whether gaps would be filled with zeros.
5827    :type fill_gap_with_zero: bool
5828    :param metric_filter_pattern: Pattern for the filter of the metric.
5829    :type metric_filter_pattern: str
5830    :param dimensions: List of dimensions.
5831    :type dimensions: list[~azure.mgmt.network.v2018_01_01.models.Dimension]
5832    :param is_internal: Whether the metric is internal.
5833    :type is_internal: bool
5834    :param source_mdm_account: The source MDM account.
5835    :type source_mdm_account: str
5836    :param source_mdm_namespace: The source MDM namespace.
5837    :type source_mdm_namespace: str
5838    :param resource_id_dimension_name_override: The resource Id dimension name override.
5839    :type resource_id_dimension_name_override: str
5840    """
5841
5842    _attribute_map = {
5843        'name': {'key': 'name', 'type': 'str'},
5844        'display_name': {'key': 'displayName', 'type': 'str'},
5845        'display_description': {'key': 'displayDescription', 'type': 'str'},
5846        'unit': {'key': 'unit', 'type': 'str'},
5847        'aggregation_type': {'key': 'aggregationType', 'type': 'str'},
5848        'availabilities': {'key': 'availabilities', 'type': '[Availability]'},
5849        'enable_regional_mdm_account': {'key': 'enableRegionalMdmAccount', 'type': 'bool'},
5850        'fill_gap_with_zero': {'key': 'fillGapWithZero', 'type': 'bool'},
5851        'metric_filter_pattern': {'key': 'metricFilterPattern', 'type': 'str'},
5852        'dimensions': {'key': 'dimensions', 'type': '[Dimension]'},
5853        'is_internal': {'key': 'isInternal', 'type': 'bool'},
5854        'source_mdm_account': {'key': 'sourceMdmAccount', 'type': 'str'},
5855        'source_mdm_namespace': {'key': 'sourceMdmNamespace', 'type': 'str'},
5856        'resource_id_dimension_name_override': {'key': 'resourceIdDimensionNameOverride', 'type': 'str'},
5857    }
5858
5859    def __init__(
5860        self,
5861        *,
5862        name: Optional[str] = None,
5863        display_name: Optional[str] = None,
5864        display_description: Optional[str] = None,
5865        unit: Optional[str] = None,
5866        aggregation_type: Optional[str] = None,
5867        availabilities: Optional[List["Availability"]] = None,
5868        enable_regional_mdm_account: Optional[bool] = None,
5869        fill_gap_with_zero: Optional[bool] = None,
5870        metric_filter_pattern: Optional[str] = None,
5871        dimensions: Optional[List["Dimension"]] = None,
5872        is_internal: Optional[bool] = None,
5873        source_mdm_account: Optional[str] = None,
5874        source_mdm_namespace: Optional[str] = None,
5875        resource_id_dimension_name_override: Optional[str] = None,
5876        **kwargs
5877    ):
5878        super(MetricSpecification, self).__init__(**kwargs)
5879        self.name = name
5880        self.display_name = display_name
5881        self.display_description = display_description
5882        self.unit = unit
5883        self.aggregation_type = aggregation_type
5884        self.availabilities = availabilities
5885        self.enable_regional_mdm_account = enable_regional_mdm_account
5886        self.fill_gap_with_zero = fill_gap_with_zero
5887        self.metric_filter_pattern = metric_filter_pattern
5888        self.dimensions = dimensions
5889        self.is_internal = is_internal
5890        self.source_mdm_account = source_mdm_account
5891        self.source_mdm_namespace = source_mdm_namespace
5892        self.resource_id_dimension_name_override = resource_id_dimension_name_override
5893
5894
5895class NetworkInterface(Resource):
5896    """A network interface in a resource group.
5897
5898    Variables are only populated by the server, and will be ignored when sending a request.
5899
5900    :param id: Resource ID.
5901    :type id: str
5902    :ivar name: Resource name.
5903    :vartype name: str
5904    :ivar type: Resource type.
5905    :vartype type: str
5906    :param location: Resource location.
5907    :type location: str
5908    :param tags: A set of tags. Resource tags.
5909    :type tags: dict[str, str]
5910    :param etag: A unique read-only string that changes whenever the resource is updated.
5911    :type etag: str
5912    :param virtual_machine: The reference of a virtual machine.
5913    :type virtual_machine: ~azure.mgmt.network.v2018_01_01.models.SubResource
5914    :param network_security_group: The reference of the NetworkSecurityGroup resource.
5915    :type network_security_group: ~azure.mgmt.network.v2018_01_01.models.NetworkSecurityGroup
5916    :param ip_configurations: A list of IPConfigurations of the network interface.
5917    :type ip_configurations:
5918     list[~azure.mgmt.network.v2018_01_01.models.NetworkInterfaceIPConfiguration]
5919    :param dns_settings: The DNS settings in network interface.
5920    :type dns_settings: ~azure.mgmt.network.v2018_01_01.models.NetworkInterfaceDnsSettings
5921    :param mac_address: The MAC address of the network interface.
5922    :type mac_address: str
5923    :param primary: Gets whether this is a primary network interface on a virtual machine.
5924    :type primary: bool
5925    :param enable_accelerated_networking: If the network interface is accelerated networking
5926     enabled.
5927    :type enable_accelerated_networking: bool
5928    :param enable_ip_forwarding: Indicates whether IP forwarding is enabled on this network
5929     interface.
5930    :type enable_ip_forwarding: bool
5931    :param resource_guid: The resource GUID property of the network interface resource.
5932    :type resource_guid: str
5933    :param provisioning_state: The provisioning state of the public IP resource. Possible values
5934     are: 'Updating', 'Deleting', and 'Failed'.
5935    :type provisioning_state: str
5936    """
5937
5938    _validation = {
5939        'name': {'readonly': True},
5940        'type': {'readonly': True},
5941    }
5942
5943    _attribute_map = {
5944        'id': {'key': 'id', 'type': 'str'},
5945        'name': {'key': 'name', 'type': 'str'},
5946        'type': {'key': 'type', 'type': 'str'},
5947        'location': {'key': 'location', 'type': 'str'},
5948        'tags': {'key': 'tags', 'type': '{str}'},
5949        'etag': {'key': 'etag', 'type': 'str'},
5950        'virtual_machine': {'key': 'properties.virtualMachine', 'type': 'SubResource'},
5951        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
5952        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
5953        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'NetworkInterfaceDnsSettings'},
5954        'mac_address': {'key': 'properties.macAddress', 'type': 'str'},
5955        'primary': {'key': 'properties.primary', 'type': 'bool'},
5956        'enable_accelerated_networking': {'key': 'properties.enableAcceleratedNetworking', 'type': 'bool'},
5957        'enable_ip_forwarding': {'key': 'properties.enableIPForwarding', 'type': 'bool'},
5958        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
5959        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5960    }
5961
5962    def __init__(
5963        self,
5964        *,
5965        id: Optional[str] = None,
5966        location: Optional[str] = None,
5967        tags: Optional[Dict[str, str]] = None,
5968        etag: Optional[str] = None,
5969        virtual_machine: Optional["SubResource"] = None,
5970        network_security_group: Optional["NetworkSecurityGroup"] = None,
5971        ip_configurations: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
5972        dns_settings: Optional["NetworkInterfaceDnsSettings"] = None,
5973        mac_address: Optional[str] = None,
5974        primary: Optional[bool] = None,
5975        enable_accelerated_networking: Optional[bool] = None,
5976        enable_ip_forwarding: Optional[bool] = None,
5977        resource_guid: Optional[str] = None,
5978        provisioning_state: Optional[str] = None,
5979        **kwargs
5980    ):
5981        super(NetworkInterface, self).__init__(id=id, location=location, tags=tags, **kwargs)
5982        self.etag = etag
5983        self.virtual_machine = virtual_machine
5984        self.network_security_group = network_security_group
5985        self.ip_configurations = ip_configurations
5986        self.dns_settings = dns_settings
5987        self.mac_address = mac_address
5988        self.primary = primary
5989        self.enable_accelerated_networking = enable_accelerated_networking
5990        self.enable_ip_forwarding = enable_ip_forwarding
5991        self.resource_guid = resource_guid
5992        self.provisioning_state = provisioning_state
5993
5994
5995class NetworkInterfaceAssociation(msrest.serialization.Model):
5996    """Network interface and its custom security rules.
5997
5998    Variables are only populated by the server, and will be ignored when sending a request.
5999
6000    :ivar id: Network interface ID.
6001    :vartype id: str
6002    :param security_rules: Collection of custom security rules.
6003    :type security_rules: list[~azure.mgmt.network.v2018_01_01.models.SecurityRule]
6004    """
6005
6006    _validation = {
6007        'id': {'readonly': True},
6008    }
6009
6010    _attribute_map = {
6011        'id': {'key': 'id', 'type': 'str'},
6012        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
6013    }
6014
6015    def __init__(
6016        self,
6017        *,
6018        security_rules: Optional[List["SecurityRule"]] = None,
6019        **kwargs
6020    ):
6021        super(NetworkInterfaceAssociation, self).__init__(**kwargs)
6022        self.id = None
6023        self.security_rules = security_rules
6024
6025
6026class NetworkInterfaceDnsSettings(msrest.serialization.Model):
6027    """DNS settings of a network interface.
6028
6029    :param dns_servers: List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure
6030     provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it must be
6031     the only value in dnsServers collection.
6032    :type dns_servers: list[str]
6033    :param applied_dns_servers: If the VM that uses this NIC is part of an Availability Set, then
6034     this list will have the union of all DNS servers from all NICs that are part of the
6035     Availability Set. This property is what is configured on each of those VMs.
6036    :type applied_dns_servers: list[str]
6037    :param internal_dns_name_label: Relative DNS name for this NIC used for internal communications
6038     between VMs in the same virtual network.
6039    :type internal_dns_name_label: str
6040    :param internal_fqdn: Fully qualified DNS name supporting internal communications between VMs
6041     in the same virtual network.
6042    :type internal_fqdn: str
6043    :param internal_domain_name_suffix: Even if internalDnsNameLabel is not specified, a DNS entry
6044     is created for the primary NIC of the VM. This DNS name can be constructed by concatenating the
6045     VM name with the value of internalDomainNameSuffix.
6046    :type internal_domain_name_suffix: str
6047    """
6048
6049    _attribute_map = {
6050        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
6051        'applied_dns_servers': {'key': 'appliedDnsServers', 'type': '[str]'},
6052        'internal_dns_name_label': {'key': 'internalDnsNameLabel', 'type': 'str'},
6053        'internal_fqdn': {'key': 'internalFqdn', 'type': 'str'},
6054        'internal_domain_name_suffix': {'key': 'internalDomainNameSuffix', 'type': 'str'},
6055    }
6056
6057    def __init__(
6058        self,
6059        *,
6060        dns_servers: Optional[List[str]] = None,
6061        applied_dns_servers: Optional[List[str]] = None,
6062        internal_dns_name_label: Optional[str] = None,
6063        internal_fqdn: Optional[str] = None,
6064        internal_domain_name_suffix: Optional[str] = None,
6065        **kwargs
6066    ):
6067        super(NetworkInterfaceDnsSettings, self).__init__(**kwargs)
6068        self.dns_servers = dns_servers
6069        self.applied_dns_servers = applied_dns_servers
6070        self.internal_dns_name_label = internal_dns_name_label
6071        self.internal_fqdn = internal_fqdn
6072        self.internal_domain_name_suffix = internal_domain_name_suffix
6073
6074
6075class NetworkInterfaceIPConfiguration(SubResource):
6076    """IPConfiguration in a network interface.
6077
6078    :param id: Resource ID.
6079    :type id: str
6080    :param name: The name of the resource that is unique within a resource group. This name can be
6081     used to access the resource.
6082    :type name: str
6083    :param etag: A unique read-only string that changes whenever the resource is updated.
6084    :type etag: str
6085    :param application_gateway_backend_address_pools: The reference of
6086     ApplicationGatewayBackendAddressPool resource.
6087    :type application_gateway_backend_address_pools:
6088     list[~azure.mgmt.network.v2018_01_01.models.ApplicationGatewayBackendAddressPool]
6089    :param load_balancer_backend_address_pools: The reference of LoadBalancerBackendAddressPool
6090     resource.
6091    :type load_balancer_backend_address_pools:
6092     list[~azure.mgmt.network.v2018_01_01.models.BackendAddressPool]
6093    :param load_balancer_inbound_nat_rules: A list of references of LoadBalancerInboundNatRules.
6094    :type load_balancer_inbound_nat_rules:
6095     list[~azure.mgmt.network.v2018_01_01.models.InboundNatRule]
6096    :param private_ip_address: Private IP address of the IP configuration.
6097    :type private_ip_address: str
6098    :param private_ip_allocation_method: Defines how a private IP address is assigned. Possible
6099     values are: 'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
6100    :type private_ip_allocation_method: str or
6101     ~azure.mgmt.network.v2018_01_01.models.IPAllocationMethod
6102    :param private_ip_address_version: Available from Api-Version 2016-03-30 onwards, it represents
6103     whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4.  Possible
6104     values are: 'IPv4' and 'IPv6'. Possible values include: "IPv4", "IPv6".
6105    :type private_ip_address_version: str or ~azure.mgmt.network.v2018_01_01.models.IPVersion
6106    :param subnet: Subnet bound to the IP configuration.
6107    :type subnet: ~azure.mgmt.network.v2018_01_01.models.Subnet
6108    :param primary: Gets whether this is a primary customer address on the network interface.
6109    :type primary: bool
6110    :param public_ip_address: Public IP address bound to the IP configuration.
6111    :type public_ip_address: ~azure.mgmt.network.v2018_01_01.models.PublicIPAddress
6112    :param application_security_groups: Application security groups in which the IP configuration
6113     is included.
6114    :type application_security_groups:
6115     list[~azure.mgmt.network.v2018_01_01.models.ApplicationSecurityGroup]
6116    :param provisioning_state: The provisioning state of the network interface IP configuration.
6117     Possible values are: 'Updating', 'Deleting', and 'Failed'.
6118    :type provisioning_state: str
6119    """
6120
6121    _attribute_map = {
6122        'id': {'key': 'id', 'type': 'str'},
6123        'name': {'key': 'name', 'type': 'str'},
6124        'etag': {'key': 'etag', 'type': 'str'},
6125        'application_gateway_backend_address_pools': {'key': 'properties.applicationGatewayBackendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
6126        'load_balancer_backend_address_pools': {'key': 'properties.loadBalancerBackendAddressPools', 'type': '[BackendAddressPool]'},
6127        'load_balancer_inbound_nat_rules': {'key': 'properties.loadBalancerInboundNatRules', 'type': '[InboundNatRule]'},
6128        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
6129        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
6130        'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'},
6131        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
6132        'primary': {'key': 'properties.primary', 'type': 'bool'},
6133        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
6134        'application_security_groups': {'key': 'properties.applicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
6135        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6136    }
6137
6138    def __init__(
6139        self,
6140        *,
6141        id: Optional[str] = None,
6142        name: Optional[str] = None,
6143        etag: Optional[str] = None,
6144        application_gateway_backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None,
6145        load_balancer_backend_address_pools: Optional[List["BackendAddressPool"]] = None,
6146        load_balancer_inbound_nat_rules: Optional[List["InboundNatRule"]] = None,
6147        private_ip_address: Optional[str] = None,
6148        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
6149        private_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
6150        subnet: Optional["Subnet"] = None,
6151        primary: Optional[bool] = None,
6152        public_ip_address: Optional["PublicIPAddress"] = None,
6153        application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
6154        provisioning_state: Optional[str] = None,
6155        **kwargs
6156    ):
6157        super(NetworkInterfaceIPConfiguration, self).__init__(id=id, **kwargs)
6158        self.name = name
6159        self.etag = etag
6160        self.application_gateway_backend_address_pools = application_gateway_backend_address_pools
6161        self.load_balancer_backend_address_pools = load_balancer_backend_address_pools
6162        self.load_balancer_inbound_nat_rules = load_balancer_inbound_nat_rules
6163        self.private_ip_address = private_ip_address
6164        self.private_ip_allocation_method = private_ip_allocation_method
6165        self.private_ip_address_version = private_ip_address_version
6166        self.subnet = subnet
6167        self.primary = primary
6168        self.public_ip_address = public_ip_address
6169        self.application_security_groups = application_security_groups
6170        self.provisioning_state = provisioning_state
6171
6172
6173class NetworkInterfaceIPConfigurationListResult(msrest.serialization.Model):
6174    """Response for list ip configurations API service call.
6175
6176    Variables are only populated by the server, and will be ignored when sending a request.
6177
6178    :param value: A list of ip configurations.
6179    :type value: list[~azure.mgmt.network.v2018_01_01.models.NetworkInterfaceIPConfiguration]
6180    :ivar next_link: The URL to get the next set of results.
6181    :vartype next_link: str
6182    """
6183
6184    _validation = {
6185        'next_link': {'readonly': True},
6186    }
6187
6188    _attribute_map = {
6189        'value': {'key': 'value', 'type': '[NetworkInterfaceIPConfiguration]'},
6190        'next_link': {'key': 'nextLink', 'type': 'str'},
6191    }
6192
6193    def __init__(
6194        self,
6195        *,
6196        value: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
6197        **kwargs
6198    ):
6199        super(NetworkInterfaceIPConfigurationListResult, self).__init__(**kwargs)
6200        self.value = value
6201        self.next_link = None
6202
6203
6204class NetworkInterfaceListResult(msrest.serialization.Model):
6205    """Response for the ListNetworkInterface API service call.
6206
6207    Variables are only populated by the server, and will be ignored when sending a request.
6208
6209    :param value: A list of network interfaces in a resource group.
6210    :type value: list[~azure.mgmt.network.v2018_01_01.models.NetworkInterface]
6211    :ivar next_link: The URL to get the next set of results.
6212    :vartype next_link: str
6213    """
6214
6215    _validation = {
6216        'next_link': {'readonly': True},
6217    }
6218
6219    _attribute_map = {
6220        'value': {'key': 'value', 'type': '[NetworkInterface]'},
6221        'next_link': {'key': 'nextLink', 'type': 'str'},
6222    }
6223
6224    def __init__(
6225        self,
6226        *,
6227        value: Optional[List["NetworkInterface"]] = None,
6228        **kwargs
6229    ):
6230        super(NetworkInterfaceListResult, self).__init__(**kwargs)
6231        self.value = value
6232        self.next_link = None
6233
6234
6235class NetworkInterfaceLoadBalancerListResult(msrest.serialization.Model):
6236    """Response for list ip configurations API service call.
6237
6238    Variables are only populated by the server, and will be ignored when sending a request.
6239
6240    :param value: A list of load balancers.
6241    :type value: list[~azure.mgmt.network.v2018_01_01.models.LoadBalancer]
6242    :ivar next_link: The URL to get the next set of results.
6243    :vartype next_link: str
6244    """
6245
6246    _validation = {
6247        'next_link': {'readonly': True},
6248    }
6249
6250    _attribute_map = {
6251        'value': {'key': 'value', 'type': '[LoadBalancer]'},
6252        'next_link': {'key': 'nextLink', 'type': 'str'},
6253    }
6254
6255    def __init__(
6256        self,
6257        *,
6258        value: Optional[List["LoadBalancer"]] = None,
6259        **kwargs
6260    ):
6261        super(NetworkInterfaceLoadBalancerListResult, self).__init__(**kwargs)
6262        self.value = value
6263        self.next_link = None
6264
6265
6266class NetworkSecurityGroup(Resource):
6267    """NetworkSecurityGroup resource.
6268
6269    Variables are only populated by the server, and will be ignored when sending a request.
6270
6271    :param id: Resource ID.
6272    :type id: str
6273    :ivar name: Resource name.
6274    :vartype name: str
6275    :ivar type: Resource type.
6276    :vartype type: str
6277    :param location: Resource location.
6278    :type location: str
6279    :param tags: A set of tags. Resource tags.
6280    :type tags: dict[str, str]
6281    :param etag: A unique read-only string that changes whenever the resource is updated.
6282    :type etag: str
6283    :param security_rules: A collection of security rules of the network security group.
6284    :type security_rules: list[~azure.mgmt.network.v2018_01_01.models.SecurityRule]
6285    :param default_security_rules: The default security rules of network security group.
6286    :type default_security_rules: list[~azure.mgmt.network.v2018_01_01.models.SecurityRule]
6287    :ivar network_interfaces: A collection of references to network interfaces.
6288    :vartype network_interfaces: list[~azure.mgmt.network.v2018_01_01.models.NetworkInterface]
6289    :ivar subnets: A collection of references to subnets.
6290    :vartype subnets: list[~azure.mgmt.network.v2018_01_01.models.Subnet]
6291    :param resource_guid: The resource GUID property of the network security group resource.
6292    :type resource_guid: str
6293    :param provisioning_state: The provisioning state of the public IP resource. Possible values
6294     are: 'Updating', 'Deleting', and 'Failed'.
6295    :type provisioning_state: str
6296    """
6297
6298    _validation = {
6299        'name': {'readonly': True},
6300        'type': {'readonly': True},
6301        'network_interfaces': {'readonly': True},
6302        'subnets': {'readonly': True},
6303    }
6304
6305    _attribute_map = {
6306        'id': {'key': 'id', 'type': 'str'},
6307        'name': {'key': 'name', 'type': 'str'},
6308        'type': {'key': 'type', 'type': 'str'},
6309        'location': {'key': 'location', 'type': 'str'},
6310        'tags': {'key': 'tags', 'type': '{str}'},
6311        'etag': {'key': 'etag', 'type': 'str'},
6312        'security_rules': {'key': 'properties.securityRules', 'type': '[SecurityRule]'},
6313        'default_security_rules': {'key': 'properties.defaultSecurityRules', 'type': '[SecurityRule]'},
6314        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
6315        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
6316        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6317        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6318    }
6319
6320    def __init__(
6321        self,
6322        *,
6323        id: Optional[str] = None,
6324        location: Optional[str] = None,
6325        tags: Optional[Dict[str, str]] = None,
6326        etag: Optional[str] = None,
6327        security_rules: Optional[List["SecurityRule"]] = None,
6328        default_security_rules: Optional[List["SecurityRule"]] = None,
6329        resource_guid: Optional[str] = None,
6330        provisioning_state: Optional[str] = None,
6331        **kwargs
6332    ):
6333        super(NetworkSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
6334        self.etag = etag
6335        self.security_rules = security_rules
6336        self.default_security_rules = default_security_rules
6337        self.network_interfaces = None
6338        self.subnets = None
6339        self.resource_guid = resource_guid
6340        self.provisioning_state = provisioning_state
6341
6342
6343class NetworkSecurityGroupListResult(msrest.serialization.Model):
6344    """Response for ListNetworkSecurityGroups API service call.
6345
6346    :param value: A list of NetworkSecurityGroup resources.
6347    :type value: list[~azure.mgmt.network.v2018_01_01.models.NetworkSecurityGroup]
6348    :param next_link: The URL to get the next set of results.
6349    :type next_link: str
6350    """
6351
6352    _attribute_map = {
6353        'value': {'key': 'value', 'type': '[NetworkSecurityGroup]'},
6354        'next_link': {'key': 'nextLink', 'type': 'str'},
6355    }
6356
6357    def __init__(
6358        self,
6359        *,
6360        value: Optional[List["NetworkSecurityGroup"]] = None,
6361        next_link: Optional[str] = None,
6362        **kwargs
6363    ):
6364        super(NetworkSecurityGroupListResult, self).__init__(**kwargs)
6365        self.value = value
6366        self.next_link = next_link
6367
6368
6369class NetworkWatcher(Resource):
6370    """Network watcher in a resource group.
6371
6372    Variables are only populated by the server, and will be ignored when sending a request.
6373
6374    :param id: Resource ID.
6375    :type id: str
6376    :ivar name: Resource name.
6377    :vartype name: str
6378    :ivar type: Resource type.
6379    :vartype type: str
6380    :param location: Resource location.
6381    :type location: str
6382    :param tags: A set of tags. Resource tags.
6383    :type tags: dict[str, str]
6384    :param etag:
6385    :type etag: str
6386    :ivar provisioning_state: The provisioning state of the resource. Possible values include:
6387     "Succeeded", "Updating", "Deleting", "Failed".
6388    :vartype provisioning_state: str or ~azure.mgmt.network.v2018_01_01.models.ProvisioningState
6389    """
6390
6391    _validation = {
6392        'name': {'readonly': True},
6393        'type': {'readonly': True},
6394        'provisioning_state': {'readonly': True},
6395    }
6396
6397    _attribute_map = {
6398        'id': {'key': 'id', 'type': 'str'},
6399        'name': {'key': 'name', 'type': 'str'},
6400        'type': {'key': 'type', 'type': 'str'},
6401        'location': {'key': 'location', 'type': 'str'},
6402        'tags': {'key': 'tags', 'type': '{str}'},
6403        'etag': {'key': 'etag', 'type': 'str'},
6404        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6405    }
6406
6407    def __init__(
6408        self,
6409        *,
6410        id: Optional[str] = None,
6411        location: Optional[str] = None,
6412        tags: Optional[Dict[str, str]] = None,
6413        etag: Optional[str] = "A unique read-only string that changes whenever the resource is updated.",
6414        **kwargs
6415    ):
6416        super(NetworkWatcher, self).__init__(id=id, location=location, tags=tags, **kwargs)
6417        self.etag = etag
6418        self.provisioning_state = None
6419
6420
6421class NetworkWatcherListResult(msrest.serialization.Model):
6422    """List of network watcher resources.
6423
6424    :param value:
6425    :type value: list[~azure.mgmt.network.v2018_01_01.models.NetworkWatcher]
6426    """
6427
6428    _attribute_map = {
6429        'value': {'key': 'value', 'type': '[NetworkWatcher]'},
6430    }
6431
6432    def __init__(
6433        self,
6434        *,
6435        value: Optional[List["NetworkWatcher"]] = None,
6436        **kwargs
6437    ):
6438        super(NetworkWatcherListResult, self).__init__(**kwargs)
6439        self.value = value
6440
6441
6442class NextHopParameters(msrest.serialization.Model):
6443    """Parameters that define the source and destination endpoint.
6444
6445    All required parameters must be populated in order to send to Azure.
6446
6447    :param target_resource_id: Required. The resource identifier of the target resource against
6448     which the action is to be performed.
6449    :type target_resource_id: str
6450    :param source_ip_address: Required. The source IP address.
6451    :type source_ip_address: str
6452    :param destination_ip_address: Required. The destination IP address.
6453    :type destination_ip_address: str
6454    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
6455     enabled on any of the nics, then this parameter must be specified. Otherwise optional).
6456    :type target_nic_resource_id: str
6457    """
6458
6459    _validation = {
6460        'target_resource_id': {'required': True},
6461        'source_ip_address': {'required': True},
6462        'destination_ip_address': {'required': True},
6463    }
6464
6465    _attribute_map = {
6466        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
6467        'source_ip_address': {'key': 'sourceIPAddress', 'type': 'str'},
6468        'destination_ip_address': {'key': 'destinationIPAddress', 'type': 'str'},
6469        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
6470    }
6471
6472    def __init__(
6473        self,
6474        *,
6475        target_resource_id: str,
6476        source_ip_address: str,
6477        destination_ip_address: str,
6478        target_nic_resource_id: Optional[str] = None,
6479        **kwargs
6480    ):
6481        super(NextHopParameters, self).__init__(**kwargs)
6482        self.target_resource_id = target_resource_id
6483        self.source_ip_address = source_ip_address
6484        self.destination_ip_address = destination_ip_address
6485        self.target_nic_resource_id = target_nic_resource_id
6486
6487
6488class NextHopResult(msrest.serialization.Model):
6489    """The information about next hop from the specified VM.
6490
6491    :param next_hop_type: Next hop type. Possible values include: "Internet", "VirtualAppliance",
6492     "VirtualNetworkGateway", "VnetLocal", "HyperNetGateway", "None".
6493    :type next_hop_type: str or ~azure.mgmt.network.v2018_01_01.models.NextHopType
6494    :param next_hop_ip_address: Next hop IP Address.
6495    :type next_hop_ip_address: str
6496    :param route_table_id: The resource identifier for the route table associated with the route
6497     being returned. If the route being returned does not correspond to any user created routes then
6498     this field will be the string 'System Route'.
6499    :type route_table_id: str
6500    """
6501
6502    _attribute_map = {
6503        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
6504        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'},
6505        'route_table_id': {'key': 'routeTableId', 'type': 'str'},
6506    }
6507
6508    def __init__(
6509        self,
6510        *,
6511        next_hop_type: Optional[Union[str, "NextHopType"]] = None,
6512        next_hop_ip_address: Optional[str] = None,
6513        route_table_id: Optional[str] = None,
6514        **kwargs
6515    ):
6516        super(NextHopResult, self).__init__(**kwargs)
6517        self.next_hop_type = next_hop_type
6518        self.next_hop_ip_address = next_hop_ip_address
6519        self.route_table_id = route_table_id
6520
6521
6522class Operation(msrest.serialization.Model):
6523    """Network REST API operation definition.
6524
6525    :param name: Operation name: {provider}/{resource}/{operation}.
6526    :type name: str
6527    :param display: Display metadata associated with the operation.
6528    :type display: ~azure.mgmt.network.v2018_01_01.models.OperationDisplay
6529    :param origin: Origin of the operation.
6530    :type origin: str
6531    :param service_specification: Specification of the service.
6532    :type service_specification:
6533     ~azure.mgmt.network.v2018_01_01.models.OperationPropertiesFormatServiceSpecification
6534    """
6535
6536    _attribute_map = {
6537        'name': {'key': 'name', 'type': 'str'},
6538        'display': {'key': 'display', 'type': 'OperationDisplay'},
6539        'origin': {'key': 'origin', 'type': 'str'},
6540        'service_specification': {'key': 'properties.serviceSpecification', 'type': 'OperationPropertiesFormatServiceSpecification'},
6541    }
6542
6543    def __init__(
6544        self,
6545        *,
6546        name: Optional[str] = None,
6547        display: Optional["OperationDisplay"] = None,
6548        origin: Optional[str] = None,
6549        service_specification: Optional["OperationPropertiesFormatServiceSpecification"] = None,
6550        **kwargs
6551    ):
6552        super(Operation, self).__init__(**kwargs)
6553        self.name = name
6554        self.display = display
6555        self.origin = origin
6556        self.service_specification = service_specification
6557
6558
6559class OperationDisplay(msrest.serialization.Model):
6560    """Display metadata associated with the operation.
6561
6562    :param provider: Service provider: Microsoft Network.
6563    :type provider: str
6564    :param resource: Resource on which the operation is performed.
6565    :type resource: str
6566    :param operation: Type of the operation: get, read, delete, etc.
6567    :type operation: str
6568    :param description: Description of the operation.
6569    :type description: str
6570    """
6571
6572    _attribute_map = {
6573        'provider': {'key': 'provider', 'type': 'str'},
6574        'resource': {'key': 'resource', 'type': 'str'},
6575        'operation': {'key': 'operation', 'type': 'str'},
6576        'description': {'key': 'description', 'type': 'str'},
6577    }
6578
6579    def __init__(
6580        self,
6581        *,
6582        provider: Optional[str] = None,
6583        resource: Optional[str] = None,
6584        operation: Optional[str] = None,
6585        description: Optional[str] = None,
6586        **kwargs
6587    ):
6588        super(OperationDisplay, self).__init__(**kwargs)
6589        self.provider = provider
6590        self.resource = resource
6591        self.operation = operation
6592        self.description = description
6593
6594
6595class OperationListResult(msrest.serialization.Model):
6596    """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.
6597
6598    :param value: List of Network operations supported by the Network resource provider.
6599    :type value: list[~azure.mgmt.network.v2018_01_01.models.Operation]
6600    :param next_link: URL to get the next set of operation list results if there are any.
6601    :type next_link: str
6602    """
6603
6604    _attribute_map = {
6605        'value': {'key': 'value', 'type': '[Operation]'},
6606        'next_link': {'key': 'nextLink', 'type': 'str'},
6607    }
6608
6609    def __init__(
6610        self,
6611        *,
6612        value: Optional[List["Operation"]] = None,
6613        next_link: Optional[str] = None,
6614        **kwargs
6615    ):
6616        super(OperationListResult, self).__init__(**kwargs)
6617        self.value = value
6618        self.next_link = next_link
6619
6620
6621class OperationPropertiesFormatServiceSpecification(msrest.serialization.Model):
6622    """Specification of the service.
6623
6624    :param metric_specifications: Operation service specification.
6625    :type metric_specifications: list[~azure.mgmt.network.v2018_01_01.models.MetricSpecification]
6626    :param log_specifications: Operation log specification.
6627    :type log_specifications: list[~azure.mgmt.network.v2018_01_01.models.LogSpecification]
6628    """
6629
6630    _attribute_map = {
6631        'metric_specifications': {'key': 'metricSpecifications', 'type': '[MetricSpecification]'},
6632        'log_specifications': {'key': 'logSpecifications', 'type': '[LogSpecification]'},
6633    }
6634
6635    def __init__(
6636        self,
6637        *,
6638        metric_specifications: Optional[List["MetricSpecification"]] = None,
6639        log_specifications: Optional[List["LogSpecification"]] = None,
6640        **kwargs
6641    ):
6642        super(OperationPropertiesFormatServiceSpecification, self).__init__(**kwargs)
6643        self.metric_specifications = metric_specifications
6644        self.log_specifications = log_specifications
6645
6646
6647class OutboundNatRule(SubResource):
6648    """Outbound NAT pool of the load balancer.
6649
6650    :param id: Resource ID.
6651    :type id: str
6652    :param name: The name of the resource that is unique within a resource group. This name can be
6653     used to access the resource.
6654    :type name: str
6655    :param etag: A unique read-only string that changes whenever the resource is updated.
6656    :type etag: str
6657    :param allocated_outbound_ports: The number of outbound ports to be used for NAT.
6658    :type allocated_outbound_ports: int
6659    :param frontend_ip_configurations: The Frontend IP addresses of the load balancer.
6660    :type frontend_ip_configurations: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
6661    :param backend_address_pool: A reference to a pool of DIPs. Outbound traffic is randomly load
6662     balanced across IPs in the backend IPs.
6663    :type backend_address_pool: ~azure.mgmt.network.v2018_01_01.models.SubResource
6664    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
6665     values are: 'Updating', 'Deleting', and 'Failed'.
6666    :type provisioning_state: str
6667    """
6668
6669    _attribute_map = {
6670        'id': {'key': 'id', 'type': 'str'},
6671        'name': {'key': 'name', 'type': 'str'},
6672        'etag': {'key': 'etag', 'type': 'str'},
6673        'allocated_outbound_ports': {'key': 'properties.allocatedOutboundPorts', 'type': 'int'},
6674        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[SubResource]'},
6675        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
6676        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6677    }
6678
6679    def __init__(
6680        self,
6681        *,
6682        id: Optional[str] = None,
6683        name: Optional[str] = None,
6684        etag: Optional[str] = None,
6685        allocated_outbound_ports: Optional[int] = None,
6686        frontend_ip_configurations: Optional[List["SubResource"]] = None,
6687        backend_address_pool: Optional["SubResource"] = None,
6688        provisioning_state: Optional[str] = None,
6689        **kwargs
6690    ):
6691        super(OutboundNatRule, self).__init__(id=id, **kwargs)
6692        self.name = name
6693        self.etag = etag
6694        self.allocated_outbound_ports = allocated_outbound_ports
6695        self.frontend_ip_configurations = frontend_ip_configurations
6696        self.backend_address_pool = backend_address_pool
6697        self.provisioning_state = provisioning_state
6698
6699
6700class PacketCapture(msrest.serialization.Model):
6701    """Parameters that define the create packet capture operation.
6702
6703    Variables are only populated by the server, and will be ignored when sending a request.
6704
6705    All required parameters must be populated in order to send to Azure.
6706
6707    :ivar name: Name of the packet capture.
6708    :vartype name: str
6709    :ivar id: ID of the packet capture.
6710    :vartype id: str
6711    :ivar type: Packet capture type.
6712    :vartype type: str
6713    :param target: Required. The ID of the targeted resource, only VM is currently supported.
6714    :type target: str
6715    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
6716     are truncated.
6717    :type bytes_to_capture_per_packet: int
6718    :param total_bytes_per_session: Maximum size of the capture output.
6719    :type total_bytes_per_session: int
6720    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
6721    :type time_limit_in_seconds: int
6722    :param storage_location: Required. Describes the storage location for a packet capture session.
6723    :type storage_location: ~azure.mgmt.network.v2018_01_01.models.PacketCaptureStorageLocation
6724    :param filters:
6725    :type filters: list[~azure.mgmt.network.v2018_01_01.models.PacketCaptureFilter]
6726    """
6727
6728    _validation = {
6729        'name': {'readonly': True},
6730        'id': {'readonly': True},
6731        'type': {'readonly': True},
6732        'target': {'required': True},
6733        'storage_location': {'required': True},
6734    }
6735
6736    _attribute_map = {
6737        'name': {'key': 'name', 'type': 'str'},
6738        'id': {'key': 'id', 'type': 'str'},
6739        'type': {'key': 'type', 'type': 'str'},
6740        'target': {'key': 'properties.target', 'type': 'str'},
6741        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
6742        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
6743        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
6744        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
6745        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
6746    }
6747
6748    def __init__(
6749        self,
6750        *,
6751        target: str,
6752        storage_location: "PacketCaptureStorageLocation",
6753        bytes_to_capture_per_packet: Optional[int] = 0,
6754        total_bytes_per_session: Optional[int] = 1073741824,
6755        time_limit_in_seconds: Optional[int] = 18000,
6756        filters: Optional[List["PacketCaptureFilter"]] = None,
6757        **kwargs
6758    ):
6759        super(PacketCapture, self).__init__(**kwargs)
6760        self.name = None
6761        self.id = None
6762        self.type = None
6763        self.target = target
6764        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
6765        self.total_bytes_per_session = total_bytes_per_session
6766        self.time_limit_in_seconds = time_limit_in_seconds
6767        self.storage_location = storage_location
6768        self.filters = filters
6769
6770
6771class PacketCaptureFilter(msrest.serialization.Model):
6772    """Filter that is applied to packet capture request. Multiple filters can be applied.
6773
6774    :param protocol: Protocol to be filtered on. Possible values include: "TCP", "UDP", "Any".
6775     Default value: "Any".
6776    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.PcProtocol
6777    :param local_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
6778     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple entries.
6779     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
6780     supported. Default = null.
6781    :type local_ip_address: str
6782    :param remote_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
6783     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple entries.
6784     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
6785     supported. Default = null.
6786    :type remote_ip_address: str
6787    :param local_port: Local port to be filtered on. Notation: "80" for single port entry."80-85"
6788     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
6789     ranges with multiple entries not currently supported. Default = null.
6790    :type local_port: str
6791    :param remote_port: Remote port to be filtered on. Notation: "80" for single port entry."80-85"
6792     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
6793     ranges with multiple entries not currently supported. Default = null.
6794    :type remote_port: str
6795    """
6796
6797    _attribute_map = {
6798        'protocol': {'key': 'protocol', 'type': 'str'},
6799        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
6800        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
6801        'local_port': {'key': 'localPort', 'type': 'str'},
6802        'remote_port': {'key': 'remotePort', 'type': 'str'},
6803    }
6804
6805    def __init__(
6806        self,
6807        *,
6808        protocol: Optional[Union[str, "PcProtocol"]] = "Any",
6809        local_ip_address: Optional[str] = None,
6810        remote_ip_address: Optional[str] = None,
6811        local_port: Optional[str] = None,
6812        remote_port: Optional[str] = None,
6813        **kwargs
6814    ):
6815        super(PacketCaptureFilter, self).__init__(**kwargs)
6816        self.protocol = protocol
6817        self.local_ip_address = local_ip_address
6818        self.remote_ip_address = remote_ip_address
6819        self.local_port = local_port
6820        self.remote_port = remote_port
6821
6822
6823class PacketCaptureListResult(msrest.serialization.Model):
6824    """List of packet capture sessions.
6825
6826    :param value: Information about packet capture sessions.
6827    :type value: list[~azure.mgmt.network.v2018_01_01.models.PacketCaptureResult]
6828    """
6829
6830    _attribute_map = {
6831        'value': {'key': 'value', 'type': '[PacketCaptureResult]'},
6832    }
6833
6834    def __init__(
6835        self,
6836        *,
6837        value: Optional[List["PacketCaptureResult"]] = None,
6838        **kwargs
6839    ):
6840        super(PacketCaptureListResult, self).__init__(**kwargs)
6841        self.value = value
6842
6843
6844class PacketCaptureParameters(msrest.serialization.Model):
6845    """Parameters that define the create packet capture operation.
6846
6847    All required parameters must be populated in order to send to Azure.
6848
6849    :param target: Required. The ID of the targeted resource, only VM is currently supported.
6850    :type target: str
6851    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
6852     are truncated.
6853    :type bytes_to_capture_per_packet: int
6854    :param total_bytes_per_session: Maximum size of the capture output.
6855    :type total_bytes_per_session: int
6856    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
6857    :type time_limit_in_seconds: int
6858    :param storage_location: Required. Describes the storage location for a packet capture session.
6859    :type storage_location: ~azure.mgmt.network.v2018_01_01.models.PacketCaptureStorageLocation
6860    :param filters:
6861    :type filters: list[~azure.mgmt.network.v2018_01_01.models.PacketCaptureFilter]
6862    """
6863
6864    _validation = {
6865        'target': {'required': True},
6866        'storage_location': {'required': True},
6867    }
6868
6869    _attribute_map = {
6870        'target': {'key': 'target', 'type': 'str'},
6871        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
6872        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
6873        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
6874        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
6875        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
6876    }
6877
6878    def __init__(
6879        self,
6880        *,
6881        target: str,
6882        storage_location: "PacketCaptureStorageLocation",
6883        bytes_to_capture_per_packet: Optional[int] = 0,
6884        total_bytes_per_session: Optional[int] = 1073741824,
6885        time_limit_in_seconds: Optional[int] = 18000,
6886        filters: Optional[List["PacketCaptureFilter"]] = None,
6887        **kwargs
6888    ):
6889        super(PacketCaptureParameters, self).__init__(**kwargs)
6890        self.target = target
6891        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
6892        self.total_bytes_per_session = total_bytes_per_session
6893        self.time_limit_in_seconds = time_limit_in_seconds
6894        self.storage_location = storage_location
6895        self.filters = filters
6896
6897
6898class PacketCaptureQueryStatusResult(msrest.serialization.Model):
6899    """Status of packet capture session.
6900
6901    :param name: The name of the packet capture resource.
6902    :type name: str
6903    :param id: The ID of the packet capture resource.
6904    :type id: str
6905    :param capture_start_time: The start time of the packet capture session.
6906    :type capture_start_time: ~datetime.datetime
6907    :param packet_capture_status: The status of the packet capture session. Possible values
6908     include: "NotStarted", "Running", "Stopped", "Error", "Unknown".
6909    :type packet_capture_status: str or ~azure.mgmt.network.v2018_01_01.models.PcStatus
6910    :param stop_reason: The reason the current packet capture session was stopped.
6911    :type stop_reason: str
6912    :param packet_capture_error: List of errors of packet capture session.
6913    :type packet_capture_error: list[str or ~azure.mgmt.network.v2018_01_01.models.PcError]
6914    """
6915
6916    _attribute_map = {
6917        'name': {'key': 'name', 'type': 'str'},
6918        'id': {'key': 'id', 'type': 'str'},
6919        'capture_start_time': {'key': 'captureStartTime', 'type': 'iso-8601'},
6920        'packet_capture_status': {'key': 'packetCaptureStatus', 'type': 'str'},
6921        'stop_reason': {'key': 'stopReason', 'type': 'str'},
6922        'packet_capture_error': {'key': 'packetCaptureError', 'type': '[str]'},
6923    }
6924
6925    def __init__(
6926        self,
6927        *,
6928        name: Optional[str] = None,
6929        id: Optional[str] = None,
6930        capture_start_time: Optional[datetime.datetime] = None,
6931        packet_capture_status: Optional[Union[str, "PcStatus"]] = None,
6932        stop_reason: Optional[str] = None,
6933        packet_capture_error: Optional[List[Union[str, "PcError"]]] = None,
6934        **kwargs
6935    ):
6936        super(PacketCaptureQueryStatusResult, self).__init__(**kwargs)
6937        self.name = name
6938        self.id = id
6939        self.capture_start_time = capture_start_time
6940        self.packet_capture_status = packet_capture_status
6941        self.stop_reason = stop_reason
6942        self.packet_capture_error = packet_capture_error
6943
6944
6945class PacketCaptureResult(msrest.serialization.Model):
6946    """Information about packet capture session.
6947
6948    Variables are only populated by the server, and will be ignored when sending a request.
6949
6950    :ivar name: Name of the packet capture.
6951    :vartype name: str
6952    :ivar id: ID of the packet capture.
6953    :vartype id: str
6954    :ivar type: Packet capture type.
6955    :vartype type: str
6956    :param etag:
6957    :type etag: str
6958    :param target: The ID of the targeted resource, only VM is currently supported.
6959    :type target: str
6960    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
6961     are truncated.
6962    :type bytes_to_capture_per_packet: int
6963    :param total_bytes_per_session: Maximum size of the capture output.
6964    :type total_bytes_per_session: int
6965    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
6966    :type time_limit_in_seconds: int
6967    :param storage_location: Describes the storage location for a packet capture session.
6968    :type storage_location: ~azure.mgmt.network.v2018_01_01.models.PacketCaptureStorageLocation
6969    :param filters:
6970    :type filters: list[~azure.mgmt.network.v2018_01_01.models.PacketCaptureFilter]
6971    :param provisioning_state: The provisioning state of the packet capture session. Possible
6972     values include: "Succeeded", "Updating", "Deleting", "Failed".
6973    :type provisioning_state: str or ~azure.mgmt.network.v2018_01_01.models.ProvisioningState
6974    """
6975
6976    _validation = {
6977        'name': {'readonly': True},
6978        'id': {'readonly': True},
6979        'type': {'readonly': True},
6980    }
6981
6982    _attribute_map = {
6983        'name': {'key': 'name', 'type': 'str'},
6984        'id': {'key': 'id', 'type': 'str'},
6985        'type': {'key': 'type', 'type': 'str'},
6986        'etag': {'key': 'etag', 'type': 'str'},
6987        'target': {'key': 'properties.target', 'type': 'str'},
6988        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
6989        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
6990        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
6991        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
6992        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
6993        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6994    }
6995
6996    def __init__(
6997        self,
6998        *,
6999        etag: Optional[str] = "A unique read-only string that changes whenever the resource is updated.",
7000        target: Optional[str] = None,
7001        bytes_to_capture_per_packet: Optional[int] = 0,
7002        total_bytes_per_session: Optional[int] = 1073741824,
7003        time_limit_in_seconds: Optional[int] = 18000,
7004        storage_location: Optional["PacketCaptureStorageLocation"] = None,
7005        filters: Optional[List["PacketCaptureFilter"]] = None,
7006        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
7007        **kwargs
7008    ):
7009        super(PacketCaptureResult, self).__init__(**kwargs)
7010        self.name = None
7011        self.id = None
7012        self.type = None
7013        self.etag = etag
7014        self.target = target
7015        self.bytes_to_capture_per_packet = bytes_to_capture_per_packet
7016        self.total_bytes_per_session = total_bytes_per_session
7017        self.time_limit_in_seconds = time_limit_in_seconds
7018        self.storage_location = storage_location
7019        self.filters = filters
7020        self.provisioning_state = provisioning_state
7021
7022
7023class PacketCaptureResultProperties(PacketCaptureParameters):
7024    """Describes the properties of a packet capture session.
7025
7026    All required parameters must be populated in order to send to Azure.
7027
7028    :param target: Required. The ID of the targeted resource, only VM is currently supported.
7029    :type target: str
7030    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
7031     are truncated.
7032    :type bytes_to_capture_per_packet: int
7033    :param total_bytes_per_session: Maximum size of the capture output.
7034    :type total_bytes_per_session: int
7035    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
7036    :type time_limit_in_seconds: int
7037    :param storage_location: Required. Describes the storage location for a packet capture session.
7038    :type storage_location: ~azure.mgmt.network.v2018_01_01.models.PacketCaptureStorageLocation
7039    :param filters:
7040    :type filters: list[~azure.mgmt.network.v2018_01_01.models.PacketCaptureFilter]
7041    :param provisioning_state: The provisioning state of the packet capture session. Possible
7042     values include: "Succeeded", "Updating", "Deleting", "Failed".
7043    :type provisioning_state: str or ~azure.mgmt.network.v2018_01_01.models.ProvisioningState
7044    """
7045
7046    _validation = {
7047        'target': {'required': True},
7048        'storage_location': {'required': True},
7049    }
7050
7051    _attribute_map = {
7052        'target': {'key': 'target', 'type': 'str'},
7053        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
7054        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
7055        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
7056        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
7057        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
7058        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
7059    }
7060
7061    def __init__(
7062        self,
7063        *,
7064        target: str,
7065        storage_location: "PacketCaptureStorageLocation",
7066        bytes_to_capture_per_packet: Optional[int] = 0,
7067        total_bytes_per_session: Optional[int] = 1073741824,
7068        time_limit_in_seconds: Optional[int] = 18000,
7069        filters: Optional[List["PacketCaptureFilter"]] = None,
7070        provisioning_state: Optional[Union[str, "ProvisioningState"]] = None,
7071        **kwargs
7072    ):
7073        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)
7074        self.provisioning_state = provisioning_state
7075
7076
7077class PacketCaptureStorageLocation(msrest.serialization.Model):
7078    """Describes the storage location for a packet capture session.
7079
7080    :param storage_id: The ID of the storage account to save the packet capture session. Required
7081     if no local file path is provided.
7082    :type storage_id: str
7083    :param storage_path: The URI of the storage path to save the packet capture. Must be a
7084     well-formed URI describing the location to save the packet capture.
7085    :type storage_path: str
7086    :param file_path: A valid local path on the targeting VM. Must include the name of the capture
7087     file (*.cap). For linux virtual machine it must start with /var/captures. Required if no
7088     storage ID is provided, otherwise optional.
7089    :type file_path: str
7090    """
7091
7092    _attribute_map = {
7093        'storage_id': {'key': 'storageId', 'type': 'str'},
7094        'storage_path': {'key': 'storagePath', 'type': 'str'},
7095        'file_path': {'key': 'filePath', 'type': 'str'},
7096    }
7097
7098    def __init__(
7099        self,
7100        *,
7101        storage_id: Optional[str] = None,
7102        storage_path: Optional[str] = None,
7103        file_path: Optional[str] = None,
7104        **kwargs
7105    ):
7106        super(PacketCaptureStorageLocation, self).__init__(**kwargs)
7107        self.storage_id = storage_id
7108        self.storage_path = storage_path
7109        self.file_path = file_path
7110
7111
7112class PatchRouteFilter(SubResource):
7113    """Route Filter Resource.
7114
7115    Variables are only populated by the server, and will be ignored when sending a request.
7116
7117    :param id: Resource ID.
7118    :type id: str
7119    :ivar name: The name of the resource that is unique within a resource group. This name can be
7120     used to access the resource.
7121    :vartype name: str
7122    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7123    :vartype etag: str
7124    :ivar type: Resource type.
7125    :vartype type: str
7126    :param tags: A set of tags. Resource tags.
7127    :type tags: dict[str, str]
7128    :param rules: Collection of RouteFilterRules contained within a route filter.
7129    :type rules: list[~azure.mgmt.network.v2018_01_01.models.RouteFilterRule]
7130    :param peerings: A collection of references to express route circuit peerings.
7131    :type peerings: list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitPeering]
7132    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
7133     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
7134    :vartype provisioning_state: str
7135    """
7136
7137    _validation = {
7138        'name': {'readonly': True},
7139        'etag': {'readonly': True},
7140        'type': {'readonly': True},
7141        'provisioning_state': {'readonly': True},
7142    }
7143
7144    _attribute_map = {
7145        'id': {'key': 'id', 'type': 'str'},
7146        'name': {'key': 'name', 'type': 'str'},
7147        'etag': {'key': 'etag', 'type': 'str'},
7148        'type': {'key': 'type', 'type': 'str'},
7149        'tags': {'key': 'tags', 'type': '{str}'},
7150        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
7151        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
7152        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7153    }
7154
7155    def __init__(
7156        self,
7157        *,
7158        id: Optional[str] = None,
7159        tags: Optional[Dict[str, str]] = None,
7160        rules: Optional[List["RouteFilterRule"]] = None,
7161        peerings: Optional[List["ExpressRouteCircuitPeering"]] = None,
7162        **kwargs
7163    ):
7164        super(PatchRouteFilter, self).__init__(id=id, **kwargs)
7165        self.name = None
7166        self.etag = None
7167        self.type = None
7168        self.tags = tags
7169        self.rules = rules
7170        self.peerings = peerings
7171        self.provisioning_state = None
7172
7173
7174class PatchRouteFilterRule(SubResource):
7175    """Route Filter Rule Resource.
7176
7177    Variables are only populated by the server, and will be ignored when sending a request.
7178
7179    :param id: Resource ID.
7180    :type id: str
7181    :ivar name: The name of the resource that is unique within a resource group. This name can be
7182     used to access the resource.
7183    :vartype name: str
7184    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7185    :vartype etag: str
7186    :param access: The access type of the rule. Valid values are: 'Allow', 'Deny'. Possible values
7187     include: "Allow", "Deny".
7188    :type access: str or ~azure.mgmt.network.v2018_01_01.models.Access
7189    :param route_filter_rule_type: The rule type of the rule. Valid value is: 'Community'. Possible
7190     values include: "Community".
7191    :type route_filter_rule_type: str or ~azure.mgmt.network.v2018_01_01.models.RouteFilterRuleType
7192    :param communities: The collection for bgp community values to filter on. e.g.
7193     ['12076:5010','12076:5020'].
7194    :type communities: list[str]
7195    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
7196     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
7197    :vartype provisioning_state: str
7198    """
7199
7200    _validation = {
7201        'name': {'readonly': True},
7202        'etag': {'readonly': True},
7203        'provisioning_state': {'readonly': True},
7204    }
7205
7206    _attribute_map = {
7207        'id': {'key': 'id', 'type': 'str'},
7208        'name': {'key': 'name', 'type': 'str'},
7209        'etag': {'key': 'etag', 'type': 'str'},
7210        'access': {'key': 'properties.access', 'type': 'str'},
7211        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
7212        'communities': {'key': 'properties.communities', 'type': '[str]'},
7213        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7214    }
7215
7216    def __init__(
7217        self,
7218        *,
7219        id: Optional[str] = None,
7220        access: Optional[Union[str, "Access"]] = None,
7221        route_filter_rule_type: Optional[Union[str, "RouteFilterRuleType"]] = None,
7222        communities: Optional[List[str]] = None,
7223        **kwargs
7224    ):
7225        super(PatchRouteFilterRule, self).__init__(id=id, **kwargs)
7226        self.name = None
7227        self.etag = None
7228        self.access = access
7229        self.route_filter_rule_type = route_filter_rule_type
7230        self.communities = communities
7231        self.provisioning_state = None
7232
7233
7234class Probe(SubResource):
7235    """A load balancer probe.
7236
7237    Variables are only populated by the server, and will be ignored when sending a request.
7238
7239    :param id: Resource ID.
7240    :type id: str
7241    :param name: Gets name of the resource that is unique within a resource group. This name can be
7242     used to access the resource.
7243    :type name: str
7244    :param etag: A unique read-only string that changes whenever the resource is updated.
7245    :type etag: str
7246    :ivar load_balancing_rules: The load balancer rules that use this probe.
7247    :vartype load_balancing_rules: list[~azure.mgmt.network.v2018_01_01.models.SubResource]
7248    :param protocol: The protocol of the end point. Possible values are: 'Http' or 'Tcp'. If 'Tcp'
7249     is specified, a received ACK is required for the probe to be successful. If 'Http' is
7250     specified, a 200 OK response from the specifies URI is required for the probe to be successful.
7251     Possible values include: "Http", "Tcp".
7252    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.ProbeProtocol
7253    :param port: The port for communicating the probe. Possible values range from 1 to 65535,
7254     inclusive.
7255    :type port: int
7256    :param interval_in_seconds: The interval, in seconds, for how frequently to probe the endpoint
7257     for health status. Typically, the interval is slightly less than half the allocated timeout
7258     period (in seconds) which allows two full probes before taking the instance out of rotation.
7259     The default value is 15, the minimum value is 5.
7260    :type interval_in_seconds: int
7261    :param number_of_probes: The number of probes where if no response, will result in stopping
7262     further traffic from being delivered to the endpoint. This values allows endpoints to be taken
7263     out of rotation faster or slower than the typical times used in Azure.
7264    :type number_of_probes: int
7265    :param request_path: The URI used for requesting health status from the VM. Path is required if
7266     a protocol is set to http. Otherwise, it is not allowed. There is no default value.
7267    :type request_path: str
7268    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
7269     values are: 'Updating', 'Deleting', and 'Failed'.
7270    :type provisioning_state: str
7271    """
7272
7273    _validation = {
7274        'load_balancing_rules': {'readonly': True},
7275    }
7276
7277    _attribute_map = {
7278        'id': {'key': 'id', 'type': 'str'},
7279        'name': {'key': 'name', 'type': 'str'},
7280        'etag': {'key': 'etag', 'type': 'str'},
7281        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
7282        'protocol': {'key': 'properties.protocol', 'type': 'str'},
7283        'port': {'key': 'properties.port', 'type': 'int'},
7284        'interval_in_seconds': {'key': 'properties.intervalInSeconds', 'type': 'int'},
7285        'number_of_probes': {'key': 'properties.numberOfProbes', 'type': 'int'},
7286        'request_path': {'key': 'properties.requestPath', 'type': 'str'},
7287        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7288    }
7289
7290    def __init__(
7291        self,
7292        *,
7293        id: Optional[str] = None,
7294        name: Optional[str] = None,
7295        etag: Optional[str] = None,
7296        protocol: Optional[Union[str, "ProbeProtocol"]] = None,
7297        port: Optional[int] = None,
7298        interval_in_seconds: Optional[int] = None,
7299        number_of_probes: Optional[int] = None,
7300        request_path: Optional[str] = None,
7301        provisioning_state: Optional[str] = None,
7302        **kwargs
7303    ):
7304        super(Probe, self).__init__(id=id, **kwargs)
7305        self.name = name
7306        self.etag = etag
7307        self.load_balancing_rules = None
7308        self.protocol = protocol
7309        self.port = port
7310        self.interval_in_seconds = interval_in_seconds
7311        self.number_of_probes = number_of_probes
7312        self.request_path = request_path
7313        self.provisioning_state = provisioning_state
7314
7315
7316class PublicIPAddress(Resource):
7317    """Public IP address resource.
7318
7319    Variables are only populated by the server, and will be ignored when sending a request.
7320
7321    :param id: Resource ID.
7322    :type id: str
7323    :ivar name: Resource name.
7324    :vartype name: str
7325    :ivar type: Resource type.
7326    :vartype type: str
7327    :param location: Resource location.
7328    :type location: str
7329    :param tags: A set of tags. Resource tags.
7330    :type tags: dict[str, str]
7331    :param sku: The public IP address SKU.
7332    :type sku: ~azure.mgmt.network.v2018_01_01.models.PublicIPAddressSku
7333    :param etag: A unique read-only string that changes whenever the resource is updated.
7334    :type etag: str
7335    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
7336     come from.
7337    :type zones: list[str]
7338    :param public_ip_allocation_method: The public IP allocation method. Possible values are:
7339     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
7340    :type public_ip_allocation_method: str or
7341     ~azure.mgmt.network.v2018_01_01.models.IPAllocationMethod
7342    :param public_ip_address_version: The public IP address version. Possible values are: 'IPv4'
7343     and 'IPv6'. Possible values include: "IPv4", "IPv6".
7344    :type public_ip_address_version: str or ~azure.mgmt.network.v2018_01_01.models.IPVersion
7345    :ivar ip_configuration: The IP configuration associated with the public IP address.
7346    :vartype ip_configuration: ~azure.mgmt.network.v2018_01_01.models.IPConfiguration
7347    :param dns_settings: The FQDN of the DNS record associated with the public IP address.
7348    :type dns_settings: ~azure.mgmt.network.v2018_01_01.models.PublicIPAddressDnsSettings
7349    :param ip_tags: The list of tags associated with the public IP address.
7350    :type ip_tags: list[~azure.mgmt.network.v2018_01_01.models.IpTag]
7351    :param ip_address: The IP address associated with the public IP address resource.
7352    :type ip_address: str
7353    :param idle_timeout_in_minutes: The idle timeout of the public IP address.
7354    :type idle_timeout_in_minutes: int
7355    :param resource_guid: The resource GUID property of the public IP resource.
7356    :type resource_guid: str
7357    :param provisioning_state: The provisioning state of the PublicIP resource. Possible values
7358     are: 'Updating', 'Deleting', and 'Failed'.
7359    :type provisioning_state: str
7360    """
7361
7362    _validation = {
7363        'name': {'readonly': True},
7364        'type': {'readonly': True},
7365        'ip_configuration': {'readonly': True},
7366    }
7367
7368    _attribute_map = {
7369        'id': {'key': 'id', 'type': 'str'},
7370        'name': {'key': 'name', 'type': 'str'},
7371        'type': {'key': 'type', 'type': 'str'},
7372        'location': {'key': 'location', 'type': 'str'},
7373        'tags': {'key': 'tags', 'type': '{str}'},
7374        'sku': {'key': 'sku', 'type': 'PublicIPAddressSku'},
7375        'etag': {'key': 'etag', 'type': 'str'},
7376        'zones': {'key': 'zones', 'type': '[str]'},
7377        'public_ip_allocation_method': {'key': 'properties.publicIPAllocationMethod', 'type': 'str'},
7378        'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'},
7379        'ip_configuration': {'key': 'properties.ipConfiguration', 'type': 'IPConfiguration'},
7380        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'PublicIPAddressDnsSettings'},
7381        'ip_tags': {'key': 'properties.ipTags', 'type': '[IpTag]'},
7382        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
7383        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
7384        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
7385        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7386    }
7387
7388    def __init__(
7389        self,
7390        *,
7391        id: Optional[str] = None,
7392        location: Optional[str] = None,
7393        tags: Optional[Dict[str, str]] = None,
7394        sku: Optional["PublicIPAddressSku"] = None,
7395        etag: Optional[str] = None,
7396        zones: Optional[List[str]] = None,
7397        public_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
7398        public_ip_address_version: Optional[Union[str, "IPVersion"]] = None,
7399        dns_settings: Optional["PublicIPAddressDnsSettings"] = None,
7400        ip_tags: Optional[List["IpTag"]] = None,
7401        ip_address: Optional[str] = None,
7402        idle_timeout_in_minutes: Optional[int] = None,
7403        resource_guid: Optional[str] = None,
7404        provisioning_state: Optional[str] = None,
7405        **kwargs
7406    ):
7407        super(PublicIPAddress, self).__init__(id=id, location=location, tags=tags, **kwargs)
7408        self.sku = sku
7409        self.etag = etag
7410        self.zones = zones
7411        self.public_ip_allocation_method = public_ip_allocation_method
7412        self.public_ip_address_version = public_ip_address_version
7413        self.ip_configuration = None
7414        self.dns_settings = dns_settings
7415        self.ip_tags = ip_tags
7416        self.ip_address = ip_address
7417        self.idle_timeout_in_minutes = idle_timeout_in_minutes
7418        self.resource_guid = resource_guid
7419        self.provisioning_state = provisioning_state
7420
7421
7422class PublicIPAddressDnsSettings(msrest.serialization.Model):
7423    """Contains FQDN of the DNS record associated with the public IP address.
7424
7425    :param domain_name_label: Gets or sets the Domain name label.The concatenation of the domain
7426     name label and the regionalized DNS zone make up the fully qualified domain name associated
7427     with the public IP address. If a domain name label is specified, an A DNS record is created for
7428     the public IP in the Microsoft Azure DNS system.
7429    :type domain_name_label: str
7430    :param fqdn: Gets the FQDN, Fully qualified domain name of the A DNS record associated with the
7431     public IP. This is the concatenation of the domainNameLabel and the regionalized DNS zone.
7432    :type fqdn: str
7433    :param reverse_fqdn: Gets or Sets the Reverse FQDN. A user-visible, fully qualified domain name
7434     that resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record
7435     is created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN.
7436    :type reverse_fqdn: str
7437    """
7438
7439    _attribute_map = {
7440        'domain_name_label': {'key': 'domainNameLabel', 'type': 'str'},
7441        'fqdn': {'key': 'fqdn', 'type': 'str'},
7442        'reverse_fqdn': {'key': 'reverseFqdn', 'type': 'str'},
7443    }
7444
7445    def __init__(
7446        self,
7447        *,
7448        domain_name_label: Optional[str] = None,
7449        fqdn: Optional[str] = None,
7450        reverse_fqdn: Optional[str] = None,
7451        **kwargs
7452    ):
7453        super(PublicIPAddressDnsSettings, self).__init__(**kwargs)
7454        self.domain_name_label = domain_name_label
7455        self.fqdn = fqdn
7456        self.reverse_fqdn = reverse_fqdn
7457
7458
7459class PublicIPAddressListResult(msrest.serialization.Model):
7460    """Response for ListPublicIpAddresses API service call.
7461
7462    :param value: A list of public IP addresses that exists in a resource group.
7463    :type value: list[~azure.mgmt.network.v2018_01_01.models.PublicIPAddress]
7464    :param next_link: The URL to get the next set of results.
7465    :type next_link: str
7466    """
7467
7468    _attribute_map = {
7469        'value': {'key': 'value', 'type': '[PublicIPAddress]'},
7470        'next_link': {'key': 'nextLink', 'type': 'str'},
7471    }
7472
7473    def __init__(
7474        self,
7475        *,
7476        value: Optional[List["PublicIPAddress"]] = None,
7477        next_link: Optional[str] = None,
7478        **kwargs
7479    ):
7480        super(PublicIPAddressListResult, self).__init__(**kwargs)
7481        self.value = value
7482        self.next_link = next_link
7483
7484
7485class PublicIPAddressSku(msrest.serialization.Model):
7486    """SKU of a public IP address.
7487
7488    :param name: Name of a public IP address SKU. Possible values include: "Basic", "Standard".
7489    :type name: str or ~azure.mgmt.network.v2018_01_01.models.PublicIPAddressSkuName
7490    """
7491
7492    _attribute_map = {
7493        'name': {'key': 'name', 'type': 'str'},
7494    }
7495
7496    def __init__(
7497        self,
7498        *,
7499        name: Optional[Union[str, "PublicIPAddressSkuName"]] = None,
7500        **kwargs
7501    ):
7502        super(PublicIPAddressSku, self).__init__(**kwargs)
7503        self.name = name
7504
7505
7506class QueryTroubleshootingParameters(msrest.serialization.Model):
7507    """Parameters that define the resource to query the troubleshooting result.
7508
7509    All required parameters must be populated in order to send to Azure.
7510
7511    :param target_resource_id: Required. The target resource ID to query the troubleshooting
7512     result.
7513    :type target_resource_id: str
7514    """
7515
7516    _validation = {
7517        'target_resource_id': {'required': True},
7518    }
7519
7520    _attribute_map = {
7521        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
7522    }
7523
7524    def __init__(
7525        self,
7526        *,
7527        target_resource_id: str,
7528        **kwargs
7529    ):
7530        super(QueryTroubleshootingParameters, self).__init__(**kwargs)
7531        self.target_resource_id = target_resource_id
7532
7533
7534class ResourceNavigationLink(SubResource):
7535    """ResourceNavigationLink resource.
7536
7537    Variables are only populated by the server, and will be ignored when sending a request.
7538
7539    :param id: Resource ID.
7540    :type id: str
7541    :param name: Name of the resource that is unique within a resource group. This name can be used
7542     to access the resource.
7543    :type name: str
7544    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7545    :vartype etag: str
7546    :param linked_resource_type: Resource type of the linked resource.
7547    :type linked_resource_type: str
7548    :param link: Link to the external resource.
7549    :type link: str
7550    :ivar provisioning_state: Provisioning state of the ResourceNavigationLink resource.
7551    :vartype provisioning_state: str
7552    """
7553
7554    _validation = {
7555        'etag': {'readonly': True},
7556        'provisioning_state': {'readonly': True},
7557    }
7558
7559    _attribute_map = {
7560        'id': {'key': 'id', 'type': 'str'},
7561        'name': {'key': 'name', 'type': 'str'},
7562        'etag': {'key': 'etag', 'type': 'str'},
7563        'linked_resource_type': {'key': 'properties.linkedResourceType', 'type': 'str'},
7564        'link': {'key': 'properties.link', 'type': 'str'},
7565        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7566    }
7567
7568    def __init__(
7569        self,
7570        *,
7571        id: Optional[str] = None,
7572        name: Optional[str] = None,
7573        linked_resource_type: Optional[str] = None,
7574        link: Optional[str] = None,
7575        **kwargs
7576    ):
7577        super(ResourceNavigationLink, self).__init__(id=id, **kwargs)
7578        self.name = name
7579        self.etag = None
7580        self.linked_resource_type = linked_resource_type
7581        self.link = link
7582        self.provisioning_state = None
7583
7584
7585class RetentionPolicyParameters(msrest.serialization.Model):
7586    """Parameters that define the retention policy for flow log.
7587
7588    :param days: Number of days to retain flow log records.
7589    :type days: int
7590    :param enabled: Flag to enable/disable retention.
7591    :type enabled: bool
7592    """
7593
7594    _attribute_map = {
7595        'days': {'key': 'days', 'type': 'int'},
7596        'enabled': {'key': 'enabled', 'type': 'bool'},
7597    }
7598
7599    def __init__(
7600        self,
7601        *,
7602        days: Optional[int] = 0,
7603        enabled: Optional[bool] = False,
7604        **kwargs
7605    ):
7606        super(RetentionPolicyParameters, self).__init__(**kwargs)
7607        self.days = days
7608        self.enabled = enabled
7609
7610
7611class Route(SubResource):
7612    """Route resource.
7613
7614    :param id: Resource ID.
7615    :type id: str
7616    :param name: The name of the resource that is unique within a resource group. This name can be
7617     used to access the resource.
7618    :type name: str
7619    :param etag: A unique read-only string that changes whenever the resource is updated.
7620    :type etag: str
7621    :param address_prefix: The destination CIDR to which the route applies.
7622    :type address_prefix: str
7623    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values are:
7624     'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', and 'None'. Possible
7625     values include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
7626    :type next_hop_type: str or ~azure.mgmt.network.v2018_01_01.models.RouteNextHopType
7627    :param next_hop_ip_address: The IP address packets should be forwarded to. Next hop values are
7628     only allowed in routes where the next hop type is VirtualAppliance.
7629    :type next_hop_ip_address: str
7630    :param provisioning_state: The provisioning state of the resource. Possible values are:
7631     'Updating', 'Deleting', and 'Failed'.
7632    :type provisioning_state: str
7633    """
7634
7635    _attribute_map = {
7636        'id': {'key': 'id', 'type': 'str'},
7637        'name': {'key': 'name', 'type': 'str'},
7638        'etag': {'key': 'etag', 'type': 'str'},
7639        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
7640        'next_hop_type': {'key': 'properties.nextHopType', 'type': 'str'},
7641        'next_hop_ip_address': {'key': 'properties.nextHopIpAddress', 'type': 'str'},
7642        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7643    }
7644
7645    def __init__(
7646        self,
7647        *,
7648        id: Optional[str] = None,
7649        name: Optional[str] = None,
7650        etag: Optional[str] = None,
7651        address_prefix: Optional[str] = None,
7652        next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None,
7653        next_hop_ip_address: Optional[str] = None,
7654        provisioning_state: Optional[str] = None,
7655        **kwargs
7656    ):
7657        super(Route, self).__init__(id=id, **kwargs)
7658        self.name = name
7659        self.etag = etag
7660        self.address_prefix = address_prefix
7661        self.next_hop_type = next_hop_type
7662        self.next_hop_ip_address = next_hop_ip_address
7663        self.provisioning_state = provisioning_state
7664
7665
7666class RouteFilter(Resource):
7667    """Route Filter Resource.
7668
7669    Variables are only populated by the server, and will be ignored when sending a request.
7670
7671    :param id: Resource ID.
7672    :type id: str
7673    :ivar name: Resource name.
7674    :vartype name: str
7675    :ivar type: Resource type.
7676    :vartype type: str
7677    :param location: Resource location.
7678    :type location: str
7679    :param tags: A set of tags. Resource tags.
7680    :type tags: dict[str, str]
7681    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
7682    :vartype etag: str
7683    :param rules: Collection of RouteFilterRules contained within a route filter.
7684    :type rules: list[~azure.mgmt.network.v2018_01_01.models.RouteFilterRule]
7685    :param peerings: A collection of references to express route circuit peerings.
7686    :type peerings: list[~azure.mgmt.network.v2018_01_01.models.ExpressRouteCircuitPeering]
7687    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
7688     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
7689    :vartype provisioning_state: str
7690    """
7691
7692    _validation = {
7693        'name': {'readonly': True},
7694        'type': {'readonly': True},
7695        'etag': {'readonly': True},
7696        'provisioning_state': {'readonly': True},
7697    }
7698
7699    _attribute_map = {
7700        'id': {'key': 'id', 'type': 'str'},
7701        'name': {'key': 'name', 'type': 'str'},
7702        'type': {'key': 'type', 'type': 'str'},
7703        'location': {'key': 'location', 'type': 'str'},
7704        'tags': {'key': 'tags', 'type': '{str}'},
7705        'etag': {'key': 'etag', 'type': 'str'},
7706        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
7707        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
7708        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7709    }
7710
7711    def __init__(
7712        self,
7713        *,
7714        id: Optional[str] = None,
7715        location: Optional[str] = None,
7716        tags: Optional[Dict[str, str]] = None,
7717        rules: Optional[List["RouteFilterRule"]] = None,
7718        peerings: Optional[List["ExpressRouteCircuitPeering"]] = None,
7719        **kwargs
7720    ):
7721        super(RouteFilter, self).__init__(id=id, location=location, tags=tags, **kwargs)
7722        self.etag = None
7723        self.rules = rules
7724        self.peerings = peerings
7725        self.provisioning_state = None
7726
7727
7728class RouteFilterListResult(msrest.serialization.Model):
7729    """Response for the ListRouteFilters API service call.
7730
7731    :param value: Gets a list of route filters in a resource group.
7732    :type value: list[~azure.mgmt.network.v2018_01_01.models.RouteFilter]
7733    :param next_link: The URL to get the next set of results.
7734    :type next_link: str
7735    """
7736
7737    _attribute_map = {
7738        'value': {'key': 'value', 'type': '[RouteFilter]'},
7739        'next_link': {'key': 'nextLink', 'type': 'str'},
7740    }
7741
7742    def __init__(
7743        self,
7744        *,
7745        value: Optional[List["RouteFilter"]] = None,
7746        next_link: Optional[str] = None,
7747        **kwargs
7748    ):
7749        super(RouteFilterListResult, self).__init__(**kwargs)
7750        self.value = value
7751        self.next_link = next_link
7752
7753
7754class RouteFilterRule(SubResource):
7755    """Route Filter Rule Resource.
7756
7757    Variables are only populated by the server, and will be ignored when sending a request.
7758
7759    :param id: Resource ID.
7760    :type id: str
7761    :param name: The name of the resource that is unique within a resource group. This name can be
7762     used to access the resource.
7763    :type name: str
7764    :param location: Resource location.
7765    :type location: str
7766    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7767    :vartype etag: str
7768    :param access: The access type of the rule. Valid values are: 'Allow', 'Deny'. Possible values
7769     include: "Allow", "Deny".
7770    :type access: str or ~azure.mgmt.network.v2018_01_01.models.Access
7771    :param route_filter_rule_type: The rule type of the rule. Valid value is: 'Community'. Possible
7772     values include: "Community".
7773    :type route_filter_rule_type: str or ~azure.mgmt.network.v2018_01_01.models.RouteFilterRuleType
7774    :param communities: The collection for bgp community values to filter on. e.g.
7775     ['12076:5010','12076:5020'].
7776    :type communities: list[str]
7777    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
7778     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
7779    :vartype provisioning_state: str
7780    """
7781
7782    _validation = {
7783        'etag': {'readonly': True},
7784        'provisioning_state': {'readonly': True},
7785    }
7786
7787    _attribute_map = {
7788        'id': {'key': 'id', 'type': 'str'},
7789        'name': {'key': 'name', 'type': 'str'},
7790        'location': {'key': 'location', 'type': 'str'},
7791        'etag': {'key': 'etag', 'type': 'str'},
7792        'access': {'key': 'properties.access', 'type': 'str'},
7793        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
7794        'communities': {'key': 'properties.communities', 'type': '[str]'},
7795        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7796    }
7797
7798    def __init__(
7799        self,
7800        *,
7801        id: Optional[str] = None,
7802        name: Optional[str] = None,
7803        location: Optional[str] = None,
7804        access: Optional[Union[str, "Access"]] = None,
7805        route_filter_rule_type: Optional[Union[str, "RouteFilterRuleType"]] = None,
7806        communities: Optional[List[str]] = None,
7807        **kwargs
7808    ):
7809        super(RouteFilterRule, self).__init__(id=id, **kwargs)
7810        self.name = name
7811        self.location = location
7812        self.etag = None
7813        self.access = access
7814        self.route_filter_rule_type = route_filter_rule_type
7815        self.communities = communities
7816        self.provisioning_state = None
7817
7818
7819class RouteFilterRuleListResult(msrest.serialization.Model):
7820    """Response for the ListRouteFilterRules API service call.
7821
7822    :param value: Gets a list of RouteFilterRules in a resource group.
7823    :type value: list[~azure.mgmt.network.v2018_01_01.models.RouteFilterRule]
7824    :param next_link: The URL to get the next set of results.
7825    :type next_link: str
7826    """
7827
7828    _attribute_map = {
7829        'value': {'key': 'value', 'type': '[RouteFilterRule]'},
7830        'next_link': {'key': 'nextLink', 'type': 'str'},
7831    }
7832
7833    def __init__(
7834        self,
7835        *,
7836        value: Optional[List["RouteFilterRule"]] = None,
7837        next_link: Optional[str] = None,
7838        **kwargs
7839    ):
7840        super(RouteFilterRuleListResult, self).__init__(**kwargs)
7841        self.value = value
7842        self.next_link = next_link
7843
7844
7845class RouteListResult(msrest.serialization.Model):
7846    """Response for the ListRoute API service call.
7847
7848    :param value: Gets a list of routes in a resource group.
7849    :type value: list[~azure.mgmt.network.v2018_01_01.models.Route]
7850    :param next_link: The URL to get the next set of results.
7851    :type next_link: str
7852    """
7853
7854    _attribute_map = {
7855        'value': {'key': 'value', 'type': '[Route]'},
7856        'next_link': {'key': 'nextLink', 'type': 'str'},
7857    }
7858
7859    def __init__(
7860        self,
7861        *,
7862        value: Optional[List["Route"]] = None,
7863        next_link: Optional[str] = None,
7864        **kwargs
7865    ):
7866        super(RouteListResult, self).__init__(**kwargs)
7867        self.value = value
7868        self.next_link = next_link
7869
7870
7871class RouteTable(Resource):
7872    """Route table resource.
7873
7874    Variables are only populated by the server, and will be ignored when sending a request.
7875
7876    :param id: Resource ID.
7877    :type id: str
7878    :ivar name: Resource name.
7879    :vartype name: str
7880    :ivar type: Resource type.
7881    :vartype type: str
7882    :param location: Resource location.
7883    :type location: str
7884    :param tags: A set of tags. Resource tags.
7885    :type tags: dict[str, str]
7886    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
7887    :type etag: str
7888    :param routes: Collection of routes contained within a route table.
7889    :type routes: list[~azure.mgmt.network.v2018_01_01.models.Route]
7890    :ivar subnets: A collection of references to subnets.
7891    :vartype subnets: list[~azure.mgmt.network.v2018_01_01.models.Subnet]
7892    :param disable_bgp_route_propagation: Gets or sets whether to disable the routes learned by BGP
7893     on that route table. True means disable.
7894    :type disable_bgp_route_propagation: bool
7895    :param provisioning_state: The provisioning state of the resource. Possible values are:
7896     'Updating', 'Deleting', and 'Failed'.
7897    :type provisioning_state: str
7898    """
7899
7900    _validation = {
7901        'name': {'readonly': True},
7902        'type': {'readonly': True},
7903        'subnets': {'readonly': True},
7904    }
7905
7906    _attribute_map = {
7907        'id': {'key': 'id', 'type': 'str'},
7908        'name': {'key': 'name', 'type': 'str'},
7909        'type': {'key': 'type', 'type': 'str'},
7910        'location': {'key': 'location', 'type': 'str'},
7911        'tags': {'key': 'tags', 'type': '{str}'},
7912        'etag': {'key': 'etag', 'type': 'str'},
7913        'routes': {'key': 'properties.routes', 'type': '[Route]'},
7914        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
7915        'disable_bgp_route_propagation': {'key': 'properties.disableBgpRoutePropagation', 'type': 'bool'},
7916        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7917    }
7918
7919    def __init__(
7920        self,
7921        *,
7922        id: Optional[str] = None,
7923        location: Optional[str] = None,
7924        tags: Optional[Dict[str, str]] = None,
7925        etag: Optional[str] = None,
7926        routes: Optional[List["Route"]] = None,
7927        disable_bgp_route_propagation: Optional[bool] = None,
7928        provisioning_state: Optional[str] = None,
7929        **kwargs
7930    ):
7931        super(RouteTable, self).__init__(id=id, location=location, tags=tags, **kwargs)
7932        self.etag = etag
7933        self.routes = routes
7934        self.subnets = None
7935        self.disable_bgp_route_propagation = disable_bgp_route_propagation
7936        self.provisioning_state = provisioning_state
7937
7938
7939class RouteTableListResult(msrest.serialization.Model):
7940    """Response for the ListRouteTable API service call.
7941
7942    :param value: Gets a list of route tables in a resource group.
7943    :type value: list[~azure.mgmt.network.v2018_01_01.models.RouteTable]
7944    :param next_link: The URL to get the next set of results.
7945    :type next_link: str
7946    """
7947
7948    _attribute_map = {
7949        'value': {'key': 'value', 'type': '[RouteTable]'},
7950        'next_link': {'key': 'nextLink', 'type': 'str'},
7951    }
7952
7953    def __init__(
7954        self,
7955        *,
7956        value: Optional[List["RouteTable"]] = None,
7957        next_link: Optional[str] = None,
7958        **kwargs
7959    ):
7960        super(RouteTableListResult, self).__init__(**kwargs)
7961        self.value = value
7962        self.next_link = next_link
7963
7964
7965class SecurityGroupNetworkInterface(msrest.serialization.Model):
7966    """Network interface and all its associated security rules.
7967
7968    :param id: ID of the network interface.
7969    :type id: str
7970    :param security_rule_associations: All security rules associated with the network interface.
7971    :type security_rule_associations:
7972     ~azure.mgmt.network.v2018_01_01.models.SecurityRuleAssociations
7973    """
7974
7975    _attribute_map = {
7976        'id': {'key': 'id', 'type': 'str'},
7977        'security_rule_associations': {'key': 'securityRuleAssociations', 'type': 'SecurityRuleAssociations'},
7978    }
7979
7980    def __init__(
7981        self,
7982        *,
7983        id: Optional[str] = None,
7984        security_rule_associations: Optional["SecurityRuleAssociations"] = None,
7985        **kwargs
7986    ):
7987        super(SecurityGroupNetworkInterface, self).__init__(**kwargs)
7988        self.id = id
7989        self.security_rule_associations = security_rule_associations
7990
7991
7992class SecurityGroupViewParameters(msrest.serialization.Model):
7993    """Parameters that define the VM to check security groups for.
7994
7995    All required parameters must be populated in order to send to Azure.
7996
7997    :param target_resource_id: Required. ID of the target VM.
7998    :type target_resource_id: str
7999    """
8000
8001    _validation = {
8002        'target_resource_id': {'required': True},
8003    }
8004
8005    _attribute_map = {
8006        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
8007    }
8008
8009    def __init__(
8010        self,
8011        *,
8012        target_resource_id: str,
8013        **kwargs
8014    ):
8015        super(SecurityGroupViewParameters, self).__init__(**kwargs)
8016        self.target_resource_id = target_resource_id
8017
8018
8019class SecurityGroupViewResult(msrest.serialization.Model):
8020    """The information about security rules applied to the specified VM.
8021
8022    :param network_interfaces: List of network interfaces on the specified VM.
8023    :type network_interfaces:
8024     list[~azure.mgmt.network.v2018_01_01.models.SecurityGroupNetworkInterface]
8025    """
8026
8027    _attribute_map = {
8028        'network_interfaces': {'key': 'networkInterfaces', 'type': '[SecurityGroupNetworkInterface]'},
8029    }
8030
8031    def __init__(
8032        self,
8033        *,
8034        network_interfaces: Optional[List["SecurityGroupNetworkInterface"]] = None,
8035        **kwargs
8036    ):
8037        super(SecurityGroupViewResult, self).__init__(**kwargs)
8038        self.network_interfaces = network_interfaces
8039
8040
8041class SecurityRule(SubResource):
8042    """Network security rule.
8043
8044    :param id: Resource ID.
8045    :type id: str
8046    :param name: The name of the resource that is unique within a resource group. This name can be
8047     used to access the resource.
8048    :type name: str
8049    :param etag: A unique read-only string that changes whenever the resource is updated.
8050    :type etag: str
8051    :param description: A description for this rule. Restricted to 140 chars.
8052    :type description: str
8053    :param protocol: Network protocol this rule applies to. Possible values are 'Tcp', 'Udp', and
8054     '*'. Possible values include: "Tcp", "Udp", "*".
8055    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.SecurityRuleProtocol
8056    :param source_port_range: The source port or range. Integer or range between 0 and 65535.
8057     Asterisk '*' can also be used to match all ports.
8058    :type source_port_range: str
8059    :param destination_port_range: The destination port or range. Integer or range between 0 and
8060     65535. Asterisk '*' can also be used to match all ports.
8061    :type destination_port_range: str
8062    :param source_address_prefix: The CIDR or source IP range. Asterisk '*' can also be used to
8063     match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet'
8064     can also be used. If this is an ingress rule, specifies where network traffic originates from.
8065    :type source_address_prefix: str
8066    :param source_address_prefixes: The CIDR or source IP ranges.
8067    :type source_address_prefixes: list[str]
8068    :param source_application_security_groups: The application security group specified as source.
8069    :type source_application_security_groups:
8070     list[~azure.mgmt.network.v2018_01_01.models.ApplicationSecurityGroup]
8071    :param destination_address_prefix: The destination address prefix. CIDR or destination IP
8072     range. Asterisk '*' can also be used to match all source IPs. Default tags such as
8073     'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
8074    :type destination_address_prefix: str
8075    :param destination_address_prefixes: The destination address prefixes. CIDR or destination IP
8076     ranges.
8077    :type destination_address_prefixes: list[str]
8078    :param destination_application_security_groups: The application security group specified as
8079     destination.
8080    :type destination_application_security_groups:
8081     list[~azure.mgmt.network.v2018_01_01.models.ApplicationSecurityGroup]
8082    :param source_port_ranges: The source port ranges.
8083    :type source_port_ranges: list[str]
8084    :param destination_port_ranges: The destination port ranges.
8085    :type destination_port_ranges: list[str]
8086    :param access: The network traffic is allowed or denied. Possible values are: 'Allow' and
8087     'Deny'. Possible values include: "Allow", "Deny".
8088    :type access: str or ~azure.mgmt.network.v2018_01_01.models.SecurityRuleAccess
8089    :param priority: The priority of the rule. The value can be between 100 and 4096. The priority
8090     number must be unique for each rule in the collection. The lower the priority number, the
8091     higher the priority of the rule.
8092    :type priority: int
8093    :param direction: The direction of the rule. The direction specifies if rule will be evaluated
8094     on incoming or outgoing traffic. Possible values are: 'Inbound' and 'Outbound'. Possible values
8095     include: "Inbound", "Outbound".
8096    :type direction: str or ~azure.mgmt.network.v2018_01_01.models.SecurityRuleDirection
8097    :param provisioning_state: The provisioning state of the public IP resource. Possible values
8098     are: 'Updating', 'Deleting', and 'Failed'.
8099    :type provisioning_state: str
8100    """
8101
8102    _attribute_map = {
8103        'id': {'key': 'id', 'type': 'str'},
8104        'name': {'key': 'name', 'type': 'str'},
8105        'etag': {'key': 'etag', 'type': 'str'},
8106        'description': {'key': 'properties.description', 'type': 'str'},
8107        'protocol': {'key': 'properties.protocol', 'type': 'str'},
8108        'source_port_range': {'key': 'properties.sourcePortRange', 'type': 'str'},
8109        'destination_port_range': {'key': 'properties.destinationPortRange', 'type': 'str'},
8110        'source_address_prefix': {'key': 'properties.sourceAddressPrefix', 'type': 'str'},
8111        'source_address_prefixes': {'key': 'properties.sourceAddressPrefixes', 'type': '[str]'},
8112        'source_application_security_groups': {'key': 'properties.sourceApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
8113        'destination_address_prefix': {'key': 'properties.destinationAddressPrefix', 'type': 'str'},
8114        'destination_address_prefixes': {'key': 'properties.destinationAddressPrefixes', 'type': '[str]'},
8115        'destination_application_security_groups': {'key': 'properties.destinationApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
8116        'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'},
8117        'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'},
8118        'access': {'key': 'properties.access', 'type': 'str'},
8119        'priority': {'key': 'properties.priority', 'type': 'int'},
8120        'direction': {'key': 'properties.direction', 'type': 'str'},
8121        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8122    }
8123
8124    def __init__(
8125        self,
8126        *,
8127        id: Optional[str] = None,
8128        name: Optional[str] = None,
8129        etag: Optional[str] = None,
8130        description: Optional[str] = None,
8131        protocol: Optional[Union[str, "SecurityRuleProtocol"]] = None,
8132        source_port_range: Optional[str] = None,
8133        destination_port_range: Optional[str] = None,
8134        source_address_prefix: Optional[str] = None,
8135        source_address_prefixes: Optional[List[str]] = None,
8136        source_application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
8137        destination_address_prefix: Optional[str] = None,
8138        destination_address_prefixes: Optional[List[str]] = None,
8139        destination_application_security_groups: Optional[List["ApplicationSecurityGroup"]] = None,
8140        source_port_ranges: Optional[List[str]] = None,
8141        destination_port_ranges: Optional[List[str]] = None,
8142        access: Optional[Union[str, "SecurityRuleAccess"]] = None,
8143        priority: Optional[int] = None,
8144        direction: Optional[Union[str, "SecurityRuleDirection"]] = None,
8145        provisioning_state: Optional[str] = None,
8146        **kwargs
8147    ):
8148        super(SecurityRule, self).__init__(id=id, **kwargs)
8149        self.name = name
8150        self.etag = etag
8151        self.description = description
8152        self.protocol = protocol
8153        self.source_port_range = source_port_range
8154        self.destination_port_range = destination_port_range
8155        self.source_address_prefix = source_address_prefix
8156        self.source_address_prefixes = source_address_prefixes
8157        self.source_application_security_groups = source_application_security_groups
8158        self.destination_address_prefix = destination_address_prefix
8159        self.destination_address_prefixes = destination_address_prefixes
8160        self.destination_application_security_groups = destination_application_security_groups
8161        self.source_port_ranges = source_port_ranges
8162        self.destination_port_ranges = destination_port_ranges
8163        self.access = access
8164        self.priority = priority
8165        self.direction = direction
8166        self.provisioning_state = provisioning_state
8167
8168
8169class SecurityRuleAssociations(msrest.serialization.Model):
8170    """All security rules associated with the network interface.
8171
8172    :param network_interface_association: Network interface and its custom security rules.
8173    :type network_interface_association:
8174     ~azure.mgmt.network.v2018_01_01.models.NetworkInterfaceAssociation
8175    :param subnet_association: Network interface and its custom security rules.
8176    :type subnet_association: ~azure.mgmt.network.v2018_01_01.models.SubnetAssociation
8177    :param default_security_rules: Collection of default security rules of the network security
8178     group.
8179    :type default_security_rules: list[~azure.mgmt.network.v2018_01_01.models.SecurityRule]
8180    :param effective_security_rules: Collection of effective security rules.
8181    :type effective_security_rules:
8182     list[~azure.mgmt.network.v2018_01_01.models.EffectiveNetworkSecurityRule]
8183    """
8184
8185    _attribute_map = {
8186        'network_interface_association': {'key': 'networkInterfaceAssociation', 'type': 'NetworkInterfaceAssociation'},
8187        'subnet_association': {'key': 'subnetAssociation', 'type': 'SubnetAssociation'},
8188        'default_security_rules': {'key': 'defaultSecurityRules', 'type': '[SecurityRule]'},
8189        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
8190    }
8191
8192    def __init__(
8193        self,
8194        *,
8195        network_interface_association: Optional["NetworkInterfaceAssociation"] = None,
8196        subnet_association: Optional["SubnetAssociation"] = None,
8197        default_security_rules: Optional[List["SecurityRule"]] = None,
8198        effective_security_rules: Optional[List["EffectiveNetworkSecurityRule"]] = None,
8199        **kwargs
8200    ):
8201        super(SecurityRuleAssociations, self).__init__(**kwargs)
8202        self.network_interface_association = network_interface_association
8203        self.subnet_association = subnet_association
8204        self.default_security_rules = default_security_rules
8205        self.effective_security_rules = effective_security_rules
8206
8207
8208class SecurityRuleListResult(msrest.serialization.Model):
8209    """Response for ListSecurityRule API service call. Retrieves all security rules that belongs to a network security group.
8210
8211    :param value: The security rules in a network security group.
8212    :type value: list[~azure.mgmt.network.v2018_01_01.models.SecurityRule]
8213    :param next_link: The URL to get the next set of results.
8214    :type next_link: str
8215    """
8216
8217    _attribute_map = {
8218        'value': {'key': 'value', 'type': '[SecurityRule]'},
8219        'next_link': {'key': 'nextLink', 'type': 'str'},
8220    }
8221
8222    def __init__(
8223        self,
8224        *,
8225        value: Optional[List["SecurityRule"]] = None,
8226        next_link: Optional[str] = None,
8227        **kwargs
8228    ):
8229        super(SecurityRuleListResult, self).__init__(**kwargs)
8230        self.value = value
8231        self.next_link = next_link
8232
8233
8234class ServiceEndpointPropertiesFormat(msrest.serialization.Model):
8235    """The service endpoint properties.
8236
8237    :param service: The type of the endpoint service.
8238    :type service: str
8239    :param locations: A list of locations.
8240    :type locations: list[str]
8241    :param provisioning_state: The provisioning state of the resource.
8242    :type provisioning_state: str
8243    """
8244
8245    _attribute_map = {
8246        'service': {'key': 'service', 'type': 'str'},
8247        'locations': {'key': 'locations', 'type': '[str]'},
8248        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
8249    }
8250
8251    def __init__(
8252        self,
8253        *,
8254        service: Optional[str] = None,
8255        locations: Optional[List[str]] = None,
8256        provisioning_state: Optional[str] = None,
8257        **kwargs
8258    ):
8259        super(ServiceEndpointPropertiesFormat, self).__init__(**kwargs)
8260        self.service = service
8261        self.locations = locations
8262        self.provisioning_state = provisioning_state
8263
8264
8265class Subnet(SubResource):
8266    """Subnet in a virtual network resource.
8267
8268    Variables are only populated by the server, and will be ignored when sending a request.
8269
8270    :param id: Resource ID.
8271    :type id: str
8272    :param name: The name of the resource that is unique within a resource group. This name can be
8273     used to access the resource.
8274    :type name: str
8275    :param etag: A unique read-only string that changes whenever the resource is updated.
8276    :type etag: str
8277    :param address_prefix: The address prefix for the subnet.
8278    :type address_prefix: str
8279    :param network_security_group: The reference of the NetworkSecurityGroup resource.
8280    :type network_security_group: ~azure.mgmt.network.v2018_01_01.models.NetworkSecurityGroup
8281    :param route_table: The reference of the RouteTable resource.
8282    :type route_table: ~azure.mgmt.network.v2018_01_01.models.RouteTable
8283    :param service_endpoints: An array of service endpoints.
8284    :type service_endpoints:
8285     list[~azure.mgmt.network.v2018_01_01.models.ServiceEndpointPropertiesFormat]
8286    :ivar ip_configurations: Gets an array of references to the network interface IP configurations
8287     using subnet.
8288    :vartype ip_configurations: list[~azure.mgmt.network.v2018_01_01.models.IPConfiguration]
8289    :param resource_navigation_links: Gets an array of references to the external resources using
8290     subnet.
8291    :type resource_navigation_links:
8292     list[~azure.mgmt.network.v2018_01_01.models.ResourceNavigationLink]
8293    :param provisioning_state: The provisioning state of the resource.
8294    :type provisioning_state: str
8295    """
8296
8297    _validation = {
8298        'ip_configurations': {'readonly': True},
8299    }
8300
8301    _attribute_map = {
8302        'id': {'key': 'id', 'type': 'str'},
8303        'name': {'key': 'name', 'type': 'str'},
8304        'etag': {'key': 'etag', 'type': 'str'},
8305        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
8306        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
8307        'route_table': {'key': 'properties.routeTable', 'type': 'RouteTable'},
8308        'service_endpoints': {'key': 'properties.serviceEndpoints', 'type': '[ServiceEndpointPropertiesFormat]'},
8309        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfiguration]'},
8310        'resource_navigation_links': {'key': 'properties.resourceNavigationLinks', 'type': '[ResourceNavigationLink]'},
8311        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8312    }
8313
8314    def __init__(
8315        self,
8316        *,
8317        id: Optional[str] = None,
8318        name: Optional[str] = None,
8319        etag: Optional[str] = None,
8320        address_prefix: Optional[str] = None,
8321        network_security_group: Optional["NetworkSecurityGroup"] = None,
8322        route_table: Optional["RouteTable"] = None,
8323        service_endpoints: Optional[List["ServiceEndpointPropertiesFormat"]] = None,
8324        resource_navigation_links: Optional[List["ResourceNavigationLink"]] = None,
8325        provisioning_state: Optional[str] = None,
8326        **kwargs
8327    ):
8328        super(Subnet, self).__init__(id=id, **kwargs)
8329        self.name = name
8330        self.etag = etag
8331        self.address_prefix = address_prefix
8332        self.network_security_group = network_security_group
8333        self.route_table = route_table
8334        self.service_endpoints = service_endpoints
8335        self.ip_configurations = None
8336        self.resource_navigation_links = resource_navigation_links
8337        self.provisioning_state = provisioning_state
8338
8339
8340class SubnetAssociation(msrest.serialization.Model):
8341    """Network interface and its custom security rules.
8342
8343    Variables are only populated by the server, and will be ignored when sending a request.
8344
8345    :ivar id: Subnet ID.
8346    :vartype id: str
8347    :param security_rules: Collection of custom security rules.
8348    :type security_rules: list[~azure.mgmt.network.v2018_01_01.models.SecurityRule]
8349    """
8350
8351    _validation = {
8352        'id': {'readonly': True},
8353    }
8354
8355    _attribute_map = {
8356        'id': {'key': 'id', 'type': 'str'},
8357        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
8358    }
8359
8360    def __init__(
8361        self,
8362        *,
8363        security_rules: Optional[List["SecurityRule"]] = None,
8364        **kwargs
8365    ):
8366        super(SubnetAssociation, self).__init__(**kwargs)
8367        self.id = None
8368        self.security_rules = security_rules
8369
8370
8371class SubnetListResult(msrest.serialization.Model):
8372    """Response for ListSubnets API service callRetrieves all subnet that belongs to a virtual network.
8373
8374    :param value: The subnets in a virtual network.
8375    :type value: list[~azure.mgmt.network.v2018_01_01.models.Subnet]
8376    :param next_link: The URL to get the next set of results.
8377    :type next_link: str
8378    """
8379
8380    _attribute_map = {
8381        'value': {'key': 'value', 'type': '[Subnet]'},
8382        'next_link': {'key': 'nextLink', 'type': 'str'},
8383    }
8384
8385    def __init__(
8386        self,
8387        *,
8388        value: Optional[List["Subnet"]] = None,
8389        next_link: Optional[str] = None,
8390        **kwargs
8391    ):
8392        super(SubnetListResult, self).__init__(**kwargs)
8393        self.value = value
8394        self.next_link = next_link
8395
8396
8397class TagsObject(msrest.serialization.Model):
8398    """Tags object for patch operations.
8399
8400    :param tags: A set of tags. Resource tags.
8401    :type tags: dict[str, str]
8402    """
8403
8404    _attribute_map = {
8405        'tags': {'key': 'tags', 'type': '{str}'},
8406    }
8407
8408    def __init__(
8409        self,
8410        *,
8411        tags: Optional[Dict[str, str]] = None,
8412        **kwargs
8413    ):
8414        super(TagsObject, self).__init__(**kwargs)
8415        self.tags = tags
8416
8417
8418class Topology(msrest.serialization.Model):
8419    """Topology of the specified resource group.
8420
8421    Variables are only populated by the server, and will be ignored when sending a request.
8422
8423    :ivar id: GUID representing the operation id.
8424    :vartype id: str
8425    :ivar created_date_time: The datetime when the topology was initially created for the resource
8426     group.
8427    :vartype created_date_time: ~datetime.datetime
8428    :ivar last_modified: The datetime when the topology was last modified.
8429    :vartype last_modified: ~datetime.datetime
8430    :param resources:
8431    :type resources: list[~azure.mgmt.network.v2018_01_01.models.TopologyResource]
8432    """
8433
8434    _validation = {
8435        'id': {'readonly': True},
8436        'created_date_time': {'readonly': True},
8437        'last_modified': {'readonly': True},
8438    }
8439
8440    _attribute_map = {
8441        'id': {'key': 'id', 'type': 'str'},
8442        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
8443        'last_modified': {'key': 'lastModified', 'type': 'iso-8601'},
8444        'resources': {'key': 'resources', 'type': '[TopologyResource]'},
8445    }
8446
8447    def __init__(
8448        self,
8449        *,
8450        resources: Optional[List["TopologyResource"]] = None,
8451        **kwargs
8452    ):
8453        super(Topology, self).__init__(**kwargs)
8454        self.id = None
8455        self.created_date_time = None
8456        self.last_modified = None
8457        self.resources = resources
8458
8459
8460class TopologyAssociation(msrest.serialization.Model):
8461    """Resources that have an association with the parent resource.
8462
8463    :param name: The name of the resource that is associated with the parent resource.
8464    :type name: str
8465    :param resource_id: The ID of the resource that is associated with the parent resource.
8466    :type resource_id: str
8467    :param association_type: The association type of the child resource to the parent resource.
8468     Possible values include: "Associated", "Contains".
8469    :type association_type: str or ~azure.mgmt.network.v2018_01_01.models.AssociationType
8470    """
8471
8472    _attribute_map = {
8473        'name': {'key': 'name', 'type': 'str'},
8474        'resource_id': {'key': 'resourceId', 'type': 'str'},
8475        'association_type': {'key': 'associationType', 'type': 'str'},
8476    }
8477
8478    def __init__(
8479        self,
8480        *,
8481        name: Optional[str] = None,
8482        resource_id: Optional[str] = None,
8483        association_type: Optional[Union[str, "AssociationType"]] = None,
8484        **kwargs
8485    ):
8486        super(TopologyAssociation, self).__init__(**kwargs)
8487        self.name = name
8488        self.resource_id = resource_id
8489        self.association_type = association_type
8490
8491
8492class TopologyParameters(msrest.serialization.Model):
8493    """Parameters that define the representation of topology.
8494
8495    :param target_resource_group_name: The name of the target resource group to perform topology
8496     on.
8497    :type target_resource_group_name: str
8498    :param target_virtual_network: The reference of the Virtual Network resource.
8499    :type target_virtual_network: ~azure.mgmt.network.v2018_01_01.models.SubResource
8500    :param target_subnet: The reference of the Subnet resource.
8501    :type target_subnet: ~azure.mgmt.network.v2018_01_01.models.SubResource
8502    """
8503
8504    _attribute_map = {
8505        'target_resource_group_name': {'key': 'targetResourceGroupName', 'type': 'str'},
8506        'target_virtual_network': {'key': 'targetVirtualNetwork', 'type': 'SubResource'},
8507        'target_subnet': {'key': 'targetSubnet', 'type': 'SubResource'},
8508    }
8509
8510    def __init__(
8511        self,
8512        *,
8513        target_resource_group_name: Optional[str] = None,
8514        target_virtual_network: Optional["SubResource"] = None,
8515        target_subnet: Optional["SubResource"] = None,
8516        **kwargs
8517    ):
8518        super(TopologyParameters, self).__init__(**kwargs)
8519        self.target_resource_group_name = target_resource_group_name
8520        self.target_virtual_network = target_virtual_network
8521        self.target_subnet = target_subnet
8522
8523
8524class TopologyResource(msrest.serialization.Model):
8525    """The network resource topology information for the given resource group.
8526
8527    :param name: Name of the resource.
8528    :type name: str
8529    :param id: ID of the resource.
8530    :type id: str
8531    :param location: Resource location.
8532    :type location: str
8533    :param associations: Holds the associations the resource has with other resources in the
8534     resource group.
8535    :type associations: list[~azure.mgmt.network.v2018_01_01.models.TopologyAssociation]
8536    """
8537
8538    _attribute_map = {
8539        'name': {'key': 'name', 'type': 'str'},
8540        'id': {'key': 'id', 'type': 'str'},
8541        'location': {'key': 'location', 'type': 'str'},
8542        'associations': {'key': 'associations', 'type': '[TopologyAssociation]'},
8543    }
8544
8545    def __init__(
8546        self,
8547        *,
8548        name: Optional[str] = None,
8549        id: Optional[str] = None,
8550        location: Optional[str] = None,
8551        associations: Optional[List["TopologyAssociation"]] = None,
8552        **kwargs
8553    ):
8554        super(TopologyResource, self).__init__(**kwargs)
8555        self.name = name
8556        self.id = id
8557        self.location = location
8558        self.associations = associations
8559
8560
8561class TrafficAnalyticsConfigurationProperties(msrest.serialization.Model):
8562    """Parameters that define the configuration of traffic analytics.
8563
8564    All required parameters must be populated in order to send to Azure.
8565
8566    :param enabled: Required. Flag to enable/disable traffic analytics.
8567    :type enabled: bool
8568    :param workspace_id: Required. The resource guid of the attached workspace.
8569    :type workspace_id: str
8570    :param workspace_region: Required. The location of the attached workspace.
8571    :type workspace_region: str
8572    :param workspace_resource_id: Required. Resource Id of the attached workspace.
8573    :type workspace_resource_id: str
8574    """
8575
8576    _validation = {
8577        'enabled': {'required': True},
8578        'workspace_id': {'required': True},
8579        'workspace_region': {'required': True},
8580        'workspace_resource_id': {'required': True},
8581    }
8582
8583    _attribute_map = {
8584        'enabled': {'key': 'enabled', 'type': 'bool'},
8585        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
8586        'workspace_region': {'key': 'workspaceRegion', 'type': 'str'},
8587        'workspace_resource_id': {'key': 'workspaceResourceId', 'type': 'str'},
8588    }
8589
8590    def __init__(
8591        self,
8592        *,
8593        enabled: bool,
8594        workspace_id: str,
8595        workspace_region: str,
8596        workspace_resource_id: str,
8597        **kwargs
8598    ):
8599        super(TrafficAnalyticsConfigurationProperties, self).__init__(**kwargs)
8600        self.enabled = enabled
8601        self.workspace_id = workspace_id
8602        self.workspace_region = workspace_region
8603        self.workspace_resource_id = workspace_resource_id
8604
8605
8606class TroubleshootingDetails(msrest.serialization.Model):
8607    """Information gained from troubleshooting of specified resource.
8608
8609    :param id: The id of the get troubleshoot operation.
8610    :type id: str
8611    :param reason_type: Reason type of failure.
8612    :type reason_type: str
8613    :param summary: A summary of troubleshooting.
8614    :type summary: str
8615    :param detail: Details on troubleshooting results.
8616    :type detail: str
8617    :param recommended_actions: List of recommended actions.
8618    :type recommended_actions:
8619     list[~azure.mgmt.network.v2018_01_01.models.TroubleshootingRecommendedActions]
8620    """
8621
8622    _attribute_map = {
8623        'id': {'key': 'id', 'type': 'str'},
8624        'reason_type': {'key': 'reasonType', 'type': 'str'},
8625        'summary': {'key': 'summary', 'type': 'str'},
8626        'detail': {'key': 'detail', 'type': 'str'},
8627        'recommended_actions': {'key': 'recommendedActions', 'type': '[TroubleshootingRecommendedActions]'},
8628    }
8629
8630    def __init__(
8631        self,
8632        *,
8633        id: Optional[str] = None,
8634        reason_type: Optional[str] = None,
8635        summary: Optional[str] = None,
8636        detail: Optional[str] = None,
8637        recommended_actions: Optional[List["TroubleshootingRecommendedActions"]] = None,
8638        **kwargs
8639    ):
8640        super(TroubleshootingDetails, self).__init__(**kwargs)
8641        self.id = id
8642        self.reason_type = reason_type
8643        self.summary = summary
8644        self.detail = detail
8645        self.recommended_actions = recommended_actions
8646
8647
8648class TroubleshootingParameters(msrest.serialization.Model):
8649    """Parameters that define the resource to troubleshoot.
8650
8651    All required parameters must be populated in order to send to Azure.
8652
8653    :param target_resource_id: Required. The target resource to troubleshoot.
8654    :type target_resource_id: str
8655    :param storage_id: Required. The ID for the storage account to save the troubleshoot result.
8656    :type storage_id: str
8657    :param storage_path: Required. The path to the blob to save the troubleshoot result in.
8658    :type storage_path: str
8659    """
8660
8661    _validation = {
8662        'target_resource_id': {'required': True},
8663        'storage_id': {'required': True},
8664        'storage_path': {'required': True},
8665    }
8666
8667    _attribute_map = {
8668        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
8669        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
8670        'storage_path': {'key': 'properties.storagePath', 'type': 'str'},
8671    }
8672
8673    def __init__(
8674        self,
8675        *,
8676        target_resource_id: str,
8677        storage_id: str,
8678        storage_path: str,
8679        **kwargs
8680    ):
8681        super(TroubleshootingParameters, self).__init__(**kwargs)
8682        self.target_resource_id = target_resource_id
8683        self.storage_id = storage_id
8684        self.storage_path = storage_path
8685
8686
8687class TroubleshootingRecommendedActions(msrest.serialization.Model):
8688    """Recommended actions based on discovered issues.
8689
8690    :param action_id: ID of the recommended action.
8691    :type action_id: str
8692    :param action_text: Description of recommended actions.
8693    :type action_text: str
8694    :param action_uri: The uri linking to a documentation for the recommended troubleshooting
8695     actions.
8696    :type action_uri: str
8697    :param action_uri_text: The information from the URI for the recommended troubleshooting
8698     actions.
8699    :type action_uri_text: str
8700    """
8701
8702    _attribute_map = {
8703        'action_id': {'key': 'actionId', 'type': 'str'},
8704        'action_text': {'key': 'actionText', 'type': 'str'},
8705        'action_uri': {'key': 'actionUri', 'type': 'str'},
8706        'action_uri_text': {'key': 'actionUriText', 'type': 'str'},
8707    }
8708
8709    def __init__(
8710        self,
8711        *,
8712        action_id: Optional[str] = None,
8713        action_text: Optional[str] = None,
8714        action_uri: Optional[str] = None,
8715        action_uri_text: Optional[str] = None,
8716        **kwargs
8717    ):
8718        super(TroubleshootingRecommendedActions, self).__init__(**kwargs)
8719        self.action_id = action_id
8720        self.action_text = action_text
8721        self.action_uri = action_uri
8722        self.action_uri_text = action_uri_text
8723
8724
8725class TroubleshootingResult(msrest.serialization.Model):
8726    """Troubleshooting information gained from specified resource.
8727
8728    :param start_time: The start time of the troubleshooting.
8729    :type start_time: ~datetime.datetime
8730    :param end_time: The end time of the troubleshooting.
8731    :type end_time: ~datetime.datetime
8732    :param code: The result code of the troubleshooting.
8733    :type code: str
8734    :param results: Information from troubleshooting.
8735    :type results: list[~azure.mgmt.network.v2018_01_01.models.TroubleshootingDetails]
8736    """
8737
8738    _attribute_map = {
8739        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
8740        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
8741        'code': {'key': 'code', 'type': 'str'},
8742        'results': {'key': 'results', 'type': '[TroubleshootingDetails]'},
8743    }
8744
8745    def __init__(
8746        self,
8747        *,
8748        start_time: Optional[datetime.datetime] = None,
8749        end_time: Optional[datetime.datetime] = None,
8750        code: Optional[str] = None,
8751        results: Optional[List["TroubleshootingDetails"]] = None,
8752        **kwargs
8753    ):
8754        super(TroubleshootingResult, self).__init__(**kwargs)
8755        self.start_time = start_time
8756        self.end_time = end_time
8757        self.code = code
8758        self.results = results
8759
8760
8761class TunnelConnectionHealth(msrest.serialization.Model):
8762    """VirtualNetworkGatewayConnection properties.
8763
8764    Variables are only populated by the server, and will be ignored when sending a request.
8765
8766    :ivar tunnel: Tunnel name.
8767    :vartype tunnel: str
8768    :ivar connection_status: Virtual network Gateway connection status. Possible values include:
8769     "Unknown", "Connecting", "Connected", "NotConnected".
8770    :vartype connection_status: str or
8771     ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewayConnectionStatus
8772    :ivar ingress_bytes_transferred: The Ingress Bytes Transferred in this connection.
8773    :vartype ingress_bytes_transferred: long
8774    :ivar egress_bytes_transferred: The Egress Bytes Transferred in this connection.
8775    :vartype egress_bytes_transferred: long
8776    :ivar last_connection_established_utc_time: The time at which connection was established in Utc
8777     format.
8778    :vartype last_connection_established_utc_time: str
8779    """
8780
8781    _validation = {
8782        'tunnel': {'readonly': True},
8783        'connection_status': {'readonly': True},
8784        'ingress_bytes_transferred': {'readonly': True},
8785        'egress_bytes_transferred': {'readonly': True},
8786        'last_connection_established_utc_time': {'readonly': True},
8787    }
8788
8789    _attribute_map = {
8790        'tunnel': {'key': 'tunnel', 'type': 'str'},
8791        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
8792        'ingress_bytes_transferred': {'key': 'ingressBytesTransferred', 'type': 'long'},
8793        'egress_bytes_transferred': {'key': 'egressBytesTransferred', 'type': 'long'},
8794        'last_connection_established_utc_time': {'key': 'lastConnectionEstablishedUtcTime', 'type': 'str'},
8795    }
8796
8797    def __init__(
8798        self,
8799        **kwargs
8800    ):
8801        super(TunnelConnectionHealth, self).__init__(**kwargs)
8802        self.tunnel = None
8803        self.connection_status = None
8804        self.ingress_bytes_transferred = None
8805        self.egress_bytes_transferred = None
8806        self.last_connection_established_utc_time = None
8807
8808
8809class Usage(msrest.serialization.Model):
8810    """Describes network resource usage.
8811
8812    Variables are only populated by the server, and will be ignored when sending a request.
8813
8814    All required parameters must be populated in order to send to Azure.
8815
8816    :ivar id: Resource identifier.
8817    :vartype id: str
8818    :param unit: Required. An enum describing the unit of measurement. Possible values include:
8819     "Count".
8820    :type unit: str or ~azure.mgmt.network.v2018_01_01.models.UsageUnit
8821    :param current_value: Required. The current value of the usage.
8822    :type current_value: long
8823    :param limit: Required. The limit of usage.
8824    :type limit: long
8825    :param name: Required. The name of the type of usage.
8826    :type name: ~azure.mgmt.network.v2018_01_01.models.UsageName
8827    """
8828
8829    _validation = {
8830        'id': {'readonly': True},
8831        'unit': {'required': True},
8832        'current_value': {'required': True},
8833        'limit': {'required': True},
8834        'name': {'required': True},
8835    }
8836
8837    _attribute_map = {
8838        'id': {'key': 'id', 'type': 'str'},
8839        'unit': {'key': 'unit', 'type': 'str'},
8840        'current_value': {'key': 'currentValue', 'type': 'long'},
8841        'limit': {'key': 'limit', 'type': 'long'},
8842        'name': {'key': 'name', 'type': 'UsageName'},
8843    }
8844
8845    def __init__(
8846        self,
8847        *,
8848        unit: Union[str, "UsageUnit"],
8849        current_value: int,
8850        limit: int,
8851        name: "UsageName",
8852        **kwargs
8853    ):
8854        super(Usage, self).__init__(**kwargs)
8855        self.id = None
8856        self.unit = unit
8857        self.current_value = current_value
8858        self.limit = limit
8859        self.name = name
8860
8861
8862class UsageName(msrest.serialization.Model):
8863    """The usage names.
8864
8865    :param value: A string describing the resource name.
8866    :type value: str
8867    :param localized_value: A localized string describing the resource name.
8868    :type localized_value: str
8869    """
8870
8871    _attribute_map = {
8872        'value': {'key': 'value', 'type': 'str'},
8873        'localized_value': {'key': 'localizedValue', 'type': 'str'},
8874    }
8875
8876    def __init__(
8877        self,
8878        *,
8879        value: Optional[str] = None,
8880        localized_value: Optional[str] = None,
8881        **kwargs
8882    ):
8883        super(UsageName, self).__init__(**kwargs)
8884        self.value = value
8885        self.localized_value = localized_value
8886
8887
8888class UsagesListResult(msrest.serialization.Model):
8889    """The list usages operation response.
8890
8891    :param value: The list network resource usages.
8892    :type value: list[~azure.mgmt.network.v2018_01_01.models.Usage]
8893    :param next_link: URL to get the next set of results.
8894    :type next_link: str
8895    """
8896
8897    _attribute_map = {
8898        'value': {'key': 'value', 'type': '[Usage]'},
8899        'next_link': {'key': 'nextLink', 'type': 'str'},
8900    }
8901
8902    def __init__(
8903        self,
8904        *,
8905        value: Optional[List["Usage"]] = None,
8906        next_link: Optional[str] = None,
8907        **kwargs
8908    ):
8909        super(UsagesListResult, self).__init__(**kwargs)
8910        self.value = value
8911        self.next_link = next_link
8912
8913
8914class VerificationIPFlowParameters(msrest.serialization.Model):
8915    """Parameters that define the IP flow to be verified.
8916
8917    All required parameters must be populated in order to send to Azure.
8918
8919    :param target_resource_id: Required. The ID of the target resource to perform next-hop on.
8920    :type target_resource_id: str
8921    :param direction: Required. The direction of the packet represented as a 5-tuple. Possible
8922     values include: "Inbound", "Outbound".
8923    :type direction: str or ~azure.mgmt.network.v2018_01_01.models.Direction
8924    :param protocol: Required. Protocol to be verified on. Possible values include: "TCP", "UDP".
8925    :type protocol: str or ~azure.mgmt.network.v2018_01_01.models.Protocol
8926    :param local_port: Required. The local port. Acceptable values are a single integer in the
8927     range (0-65535). Support for * for the source port, which depends on the direction.
8928    :type local_port: str
8929    :param remote_port: Required. The remote port. Acceptable values are a single integer in the
8930     range (0-65535). Support for * for the source port, which depends on the direction.
8931    :type remote_port: str
8932    :param local_ip_address: Required. The local IP address. Acceptable values are valid IPv4
8933     addresses.
8934    :type local_ip_address: str
8935    :param remote_ip_address: Required. The remote IP address. Acceptable values are valid IPv4
8936     addresses.
8937    :type remote_ip_address: str
8938    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
8939     enabled on any of them, then this parameter must be specified. Otherwise optional).
8940    :type target_nic_resource_id: str
8941    """
8942
8943    _validation = {
8944        'target_resource_id': {'required': True},
8945        'direction': {'required': True},
8946        'protocol': {'required': True},
8947        'local_port': {'required': True},
8948        'remote_port': {'required': True},
8949        'local_ip_address': {'required': True},
8950        'remote_ip_address': {'required': True},
8951    }
8952
8953    _attribute_map = {
8954        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
8955        'direction': {'key': 'direction', 'type': 'str'},
8956        'protocol': {'key': 'protocol', 'type': 'str'},
8957        'local_port': {'key': 'localPort', 'type': 'str'},
8958        'remote_port': {'key': 'remotePort', 'type': 'str'},
8959        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
8960        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
8961        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
8962    }
8963
8964    def __init__(
8965        self,
8966        *,
8967        target_resource_id: str,
8968        direction: Union[str, "Direction"],
8969        protocol: Union[str, "Protocol"],
8970        local_port: str,
8971        remote_port: str,
8972        local_ip_address: str,
8973        remote_ip_address: str,
8974        target_nic_resource_id: Optional[str] = None,
8975        **kwargs
8976    ):
8977        super(VerificationIPFlowParameters, self).__init__(**kwargs)
8978        self.target_resource_id = target_resource_id
8979        self.direction = direction
8980        self.protocol = protocol
8981        self.local_port = local_port
8982        self.remote_port = remote_port
8983        self.local_ip_address = local_ip_address
8984        self.remote_ip_address = remote_ip_address
8985        self.target_nic_resource_id = target_nic_resource_id
8986
8987
8988class VerificationIPFlowResult(msrest.serialization.Model):
8989    """Results of IP flow verification on the target resource.
8990
8991    :param access: Indicates whether the traffic is allowed or denied. Possible values include:
8992     "Allow", "Deny".
8993    :type access: str or ~azure.mgmt.network.v2018_01_01.models.Access
8994    :param rule_name: Name of the rule. If input is not matched against any security rule, it is
8995     not displayed.
8996    :type rule_name: str
8997    """
8998
8999    _attribute_map = {
9000        'access': {'key': 'access', 'type': 'str'},
9001        'rule_name': {'key': 'ruleName', 'type': 'str'},
9002    }
9003
9004    def __init__(
9005        self,
9006        *,
9007        access: Optional[Union[str, "Access"]] = None,
9008        rule_name: Optional[str] = None,
9009        **kwargs
9010    ):
9011        super(VerificationIPFlowResult, self).__init__(**kwargs)
9012        self.access = access
9013        self.rule_name = rule_name
9014
9015
9016class VirtualNetwork(Resource):
9017    """Virtual Network resource.
9018
9019    Variables are only populated by the server, and will be ignored when sending a request.
9020
9021    :param id: Resource ID.
9022    :type id: str
9023    :ivar name: Resource name.
9024    :vartype name: str
9025    :ivar type: Resource type.
9026    :vartype type: str
9027    :param location: Resource location.
9028    :type location: str
9029    :param tags: A set of tags. Resource tags.
9030    :type tags: dict[str, str]
9031    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
9032    :type etag: str
9033    :param address_space: The AddressSpace that contains an array of IP address ranges that can be
9034     used by subnets.
9035    :type address_space: ~azure.mgmt.network.v2018_01_01.models.AddressSpace
9036    :param dhcp_options: The dhcpOptions that contains an array of DNS servers available to VMs
9037     deployed in the virtual network.
9038    :type dhcp_options: ~azure.mgmt.network.v2018_01_01.models.DhcpOptions
9039    :param subnets: A list of subnets in a Virtual Network.
9040    :type subnets: list[~azure.mgmt.network.v2018_01_01.models.Subnet]
9041    :param virtual_network_peerings: A list of peerings in a Virtual Network.
9042    :type virtual_network_peerings:
9043     list[~azure.mgmt.network.v2018_01_01.models.VirtualNetworkPeering]
9044    :param resource_guid: The resourceGuid property of the Virtual Network resource.
9045    :type resource_guid: str
9046    :param provisioning_state: The provisioning state of the PublicIP resource. Possible values
9047     are: 'Updating', 'Deleting', and 'Failed'.
9048    :type provisioning_state: str
9049    :param enable_ddos_protection: Indicates if DDoS protection is enabled for all the protected
9050     resources in a Virtual Network.
9051    :type enable_ddos_protection: bool
9052    :param enable_vm_protection: Indicates if Vm protection is enabled for all the subnets in a
9053     Virtual Network.
9054    :type enable_vm_protection: bool
9055    """
9056
9057    _validation = {
9058        'name': {'readonly': True},
9059        'type': {'readonly': True},
9060    }
9061
9062    _attribute_map = {
9063        'id': {'key': 'id', 'type': 'str'},
9064        'name': {'key': 'name', 'type': 'str'},
9065        'type': {'key': 'type', 'type': 'str'},
9066        'location': {'key': 'location', 'type': 'str'},
9067        'tags': {'key': 'tags', 'type': '{str}'},
9068        'etag': {'key': 'etag', 'type': 'str'},
9069        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
9070        'dhcp_options': {'key': 'properties.dhcpOptions', 'type': 'DhcpOptions'},
9071        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
9072        'virtual_network_peerings': {'key': 'properties.virtualNetworkPeerings', 'type': '[VirtualNetworkPeering]'},
9073        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
9074        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9075        'enable_ddos_protection': {'key': 'properties.enableDdosProtection', 'type': 'bool'},
9076        'enable_vm_protection': {'key': 'properties.enableVmProtection', 'type': 'bool'},
9077    }
9078
9079    def __init__(
9080        self,
9081        *,
9082        id: Optional[str] = None,
9083        location: Optional[str] = None,
9084        tags: Optional[Dict[str, str]] = None,
9085        etag: Optional[str] = None,
9086        address_space: Optional["AddressSpace"] = None,
9087        dhcp_options: Optional["DhcpOptions"] = None,
9088        subnets: Optional[List["Subnet"]] = None,
9089        virtual_network_peerings: Optional[List["VirtualNetworkPeering"]] = None,
9090        resource_guid: Optional[str] = None,
9091        provisioning_state: Optional[str] = None,
9092        enable_ddos_protection: Optional[bool] = None,
9093        enable_vm_protection: Optional[bool] = None,
9094        **kwargs
9095    ):
9096        super(VirtualNetwork, self).__init__(id=id, location=location, tags=tags, **kwargs)
9097        self.etag = etag
9098        self.address_space = address_space
9099        self.dhcp_options = dhcp_options
9100        self.subnets = subnets
9101        self.virtual_network_peerings = virtual_network_peerings
9102        self.resource_guid = resource_guid
9103        self.provisioning_state = provisioning_state
9104        self.enable_ddos_protection = enable_ddos_protection
9105        self.enable_vm_protection = enable_vm_protection
9106
9107
9108class VirtualNetworkConnectionGatewayReference(msrest.serialization.Model):
9109    """A reference to VirtualNetworkGateway or LocalNetworkGateway resource.
9110
9111    All required parameters must be populated in order to send to Azure.
9112
9113    :param id: Required. The ID of VirtualNetworkGateway or LocalNetworkGateway resource.
9114    :type id: str
9115    """
9116
9117    _validation = {
9118        'id': {'required': True},
9119    }
9120
9121    _attribute_map = {
9122        'id': {'key': 'id', 'type': 'str'},
9123    }
9124
9125    def __init__(
9126        self,
9127        *,
9128        id: str,
9129        **kwargs
9130    ):
9131        super(VirtualNetworkConnectionGatewayReference, self).__init__(**kwargs)
9132        self.id = id
9133
9134
9135class VirtualNetworkGateway(Resource):
9136    """A common class for general resource information.
9137
9138    Variables are only populated by the server, and will be ignored when sending a request.
9139
9140    :param id: Resource ID.
9141    :type id: str
9142    :ivar name: Resource name.
9143    :vartype name: str
9144    :ivar type: Resource type.
9145    :vartype type: str
9146    :param location: Resource location.
9147    :type location: str
9148    :param tags: A set of tags. Resource tags.
9149    :type tags: dict[str, str]
9150    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
9151    :type etag: str
9152    :param ip_configurations: IP configurations for virtual network gateway.
9153    :type ip_configurations:
9154     list[~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewayIPConfiguration]
9155    :param gateway_type: The type of this virtual network gateway. Possible values are: 'Vpn' and
9156     'ExpressRoute'. Possible values include: "Vpn", "ExpressRoute".
9157    :type gateway_type: str or ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewayType
9158    :param vpn_type: The type of this virtual network gateway. Possible values are: 'PolicyBased'
9159     and 'RouteBased'. Possible values include: "PolicyBased", "RouteBased".
9160    :type vpn_type: str or ~azure.mgmt.network.v2018_01_01.models.VpnType
9161    :param enable_bgp: Whether BGP is enabled for this virtual network gateway or not.
9162    :type enable_bgp: bool
9163    :param active: ActiveActive flag.
9164    :type active: bool
9165    :param gateway_default_site: The reference of the LocalNetworkGateway resource which represents
9166     local network site having default routes. Assign Null value in case of removing existing
9167     default site setting.
9168    :type gateway_default_site: ~azure.mgmt.network.v2018_01_01.models.SubResource
9169    :param sku: The reference of the VirtualNetworkGatewaySku resource which represents the SKU
9170     selected for Virtual network gateway.
9171    :type sku: ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewaySku
9172    :param vpn_client_configuration: The reference of the VpnClientConfiguration resource which
9173     represents the P2S VpnClient configurations.
9174    :type vpn_client_configuration: ~azure.mgmt.network.v2018_01_01.models.VpnClientConfiguration
9175    :param bgp_settings: Virtual network gateway's BGP speaker settings.
9176    :type bgp_settings: ~azure.mgmt.network.v2018_01_01.models.BgpSettings
9177    :param resource_guid: The resource GUID property of the VirtualNetworkGateway resource.
9178    :type resource_guid: str
9179    :ivar provisioning_state: The provisioning state of the VirtualNetworkGateway resource.
9180     Possible values are: 'Updating', 'Deleting', and 'Failed'.
9181    :vartype provisioning_state: str
9182    """
9183
9184    _validation = {
9185        'name': {'readonly': True},
9186        'type': {'readonly': True},
9187        'provisioning_state': {'readonly': True},
9188    }
9189
9190    _attribute_map = {
9191        'id': {'key': 'id', 'type': 'str'},
9192        'name': {'key': 'name', 'type': 'str'},
9193        'type': {'key': 'type', 'type': 'str'},
9194        'location': {'key': 'location', 'type': 'str'},
9195        'tags': {'key': 'tags', 'type': '{str}'},
9196        'etag': {'key': 'etag', 'type': 'str'},
9197        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[VirtualNetworkGatewayIPConfiguration]'},
9198        'gateway_type': {'key': 'properties.gatewayType', 'type': 'str'},
9199        'vpn_type': {'key': 'properties.vpnType', 'type': 'str'},
9200        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
9201        'active': {'key': 'properties.activeActive', 'type': 'bool'},
9202        'gateway_default_site': {'key': 'properties.gatewayDefaultSite', 'type': 'SubResource'},
9203        'sku': {'key': 'properties.sku', 'type': 'VirtualNetworkGatewaySku'},
9204        'vpn_client_configuration': {'key': 'properties.vpnClientConfiguration', 'type': 'VpnClientConfiguration'},
9205        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
9206        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
9207        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9208    }
9209
9210    def __init__(
9211        self,
9212        *,
9213        id: Optional[str] = None,
9214        location: Optional[str] = None,
9215        tags: Optional[Dict[str, str]] = None,
9216        etag: Optional[str] = None,
9217        ip_configurations: Optional[List["VirtualNetworkGatewayIPConfiguration"]] = None,
9218        gateway_type: Optional[Union[str, "VirtualNetworkGatewayType"]] = None,
9219        vpn_type: Optional[Union[str, "VpnType"]] = None,
9220        enable_bgp: Optional[bool] = None,
9221        active: Optional[bool] = None,
9222        gateway_default_site: Optional["SubResource"] = None,
9223        sku: Optional["VirtualNetworkGatewaySku"] = None,
9224        vpn_client_configuration: Optional["VpnClientConfiguration"] = None,
9225        bgp_settings: Optional["BgpSettings"] = None,
9226        resource_guid: Optional[str] = None,
9227        **kwargs
9228    ):
9229        super(VirtualNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
9230        self.etag = etag
9231        self.ip_configurations = ip_configurations
9232        self.gateway_type = gateway_type
9233        self.vpn_type = vpn_type
9234        self.enable_bgp = enable_bgp
9235        self.active = active
9236        self.gateway_default_site = gateway_default_site
9237        self.sku = sku
9238        self.vpn_client_configuration = vpn_client_configuration
9239        self.bgp_settings = bgp_settings
9240        self.resource_guid = resource_guid
9241        self.provisioning_state = None
9242
9243
9244class VirtualNetworkGatewayConnection(Resource):
9245    """A common class for general resource information.
9246
9247    Variables are only populated by the server, and will be ignored when sending a request.
9248
9249    All required parameters must be populated in order to send to Azure.
9250
9251    :param id: Resource ID.
9252    :type id: str
9253    :ivar name: Resource name.
9254    :vartype name: str
9255    :ivar type: Resource type.
9256    :vartype type: str
9257    :param location: Resource location.
9258    :type location: str
9259    :param tags: A set of tags. Resource tags.
9260    :type tags: dict[str, str]
9261    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
9262    :type etag: str
9263    :param authorization_key: The authorizationKey.
9264    :type authorization_key: str
9265    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
9266    :type virtual_network_gateway1: ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGateway
9267    :param virtual_network_gateway2: The reference to virtual network gateway resource.
9268    :type virtual_network_gateway2: ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGateway
9269    :param local_network_gateway2: The reference to local network gateway resource.
9270    :type local_network_gateway2: ~azure.mgmt.network.v2018_01_01.models.LocalNetworkGateway
9271    :param connection_type: Required. Gateway connection type. Possible values are:
9272     'IPsec','Vnet2Vnet','ExpressRoute', and 'VPNClient. Possible values include: "IPsec",
9273     "Vnet2Vnet", "ExpressRoute", "VPNClient".
9274    :type connection_type: str or
9275     ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewayConnectionType
9276    :param routing_weight: The routing weight.
9277    :type routing_weight: int
9278    :param shared_key: The IPSec shared key.
9279    :type shared_key: str
9280    :ivar connection_status: Virtual network Gateway connection status. Possible values are
9281     'Unknown', 'Connecting', 'Connected' and 'NotConnected'. Possible values include: "Unknown",
9282     "Connecting", "Connected", "NotConnected".
9283    :vartype connection_status: str or
9284     ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewayConnectionStatus
9285    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
9286    :vartype tunnel_connection_status:
9287     list[~azure.mgmt.network.v2018_01_01.models.TunnelConnectionHealth]
9288    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
9289    :vartype egress_bytes_transferred: long
9290    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
9291    :vartype ingress_bytes_transferred: long
9292    :param peer: The reference to peerings resource.
9293    :type peer: ~azure.mgmt.network.v2018_01_01.models.SubResource
9294    :param enable_bgp: EnableBgp flag.
9295    :type enable_bgp: bool
9296    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
9297    :type use_policy_based_traffic_selectors: bool
9298    :param ipsec_policies: The IPSec Policies to be considered by this connection.
9299    :type ipsec_policies: list[~azure.mgmt.network.v2018_01_01.models.IpsecPolicy]
9300    :param resource_guid: The resource GUID property of the VirtualNetworkGatewayConnection
9301     resource.
9302    :type resource_guid: str
9303    :ivar provisioning_state: The provisioning state of the VirtualNetworkGatewayConnection
9304     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
9305    :vartype provisioning_state: str
9306    """
9307
9308    _validation = {
9309        'name': {'readonly': True},
9310        'type': {'readonly': True},
9311        'virtual_network_gateway1': {'required': True},
9312        'connection_type': {'required': True},
9313        'connection_status': {'readonly': True},
9314        'tunnel_connection_status': {'readonly': True},
9315        'egress_bytes_transferred': {'readonly': True},
9316        'ingress_bytes_transferred': {'readonly': True},
9317        'provisioning_state': {'readonly': True},
9318    }
9319
9320    _attribute_map = {
9321        'id': {'key': 'id', 'type': 'str'},
9322        'name': {'key': 'name', 'type': 'str'},
9323        'type': {'key': 'type', 'type': 'str'},
9324        'location': {'key': 'location', 'type': 'str'},
9325        'tags': {'key': 'tags', 'type': '{str}'},
9326        'etag': {'key': 'etag', 'type': 'str'},
9327        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
9328        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkGateway'},
9329        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkGateway'},
9330        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'LocalNetworkGateway'},
9331        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
9332        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
9333        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
9334        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
9335        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
9336        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
9337        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
9338        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
9339        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
9340        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
9341        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
9342        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
9343        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9344    }
9345
9346    def __init__(
9347        self,
9348        *,
9349        virtual_network_gateway1: "VirtualNetworkGateway",
9350        connection_type: Union[str, "VirtualNetworkGatewayConnectionType"],
9351        id: Optional[str] = None,
9352        location: Optional[str] = None,
9353        tags: Optional[Dict[str, str]] = None,
9354        etag: Optional[str] = None,
9355        authorization_key: Optional[str] = None,
9356        virtual_network_gateway2: Optional["VirtualNetworkGateway"] = None,
9357        local_network_gateway2: Optional["LocalNetworkGateway"] = None,
9358        routing_weight: Optional[int] = None,
9359        shared_key: Optional[str] = None,
9360        peer: Optional["SubResource"] = None,
9361        enable_bgp: Optional[bool] = None,
9362        use_policy_based_traffic_selectors: Optional[bool] = None,
9363        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
9364        resource_guid: Optional[str] = None,
9365        **kwargs
9366    ):
9367        super(VirtualNetworkGatewayConnection, self).__init__(id=id, location=location, tags=tags, **kwargs)
9368        self.etag = etag
9369        self.authorization_key = authorization_key
9370        self.virtual_network_gateway1 = virtual_network_gateway1
9371        self.virtual_network_gateway2 = virtual_network_gateway2
9372        self.local_network_gateway2 = local_network_gateway2
9373        self.connection_type = connection_type
9374        self.routing_weight = routing_weight
9375        self.shared_key = shared_key
9376        self.connection_status = None
9377        self.tunnel_connection_status = None
9378        self.egress_bytes_transferred = None
9379        self.ingress_bytes_transferred = None
9380        self.peer = peer
9381        self.enable_bgp = enable_bgp
9382        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
9383        self.ipsec_policies = ipsec_policies
9384        self.resource_guid = resource_guid
9385        self.provisioning_state = None
9386
9387
9388class VirtualNetworkGatewayConnectionListEntity(Resource):
9389    """A common class for general resource information.
9390
9391    Variables are only populated by the server, and will be ignored when sending a request.
9392
9393    All required parameters must be populated in order to send to Azure.
9394
9395    :param id: Resource ID.
9396    :type id: str
9397    :ivar name: Resource name.
9398    :vartype name: str
9399    :ivar type: Resource type.
9400    :vartype type: str
9401    :param location: Resource location.
9402    :type location: str
9403    :param tags: A set of tags. Resource tags.
9404    :type tags: dict[str, str]
9405    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
9406    :type etag: str
9407    :param authorization_key: The authorizationKey.
9408    :type authorization_key: str
9409    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
9410    :type virtual_network_gateway1:
9411     ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkConnectionGatewayReference
9412    :param virtual_network_gateway2: The reference to virtual network gateway resource.
9413    :type virtual_network_gateway2:
9414     ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkConnectionGatewayReference
9415    :param local_network_gateway2: The reference to local network gateway resource.
9416    :type local_network_gateway2:
9417     ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkConnectionGatewayReference
9418    :param connection_type: Required. Gateway connection type. Possible values are:
9419     'IPsec','Vnet2Vnet','ExpressRoute', and 'VPNClient. Possible values include: "IPsec",
9420     "Vnet2Vnet", "ExpressRoute", "VPNClient".
9421    :type connection_type: str or
9422     ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewayConnectionType
9423    :param routing_weight: The routing weight.
9424    :type routing_weight: int
9425    :param shared_key: The IPSec shared key.
9426    :type shared_key: str
9427    :ivar connection_status: Virtual network Gateway connection status. Possible values are
9428     'Unknown', 'Connecting', 'Connected' and 'NotConnected'. Possible values include: "Unknown",
9429     "Connecting", "Connected", "NotConnected".
9430    :vartype connection_status: str or
9431     ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewayConnectionStatus
9432    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
9433    :vartype tunnel_connection_status:
9434     list[~azure.mgmt.network.v2018_01_01.models.TunnelConnectionHealth]
9435    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
9436    :vartype egress_bytes_transferred: long
9437    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
9438    :vartype ingress_bytes_transferred: long
9439    :param peer: The reference to peerings resource.
9440    :type peer: ~azure.mgmt.network.v2018_01_01.models.SubResource
9441    :param enable_bgp: EnableBgp flag.
9442    :type enable_bgp: bool
9443    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
9444    :type use_policy_based_traffic_selectors: bool
9445    :param ipsec_policies: The IPSec Policies to be considered by this connection.
9446    :type ipsec_policies: list[~azure.mgmt.network.v2018_01_01.models.IpsecPolicy]
9447    :param resource_guid: The resource GUID property of the VirtualNetworkGatewayConnection
9448     resource.
9449    :type resource_guid: str
9450    :ivar provisioning_state: The provisioning state of the VirtualNetworkGatewayConnection
9451     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
9452    :vartype provisioning_state: str
9453    """
9454
9455    _validation = {
9456        'name': {'readonly': True},
9457        'type': {'readonly': True},
9458        'virtual_network_gateway1': {'required': True},
9459        'connection_type': {'required': True},
9460        'connection_status': {'readonly': True},
9461        'tunnel_connection_status': {'readonly': True},
9462        'egress_bytes_transferred': {'readonly': True},
9463        'ingress_bytes_transferred': {'readonly': True},
9464        'provisioning_state': {'readonly': True},
9465    }
9466
9467    _attribute_map = {
9468        'id': {'key': 'id', 'type': 'str'},
9469        'name': {'key': 'name', 'type': 'str'},
9470        'type': {'key': 'type', 'type': 'str'},
9471        'location': {'key': 'location', 'type': 'str'},
9472        'tags': {'key': 'tags', 'type': '{str}'},
9473        'etag': {'key': 'etag', 'type': 'str'},
9474        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
9475        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkConnectionGatewayReference'},
9476        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
9477        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
9478        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
9479        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
9480        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
9481        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
9482        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
9483        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
9484        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
9485        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
9486        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
9487        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
9488        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
9489        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
9490        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9491    }
9492
9493    def __init__(
9494        self,
9495        *,
9496        virtual_network_gateway1: "VirtualNetworkConnectionGatewayReference",
9497        connection_type: Union[str, "VirtualNetworkGatewayConnectionType"],
9498        id: Optional[str] = None,
9499        location: Optional[str] = None,
9500        tags: Optional[Dict[str, str]] = None,
9501        etag: Optional[str] = None,
9502        authorization_key: Optional[str] = None,
9503        virtual_network_gateway2: Optional["VirtualNetworkConnectionGatewayReference"] = None,
9504        local_network_gateway2: Optional["VirtualNetworkConnectionGatewayReference"] = None,
9505        routing_weight: Optional[int] = None,
9506        shared_key: Optional[str] = None,
9507        peer: Optional["SubResource"] = None,
9508        enable_bgp: Optional[bool] = None,
9509        use_policy_based_traffic_selectors: Optional[bool] = None,
9510        ipsec_policies: Optional[List["IpsecPolicy"]] = None,
9511        resource_guid: Optional[str] = None,
9512        **kwargs
9513    ):
9514        super(VirtualNetworkGatewayConnectionListEntity, self).__init__(id=id, location=location, tags=tags, **kwargs)
9515        self.etag = etag
9516        self.authorization_key = authorization_key
9517        self.virtual_network_gateway1 = virtual_network_gateway1
9518        self.virtual_network_gateway2 = virtual_network_gateway2
9519        self.local_network_gateway2 = local_network_gateway2
9520        self.connection_type = connection_type
9521        self.routing_weight = routing_weight
9522        self.shared_key = shared_key
9523        self.connection_status = None
9524        self.tunnel_connection_status = None
9525        self.egress_bytes_transferred = None
9526        self.ingress_bytes_transferred = None
9527        self.peer = peer
9528        self.enable_bgp = enable_bgp
9529        self.use_policy_based_traffic_selectors = use_policy_based_traffic_selectors
9530        self.ipsec_policies = ipsec_policies
9531        self.resource_guid = resource_guid
9532        self.provisioning_state = None
9533
9534
9535class VirtualNetworkGatewayConnectionListResult(msrest.serialization.Model):
9536    """Response for the ListVirtualNetworkGatewayConnections API service call.
9537
9538    Variables are only populated by the server, and will be ignored when sending a request.
9539
9540    :param value: Gets a list of VirtualNetworkGatewayConnection resources that exists in a
9541     resource group.
9542    :type value: list[~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewayConnection]
9543    :ivar next_link: The URL to get the next set of results.
9544    :vartype next_link: str
9545    """
9546
9547    _validation = {
9548        'next_link': {'readonly': True},
9549    }
9550
9551    _attribute_map = {
9552        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnection]'},
9553        'next_link': {'key': 'nextLink', 'type': 'str'},
9554    }
9555
9556    def __init__(
9557        self,
9558        *,
9559        value: Optional[List["VirtualNetworkGatewayConnection"]] = None,
9560        **kwargs
9561    ):
9562        super(VirtualNetworkGatewayConnectionListResult, self).__init__(**kwargs)
9563        self.value = value
9564        self.next_link = None
9565
9566
9567class VirtualNetworkGatewayIPConfiguration(SubResource):
9568    """IP configuration for virtual network gateway.
9569
9570    Variables are only populated by the server, and will be ignored when sending a request.
9571
9572    :param id: Resource ID.
9573    :type id: str
9574    :param name: The name of the resource that is unique within a resource group. This name can be
9575     used to access the resource.
9576    :type name: str
9577    :param etag: A unique read-only string that changes whenever the resource is updated.
9578    :type etag: str
9579    :param private_ip_allocation_method: The private IP allocation method. Possible values are:
9580     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
9581    :type private_ip_allocation_method: str or
9582     ~azure.mgmt.network.v2018_01_01.models.IPAllocationMethod
9583    :param subnet: The reference of the subnet resource.
9584    :type subnet: ~azure.mgmt.network.v2018_01_01.models.SubResource
9585    :param public_ip_address: The reference of the public IP resource.
9586    :type public_ip_address: ~azure.mgmt.network.v2018_01_01.models.SubResource
9587    :ivar provisioning_state: The provisioning state of the public IP resource. Possible values
9588     are: 'Updating', 'Deleting', and 'Failed'.
9589    :vartype provisioning_state: str
9590    """
9591
9592    _validation = {
9593        'provisioning_state': {'readonly': True},
9594    }
9595
9596    _attribute_map = {
9597        'id': {'key': 'id', 'type': 'str'},
9598        'name': {'key': 'name', 'type': 'str'},
9599        'etag': {'key': 'etag', 'type': 'str'},
9600        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
9601        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
9602        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
9603        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9604    }
9605
9606    def __init__(
9607        self,
9608        *,
9609        id: Optional[str] = None,
9610        name: Optional[str] = None,
9611        etag: Optional[str] = None,
9612        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
9613        subnet: Optional["SubResource"] = None,
9614        public_ip_address: Optional["SubResource"] = None,
9615        **kwargs
9616    ):
9617        super(VirtualNetworkGatewayIPConfiguration, self).__init__(id=id, **kwargs)
9618        self.name = name
9619        self.etag = etag
9620        self.private_ip_allocation_method = private_ip_allocation_method
9621        self.subnet = subnet
9622        self.public_ip_address = public_ip_address
9623        self.provisioning_state = None
9624
9625
9626class VirtualNetworkGatewayListConnectionsResult(msrest.serialization.Model):
9627    """Response for the VirtualNetworkGatewayListConnections API service call.
9628
9629    Variables are only populated by the server, and will be ignored when sending a request.
9630
9631    :param value: Gets a list of VirtualNetworkGatewayConnection resources that exists in a
9632     resource group.
9633    :type value:
9634     list[~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewayConnectionListEntity]
9635    :ivar next_link: The URL to get the next set of results.
9636    :vartype next_link: str
9637    """
9638
9639    _validation = {
9640        'next_link': {'readonly': True},
9641    }
9642
9643    _attribute_map = {
9644        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnectionListEntity]'},
9645        'next_link': {'key': 'nextLink', 'type': 'str'},
9646    }
9647
9648    def __init__(
9649        self,
9650        *,
9651        value: Optional[List["VirtualNetworkGatewayConnectionListEntity"]] = None,
9652        **kwargs
9653    ):
9654        super(VirtualNetworkGatewayListConnectionsResult, self).__init__(**kwargs)
9655        self.value = value
9656        self.next_link = None
9657
9658
9659class VirtualNetworkGatewayListResult(msrest.serialization.Model):
9660    """Response for the ListVirtualNetworkGateways API service call.
9661
9662    Variables are only populated by the server, and will be ignored when sending a request.
9663
9664    :param value: Gets a list of VirtualNetworkGateway resources that exists in a resource group.
9665    :type value: list[~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGateway]
9666    :ivar next_link: The URL to get the next set of results.
9667    :vartype next_link: str
9668    """
9669
9670    _validation = {
9671        'next_link': {'readonly': True},
9672    }
9673
9674    _attribute_map = {
9675        'value': {'key': 'value', 'type': '[VirtualNetworkGateway]'},
9676        'next_link': {'key': 'nextLink', 'type': 'str'},
9677    }
9678
9679    def __init__(
9680        self,
9681        *,
9682        value: Optional[List["VirtualNetworkGateway"]] = None,
9683        **kwargs
9684    ):
9685        super(VirtualNetworkGatewayListResult, self).__init__(**kwargs)
9686        self.value = value
9687        self.next_link = None
9688
9689
9690class VirtualNetworkGatewaySku(msrest.serialization.Model):
9691    """VirtualNetworkGatewaySku details.
9692
9693    :param name: Gateway SKU name. Possible values include: "Basic", "HighPerformance", "Standard",
9694     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3".
9695    :type name: str or ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewaySkuName
9696    :param tier: Gateway SKU tier. Possible values include: "Basic", "HighPerformance", "Standard",
9697     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3".
9698    :type tier: str or ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkGatewaySkuTier
9699    :param capacity: The capacity.
9700    :type capacity: int
9701    """
9702
9703    _attribute_map = {
9704        'name': {'key': 'name', 'type': 'str'},
9705        'tier': {'key': 'tier', 'type': 'str'},
9706        'capacity': {'key': 'capacity', 'type': 'int'},
9707    }
9708
9709    def __init__(
9710        self,
9711        *,
9712        name: Optional[Union[str, "VirtualNetworkGatewaySkuName"]] = None,
9713        tier: Optional[Union[str, "VirtualNetworkGatewaySkuTier"]] = None,
9714        capacity: Optional[int] = None,
9715        **kwargs
9716    ):
9717        super(VirtualNetworkGatewaySku, self).__init__(**kwargs)
9718        self.name = name
9719        self.tier = tier
9720        self.capacity = capacity
9721
9722
9723class VirtualNetworkListResult(msrest.serialization.Model):
9724    """Response for the ListVirtualNetworks API service call.
9725
9726    :param value: Gets a list of VirtualNetwork resources in a resource group.
9727    :type value: list[~azure.mgmt.network.v2018_01_01.models.VirtualNetwork]
9728    :param next_link: The URL to get the next set of results.
9729    :type next_link: str
9730    """
9731
9732    _attribute_map = {
9733        'value': {'key': 'value', 'type': '[VirtualNetwork]'},
9734        'next_link': {'key': 'nextLink', 'type': 'str'},
9735    }
9736
9737    def __init__(
9738        self,
9739        *,
9740        value: Optional[List["VirtualNetwork"]] = None,
9741        next_link: Optional[str] = None,
9742        **kwargs
9743    ):
9744        super(VirtualNetworkListResult, self).__init__(**kwargs)
9745        self.value = value
9746        self.next_link = next_link
9747
9748
9749class VirtualNetworkListUsageResult(msrest.serialization.Model):
9750    """Response for the virtual networks GetUsage API service call.
9751
9752    Variables are only populated by the server, and will be ignored when sending a request.
9753
9754    :ivar value: VirtualNetwork usage stats.
9755    :vartype value: list[~azure.mgmt.network.v2018_01_01.models.VirtualNetworkUsage]
9756    :param next_link: The URL to get the next set of results.
9757    :type next_link: str
9758    """
9759
9760    _validation = {
9761        'value': {'readonly': True},
9762    }
9763
9764    _attribute_map = {
9765        'value': {'key': 'value', 'type': '[VirtualNetworkUsage]'},
9766        'next_link': {'key': 'nextLink', 'type': 'str'},
9767    }
9768
9769    def __init__(
9770        self,
9771        *,
9772        next_link: Optional[str] = None,
9773        **kwargs
9774    ):
9775        super(VirtualNetworkListUsageResult, self).__init__(**kwargs)
9776        self.value = None
9777        self.next_link = next_link
9778
9779
9780class VirtualNetworkPeering(SubResource):
9781    """Peerings in a virtual network resource.
9782
9783    :param id: Resource ID.
9784    :type id: str
9785    :param name: The name of the resource that is unique within a resource group. This name can be
9786     used to access the resource.
9787    :type name: str
9788    :param etag: A unique read-only string that changes whenever the resource is updated.
9789    :type etag: str
9790    :param allow_virtual_network_access: Whether the VMs in the linked virtual network space would
9791     be able to access all the VMs in local Virtual network space.
9792    :type allow_virtual_network_access: bool
9793    :param allow_forwarded_traffic: Whether the forwarded traffic from the VMs in the remote
9794     virtual network will be allowed/disallowed.
9795    :type allow_forwarded_traffic: bool
9796    :param allow_gateway_transit: If gateway links can be used in remote virtual networking to link
9797     to this virtual network.
9798    :type allow_gateway_transit: bool
9799    :param use_remote_gateways: If remote gateways can be used on this virtual network. If the flag
9800     is set to true, and allowGatewayTransit on remote peering is also true, virtual network will
9801     use gateways of remote virtual network for transit. Only one peering can have this flag set to
9802     true. This flag cannot be set if virtual network already has a gateway.
9803    :type use_remote_gateways: bool
9804    :param remote_virtual_network: The reference of the remote virtual network. The remote virtual
9805     network can be in the same or different region (preview). See here to register for the preview
9806     and learn more
9807     (https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-create-peering).
9808    :type remote_virtual_network: ~azure.mgmt.network.v2018_01_01.models.SubResource
9809    :param remote_address_space: The reference of the remote virtual network address space.
9810    :type remote_address_space: ~azure.mgmt.network.v2018_01_01.models.AddressSpace
9811    :param peering_state: The status of the virtual network peering. Possible values are
9812     'Initiated', 'Connected', and 'Disconnected'. Possible values include: "Initiated",
9813     "Connected", "Disconnected".
9814    :type peering_state: str or ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkPeeringState
9815    :param provisioning_state: The provisioning state of the resource.
9816    :type provisioning_state: str
9817    """
9818
9819    _attribute_map = {
9820        'id': {'key': 'id', 'type': 'str'},
9821        'name': {'key': 'name', 'type': 'str'},
9822        'etag': {'key': 'etag', 'type': 'str'},
9823        'allow_virtual_network_access': {'key': 'properties.allowVirtualNetworkAccess', 'type': 'bool'},
9824        'allow_forwarded_traffic': {'key': 'properties.allowForwardedTraffic', 'type': 'bool'},
9825        'allow_gateway_transit': {'key': 'properties.allowGatewayTransit', 'type': 'bool'},
9826        'use_remote_gateways': {'key': 'properties.useRemoteGateways', 'type': 'bool'},
9827        'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'},
9828        'remote_address_space': {'key': 'properties.remoteAddressSpace', 'type': 'AddressSpace'},
9829        'peering_state': {'key': 'properties.peeringState', 'type': 'str'},
9830        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9831    }
9832
9833    def __init__(
9834        self,
9835        *,
9836        id: Optional[str] = None,
9837        name: Optional[str] = None,
9838        etag: Optional[str] = None,
9839        allow_virtual_network_access: Optional[bool] = None,
9840        allow_forwarded_traffic: Optional[bool] = None,
9841        allow_gateway_transit: Optional[bool] = None,
9842        use_remote_gateways: Optional[bool] = None,
9843        remote_virtual_network: Optional["SubResource"] = None,
9844        remote_address_space: Optional["AddressSpace"] = None,
9845        peering_state: Optional[Union[str, "VirtualNetworkPeeringState"]] = None,
9846        provisioning_state: Optional[str] = None,
9847        **kwargs
9848    ):
9849        super(VirtualNetworkPeering, self).__init__(id=id, **kwargs)
9850        self.name = name
9851        self.etag = etag
9852        self.allow_virtual_network_access = allow_virtual_network_access
9853        self.allow_forwarded_traffic = allow_forwarded_traffic
9854        self.allow_gateway_transit = allow_gateway_transit
9855        self.use_remote_gateways = use_remote_gateways
9856        self.remote_virtual_network = remote_virtual_network
9857        self.remote_address_space = remote_address_space
9858        self.peering_state = peering_state
9859        self.provisioning_state = provisioning_state
9860
9861
9862class VirtualNetworkPeeringListResult(msrest.serialization.Model):
9863    """Response for ListSubnets API service call. Retrieves all subnets that belong to a virtual network.
9864
9865    :param value: The peerings in a virtual network.
9866    :type value: list[~azure.mgmt.network.v2018_01_01.models.VirtualNetworkPeering]
9867    :param next_link: The URL to get the next set of results.
9868    :type next_link: str
9869    """
9870
9871    _attribute_map = {
9872        'value': {'key': 'value', 'type': '[VirtualNetworkPeering]'},
9873        'next_link': {'key': 'nextLink', 'type': 'str'},
9874    }
9875
9876    def __init__(
9877        self,
9878        *,
9879        value: Optional[List["VirtualNetworkPeering"]] = None,
9880        next_link: Optional[str] = None,
9881        **kwargs
9882    ):
9883        super(VirtualNetworkPeeringListResult, self).__init__(**kwargs)
9884        self.value = value
9885        self.next_link = next_link
9886
9887
9888class VirtualNetworkUsage(msrest.serialization.Model):
9889    """Usage details for subnet.
9890
9891    Variables are only populated by the server, and will be ignored when sending a request.
9892
9893    :ivar current_value: Indicates number of IPs used from the Subnet.
9894    :vartype current_value: float
9895    :ivar id: Subnet identifier.
9896    :vartype id: str
9897    :ivar limit: Indicates the size of the subnet.
9898    :vartype limit: float
9899    :ivar name: The name containing common and localized value for usage.
9900    :vartype name: ~azure.mgmt.network.v2018_01_01.models.VirtualNetworkUsageName
9901    :ivar unit: Usage units. Returns 'Count'.
9902    :vartype unit: str
9903    """
9904
9905    _validation = {
9906        'current_value': {'readonly': True},
9907        'id': {'readonly': True},
9908        'limit': {'readonly': True},
9909        'name': {'readonly': True},
9910        'unit': {'readonly': True},
9911    }
9912
9913    _attribute_map = {
9914        'current_value': {'key': 'currentValue', 'type': 'float'},
9915        'id': {'key': 'id', 'type': 'str'},
9916        'limit': {'key': 'limit', 'type': 'float'},
9917        'name': {'key': 'name', 'type': 'VirtualNetworkUsageName'},
9918        'unit': {'key': 'unit', 'type': 'str'},
9919    }
9920
9921    def __init__(
9922        self,
9923        **kwargs
9924    ):
9925        super(VirtualNetworkUsage, self).__init__(**kwargs)
9926        self.current_value = None
9927        self.id = None
9928        self.limit = None
9929        self.name = None
9930        self.unit = None
9931
9932
9933class VirtualNetworkUsageName(msrest.serialization.Model):
9934    """Usage strings container.
9935
9936    Variables are only populated by the server, and will be ignored when sending a request.
9937
9938    :ivar localized_value: Localized subnet size and usage string.
9939    :vartype localized_value: str
9940    :ivar value: Subnet size and usage string.
9941    :vartype value: str
9942    """
9943
9944    _validation = {
9945        'localized_value': {'readonly': True},
9946        'value': {'readonly': True},
9947    }
9948
9949    _attribute_map = {
9950        'localized_value': {'key': 'localizedValue', 'type': 'str'},
9951        'value': {'key': 'value', 'type': 'str'},
9952    }
9953
9954    def __init__(
9955        self,
9956        **kwargs
9957    ):
9958        super(VirtualNetworkUsageName, self).__init__(**kwargs)
9959        self.localized_value = None
9960        self.value = None
9961
9962
9963class VpnClientConfiguration(msrest.serialization.Model):
9964    """VpnClientConfiguration for P2S client.
9965
9966    :param vpn_client_address_pool: The reference of the address space resource which represents
9967     Address space for P2S VpnClient.
9968    :type vpn_client_address_pool: ~azure.mgmt.network.v2018_01_01.models.AddressSpace
9969    :param vpn_client_root_certificates: VpnClientRootCertificate for virtual network gateway.
9970    :type vpn_client_root_certificates:
9971     list[~azure.mgmt.network.v2018_01_01.models.VpnClientRootCertificate]
9972    :param vpn_client_revoked_certificates: VpnClientRevokedCertificate for Virtual network
9973     gateway.
9974    :type vpn_client_revoked_certificates:
9975     list[~azure.mgmt.network.v2018_01_01.models.VpnClientRevokedCertificate]
9976    :param vpn_client_protocols: VpnClientProtocols for Virtual network gateway.
9977    :type vpn_client_protocols: list[str or
9978     ~azure.mgmt.network.v2018_01_01.models.VpnClientProtocol]
9979    :param radius_server_address: The radius server address property of the VirtualNetworkGateway
9980     resource for vpn client connection.
9981    :type radius_server_address: str
9982    :param radius_server_secret: The radius secret property of the VirtualNetworkGateway resource
9983     for vpn client connection.
9984    :type radius_server_secret: str
9985    """
9986
9987    _attribute_map = {
9988        'vpn_client_address_pool': {'key': 'vpnClientAddressPool', 'type': 'AddressSpace'},
9989        'vpn_client_root_certificates': {'key': 'vpnClientRootCertificates', 'type': '[VpnClientRootCertificate]'},
9990        'vpn_client_revoked_certificates': {'key': 'vpnClientRevokedCertificates', 'type': '[VpnClientRevokedCertificate]'},
9991        'vpn_client_protocols': {'key': 'vpnClientProtocols', 'type': '[str]'},
9992        'radius_server_address': {'key': 'radiusServerAddress', 'type': 'str'},
9993        'radius_server_secret': {'key': 'radiusServerSecret', 'type': 'str'},
9994    }
9995
9996    def __init__(
9997        self,
9998        *,
9999        vpn_client_address_pool: Optional["AddressSpace"] = None,
10000        vpn_client_root_certificates: Optional[List["VpnClientRootCertificate"]] = None,
10001        vpn_client_revoked_certificates: Optional[List["VpnClientRevokedCertificate"]] = None,
10002        vpn_client_protocols: Optional[List[Union[str, "VpnClientProtocol"]]] = None,
10003        radius_server_address: Optional[str] = None,
10004        radius_server_secret: Optional[str] = None,
10005        **kwargs
10006    ):
10007        super(VpnClientConfiguration, self).__init__(**kwargs)
10008        self.vpn_client_address_pool = vpn_client_address_pool
10009        self.vpn_client_root_certificates = vpn_client_root_certificates
10010        self.vpn_client_revoked_certificates = vpn_client_revoked_certificates
10011        self.vpn_client_protocols = vpn_client_protocols
10012        self.radius_server_address = radius_server_address
10013        self.radius_server_secret = radius_server_secret
10014
10015
10016class VpnClientParameters(msrest.serialization.Model):
10017    """Vpn Client Parameters for package generation.
10018
10019    :param processor_architecture: VPN client Processor Architecture. Possible values are: 'AMD64'
10020     and 'X86'. Possible values include: "Amd64", "X86".
10021    :type processor_architecture: str or
10022     ~azure.mgmt.network.v2018_01_01.models.ProcessorArchitecture
10023    :param authentication_method: VPN client Authentication Method. Possible values are: 'EAPTLS'
10024     and 'EAPMSCHAPv2'. Possible values include: "EAPTLS", "EAPMSCHAPv2".
10025    :type authentication_method: str or ~azure.mgmt.network.v2018_01_01.models.AuthenticationMethod
10026    :param radius_server_auth_certificate: The public certificate data for the radius server
10027     authentication certificate as a Base-64 encoded string. Required only if external radius
10028     authentication has been configured with EAPTLS authentication.
10029    :type radius_server_auth_certificate: str
10030    :param client_root_certificates: A list of client root certificates public certificate data
10031     encoded as Base-64 strings. Optional parameter for external radius based authentication with
10032     EAPTLS.
10033    :type client_root_certificates: list[str]
10034    """
10035
10036    _attribute_map = {
10037        'processor_architecture': {'key': 'processorArchitecture', 'type': 'str'},
10038        'authentication_method': {'key': 'authenticationMethod', 'type': 'str'},
10039        'radius_server_auth_certificate': {'key': 'radiusServerAuthCertificate', 'type': 'str'},
10040        'client_root_certificates': {'key': 'clientRootCertificates', 'type': '[str]'},
10041    }
10042
10043    def __init__(
10044        self,
10045        *,
10046        processor_architecture: Optional[Union[str, "ProcessorArchitecture"]] = None,
10047        authentication_method: Optional[Union[str, "AuthenticationMethod"]] = None,
10048        radius_server_auth_certificate: Optional[str] = None,
10049        client_root_certificates: Optional[List[str]] = None,
10050        **kwargs
10051    ):
10052        super(VpnClientParameters, self).__init__(**kwargs)
10053        self.processor_architecture = processor_architecture
10054        self.authentication_method = authentication_method
10055        self.radius_server_auth_certificate = radius_server_auth_certificate
10056        self.client_root_certificates = client_root_certificates
10057
10058
10059class VpnClientRevokedCertificate(SubResource):
10060    """VPN client revoked certificate of virtual network gateway.
10061
10062    Variables are only populated by the server, and will be ignored when sending a request.
10063
10064    :param id: Resource ID.
10065    :type id: str
10066    :param name: The name of the resource that is unique within a resource group. This name can be
10067     used to access the resource.
10068    :type name: str
10069    :param etag: A unique read-only string that changes whenever the resource is updated.
10070    :type etag: str
10071    :param thumbprint: The revoked VPN client certificate thumbprint.
10072    :type thumbprint: str
10073    :ivar provisioning_state: The provisioning state of the VPN client revoked certificate
10074     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
10075    :vartype provisioning_state: str
10076    """
10077
10078    _validation = {
10079        'provisioning_state': {'readonly': True},
10080    }
10081
10082    _attribute_map = {
10083        'id': {'key': 'id', 'type': 'str'},
10084        'name': {'key': 'name', 'type': 'str'},
10085        'etag': {'key': 'etag', 'type': 'str'},
10086        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
10087        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10088    }
10089
10090    def __init__(
10091        self,
10092        *,
10093        id: Optional[str] = None,
10094        name: Optional[str] = None,
10095        etag: Optional[str] = None,
10096        thumbprint: Optional[str] = None,
10097        **kwargs
10098    ):
10099        super(VpnClientRevokedCertificate, self).__init__(id=id, **kwargs)
10100        self.name = name
10101        self.etag = etag
10102        self.thumbprint = thumbprint
10103        self.provisioning_state = None
10104
10105
10106class VpnClientRootCertificate(SubResource):
10107    """VPN client root certificate of virtual network gateway.
10108
10109    Variables are only populated by the server, and will be ignored when sending a request.
10110
10111    All required parameters must be populated in order to send to Azure.
10112
10113    :param id: Resource ID.
10114    :type id: str
10115    :param name: The name of the resource that is unique within a resource group. This name can be
10116     used to access the resource.
10117    :type name: str
10118    :param etag: A unique read-only string that changes whenever the resource is updated.
10119    :type etag: str
10120    :param public_cert_data: Required. The certificate public data.
10121    :type public_cert_data: str
10122    :ivar provisioning_state: The provisioning state of the VPN client root certificate resource.
10123     Possible values are: 'Updating', 'Deleting', and 'Failed'.
10124    :vartype provisioning_state: str
10125    """
10126
10127    _validation = {
10128        'public_cert_data': {'required': True},
10129        'provisioning_state': {'readonly': True},
10130    }
10131
10132    _attribute_map = {
10133        'id': {'key': 'id', 'type': 'str'},
10134        'name': {'key': 'name', 'type': 'str'},
10135        'etag': {'key': 'etag', 'type': 'str'},
10136        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
10137        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10138    }
10139
10140    def __init__(
10141        self,
10142        *,
10143        public_cert_data: str,
10144        id: Optional[str] = None,
10145        name: Optional[str] = None,
10146        etag: Optional[str] = None,
10147        **kwargs
10148    ):
10149        super(VpnClientRootCertificate, self).__init__(id=id, **kwargs)
10150        self.name = name
10151        self.etag = etag
10152        self.public_cert_data = public_cert_data
10153        self.provisioning_state = None
10154
10155
10156class VpnDeviceScriptParameters(msrest.serialization.Model):
10157    """Vpn device configuration script generation parameters.
10158
10159    :param vendor: The vendor for the vpn device.
10160    :type vendor: str
10161    :param device_family: The device family for the vpn device.
10162    :type device_family: str
10163    :param firmware_version: The firmware version for the vpn device.
10164    :type firmware_version: str
10165    """
10166
10167    _attribute_map = {
10168        'vendor': {'key': 'vendor', 'type': 'str'},
10169        'device_family': {'key': 'deviceFamily', 'type': 'str'},
10170        'firmware_version': {'key': 'firmwareVersion', 'type': 'str'},
10171    }
10172
10173    def __init__(
10174        self,
10175        *,
10176        vendor: Optional[str] = None,
10177        device_family: Optional[str] = None,
10178        firmware_version: Optional[str] = None,
10179        **kwargs
10180    ):
10181        super(VpnDeviceScriptParameters, self).__init__(**kwargs)
10182        self.vendor = vendor
10183        self.device_family = device_family
10184        self.firmware_version = firmware_version
10185