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
9from azure.core.exceptions import HttpResponseError
10import msrest.serialization
11
12
13class AddressSpace(msrest.serialization.Model):
14    """AddressSpace contains an array of IP address ranges that can be used by subnets of the virtual network.
15
16    :param address_prefixes: A list of address blocks reserved for this virtual network in CIDR
17     notation.
18    :type address_prefixes: list[str]
19    """
20
21    _attribute_map = {
22        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
23    }
24
25    def __init__(
26        self,
27        **kwargs
28    ):
29        super(AddressSpace, self).__init__(**kwargs)
30        self.address_prefixes = kwargs.get('address_prefixes', None)
31
32
33class Resource(msrest.serialization.Model):
34    """Common resource representation.
35
36    Variables are only populated by the server, and will be ignored when sending a request.
37
38    :param id: Resource ID.
39    :type id: str
40    :ivar name: Resource name.
41    :vartype name: str
42    :ivar type: Resource type.
43    :vartype type: str
44    :param location: Resource location.
45    :type location: str
46    :param tags: A set of tags. Resource tags.
47    :type tags: dict[str, str]
48    """
49
50    _validation = {
51        'name': {'readonly': True},
52        'type': {'readonly': True},
53    }
54
55    _attribute_map = {
56        'id': {'key': 'id', 'type': 'str'},
57        'name': {'key': 'name', 'type': 'str'},
58        'type': {'key': 'type', 'type': 'str'},
59        'location': {'key': 'location', 'type': 'str'},
60        'tags': {'key': 'tags', 'type': '{str}'},
61    }
62
63    def __init__(
64        self,
65        **kwargs
66    ):
67        super(Resource, self).__init__(**kwargs)
68        self.id = kwargs.get('id', None)
69        self.name = None
70        self.type = None
71        self.location = kwargs.get('location', None)
72        self.tags = kwargs.get('tags', None)
73
74
75class ApplicationGateway(Resource):
76    """Application gateway resource.
77
78    Variables are only populated by the server, and will be ignored when sending a request.
79
80    :param id: Resource ID.
81    :type id: str
82    :ivar name: Resource name.
83    :vartype name: str
84    :ivar type: Resource type.
85    :vartype type: str
86    :param location: Resource location.
87    :type location: str
88    :param tags: A set of tags. Resource tags.
89    :type tags: dict[str, str]
90    :param etag: A unique read-only string that changes whenever the resource is updated.
91    :type etag: str
92    :param zones: A list of availability zones denoting where the resource needs to come from.
93    :type zones: list[str]
94    :param sku: SKU of the application gateway resource.
95    :type sku: ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySku
96    :param ssl_policy: SSL policy of the application gateway resource.
97    :type ssl_policy: ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslPolicy
98    :ivar operational_state: Operational state of the application gateway resource. Possible values
99     include: "Stopped", "Starting", "Running", "Stopping".
100    :vartype operational_state: str or
101     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayOperationalState
102    :param gateway_ip_configurations: Subnets of application the gateway resource.
103    :type gateway_ip_configurations:
104     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayIPConfiguration]
105    :param authentication_certificates: Authentication certificates of the application gateway
106     resource.
107    :type authentication_certificates:
108     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayAuthenticationCertificate]
109    :param ssl_certificates: SSL certificates of the application gateway resource.
110    :type ssl_certificates:
111     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslCertificate]
112    :param frontend_ip_configurations: Frontend IP addresses of the application gateway resource.
113    :type frontend_ip_configurations:
114     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayFrontendIPConfiguration]
115    :param frontend_ports: Frontend ports of the application gateway resource.
116    :type frontend_ports:
117     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayFrontendPort]
118    :param probes: Probes of the application gateway resource.
119    :type probes: list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayProbe]
120    :param backend_address_pools: Backend address pool of the application gateway resource.
121    :type backend_address_pools:
122     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayBackendAddressPool]
123    :param backend_http_settings_collection: Backend http settings of the application gateway
124     resource.
125    :type backend_http_settings_collection:
126     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayBackendHttpSettings]
127    :param http_listeners: Http listeners of the application gateway resource.
128    :type http_listeners:
129     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayHttpListener]
130    :param url_path_maps: URL path map of the application gateway resource.
131    :type url_path_maps: list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayUrlPathMap]
132    :param request_routing_rules: Request routing rules of the application gateway resource.
133    :type request_routing_rules:
134     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayRequestRoutingRule]
135    :param redirect_configurations: Redirect configurations of the application gateway resource.
136    :type redirect_configurations:
137     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayRedirectConfiguration]
138    :param web_application_firewall_configuration: Web application firewall configuration.
139    :type web_application_firewall_configuration:
140     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayWebApplicationFirewallConfiguration
141    :param enable_http2: Whether HTTP2 is enabled on the application gateway resource.
142    :type enable_http2: bool
143    :param enable_fips: Whether FIPS is enabled on the application gateway resource.
144    :type enable_fips: bool
145    :param autoscale_configuration: Autoscale Configuration.
146    :type autoscale_configuration:
147     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayAutoscaleConfiguration
148    :param resource_guid: Resource GUID property of the application gateway resource.
149    :type resource_guid: str
150    :param provisioning_state: Provisioning state of the application gateway resource. Possible
151     values are: 'Updating', 'Deleting', and 'Failed'.
152    :type provisioning_state: str
153    """
154
155    _validation = {
156        'name': {'readonly': True},
157        'type': {'readonly': True},
158        'operational_state': {'readonly': True},
159    }
160
161    _attribute_map = {
162        'id': {'key': 'id', 'type': 'str'},
163        'name': {'key': 'name', 'type': 'str'},
164        'type': {'key': 'type', 'type': 'str'},
165        'location': {'key': 'location', 'type': 'str'},
166        'tags': {'key': 'tags', 'type': '{str}'},
167        'etag': {'key': 'etag', 'type': 'str'},
168        'zones': {'key': 'zones', 'type': '[str]'},
169        'sku': {'key': 'properties.sku', 'type': 'ApplicationGatewaySku'},
170        'ssl_policy': {'key': 'properties.sslPolicy', 'type': 'ApplicationGatewaySslPolicy'},
171        'operational_state': {'key': 'properties.operationalState', 'type': 'str'},
172        'gateway_ip_configurations': {'key': 'properties.gatewayIPConfigurations', 'type': '[ApplicationGatewayIPConfiguration]'},
173        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[ApplicationGatewayAuthenticationCertificate]'},
174        'ssl_certificates': {'key': 'properties.sslCertificates', 'type': '[ApplicationGatewaySslCertificate]'},
175        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[ApplicationGatewayFrontendIPConfiguration]'},
176        'frontend_ports': {'key': 'properties.frontendPorts', 'type': '[ApplicationGatewayFrontendPort]'},
177        'probes': {'key': 'properties.probes', 'type': '[ApplicationGatewayProbe]'},
178        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
179        'backend_http_settings_collection': {'key': 'properties.backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHttpSettings]'},
180        'http_listeners': {'key': 'properties.httpListeners', 'type': '[ApplicationGatewayHttpListener]'},
181        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[ApplicationGatewayUrlPathMap]'},
182        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[ApplicationGatewayRequestRoutingRule]'},
183        'redirect_configurations': {'key': 'properties.redirectConfigurations', 'type': '[ApplicationGatewayRedirectConfiguration]'},
184        'web_application_firewall_configuration': {'key': 'properties.webApplicationFirewallConfiguration', 'type': 'ApplicationGatewayWebApplicationFirewallConfiguration'},
185        'enable_http2': {'key': 'properties.enableHttp2', 'type': 'bool'},
186        'enable_fips': {'key': 'properties.enableFips', 'type': 'bool'},
187        'autoscale_configuration': {'key': 'properties.autoscaleConfiguration', 'type': 'ApplicationGatewayAutoscaleConfiguration'},
188        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
189        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
190    }
191
192    def __init__(
193        self,
194        **kwargs
195    ):
196        super(ApplicationGateway, self).__init__(**kwargs)
197        self.etag = kwargs.get('etag', None)
198        self.zones = kwargs.get('zones', None)
199        self.sku = kwargs.get('sku', None)
200        self.ssl_policy = kwargs.get('ssl_policy', None)
201        self.operational_state = None
202        self.gateway_ip_configurations = kwargs.get('gateway_ip_configurations', None)
203        self.authentication_certificates = kwargs.get('authentication_certificates', None)
204        self.ssl_certificates = kwargs.get('ssl_certificates', None)
205        self.frontend_ip_configurations = kwargs.get('frontend_ip_configurations', None)
206        self.frontend_ports = kwargs.get('frontend_ports', None)
207        self.probes = kwargs.get('probes', None)
208        self.backend_address_pools = kwargs.get('backend_address_pools', None)
209        self.backend_http_settings_collection = kwargs.get('backend_http_settings_collection', None)
210        self.http_listeners = kwargs.get('http_listeners', None)
211        self.url_path_maps = kwargs.get('url_path_maps', None)
212        self.request_routing_rules = kwargs.get('request_routing_rules', None)
213        self.redirect_configurations = kwargs.get('redirect_configurations', None)
214        self.web_application_firewall_configuration = kwargs.get('web_application_firewall_configuration', None)
215        self.enable_http2 = kwargs.get('enable_http2', None)
216        self.enable_fips = kwargs.get('enable_fips', None)
217        self.autoscale_configuration = kwargs.get('autoscale_configuration', None)
218        self.resource_guid = kwargs.get('resource_guid', None)
219        self.provisioning_state = kwargs.get('provisioning_state', None)
220
221
222class SubResource(msrest.serialization.Model):
223    """Reference to another subresource.
224
225    :param id: Resource ID.
226    :type id: str
227    """
228
229    _attribute_map = {
230        'id': {'key': 'id', 'type': 'str'},
231    }
232
233    def __init__(
234        self,
235        **kwargs
236    ):
237        super(SubResource, self).__init__(**kwargs)
238        self.id = kwargs.get('id', None)
239
240
241class ApplicationGatewayAuthenticationCertificate(SubResource):
242    """Authentication certificates of an application gateway.
243
244    :param id: Resource ID.
245    :type id: str
246    :param name: Name of the authentication certificate that is unique within an Application
247     Gateway.
248    :type name: str
249    :param etag: A unique read-only string that changes whenever the resource is updated.
250    :type etag: str
251    :param type: Type of the resource.
252    :type type: str
253    :param data: Certificate public data.
254    :type data: str
255    :param provisioning_state: Provisioning state of the authentication certificate resource.
256     Possible values are: 'Updating', 'Deleting', and 'Failed'.
257    :type provisioning_state: str
258    """
259
260    _attribute_map = {
261        'id': {'key': 'id', 'type': 'str'},
262        'name': {'key': 'name', 'type': 'str'},
263        'etag': {'key': 'etag', 'type': 'str'},
264        'type': {'key': 'type', 'type': 'str'},
265        'data': {'key': 'properties.data', 'type': 'str'},
266        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
267    }
268
269    def __init__(
270        self,
271        **kwargs
272    ):
273        super(ApplicationGatewayAuthenticationCertificate, self).__init__(**kwargs)
274        self.name = kwargs.get('name', None)
275        self.etag = kwargs.get('etag', None)
276        self.type = kwargs.get('type', None)
277        self.data = kwargs.get('data', None)
278        self.provisioning_state = kwargs.get('provisioning_state', None)
279
280
281class ApplicationGatewayAutoscaleBounds(msrest.serialization.Model):
282    """Application Gateway autoscale bounds on number of Application Gateway instance.
283
284    All required parameters must be populated in order to send to Azure.
285
286    :param min: Required. Lower bound on number of Application Gateway instances.
287    :type min: int
288    :param max: Required. Upper bound on number of Application Gateway instances.
289    :type max: int
290    """
291
292    _validation = {
293        'min': {'required': True},
294        'max': {'required': True},
295    }
296
297    _attribute_map = {
298        'min': {'key': 'min', 'type': 'int'},
299        'max': {'key': 'max', 'type': 'int'},
300    }
301
302    def __init__(
303        self,
304        **kwargs
305    ):
306        super(ApplicationGatewayAutoscaleBounds, self).__init__(**kwargs)
307        self.min = kwargs['min']
308        self.max = kwargs['max']
309
310
311class ApplicationGatewayAutoscaleConfiguration(msrest.serialization.Model):
312    """Application Gateway autoscale configuration.
313
314    All required parameters must be populated in order to send to Azure.
315
316    :param bounds: Required. Autoscale bounds.
317    :type bounds: ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayAutoscaleBounds
318    """
319
320    _validation = {
321        'bounds': {'required': True},
322    }
323
324    _attribute_map = {
325        'bounds': {'key': 'bounds', 'type': 'ApplicationGatewayAutoscaleBounds'},
326    }
327
328    def __init__(
329        self,
330        **kwargs
331    ):
332        super(ApplicationGatewayAutoscaleConfiguration, self).__init__(**kwargs)
333        self.bounds = kwargs['bounds']
334
335
336class ApplicationGatewayAvailableSslOptions(Resource):
337    """Response for ApplicationGatewayAvailableSslOptions API service call.
338
339    Variables are only populated by the server, and will be ignored when sending a request.
340
341    :param id: Resource ID.
342    :type id: str
343    :ivar name: Resource name.
344    :vartype name: str
345    :ivar type: Resource type.
346    :vartype type: str
347    :param location: Resource location.
348    :type location: str
349    :param tags: A set of tags. Resource tags.
350    :type tags: dict[str, str]
351    :param predefined_policies: List of available Ssl predefined policy.
352    :type predefined_policies: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
353    :param default_policy: Name of the Ssl predefined policy applied by default to application
354     gateway. Possible values include: "AppGwSslPolicy20150501", "AppGwSslPolicy20170401",
355     "AppGwSslPolicy20170401S".
356    :type default_policy: str or
357     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslPolicyName
358    :param available_cipher_suites: List of available Ssl cipher suites.
359    :type available_cipher_suites: list[str or
360     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslCipherSuite]
361    :param available_protocols: List of available Ssl protocols.
362    :type available_protocols: list[str or
363     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslProtocol]
364    """
365
366    _validation = {
367        'name': {'readonly': True},
368        'type': {'readonly': True},
369    }
370
371    _attribute_map = {
372        'id': {'key': 'id', 'type': 'str'},
373        'name': {'key': 'name', 'type': 'str'},
374        'type': {'key': 'type', 'type': 'str'},
375        'location': {'key': 'location', 'type': 'str'},
376        'tags': {'key': 'tags', 'type': '{str}'},
377        'predefined_policies': {'key': 'properties.predefinedPolicies', 'type': '[SubResource]'},
378        'default_policy': {'key': 'properties.defaultPolicy', 'type': 'str'},
379        'available_cipher_suites': {'key': 'properties.availableCipherSuites', 'type': '[str]'},
380        'available_protocols': {'key': 'properties.availableProtocols', 'type': '[str]'},
381    }
382
383    def __init__(
384        self,
385        **kwargs
386    ):
387        super(ApplicationGatewayAvailableSslOptions, self).__init__(**kwargs)
388        self.predefined_policies = kwargs.get('predefined_policies', None)
389        self.default_policy = kwargs.get('default_policy', None)
390        self.available_cipher_suites = kwargs.get('available_cipher_suites', None)
391        self.available_protocols = kwargs.get('available_protocols', None)
392
393
394class ApplicationGatewayAvailableSslPredefinedPolicies(msrest.serialization.Model):
395    """Response for ApplicationGatewayAvailableSslOptions API service call.
396
397    :param value: List of available Ssl predefined policy.
398    :type value: list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslPredefinedPolicy]
399    :param next_link: URL to get the next set of results.
400    :type next_link: str
401    """
402
403    _attribute_map = {
404        'value': {'key': 'value', 'type': '[ApplicationGatewaySslPredefinedPolicy]'},
405        'next_link': {'key': 'nextLink', 'type': 'str'},
406    }
407
408    def __init__(
409        self,
410        **kwargs
411    ):
412        super(ApplicationGatewayAvailableSslPredefinedPolicies, self).__init__(**kwargs)
413        self.value = kwargs.get('value', None)
414        self.next_link = kwargs.get('next_link', None)
415
416
417class ApplicationGatewayAvailableWafRuleSetsResult(msrest.serialization.Model):
418    """Response for ApplicationGatewayAvailableWafRuleSets API service call.
419
420    :param value: The list of application gateway rule sets.
421    :type value: list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayFirewallRuleSet]
422    """
423
424    _attribute_map = {
425        'value': {'key': 'value', 'type': '[ApplicationGatewayFirewallRuleSet]'},
426    }
427
428    def __init__(
429        self,
430        **kwargs
431    ):
432        super(ApplicationGatewayAvailableWafRuleSetsResult, self).__init__(**kwargs)
433        self.value = kwargs.get('value', None)
434
435
436class ApplicationGatewayBackendAddress(msrest.serialization.Model):
437    """Backend address of an application gateway.
438
439    :param fqdn: Fully qualified domain name (FQDN).
440    :type fqdn: str
441    :param ip_address: IP address.
442    :type ip_address: str
443    """
444
445    _attribute_map = {
446        'fqdn': {'key': 'fqdn', 'type': 'str'},
447        'ip_address': {'key': 'ipAddress', 'type': 'str'},
448    }
449
450    def __init__(
451        self,
452        **kwargs
453    ):
454        super(ApplicationGatewayBackendAddress, self).__init__(**kwargs)
455        self.fqdn = kwargs.get('fqdn', None)
456        self.ip_address = kwargs.get('ip_address', None)
457
458
459class ApplicationGatewayBackendAddressPool(SubResource):
460    """Backend Address Pool of an application gateway.
461
462    :param id: Resource ID.
463    :type id: str
464    :param name: Name of the backend address pool that is unique within an Application Gateway.
465    :type name: str
466    :param etag: A unique read-only string that changes whenever the resource is updated.
467    :type etag: str
468    :param type: Type of the resource.
469    :type type: str
470    :param backend_ip_configurations: Collection of references to IPs defined in network
471     interfaces.
472    :type backend_ip_configurations:
473     list[~azure.mgmt.network.v2018_07_01.models.NetworkInterfaceIPConfiguration]
474    :param backend_addresses: Backend addresses.
475    :type backend_addresses:
476     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayBackendAddress]
477    :param provisioning_state: Provisioning state of the backend address pool resource. Possible
478     values are: 'Updating', 'Deleting', and 'Failed'.
479    :type provisioning_state: str
480    """
481
482    _attribute_map = {
483        'id': {'key': 'id', 'type': 'str'},
484        'name': {'key': 'name', 'type': 'str'},
485        'etag': {'key': 'etag', 'type': 'str'},
486        'type': {'key': 'type', 'type': 'str'},
487        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
488        'backend_addresses': {'key': 'properties.backendAddresses', 'type': '[ApplicationGatewayBackendAddress]'},
489        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
490    }
491
492    def __init__(
493        self,
494        **kwargs
495    ):
496        super(ApplicationGatewayBackendAddressPool, self).__init__(**kwargs)
497        self.name = kwargs.get('name', None)
498        self.etag = kwargs.get('etag', None)
499        self.type = kwargs.get('type', None)
500        self.backend_ip_configurations = kwargs.get('backend_ip_configurations', None)
501        self.backend_addresses = kwargs.get('backend_addresses', None)
502        self.provisioning_state = kwargs.get('provisioning_state', None)
503
504
505class ApplicationGatewayBackendHealth(msrest.serialization.Model):
506    """List of ApplicationGatewayBackendHealthPool resources.
507
508    :param backend_address_pools:
509    :type backend_address_pools:
510     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayBackendHealthPool]
511    """
512
513    _attribute_map = {
514        'backend_address_pools': {'key': 'backendAddressPools', 'type': '[ApplicationGatewayBackendHealthPool]'},
515    }
516
517    def __init__(
518        self,
519        **kwargs
520    ):
521        super(ApplicationGatewayBackendHealth, self).__init__(**kwargs)
522        self.backend_address_pools = kwargs.get('backend_address_pools', None)
523
524
525class ApplicationGatewayBackendHealthHttpSettings(msrest.serialization.Model):
526    """Application gateway BackendHealthHttp settings.
527
528    :param backend_http_settings: Reference of an ApplicationGatewayBackendHttpSettings resource.
529    :type backend_http_settings:
530     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayBackendHttpSettings
531    :param servers: List of ApplicationGatewayBackendHealthServer resources.
532    :type servers:
533     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayBackendHealthServer]
534    """
535
536    _attribute_map = {
537        'backend_http_settings': {'key': 'backendHttpSettings', 'type': 'ApplicationGatewayBackendHttpSettings'},
538        'servers': {'key': 'servers', 'type': '[ApplicationGatewayBackendHealthServer]'},
539    }
540
541    def __init__(
542        self,
543        **kwargs
544    ):
545        super(ApplicationGatewayBackendHealthHttpSettings, self).__init__(**kwargs)
546        self.backend_http_settings = kwargs.get('backend_http_settings', None)
547        self.servers = kwargs.get('servers', None)
548
549
550class ApplicationGatewayBackendHealthPool(msrest.serialization.Model):
551    """Application gateway BackendHealth pool.
552
553    :param backend_address_pool: Reference of an ApplicationGatewayBackendAddressPool resource.
554    :type backend_address_pool:
555     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayBackendAddressPool
556    :param backend_http_settings_collection: List of ApplicationGatewayBackendHealthHttpSettings
557     resources.
558    :type backend_http_settings_collection:
559     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayBackendHealthHttpSettings]
560    """
561
562    _attribute_map = {
563        'backend_address_pool': {'key': 'backendAddressPool', 'type': 'ApplicationGatewayBackendAddressPool'},
564        'backend_http_settings_collection': {'key': 'backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHealthHttpSettings]'},
565    }
566
567    def __init__(
568        self,
569        **kwargs
570    ):
571        super(ApplicationGatewayBackendHealthPool, self).__init__(**kwargs)
572        self.backend_address_pool = kwargs.get('backend_address_pool', None)
573        self.backend_http_settings_collection = kwargs.get('backend_http_settings_collection', None)
574
575
576class ApplicationGatewayBackendHealthServer(msrest.serialization.Model):
577    """Application gateway backendhealth http settings.
578
579    :param address: IP address or FQDN of backend server.
580    :type address: str
581    :param ip_configuration: Reference of IP configuration of backend server.
582    :type ip_configuration: ~azure.mgmt.network.v2018_07_01.models.NetworkInterfaceIPConfiguration
583    :param health: Health of backend server. Possible values include: "Unknown", "Up", "Down",
584     "Partial", "Draining".
585    :type health: str or
586     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayBackendHealthServerHealth
587    """
588
589    _attribute_map = {
590        'address': {'key': 'address', 'type': 'str'},
591        'ip_configuration': {'key': 'ipConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
592        'health': {'key': 'health', 'type': 'str'},
593    }
594
595    def __init__(
596        self,
597        **kwargs
598    ):
599        super(ApplicationGatewayBackendHealthServer, self).__init__(**kwargs)
600        self.address = kwargs.get('address', None)
601        self.ip_configuration = kwargs.get('ip_configuration', None)
602        self.health = kwargs.get('health', None)
603
604
605class ApplicationGatewayBackendHttpSettings(SubResource):
606    """Backend address pool settings of an application gateway.
607
608    :param id: Resource ID.
609    :type id: str
610    :param name: Name of the backend http settings that is unique within an Application Gateway.
611    :type name: str
612    :param etag: A unique read-only string that changes whenever the resource is updated.
613    :type etag: str
614    :param type: Type of the resource.
615    :type type: str
616    :param port: The destination port on the backend.
617    :type port: int
618    :param protocol: The protocol used to communicate with the backend. Possible values are 'Http'
619     and 'Https'. Possible values include: "Http", "Https".
620    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayProtocol
621    :param cookie_based_affinity: Cookie based affinity. Possible values include: "Enabled",
622     "Disabled".
623    :type cookie_based_affinity: str or
624     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayCookieBasedAffinity
625    :param request_timeout: Request timeout in seconds. Application Gateway will fail the request
626     if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400
627     seconds.
628    :type request_timeout: int
629    :param probe: Probe resource of an application gateway.
630    :type probe: ~azure.mgmt.network.v2018_07_01.models.SubResource
631    :param authentication_certificates: Array of references to application gateway authentication
632     certificates.
633    :type authentication_certificates: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
634    :param connection_draining: Connection draining of the backend http settings resource.
635    :type connection_draining:
636     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayConnectionDraining
637    :param host_name: Host header to be sent to the backend servers.
638    :type host_name: str
639    :param pick_host_name_from_backend_address: Whether to pick host header should be picked from
640     the host name of the backend server. Default value is false.
641    :type pick_host_name_from_backend_address: bool
642    :param affinity_cookie_name: Cookie name to use for the affinity cookie.
643    :type affinity_cookie_name: str
644    :param probe_enabled: Whether the probe is enabled. Default value is false.
645    :type probe_enabled: bool
646    :param path: Path which should be used as a prefix for all HTTP requests. Null means no path
647     will be prefixed. Default value is null.
648    :type path: str
649    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
650     values are: 'Updating', 'Deleting', and 'Failed'.
651    :type provisioning_state: str
652    """
653
654    _attribute_map = {
655        'id': {'key': 'id', 'type': 'str'},
656        'name': {'key': 'name', 'type': 'str'},
657        'etag': {'key': 'etag', 'type': 'str'},
658        'type': {'key': 'type', 'type': 'str'},
659        'port': {'key': 'properties.port', 'type': 'int'},
660        'protocol': {'key': 'properties.protocol', 'type': 'str'},
661        'cookie_based_affinity': {'key': 'properties.cookieBasedAffinity', 'type': 'str'},
662        'request_timeout': {'key': 'properties.requestTimeout', 'type': 'int'},
663        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
664        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[SubResource]'},
665        'connection_draining': {'key': 'properties.connectionDraining', 'type': 'ApplicationGatewayConnectionDraining'},
666        'host_name': {'key': 'properties.hostName', 'type': 'str'},
667        'pick_host_name_from_backend_address': {'key': 'properties.pickHostNameFromBackendAddress', 'type': 'bool'},
668        'affinity_cookie_name': {'key': 'properties.affinityCookieName', 'type': 'str'},
669        'probe_enabled': {'key': 'properties.probeEnabled', 'type': 'bool'},
670        'path': {'key': 'properties.path', 'type': 'str'},
671        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
672    }
673
674    def __init__(
675        self,
676        **kwargs
677    ):
678        super(ApplicationGatewayBackendHttpSettings, self).__init__(**kwargs)
679        self.name = kwargs.get('name', None)
680        self.etag = kwargs.get('etag', None)
681        self.type = kwargs.get('type', None)
682        self.port = kwargs.get('port', None)
683        self.protocol = kwargs.get('protocol', None)
684        self.cookie_based_affinity = kwargs.get('cookie_based_affinity', None)
685        self.request_timeout = kwargs.get('request_timeout', None)
686        self.probe = kwargs.get('probe', None)
687        self.authentication_certificates = kwargs.get('authentication_certificates', None)
688        self.connection_draining = kwargs.get('connection_draining', None)
689        self.host_name = kwargs.get('host_name', None)
690        self.pick_host_name_from_backend_address = kwargs.get('pick_host_name_from_backend_address', None)
691        self.affinity_cookie_name = kwargs.get('affinity_cookie_name', None)
692        self.probe_enabled = kwargs.get('probe_enabled', None)
693        self.path = kwargs.get('path', None)
694        self.provisioning_state = kwargs.get('provisioning_state', None)
695
696
697class ApplicationGatewayConnectionDraining(msrest.serialization.Model):
698    """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.
699
700    All required parameters must be populated in order to send to Azure.
701
702    :param enabled: Required. Whether connection draining is enabled or not.
703    :type enabled: bool
704    :param drain_timeout_in_sec: Required. The number of seconds connection draining is active.
705     Acceptable values are from 1 second to 3600 seconds.
706    :type drain_timeout_in_sec: int
707    """
708
709    _validation = {
710        'enabled': {'required': True},
711        'drain_timeout_in_sec': {'required': True, 'maximum': 3600, 'minimum': 1},
712    }
713
714    _attribute_map = {
715        'enabled': {'key': 'enabled', 'type': 'bool'},
716        'drain_timeout_in_sec': {'key': 'drainTimeoutInSec', 'type': 'int'},
717    }
718
719    def __init__(
720        self,
721        **kwargs
722    ):
723        super(ApplicationGatewayConnectionDraining, self).__init__(**kwargs)
724        self.enabled = kwargs['enabled']
725        self.drain_timeout_in_sec = kwargs['drain_timeout_in_sec']
726
727
728class ApplicationGatewayFirewallDisabledRuleGroup(msrest.serialization.Model):
729    """Allows to disable rules within a rule group or an entire rule group.
730
731    All required parameters must be populated in order to send to Azure.
732
733    :param rule_group_name: Required. The name of the rule group that will be disabled.
734    :type rule_group_name: str
735    :param rules: The list of rules that will be disabled. If null, all rules of the rule group
736     will be disabled.
737    :type rules: list[int]
738    """
739
740    _validation = {
741        'rule_group_name': {'required': True},
742    }
743
744    _attribute_map = {
745        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
746        'rules': {'key': 'rules', 'type': '[int]'},
747    }
748
749    def __init__(
750        self,
751        **kwargs
752    ):
753        super(ApplicationGatewayFirewallDisabledRuleGroup, self).__init__(**kwargs)
754        self.rule_group_name = kwargs['rule_group_name']
755        self.rules = kwargs.get('rules', None)
756
757
758class ApplicationGatewayFirewallRule(msrest.serialization.Model):
759    """A web application firewall rule.
760
761    All required parameters must be populated in order to send to Azure.
762
763    :param rule_id: Required. The identifier of the web application firewall rule.
764    :type rule_id: int
765    :param description: The description of the web application firewall rule.
766    :type description: str
767    """
768
769    _validation = {
770        'rule_id': {'required': True},
771    }
772
773    _attribute_map = {
774        'rule_id': {'key': 'ruleId', 'type': 'int'},
775        'description': {'key': 'description', 'type': 'str'},
776    }
777
778    def __init__(
779        self,
780        **kwargs
781    ):
782        super(ApplicationGatewayFirewallRule, self).__init__(**kwargs)
783        self.rule_id = kwargs['rule_id']
784        self.description = kwargs.get('description', None)
785
786
787class ApplicationGatewayFirewallRuleGroup(msrest.serialization.Model):
788    """A web application firewall rule group.
789
790    All required parameters must be populated in order to send to Azure.
791
792    :param rule_group_name: Required. The name of the web application firewall rule group.
793    :type rule_group_name: str
794    :param description: The description of the web application firewall rule group.
795    :type description: str
796    :param rules: Required. The rules of the web application firewall rule group.
797    :type rules: list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayFirewallRule]
798    """
799
800    _validation = {
801        'rule_group_name': {'required': True},
802        'rules': {'required': True},
803    }
804
805    _attribute_map = {
806        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
807        'description': {'key': 'description', 'type': 'str'},
808        'rules': {'key': 'rules', 'type': '[ApplicationGatewayFirewallRule]'},
809    }
810
811    def __init__(
812        self,
813        **kwargs
814    ):
815        super(ApplicationGatewayFirewallRuleGroup, self).__init__(**kwargs)
816        self.rule_group_name = kwargs['rule_group_name']
817        self.description = kwargs.get('description', None)
818        self.rules = kwargs['rules']
819
820
821class ApplicationGatewayFirewallRuleSet(Resource):
822    """A web application firewall rule set.
823
824    Variables are only populated by the server, and will be ignored when sending a request.
825
826    :param id: Resource ID.
827    :type id: str
828    :ivar name: Resource name.
829    :vartype name: str
830    :ivar type: Resource type.
831    :vartype type: str
832    :param location: Resource location.
833    :type location: str
834    :param tags: A set of tags. Resource tags.
835    :type tags: dict[str, str]
836    :param provisioning_state: The provisioning state of the web application firewall rule set.
837    :type provisioning_state: str
838    :param rule_set_type: The type of the web application firewall rule set.
839    :type rule_set_type: str
840    :param rule_set_version: The version of the web application firewall rule set type.
841    :type rule_set_version: str
842    :param rule_groups: The rule groups of the web application firewall rule set.
843    :type rule_groups:
844     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayFirewallRuleGroup]
845    """
846
847    _validation = {
848        'name': {'readonly': True},
849        'type': {'readonly': True},
850    }
851
852    _attribute_map = {
853        'id': {'key': 'id', 'type': 'str'},
854        'name': {'key': 'name', 'type': 'str'},
855        'type': {'key': 'type', 'type': 'str'},
856        'location': {'key': 'location', 'type': 'str'},
857        'tags': {'key': 'tags', 'type': '{str}'},
858        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
859        'rule_set_type': {'key': 'properties.ruleSetType', 'type': 'str'},
860        'rule_set_version': {'key': 'properties.ruleSetVersion', 'type': 'str'},
861        'rule_groups': {'key': 'properties.ruleGroups', 'type': '[ApplicationGatewayFirewallRuleGroup]'},
862    }
863
864    def __init__(
865        self,
866        **kwargs
867    ):
868        super(ApplicationGatewayFirewallRuleSet, self).__init__(**kwargs)
869        self.provisioning_state = kwargs.get('provisioning_state', None)
870        self.rule_set_type = kwargs.get('rule_set_type', None)
871        self.rule_set_version = kwargs.get('rule_set_version', None)
872        self.rule_groups = kwargs.get('rule_groups', None)
873
874
875class ApplicationGatewayFrontendIPConfiguration(SubResource):
876    """Frontend IP configuration of an application gateway.
877
878    :param id: Resource ID.
879    :type id: str
880    :param name: Name of the frontend IP configuration that is unique within an Application
881     Gateway.
882    :type name: str
883    :param etag: A unique read-only string that changes whenever the resource is updated.
884    :type etag: str
885    :param type: Type of the resource.
886    :type type: str
887    :param private_ip_address: PrivateIPAddress of the network interface IP Configuration.
888    :type private_ip_address: str
889    :param private_ip_allocation_method: PrivateIP allocation method. Possible values include:
890     "Static", "Dynamic".
891    :type private_ip_allocation_method: str or
892     ~azure.mgmt.network.v2018_07_01.models.IPAllocationMethod
893    :param subnet: Reference of the subnet resource.
894    :type subnet: ~azure.mgmt.network.v2018_07_01.models.SubResource
895    :param public_ip_address: Reference of the PublicIP resource.
896    :type public_ip_address: ~azure.mgmt.network.v2018_07_01.models.SubResource
897    :param provisioning_state: Provisioning state of the public IP resource. Possible values are:
898     'Updating', 'Deleting', and 'Failed'.
899    :type provisioning_state: str
900    """
901
902    _attribute_map = {
903        'id': {'key': 'id', 'type': 'str'},
904        'name': {'key': 'name', 'type': 'str'},
905        'etag': {'key': 'etag', 'type': 'str'},
906        'type': {'key': 'type', 'type': 'str'},
907        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
908        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
909        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
910        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
911        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
912    }
913
914    def __init__(
915        self,
916        **kwargs
917    ):
918        super(ApplicationGatewayFrontendIPConfiguration, self).__init__(**kwargs)
919        self.name = kwargs.get('name', None)
920        self.etag = kwargs.get('etag', None)
921        self.type = kwargs.get('type', None)
922        self.private_ip_address = kwargs.get('private_ip_address', None)
923        self.private_ip_allocation_method = kwargs.get('private_ip_allocation_method', None)
924        self.subnet = kwargs.get('subnet', None)
925        self.public_ip_address = kwargs.get('public_ip_address', None)
926        self.provisioning_state = kwargs.get('provisioning_state', None)
927
928
929class ApplicationGatewayFrontendPort(SubResource):
930    """Frontend port of an application gateway.
931
932    :param id: Resource ID.
933    :type id: str
934    :param name: Name of the frontend port that is unique within an Application Gateway.
935    :type name: str
936    :param etag: A unique read-only string that changes whenever the resource is updated.
937    :type etag: str
938    :param type: Type of the resource.
939    :type type: str
940    :param port: Frontend port.
941    :type port: int
942    :param provisioning_state: Provisioning state of the frontend port resource. Possible values
943     are: 'Updating', 'Deleting', and 'Failed'.
944    :type provisioning_state: str
945    """
946
947    _attribute_map = {
948        'id': {'key': 'id', 'type': 'str'},
949        'name': {'key': 'name', 'type': 'str'},
950        'etag': {'key': 'etag', 'type': 'str'},
951        'type': {'key': 'type', 'type': 'str'},
952        'port': {'key': 'properties.port', 'type': 'int'},
953        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
954    }
955
956    def __init__(
957        self,
958        **kwargs
959    ):
960        super(ApplicationGatewayFrontendPort, self).__init__(**kwargs)
961        self.name = kwargs.get('name', None)
962        self.etag = kwargs.get('etag', None)
963        self.type = kwargs.get('type', None)
964        self.port = kwargs.get('port', None)
965        self.provisioning_state = kwargs.get('provisioning_state', None)
966
967
968class ApplicationGatewayHttpListener(SubResource):
969    """Http listener of an application gateway.
970
971    :param id: Resource ID.
972    :type id: str
973    :param name: Name of the HTTP listener that is unique within an Application Gateway.
974    :type name: str
975    :param etag: A unique read-only string that changes whenever the resource is updated.
976    :type etag: str
977    :param type: Type of the resource.
978    :type type: str
979    :param frontend_ip_configuration: Frontend IP configuration resource of an application gateway.
980    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_07_01.models.SubResource
981    :param frontend_port: Frontend port resource of an application gateway.
982    :type frontend_port: ~azure.mgmt.network.v2018_07_01.models.SubResource
983    :param protocol: Protocol of the HTTP listener. Possible values are 'Http' and 'Https'.
984     Possible values include: "Http", "Https".
985    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayProtocol
986    :param host_name: Host name of HTTP listener.
987    :type host_name: str
988    :param ssl_certificate: SSL certificate resource of an application gateway.
989    :type ssl_certificate: ~azure.mgmt.network.v2018_07_01.models.SubResource
990    :param require_server_name_indication: Applicable only if protocol is https. Enables SNI for
991     multi-hosting.
992    :type require_server_name_indication: bool
993    :param provisioning_state: Provisioning state of the HTTP listener resource. Possible values
994     are: 'Updating', 'Deleting', and 'Failed'.
995    :type provisioning_state: str
996    """
997
998    _attribute_map = {
999        'id': {'key': 'id', 'type': 'str'},
1000        'name': {'key': 'name', 'type': 'str'},
1001        'etag': {'key': 'etag', 'type': 'str'},
1002        'type': {'key': 'type', 'type': 'str'},
1003        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
1004        'frontend_port': {'key': 'properties.frontendPort', 'type': 'SubResource'},
1005        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1006        'host_name': {'key': 'properties.hostName', 'type': 'str'},
1007        'ssl_certificate': {'key': 'properties.sslCertificate', 'type': 'SubResource'},
1008        'require_server_name_indication': {'key': 'properties.requireServerNameIndication', 'type': 'bool'},
1009        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1010    }
1011
1012    def __init__(
1013        self,
1014        **kwargs
1015    ):
1016        super(ApplicationGatewayHttpListener, self).__init__(**kwargs)
1017        self.name = kwargs.get('name', None)
1018        self.etag = kwargs.get('etag', None)
1019        self.type = kwargs.get('type', None)
1020        self.frontend_ip_configuration = kwargs.get('frontend_ip_configuration', None)
1021        self.frontend_port = kwargs.get('frontend_port', None)
1022        self.protocol = kwargs.get('protocol', None)
1023        self.host_name = kwargs.get('host_name', None)
1024        self.ssl_certificate = kwargs.get('ssl_certificate', None)
1025        self.require_server_name_indication = kwargs.get('require_server_name_indication', None)
1026        self.provisioning_state = kwargs.get('provisioning_state', None)
1027
1028
1029class ApplicationGatewayIPConfiguration(SubResource):
1030    """IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.
1031
1032    :param id: Resource ID.
1033    :type id: str
1034    :param name: Name of the IP configuration that is unique within an Application Gateway.
1035    :type name: str
1036    :param etag: A unique read-only string that changes whenever the resource is updated.
1037    :type etag: str
1038    :param type: Type of the resource.
1039    :type type: str
1040    :param subnet: Reference of the subnet resource. A subnet from where application gateway gets
1041     its private address.
1042    :type subnet: ~azure.mgmt.network.v2018_07_01.models.SubResource
1043    :param provisioning_state: Provisioning state of the application gateway subnet resource.
1044     Possible values are: 'Updating', 'Deleting', and 'Failed'.
1045    :type provisioning_state: str
1046    """
1047
1048    _attribute_map = {
1049        'id': {'key': 'id', 'type': 'str'},
1050        'name': {'key': 'name', 'type': 'str'},
1051        'etag': {'key': 'etag', 'type': 'str'},
1052        'type': {'key': 'type', 'type': 'str'},
1053        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
1054        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1055    }
1056
1057    def __init__(
1058        self,
1059        **kwargs
1060    ):
1061        super(ApplicationGatewayIPConfiguration, self).__init__(**kwargs)
1062        self.name = kwargs.get('name', None)
1063        self.etag = kwargs.get('etag', None)
1064        self.type = kwargs.get('type', None)
1065        self.subnet = kwargs.get('subnet', None)
1066        self.provisioning_state = kwargs.get('provisioning_state', None)
1067
1068
1069class ApplicationGatewayListResult(msrest.serialization.Model):
1070    """Response for ListApplicationGateways API service call.
1071
1072    :param value: List of an application gateways in a resource group.
1073    :type value: list[~azure.mgmt.network.v2018_07_01.models.ApplicationGateway]
1074    :param next_link: URL to get the next set of results.
1075    :type next_link: str
1076    """
1077
1078    _attribute_map = {
1079        'value': {'key': 'value', 'type': '[ApplicationGateway]'},
1080        'next_link': {'key': 'nextLink', 'type': 'str'},
1081    }
1082
1083    def __init__(
1084        self,
1085        **kwargs
1086    ):
1087        super(ApplicationGatewayListResult, self).__init__(**kwargs)
1088        self.value = kwargs.get('value', None)
1089        self.next_link = kwargs.get('next_link', None)
1090
1091
1092class ApplicationGatewayPathRule(SubResource):
1093    """Path rule of URL path map of an application gateway.
1094
1095    :param id: Resource ID.
1096    :type id: str
1097    :param name: Name of the path rule that is unique within an Application Gateway.
1098    :type name: str
1099    :param etag: A unique read-only string that changes whenever the resource is updated.
1100    :type etag: str
1101    :param type: Type of the resource.
1102    :type type: str
1103    :param paths: Path rules of URL path map.
1104    :type paths: list[str]
1105    :param backend_address_pool: Backend address pool resource of URL path map path rule.
1106    :type backend_address_pool: ~azure.mgmt.network.v2018_07_01.models.SubResource
1107    :param backend_http_settings: Backend http settings resource of URL path map path rule.
1108    :type backend_http_settings: ~azure.mgmt.network.v2018_07_01.models.SubResource
1109    :param redirect_configuration: Redirect configuration resource of URL path map path rule.
1110    :type redirect_configuration: ~azure.mgmt.network.v2018_07_01.models.SubResource
1111    :param provisioning_state: Path rule of URL path map resource. Possible values are: 'Updating',
1112     'Deleting', and 'Failed'.
1113    :type provisioning_state: str
1114    """
1115
1116    _attribute_map = {
1117        'id': {'key': 'id', 'type': 'str'},
1118        'name': {'key': 'name', 'type': 'str'},
1119        'etag': {'key': 'etag', 'type': 'str'},
1120        'type': {'key': 'type', 'type': 'str'},
1121        'paths': {'key': 'properties.paths', 'type': '[str]'},
1122        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1123        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1124        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1125        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1126    }
1127
1128    def __init__(
1129        self,
1130        **kwargs
1131    ):
1132        super(ApplicationGatewayPathRule, self).__init__(**kwargs)
1133        self.name = kwargs.get('name', None)
1134        self.etag = kwargs.get('etag', None)
1135        self.type = kwargs.get('type', None)
1136        self.paths = kwargs.get('paths', None)
1137        self.backend_address_pool = kwargs.get('backend_address_pool', None)
1138        self.backend_http_settings = kwargs.get('backend_http_settings', None)
1139        self.redirect_configuration = kwargs.get('redirect_configuration', None)
1140        self.provisioning_state = kwargs.get('provisioning_state', None)
1141
1142
1143class ApplicationGatewayProbe(SubResource):
1144    """Probe of the application gateway.
1145
1146    :param id: Resource ID.
1147    :type id: str
1148    :param name: Name of the probe that is unique within an Application Gateway.
1149    :type name: str
1150    :param etag: A unique read-only string that changes whenever the resource is updated.
1151    :type etag: str
1152    :param type: Type of the resource.
1153    :type type: str
1154    :param protocol: The protocol used for the probe. Possible values are 'Http' and 'Https'.
1155     Possible values include: "Http", "Https".
1156    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayProtocol
1157    :param host: Host name to send the probe to.
1158    :type host: str
1159    :param path: Relative path of probe. Valid path starts from '/'. Probe is sent to
1160     :code:`<Protocol>`://:code:`<host>`::code:`<port>`:code:`<path>`.
1161    :type path: str
1162    :param interval: The probing interval in seconds. This is the time interval between two
1163     consecutive probes. Acceptable values are from 1 second to 86400 seconds.
1164    :type interval: int
1165    :param timeout: the probe timeout in seconds. Probe marked as failed if valid response is not
1166     received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
1167    :type timeout: int
1168    :param unhealthy_threshold: The probe retry count. Backend server is marked down after
1169     consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second
1170     to 20.
1171    :type unhealthy_threshold: int
1172    :param pick_host_name_from_backend_http_settings: Whether the host header should be picked from
1173     the backend http settings. Default value is false.
1174    :type pick_host_name_from_backend_http_settings: bool
1175    :param min_servers: Minimum number of servers that are always marked healthy. Default value is
1176     0.
1177    :type min_servers: int
1178    :param match: Criterion for classifying a healthy probe response.
1179    :type match: ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayProbeHealthResponseMatch
1180    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
1181     values are: 'Updating', 'Deleting', and 'Failed'.
1182    :type provisioning_state: str
1183    """
1184
1185    _attribute_map = {
1186        'id': {'key': 'id', 'type': 'str'},
1187        'name': {'key': 'name', 'type': 'str'},
1188        'etag': {'key': 'etag', 'type': 'str'},
1189        'type': {'key': 'type', 'type': 'str'},
1190        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1191        'host': {'key': 'properties.host', 'type': 'str'},
1192        'path': {'key': 'properties.path', 'type': 'str'},
1193        'interval': {'key': 'properties.interval', 'type': 'int'},
1194        'timeout': {'key': 'properties.timeout', 'type': 'int'},
1195        'unhealthy_threshold': {'key': 'properties.unhealthyThreshold', 'type': 'int'},
1196        'pick_host_name_from_backend_http_settings': {'key': 'properties.pickHostNameFromBackendHttpSettings', 'type': 'bool'},
1197        'min_servers': {'key': 'properties.minServers', 'type': 'int'},
1198        'match': {'key': 'properties.match', 'type': 'ApplicationGatewayProbeHealthResponseMatch'},
1199        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1200    }
1201
1202    def __init__(
1203        self,
1204        **kwargs
1205    ):
1206        super(ApplicationGatewayProbe, self).__init__(**kwargs)
1207        self.name = kwargs.get('name', None)
1208        self.etag = kwargs.get('etag', None)
1209        self.type = kwargs.get('type', None)
1210        self.protocol = kwargs.get('protocol', None)
1211        self.host = kwargs.get('host', None)
1212        self.path = kwargs.get('path', None)
1213        self.interval = kwargs.get('interval', None)
1214        self.timeout = kwargs.get('timeout', None)
1215        self.unhealthy_threshold = kwargs.get('unhealthy_threshold', None)
1216        self.pick_host_name_from_backend_http_settings = kwargs.get('pick_host_name_from_backend_http_settings', None)
1217        self.min_servers = kwargs.get('min_servers', None)
1218        self.match = kwargs.get('match', None)
1219        self.provisioning_state = kwargs.get('provisioning_state', None)
1220
1221
1222class ApplicationGatewayProbeHealthResponseMatch(msrest.serialization.Model):
1223    """Application gateway probe health response match.
1224
1225    :param body: Body that must be contained in the health response. Default value is empty.
1226    :type body: str
1227    :param status_codes: Allowed ranges of healthy status codes. Default range of healthy status
1228     codes is 200-399.
1229    :type status_codes: list[str]
1230    """
1231
1232    _attribute_map = {
1233        'body': {'key': 'body', 'type': 'str'},
1234        'status_codes': {'key': 'statusCodes', 'type': '[str]'},
1235    }
1236
1237    def __init__(
1238        self,
1239        **kwargs
1240    ):
1241        super(ApplicationGatewayProbeHealthResponseMatch, self).__init__(**kwargs)
1242        self.body = kwargs.get('body', None)
1243        self.status_codes = kwargs.get('status_codes', None)
1244
1245
1246class ApplicationGatewayRedirectConfiguration(SubResource):
1247    """Redirect configuration of an application gateway.
1248
1249    :param id: Resource ID.
1250    :type id: str
1251    :param name: Name of the redirect configuration that is unique within an Application Gateway.
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 redirect_type: Supported http redirection types - Permanent, Temporary, Found, SeeOther.
1258     Possible values include: "Permanent", "Found", "SeeOther", "Temporary".
1259    :type redirect_type: str or
1260     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayRedirectType
1261    :param target_listener: Reference to a listener to redirect the request to.
1262    :type target_listener: ~azure.mgmt.network.v2018_07_01.models.SubResource
1263    :param target_url: Url to redirect the request to.
1264    :type target_url: str
1265    :param include_path: Include path in the redirected url.
1266    :type include_path: bool
1267    :param include_query_string: Include query string in the redirected url.
1268    :type include_query_string: bool
1269    :param request_routing_rules: Request routing specifying redirect configuration.
1270    :type request_routing_rules: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
1271    :param url_path_maps: Url path maps specifying default redirect configuration.
1272    :type url_path_maps: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
1273    :param path_rules: Path rules specifying redirect configuration.
1274    :type path_rules: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
1275    """
1276
1277    _attribute_map = {
1278        'id': {'key': 'id', 'type': 'str'},
1279        'name': {'key': 'name', 'type': 'str'},
1280        'etag': {'key': 'etag', 'type': 'str'},
1281        'type': {'key': 'type', 'type': 'str'},
1282        'redirect_type': {'key': 'properties.redirectType', 'type': 'str'},
1283        'target_listener': {'key': 'properties.targetListener', 'type': 'SubResource'},
1284        'target_url': {'key': 'properties.targetUrl', 'type': 'str'},
1285        'include_path': {'key': 'properties.includePath', 'type': 'bool'},
1286        'include_query_string': {'key': 'properties.includeQueryString', 'type': 'bool'},
1287        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[SubResource]'},
1288        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[SubResource]'},
1289        'path_rules': {'key': 'properties.pathRules', 'type': '[SubResource]'},
1290    }
1291
1292    def __init__(
1293        self,
1294        **kwargs
1295    ):
1296        super(ApplicationGatewayRedirectConfiguration, self).__init__(**kwargs)
1297        self.name = kwargs.get('name', None)
1298        self.etag = kwargs.get('etag', None)
1299        self.type = kwargs.get('type', None)
1300        self.redirect_type = kwargs.get('redirect_type', None)
1301        self.target_listener = kwargs.get('target_listener', None)
1302        self.target_url = kwargs.get('target_url', None)
1303        self.include_path = kwargs.get('include_path', None)
1304        self.include_query_string = kwargs.get('include_query_string', None)
1305        self.request_routing_rules = kwargs.get('request_routing_rules', None)
1306        self.url_path_maps = kwargs.get('url_path_maps', None)
1307        self.path_rules = kwargs.get('path_rules', None)
1308
1309
1310class ApplicationGatewayRequestRoutingRule(SubResource):
1311    """Request routing rule of an application gateway.
1312
1313    :param id: Resource ID.
1314    :type id: str
1315    :param name: Name of the request routing rule that is unique within an Application Gateway.
1316    :type name: str
1317    :param etag: A unique read-only string that changes whenever the resource is updated.
1318    :type etag: str
1319    :param type: Type of the resource.
1320    :type type: str
1321    :param rule_type: Rule type. Possible values include: "Basic", "PathBasedRouting".
1322    :type rule_type: str or
1323     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayRequestRoutingRuleType
1324    :param backend_address_pool: Backend address pool resource of the application gateway.
1325    :type backend_address_pool: ~azure.mgmt.network.v2018_07_01.models.SubResource
1326    :param backend_http_settings: Backend http settings resource of the application gateway.
1327    :type backend_http_settings: ~azure.mgmt.network.v2018_07_01.models.SubResource
1328    :param http_listener: Http listener resource of the application gateway.
1329    :type http_listener: ~azure.mgmt.network.v2018_07_01.models.SubResource
1330    :param url_path_map: URL path map resource of the application gateway.
1331    :type url_path_map: ~azure.mgmt.network.v2018_07_01.models.SubResource
1332    :param redirect_configuration: Redirect configuration resource of the application gateway.
1333    :type redirect_configuration: ~azure.mgmt.network.v2018_07_01.models.SubResource
1334    :param provisioning_state: Provisioning state of the request routing rule resource. Possible
1335     values are: 'Updating', 'Deleting', and 'Failed'.
1336    :type provisioning_state: str
1337    """
1338
1339    _attribute_map = {
1340        'id': {'key': 'id', 'type': 'str'},
1341        'name': {'key': 'name', 'type': 'str'},
1342        'etag': {'key': 'etag', 'type': 'str'},
1343        'type': {'key': 'type', 'type': 'str'},
1344        'rule_type': {'key': 'properties.ruleType', 'type': 'str'},
1345        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1346        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1347        'http_listener': {'key': 'properties.httpListener', 'type': 'SubResource'},
1348        'url_path_map': {'key': 'properties.urlPathMap', 'type': 'SubResource'},
1349        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1350        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1351    }
1352
1353    def __init__(
1354        self,
1355        **kwargs
1356    ):
1357        super(ApplicationGatewayRequestRoutingRule, self).__init__(**kwargs)
1358        self.name = kwargs.get('name', None)
1359        self.etag = kwargs.get('etag', None)
1360        self.type = kwargs.get('type', None)
1361        self.rule_type = kwargs.get('rule_type', None)
1362        self.backend_address_pool = kwargs.get('backend_address_pool', None)
1363        self.backend_http_settings = kwargs.get('backend_http_settings', None)
1364        self.http_listener = kwargs.get('http_listener', None)
1365        self.url_path_map = kwargs.get('url_path_map', None)
1366        self.redirect_configuration = kwargs.get('redirect_configuration', None)
1367        self.provisioning_state = kwargs.get('provisioning_state', None)
1368
1369
1370class ApplicationGatewaySku(msrest.serialization.Model):
1371    """SKU of an application gateway.
1372
1373    :param name: Name of an application gateway SKU. Possible values include: "Standard_Small",
1374     "Standard_Medium", "Standard_Large", "WAF_Medium", "WAF_Large", "Standard_v2", "WAF_v2".
1375    :type name: str or ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySkuName
1376    :param tier: Tier of an application gateway. Possible values include: "Standard", "WAF",
1377     "Standard_v2", "WAF_v2".
1378    :type tier: str or ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayTier
1379    :param capacity: Capacity (instance count) of an application gateway.
1380    :type capacity: int
1381    """
1382
1383    _attribute_map = {
1384        'name': {'key': 'name', 'type': 'str'},
1385        'tier': {'key': 'tier', 'type': 'str'},
1386        'capacity': {'key': 'capacity', 'type': 'int'},
1387    }
1388
1389    def __init__(
1390        self,
1391        **kwargs
1392    ):
1393        super(ApplicationGatewaySku, self).__init__(**kwargs)
1394        self.name = kwargs.get('name', None)
1395        self.tier = kwargs.get('tier', None)
1396        self.capacity = kwargs.get('capacity', None)
1397
1398
1399class ApplicationGatewaySslCertificate(SubResource):
1400    """SSL certificates of an application gateway.
1401
1402    :param id: Resource ID.
1403    :type id: str
1404    :param name: Name of the SSL certificate that is unique within an Application Gateway.
1405    :type name: str
1406    :param etag: A unique read-only string that changes whenever the resource is updated.
1407    :type etag: str
1408    :param type: Type of the resource.
1409    :type type: str
1410    :param data: Base-64 encoded pfx certificate. Only applicable in PUT Request.
1411    :type data: str
1412    :param password: Password for the pfx file specified in data. Only applicable in PUT request.
1413    :type password: str
1414    :param public_cert_data: Base-64 encoded Public cert data corresponding to pfx specified in
1415     data. Only applicable in GET request.
1416    :type public_cert_data: str
1417    :param provisioning_state: Provisioning state of the SSL certificate resource Possible values
1418     are: 'Updating', 'Deleting', and 'Failed'.
1419    :type provisioning_state: str
1420    """
1421
1422    _attribute_map = {
1423        'id': {'key': 'id', 'type': 'str'},
1424        'name': {'key': 'name', 'type': 'str'},
1425        'etag': {'key': 'etag', 'type': 'str'},
1426        'type': {'key': 'type', 'type': 'str'},
1427        'data': {'key': 'properties.data', 'type': 'str'},
1428        'password': {'key': 'properties.password', 'type': 'str'},
1429        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
1430        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1431    }
1432
1433    def __init__(
1434        self,
1435        **kwargs
1436    ):
1437        super(ApplicationGatewaySslCertificate, self).__init__(**kwargs)
1438        self.name = kwargs.get('name', None)
1439        self.etag = kwargs.get('etag', None)
1440        self.type = kwargs.get('type', None)
1441        self.data = kwargs.get('data', None)
1442        self.password = kwargs.get('password', None)
1443        self.public_cert_data = kwargs.get('public_cert_data', None)
1444        self.provisioning_state = kwargs.get('provisioning_state', None)
1445
1446
1447class ApplicationGatewaySslPolicy(msrest.serialization.Model):
1448    """Application Gateway Ssl policy.
1449
1450    :param disabled_ssl_protocols: Ssl protocols to be disabled on application gateway.
1451    :type disabled_ssl_protocols: list[str or
1452     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslProtocol]
1453    :param policy_type: Type of Ssl Policy. Possible values include: "Predefined", "Custom".
1454    :type policy_type: str or
1455     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslPolicyType
1456    :param policy_name: Name of Ssl predefined policy. Possible values include:
1457     "AppGwSslPolicy20150501", "AppGwSslPolicy20170401", "AppGwSslPolicy20170401S".
1458    :type policy_name: str or
1459     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslPolicyName
1460    :param cipher_suites: Ssl cipher suites to be enabled in the specified order to application
1461     gateway.
1462    :type cipher_suites: list[str or
1463     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslCipherSuite]
1464    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
1465     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
1466    :type min_protocol_version: str or
1467     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslProtocol
1468    """
1469
1470    _attribute_map = {
1471        'disabled_ssl_protocols': {'key': 'disabledSslProtocols', 'type': '[str]'},
1472        'policy_type': {'key': 'policyType', 'type': 'str'},
1473        'policy_name': {'key': 'policyName', 'type': 'str'},
1474        'cipher_suites': {'key': 'cipherSuites', 'type': '[str]'},
1475        'min_protocol_version': {'key': 'minProtocolVersion', 'type': 'str'},
1476    }
1477
1478    def __init__(
1479        self,
1480        **kwargs
1481    ):
1482        super(ApplicationGatewaySslPolicy, self).__init__(**kwargs)
1483        self.disabled_ssl_protocols = kwargs.get('disabled_ssl_protocols', None)
1484        self.policy_type = kwargs.get('policy_type', None)
1485        self.policy_name = kwargs.get('policy_name', None)
1486        self.cipher_suites = kwargs.get('cipher_suites', None)
1487        self.min_protocol_version = kwargs.get('min_protocol_version', None)
1488
1489
1490class ApplicationGatewaySslPredefinedPolicy(SubResource):
1491    """An Ssl predefined policy.
1492
1493    :param id: Resource ID.
1494    :type id: str
1495    :param name: Name of the Ssl predefined policy.
1496    :type name: str
1497    :param cipher_suites: Ssl cipher suites to be enabled in the specified order for application
1498     gateway.
1499    :type cipher_suites: list[str or
1500     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslCipherSuite]
1501    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
1502     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
1503    :type min_protocol_version: str or
1504     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewaySslProtocol
1505    """
1506
1507    _attribute_map = {
1508        'id': {'key': 'id', 'type': 'str'},
1509        'name': {'key': 'name', 'type': 'str'},
1510        'cipher_suites': {'key': 'properties.cipherSuites', 'type': '[str]'},
1511        'min_protocol_version': {'key': 'properties.minProtocolVersion', 'type': 'str'},
1512    }
1513
1514    def __init__(
1515        self,
1516        **kwargs
1517    ):
1518        super(ApplicationGatewaySslPredefinedPolicy, self).__init__(**kwargs)
1519        self.name = kwargs.get('name', None)
1520        self.cipher_suites = kwargs.get('cipher_suites', None)
1521        self.min_protocol_version = kwargs.get('min_protocol_version', None)
1522
1523
1524class ApplicationGatewayUrlPathMap(SubResource):
1525    """UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.
1526
1527    :param id: Resource ID.
1528    :type id: str
1529    :param name: Name of the URL path map that is unique within an Application Gateway.
1530    :type name: str
1531    :param etag: A unique read-only string that changes whenever the resource is updated.
1532    :type etag: str
1533    :param type: Type of the resource.
1534    :type type: str
1535    :param default_backend_address_pool: Default backend address pool resource of URL path map.
1536    :type default_backend_address_pool: ~azure.mgmt.network.v2018_07_01.models.SubResource
1537    :param default_backend_http_settings: Default backend http settings resource of URL path map.
1538    :type default_backend_http_settings: ~azure.mgmt.network.v2018_07_01.models.SubResource
1539    :param default_redirect_configuration: Default redirect configuration resource of URL path map.
1540    :type default_redirect_configuration: ~azure.mgmt.network.v2018_07_01.models.SubResource
1541    :param path_rules: Path rule of URL path map resource.
1542    :type path_rules: list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayPathRule]
1543    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
1544     values are: 'Updating', 'Deleting', and 'Failed'.
1545    :type provisioning_state: str
1546    """
1547
1548    _attribute_map = {
1549        'id': {'key': 'id', 'type': 'str'},
1550        'name': {'key': 'name', 'type': 'str'},
1551        'etag': {'key': 'etag', 'type': 'str'},
1552        'type': {'key': 'type', 'type': 'str'},
1553        'default_backend_address_pool': {'key': 'properties.defaultBackendAddressPool', 'type': 'SubResource'},
1554        'default_backend_http_settings': {'key': 'properties.defaultBackendHttpSettings', 'type': 'SubResource'},
1555        'default_redirect_configuration': {'key': 'properties.defaultRedirectConfiguration', 'type': 'SubResource'},
1556        'path_rules': {'key': 'properties.pathRules', 'type': '[ApplicationGatewayPathRule]'},
1557        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1558    }
1559
1560    def __init__(
1561        self,
1562        **kwargs
1563    ):
1564        super(ApplicationGatewayUrlPathMap, self).__init__(**kwargs)
1565        self.name = kwargs.get('name', None)
1566        self.etag = kwargs.get('etag', None)
1567        self.type = kwargs.get('type', None)
1568        self.default_backend_address_pool = kwargs.get('default_backend_address_pool', None)
1569        self.default_backend_http_settings = kwargs.get('default_backend_http_settings', None)
1570        self.default_redirect_configuration = kwargs.get('default_redirect_configuration', None)
1571        self.path_rules = kwargs.get('path_rules', None)
1572        self.provisioning_state = kwargs.get('provisioning_state', None)
1573
1574
1575class ApplicationGatewayWebApplicationFirewallConfiguration(msrest.serialization.Model):
1576    """Application gateway web application firewall configuration.
1577
1578    All required parameters must be populated in order to send to Azure.
1579
1580    :param enabled: Required. Whether the web application firewall is enabled or not.
1581    :type enabled: bool
1582    :param firewall_mode: Required. Web application firewall mode. Possible values include:
1583     "Detection", "Prevention".
1584    :type firewall_mode: str or
1585     ~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayFirewallMode
1586    :param rule_set_type: Required. The type of the web application firewall rule set. Possible
1587     values are: 'OWASP'.
1588    :type rule_set_type: str
1589    :param rule_set_version: Required. The version of the rule set type.
1590    :type rule_set_version: str
1591    :param disabled_rule_groups: The disabled rule groups.
1592    :type disabled_rule_groups:
1593     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayFirewallDisabledRuleGroup]
1594    :param request_body_check: Whether allow WAF to check request Body.
1595    :type request_body_check: bool
1596    :param max_request_body_size: Maximum request body size for WAF.
1597    :type max_request_body_size: int
1598    """
1599
1600    _validation = {
1601        'enabled': {'required': True},
1602        'firewall_mode': {'required': True},
1603        'rule_set_type': {'required': True},
1604        'rule_set_version': {'required': True},
1605        'max_request_body_size': {'maximum': 128, 'minimum': 8},
1606    }
1607
1608    _attribute_map = {
1609        'enabled': {'key': 'enabled', 'type': 'bool'},
1610        'firewall_mode': {'key': 'firewallMode', 'type': 'str'},
1611        'rule_set_type': {'key': 'ruleSetType', 'type': 'str'},
1612        'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'},
1613        'disabled_rule_groups': {'key': 'disabledRuleGroups', 'type': '[ApplicationGatewayFirewallDisabledRuleGroup]'},
1614        'request_body_check': {'key': 'requestBodyCheck', 'type': 'bool'},
1615        'max_request_body_size': {'key': 'maxRequestBodySize', 'type': 'int'},
1616    }
1617
1618    def __init__(
1619        self,
1620        **kwargs
1621    ):
1622        super(ApplicationGatewayWebApplicationFirewallConfiguration, self).__init__(**kwargs)
1623        self.enabled = kwargs['enabled']
1624        self.firewall_mode = kwargs['firewall_mode']
1625        self.rule_set_type = kwargs['rule_set_type']
1626        self.rule_set_version = kwargs['rule_set_version']
1627        self.disabled_rule_groups = kwargs.get('disabled_rule_groups', None)
1628        self.request_body_check = kwargs.get('request_body_check', None)
1629        self.max_request_body_size = kwargs.get('max_request_body_size', None)
1630
1631
1632class ApplicationSecurityGroup(Resource):
1633    """An application security group in a resource group.
1634
1635    Variables are only populated by the server, and will be ignored when sending a request.
1636
1637    :param id: Resource ID.
1638    :type id: str
1639    :ivar name: Resource name.
1640    :vartype name: str
1641    :ivar type: Resource type.
1642    :vartype type: str
1643    :param location: Resource location.
1644    :type location: str
1645    :param tags: A set of tags. Resource tags.
1646    :type tags: dict[str, str]
1647    :ivar etag: A unique read-only string that changes whenever the resource is updated.
1648    :vartype etag: str
1649    :ivar resource_guid: The resource GUID property of the application security group resource. It
1650     uniquely identifies a resource, even if the user changes its name or migrate the resource
1651     across subscriptions or resource groups.
1652    :vartype resource_guid: str
1653    :ivar provisioning_state: The provisioning state of the application security group resource.
1654     Possible values are: 'Succeeded', 'Updating', 'Deleting', and 'Failed'.
1655    :vartype provisioning_state: str
1656    """
1657
1658    _validation = {
1659        'name': {'readonly': True},
1660        'type': {'readonly': True},
1661        'etag': {'readonly': True},
1662        'resource_guid': {'readonly': True},
1663        'provisioning_state': {'readonly': True},
1664    }
1665
1666    _attribute_map = {
1667        'id': {'key': 'id', 'type': 'str'},
1668        'name': {'key': 'name', 'type': 'str'},
1669        'type': {'key': 'type', 'type': 'str'},
1670        'location': {'key': 'location', 'type': 'str'},
1671        'tags': {'key': 'tags', 'type': '{str}'},
1672        'etag': {'key': 'etag', 'type': 'str'},
1673        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
1674        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1675    }
1676
1677    def __init__(
1678        self,
1679        **kwargs
1680    ):
1681        super(ApplicationSecurityGroup, self).__init__(**kwargs)
1682        self.etag = None
1683        self.resource_guid = None
1684        self.provisioning_state = None
1685
1686
1687class ApplicationSecurityGroupListResult(msrest.serialization.Model):
1688    """A list of application security groups.
1689
1690    Variables are only populated by the server, and will be ignored when sending a request.
1691
1692    :param value: A list of application security groups.
1693    :type value: list[~azure.mgmt.network.v2018_07_01.models.ApplicationSecurityGroup]
1694    :ivar next_link: The URL to get the next set of results.
1695    :vartype next_link: str
1696    """
1697
1698    _validation = {
1699        'next_link': {'readonly': True},
1700    }
1701
1702    _attribute_map = {
1703        'value': {'key': 'value', 'type': '[ApplicationSecurityGroup]'},
1704        'next_link': {'key': 'nextLink', 'type': 'str'},
1705    }
1706
1707    def __init__(
1708        self,
1709        **kwargs
1710    ):
1711        super(ApplicationSecurityGroupListResult, self).__init__(**kwargs)
1712        self.value = kwargs.get('value', None)
1713        self.next_link = None
1714
1715
1716class AuthorizationListResult(msrest.serialization.Model):
1717    """Response for ListAuthorizations API service call retrieves all authorizations that belongs to an ExpressRouteCircuit.
1718
1719    :param value: The authorizations in an ExpressRoute Circuit.
1720    :type value: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitAuthorization]
1721    :param next_link: The URL to get the next set of results.
1722    :type next_link: str
1723    """
1724
1725    _attribute_map = {
1726        'value': {'key': 'value', 'type': '[ExpressRouteCircuitAuthorization]'},
1727        'next_link': {'key': 'nextLink', 'type': 'str'},
1728    }
1729
1730    def __init__(
1731        self,
1732        **kwargs
1733    ):
1734        super(AuthorizationListResult, self).__init__(**kwargs)
1735        self.value = kwargs.get('value', None)
1736        self.next_link = kwargs.get('next_link', None)
1737
1738
1739class Availability(msrest.serialization.Model):
1740    """Availability of the metric.
1741
1742    :param time_grain: The time grain of the availability.
1743    :type time_grain: str
1744    :param retention: The retention of the availability.
1745    :type retention: str
1746    :param blob_duration: Duration of the availability blob.
1747    :type blob_duration: str
1748    """
1749
1750    _attribute_map = {
1751        'time_grain': {'key': 'timeGrain', 'type': 'str'},
1752        'retention': {'key': 'retention', 'type': 'str'},
1753        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
1754    }
1755
1756    def __init__(
1757        self,
1758        **kwargs
1759    ):
1760        super(Availability, self).__init__(**kwargs)
1761        self.time_grain = kwargs.get('time_grain', None)
1762        self.retention = kwargs.get('retention', None)
1763        self.blob_duration = kwargs.get('blob_duration', None)
1764
1765
1766class AvailableProvidersList(msrest.serialization.Model):
1767    """List of available countries with details.
1768
1769    All required parameters must be populated in order to send to Azure.
1770
1771    :param countries: Required. List of available countries.
1772    :type countries: list[~azure.mgmt.network.v2018_07_01.models.AvailableProvidersListCountry]
1773    """
1774
1775    _validation = {
1776        'countries': {'required': True},
1777    }
1778
1779    _attribute_map = {
1780        'countries': {'key': 'countries', 'type': '[AvailableProvidersListCountry]'},
1781    }
1782
1783    def __init__(
1784        self,
1785        **kwargs
1786    ):
1787        super(AvailableProvidersList, self).__init__(**kwargs)
1788        self.countries = kwargs['countries']
1789
1790
1791class AvailableProvidersListCity(msrest.serialization.Model):
1792    """City or town details.
1793
1794    :param city_name: The city or town name.
1795    :type city_name: str
1796    :param providers: A list of Internet service providers.
1797    :type providers: list[str]
1798    """
1799
1800    _attribute_map = {
1801        'city_name': {'key': 'cityName', 'type': 'str'},
1802        'providers': {'key': 'providers', 'type': '[str]'},
1803    }
1804
1805    def __init__(
1806        self,
1807        **kwargs
1808    ):
1809        super(AvailableProvidersListCity, self).__init__(**kwargs)
1810        self.city_name = kwargs.get('city_name', None)
1811        self.providers = kwargs.get('providers', None)
1812
1813
1814class AvailableProvidersListCountry(msrest.serialization.Model):
1815    """Country details.
1816
1817    :param country_name: The country name.
1818    :type country_name: str
1819    :param providers: A list of Internet service providers.
1820    :type providers: list[str]
1821    :param states: List of available states in the country.
1822    :type states: list[~azure.mgmt.network.v2018_07_01.models.AvailableProvidersListState]
1823    """
1824
1825    _attribute_map = {
1826        'country_name': {'key': 'countryName', 'type': 'str'},
1827        'providers': {'key': 'providers', 'type': '[str]'},
1828        'states': {'key': 'states', 'type': '[AvailableProvidersListState]'},
1829    }
1830
1831    def __init__(
1832        self,
1833        **kwargs
1834    ):
1835        super(AvailableProvidersListCountry, self).__init__(**kwargs)
1836        self.country_name = kwargs.get('country_name', None)
1837        self.providers = kwargs.get('providers', None)
1838        self.states = kwargs.get('states', None)
1839
1840
1841class AvailableProvidersListParameters(msrest.serialization.Model):
1842    """Constraints that determine the list of available Internet service providers.
1843
1844    :param azure_locations: A list of Azure regions.
1845    :type azure_locations: list[str]
1846    :param country: The country for available providers list.
1847    :type country: str
1848    :param state: The state for available providers list.
1849    :type state: str
1850    :param city: The city or town for available providers list.
1851    :type city: str
1852    """
1853
1854    _attribute_map = {
1855        'azure_locations': {'key': 'azureLocations', 'type': '[str]'},
1856        'country': {'key': 'country', 'type': 'str'},
1857        'state': {'key': 'state', 'type': 'str'},
1858        'city': {'key': 'city', 'type': 'str'},
1859    }
1860
1861    def __init__(
1862        self,
1863        **kwargs
1864    ):
1865        super(AvailableProvidersListParameters, self).__init__(**kwargs)
1866        self.azure_locations = kwargs.get('azure_locations', None)
1867        self.country = kwargs.get('country', None)
1868        self.state = kwargs.get('state', None)
1869        self.city = kwargs.get('city', None)
1870
1871
1872class AvailableProvidersListState(msrest.serialization.Model):
1873    """State details.
1874
1875    :param state_name: The state name.
1876    :type state_name: str
1877    :param providers: A list of Internet service providers.
1878    :type providers: list[str]
1879    :param cities: List of available cities or towns in the state.
1880    :type cities: list[~azure.mgmt.network.v2018_07_01.models.AvailableProvidersListCity]
1881    """
1882
1883    _attribute_map = {
1884        'state_name': {'key': 'stateName', 'type': 'str'},
1885        'providers': {'key': 'providers', 'type': '[str]'},
1886        'cities': {'key': 'cities', 'type': '[AvailableProvidersListCity]'},
1887    }
1888
1889    def __init__(
1890        self,
1891        **kwargs
1892    ):
1893        super(AvailableProvidersListState, self).__init__(**kwargs)
1894        self.state_name = kwargs.get('state_name', None)
1895        self.providers = kwargs.get('providers', None)
1896        self.cities = kwargs.get('cities', None)
1897
1898
1899class AzureAsyncOperationResult(msrest.serialization.Model):
1900    """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.
1901
1902    :param status: Status of the Azure async operation. Possible values are: 'InProgress',
1903     'Succeeded', and 'Failed'. Possible values include: "InProgress", "Succeeded", "Failed".
1904    :type status: str or ~azure.mgmt.network.v2018_07_01.models.NetworkOperationStatus
1905    :param error:
1906    :type error: ~azure.mgmt.network.v2018_07_01.models.Error
1907    """
1908
1909    _attribute_map = {
1910        'status': {'key': 'status', 'type': 'str'},
1911        'error': {'key': 'error', 'type': 'Error'},
1912    }
1913
1914    def __init__(
1915        self,
1916        **kwargs
1917    ):
1918        super(AzureAsyncOperationResult, self).__init__(**kwargs)
1919        self.status = kwargs.get('status', None)
1920        self.error = kwargs.get('error', None)
1921
1922
1923class AzureFirewall(Resource):
1924    """Azure Firewall resource.
1925
1926    Variables are only populated by the server, and will be ignored when sending a request.
1927
1928    :param id: Resource ID.
1929    :type id: str
1930    :ivar name: Resource name.
1931    :vartype name: str
1932    :ivar type: Resource type.
1933    :vartype type: str
1934    :param location: Resource location.
1935    :type location: str
1936    :param tags: A set of tags. Resource tags.
1937    :type tags: dict[str, str]
1938    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
1939    :vartype etag: str
1940    :param application_rule_collections: Collection of application rule collections used by a Azure
1941     Firewall.
1942    :type application_rule_collections:
1943     list[~azure.mgmt.network.v2018_07_01.models.AzureFirewallApplicationRuleCollection]
1944    :param network_rule_collections: Collection of network rule collections used by a Azure
1945     Firewall.
1946    :type network_rule_collections:
1947     list[~azure.mgmt.network.v2018_07_01.models.AzureFirewallNetworkRuleCollection]
1948    :param ip_configurations: IP configuration of the Azure Firewall resource.
1949    :type ip_configurations:
1950     list[~azure.mgmt.network.v2018_07_01.models.AzureFirewallIPConfiguration]
1951    :param provisioning_state: The provisioning state of the resource. Possible values include:
1952     "Succeeded", "Updating", "Deleting", "Failed".
1953    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
1954    """
1955
1956    _validation = {
1957        'name': {'readonly': True},
1958        'type': {'readonly': True},
1959        'etag': {'readonly': True},
1960    }
1961
1962    _attribute_map = {
1963        'id': {'key': 'id', 'type': 'str'},
1964        'name': {'key': 'name', 'type': 'str'},
1965        'type': {'key': 'type', 'type': 'str'},
1966        'location': {'key': 'location', 'type': 'str'},
1967        'tags': {'key': 'tags', 'type': '{str}'},
1968        'etag': {'key': 'etag', 'type': 'str'},
1969        'application_rule_collections': {'key': 'properties.applicationRuleCollections', 'type': '[AzureFirewallApplicationRuleCollection]'},
1970        'network_rule_collections': {'key': 'properties.networkRuleCollections', 'type': '[AzureFirewallNetworkRuleCollection]'},
1971        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[AzureFirewallIPConfiguration]'},
1972        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1973    }
1974
1975    def __init__(
1976        self,
1977        **kwargs
1978    ):
1979        super(AzureFirewall, self).__init__(**kwargs)
1980        self.etag = None
1981        self.application_rule_collections = kwargs.get('application_rule_collections', None)
1982        self.network_rule_collections = kwargs.get('network_rule_collections', None)
1983        self.ip_configurations = kwargs.get('ip_configurations', None)
1984        self.provisioning_state = kwargs.get('provisioning_state', None)
1985
1986
1987class AzureFirewallApplicationRule(msrest.serialization.Model):
1988    """Properties of an application rule.
1989
1990    :param name: Name of the application rule.
1991    :type name: str
1992    :param description: Description of the rule.
1993    :type description: str
1994    :param source_addresses: List of source IP addresses for this rule.
1995    :type source_addresses: list[str]
1996    :param protocols: Array of ApplicationRuleProtocols.
1997    :type protocols:
1998     list[~azure.mgmt.network.v2018_07_01.models.AzureFirewallApplicationRuleProtocol]
1999    :param target_urls: List of URLs for this rule.
2000    :type target_urls: list[str]
2001    """
2002
2003    _attribute_map = {
2004        'name': {'key': 'name', 'type': 'str'},
2005        'description': {'key': 'description', 'type': 'str'},
2006        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
2007        'protocols': {'key': 'protocols', 'type': '[AzureFirewallApplicationRuleProtocol]'},
2008        'target_urls': {'key': 'targetUrls', 'type': '[str]'},
2009    }
2010
2011    def __init__(
2012        self,
2013        **kwargs
2014    ):
2015        super(AzureFirewallApplicationRule, self).__init__(**kwargs)
2016        self.name = kwargs.get('name', None)
2017        self.description = kwargs.get('description', None)
2018        self.source_addresses = kwargs.get('source_addresses', None)
2019        self.protocols = kwargs.get('protocols', None)
2020        self.target_urls = kwargs.get('target_urls', None)
2021
2022
2023class AzureFirewallApplicationRuleCollection(SubResource):
2024    """Application rule collection resource.
2025
2026    Variables are only populated by the server, and will be ignored when sending a request.
2027
2028    :param id: Resource ID.
2029    :type id: str
2030    :param name: Gets name of the resource that is unique within a resource group. This name can be
2031     used to access the resource.
2032    :type name: str
2033    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
2034    :vartype etag: str
2035    :param priority: Priority of the application rule collection resource.
2036    :type priority: int
2037    :param action: The action type of a rule collection.
2038    :type action: ~azure.mgmt.network.v2018_07_01.models.AzureFirewallRCAction
2039    :param rules: Collection of rules used by a application rule collection.
2040    :type rules: list[~azure.mgmt.network.v2018_07_01.models.AzureFirewallApplicationRule]
2041    :param provisioning_state: The provisioning state of the resource. Possible values include:
2042     "Succeeded", "Updating", "Deleting", "Failed".
2043    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
2044    """
2045
2046    _validation = {
2047        'etag': {'readonly': True},
2048        'priority': {'maximum': 65000, 'minimum': 100},
2049    }
2050
2051    _attribute_map = {
2052        'id': {'key': 'id', 'type': 'str'},
2053        'name': {'key': 'name', 'type': 'str'},
2054        'etag': {'key': 'etag', 'type': 'str'},
2055        'priority': {'key': 'properties.priority', 'type': 'int'},
2056        'action': {'key': 'properties.action', 'type': 'AzureFirewallRCAction'},
2057        'rules': {'key': 'properties.rules', 'type': '[AzureFirewallApplicationRule]'},
2058        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2059    }
2060
2061    def __init__(
2062        self,
2063        **kwargs
2064    ):
2065        super(AzureFirewallApplicationRuleCollection, self).__init__(**kwargs)
2066        self.name = kwargs.get('name', None)
2067        self.etag = None
2068        self.priority = kwargs.get('priority', None)
2069        self.action = kwargs.get('action', None)
2070        self.rules = kwargs.get('rules', None)
2071        self.provisioning_state = kwargs.get('provisioning_state', None)
2072
2073
2074class AzureFirewallApplicationRuleProtocol(msrest.serialization.Model):
2075    """Properties of the application rule protocol.
2076
2077    :param protocol_type: Protocol type. Possible values include: "Http", "Https".
2078    :type protocol_type: str or
2079     ~azure.mgmt.network.v2018_07_01.models.AzureFirewallApplicationRuleProtocolType
2080    :param port: Port number for the protocol, cannot be greater than 64000. This field is
2081     optional.
2082    :type port: int
2083    """
2084
2085    _validation = {
2086        'port': {'maximum': 64000, 'minimum': 0},
2087    }
2088
2089    _attribute_map = {
2090        'protocol_type': {'key': 'protocolType', 'type': 'str'},
2091        'port': {'key': 'port', 'type': 'int'},
2092    }
2093
2094    def __init__(
2095        self,
2096        **kwargs
2097    ):
2098        super(AzureFirewallApplicationRuleProtocol, self).__init__(**kwargs)
2099        self.protocol_type = kwargs.get('protocol_type', None)
2100        self.port = kwargs.get('port', None)
2101
2102
2103class AzureFirewallIPConfiguration(SubResource):
2104    """IP configuration of an Azure Firewall.
2105
2106    :param id: Resource ID.
2107    :type id: str
2108    :param name: Name of the resource that is unique within a resource group. This name can be used
2109     to access the resource.
2110    :type name: str
2111    :param etag: A unique read-only string that changes whenever the resource is updated.
2112    :type etag: str
2113    :param private_ip_address: The Firewall Internal Load Balancer IP to be used as the next hop in
2114     User Defined Routes.
2115    :type private_ip_address: str
2116    :param subnet: Reference of the subnet resource. This resource must be named
2117     'AzureFirewallSubnet'.
2118    :type subnet: ~azure.mgmt.network.v2018_07_01.models.SubResource
2119    :param internal_public_ip_address: Reference of the PublicIP resource. This field is a
2120     mandatory input.
2121    :type internal_public_ip_address: ~azure.mgmt.network.v2018_07_01.models.SubResource
2122    :param public_ip_address: Reference of the PublicIP resource. This field is populated in the
2123     output.
2124    :type public_ip_address: ~azure.mgmt.network.v2018_07_01.models.SubResource
2125    :param provisioning_state: The provisioning state of the resource. Possible values include:
2126     "Succeeded", "Updating", "Deleting", "Failed".
2127    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
2128    """
2129
2130    _attribute_map = {
2131        'id': {'key': 'id', 'type': 'str'},
2132        'name': {'key': 'name', 'type': 'str'},
2133        'etag': {'key': 'etag', 'type': 'str'},
2134        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
2135        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
2136        'internal_public_ip_address': {'key': 'properties.internalPublicIpAddress', 'type': 'SubResource'},
2137        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
2138        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2139    }
2140
2141    def __init__(
2142        self,
2143        **kwargs
2144    ):
2145        super(AzureFirewallIPConfiguration, self).__init__(**kwargs)
2146        self.name = kwargs.get('name', None)
2147        self.etag = kwargs.get('etag', None)
2148        self.private_ip_address = kwargs.get('private_ip_address', None)
2149        self.subnet = kwargs.get('subnet', None)
2150        self.internal_public_ip_address = kwargs.get('internal_public_ip_address', None)
2151        self.public_ip_address = kwargs.get('public_ip_address', None)
2152        self.provisioning_state = kwargs.get('provisioning_state', None)
2153
2154
2155class AzureFirewallListResult(msrest.serialization.Model):
2156    """Response for ListAzureFirewalls API service call.
2157
2158    :param value: List of a Azure Firewalls in a resource group.
2159    :type value: list[~azure.mgmt.network.v2018_07_01.models.AzureFirewall]
2160    :param next_link: URL to get the next set of results.
2161    :type next_link: str
2162    """
2163
2164    _attribute_map = {
2165        'value': {'key': 'value', 'type': '[AzureFirewall]'},
2166        'next_link': {'key': 'nextLink', 'type': 'str'},
2167    }
2168
2169    def __init__(
2170        self,
2171        **kwargs
2172    ):
2173        super(AzureFirewallListResult, self).__init__(**kwargs)
2174        self.value = kwargs.get('value', None)
2175        self.next_link = kwargs.get('next_link', None)
2176
2177
2178class AzureFirewallNetworkRule(msrest.serialization.Model):
2179    """Properties of the network rule.
2180
2181    :param name: Name of the network rule.
2182    :type name: str
2183    :param description: Description of the rule.
2184    :type description: str
2185    :param protocols: Array of AzureFirewallNetworkRuleProtocols.
2186    :type protocols: list[str or
2187     ~azure.mgmt.network.v2018_07_01.models.AzureFirewallNetworkRuleProtocol]
2188    :param source_addresses: List of source IP addresses for this rule.
2189    :type source_addresses: list[str]
2190    :param destination_addresses: List of destination IP addresses.
2191    :type destination_addresses: list[str]
2192    :param destination_ports: List of destination ports.
2193    :type destination_ports: list[str]
2194    """
2195
2196    _attribute_map = {
2197        'name': {'key': 'name', 'type': 'str'},
2198        'description': {'key': 'description', 'type': 'str'},
2199        'protocols': {'key': 'protocols', 'type': '[str]'},
2200        'source_addresses': {'key': 'sourceAddresses', 'type': '[str]'},
2201        'destination_addresses': {'key': 'destinationAddresses', 'type': '[str]'},
2202        'destination_ports': {'key': 'destinationPorts', 'type': '[str]'},
2203    }
2204
2205    def __init__(
2206        self,
2207        **kwargs
2208    ):
2209        super(AzureFirewallNetworkRule, self).__init__(**kwargs)
2210        self.name = kwargs.get('name', None)
2211        self.description = kwargs.get('description', None)
2212        self.protocols = kwargs.get('protocols', None)
2213        self.source_addresses = kwargs.get('source_addresses', None)
2214        self.destination_addresses = kwargs.get('destination_addresses', None)
2215        self.destination_ports = kwargs.get('destination_ports', None)
2216
2217
2218class AzureFirewallNetworkRuleCollection(SubResource):
2219    """Network rule collection resource.
2220
2221    Variables are only populated by the server, and will be ignored when sending a request.
2222
2223    :param id: Resource ID.
2224    :type id: str
2225    :param name: Gets name of the resource that is unique within a resource group. This name can be
2226     used to access the resource.
2227    :type name: str
2228    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
2229    :vartype etag: str
2230    :param priority: Priority of the network rule collection resource.
2231    :type priority: int
2232    :param action: The action type of a rule collection.
2233    :type action: ~azure.mgmt.network.v2018_07_01.models.AzureFirewallRCAction
2234    :param rules: Collection of rules used by a network rule collection.
2235    :type rules: list[~azure.mgmt.network.v2018_07_01.models.AzureFirewallNetworkRule]
2236    :param provisioning_state: The provisioning state of the resource. Possible values include:
2237     "Succeeded", "Updating", "Deleting", "Failed".
2238    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
2239    """
2240
2241    _validation = {
2242        'etag': {'readonly': True},
2243        'priority': {'maximum': 65000, 'minimum': 100},
2244    }
2245
2246    _attribute_map = {
2247        'id': {'key': 'id', 'type': 'str'},
2248        'name': {'key': 'name', 'type': 'str'},
2249        'etag': {'key': 'etag', 'type': 'str'},
2250        'priority': {'key': 'properties.priority', 'type': 'int'},
2251        'action': {'key': 'properties.action', 'type': 'AzureFirewallRCAction'},
2252        'rules': {'key': 'properties.rules', 'type': '[AzureFirewallNetworkRule]'},
2253        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2254    }
2255
2256    def __init__(
2257        self,
2258        **kwargs
2259    ):
2260        super(AzureFirewallNetworkRuleCollection, self).__init__(**kwargs)
2261        self.name = kwargs.get('name', None)
2262        self.etag = None
2263        self.priority = kwargs.get('priority', None)
2264        self.action = kwargs.get('action', None)
2265        self.rules = kwargs.get('rules', None)
2266        self.provisioning_state = kwargs.get('provisioning_state', None)
2267
2268
2269class AzureFirewallRCAction(msrest.serialization.Model):
2270    """Properties of the AzureFirewallRCAction.
2271
2272    :param type: The type of action. Possible values include: "Allow", "Deny".
2273    :type type: str or ~azure.mgmt.network.v2018_07_01.models.AzureFirewallRCActionType
2274    """
2275
2276    _attribute_map = {
2277        'type': {'key': 'type', 'type': 'str'},
2278    }
2279
2280    def __init__(
2281        self,
2282        **kwargs
2283    ):
2284        super(AzureFirewallRCAction, self).__init__(**kwargs)
2285        self.type = kwargs.get('type', None)
2286
2287
2288class AzureReachabilityReport(msrest.serialization.Model):
2289    """Azure reachability report details.
2290
2291    All required parameters must be populated in order to send to Azure.
2292
2293    :param aggregation_level: Required. The aggregation level of Azure reachability report. Can be
2294     Country, State or City.
2295    :type aggregation_level: str
2296    :param provider_location: Required. Parameters that define a geographic location.
2297    :type provider_location: ~azure.mgmt.network.v2018_07_01.models.AzureReachabilityReportLocation
2298    :param reachability_report: Required. List of Azure reachability report items.
2299    :type reachability_report:
2300     list[~azure.mgmt.network.v2018_07_01.models.AzureReachabilityReportItem]
2301    """
2302
2303    _validation = {
2304        'aggregation_level': {'required': True},
2305        'provider_location': {'required': True},
2306        'reachability_report': {'required': True},
2307    }
2308
2309    _attribute_map = {
2310        'aggregation_level': {'key': 'aggregationLevel', 'type': 'str'},
2311        'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'},
2312        'reachability_report': {'key': 'reachabilityReport', 'type': '[AzureReachabilityReportItem]'},
2313    }
2314
2315    def __init__(
2316        self,
2317        **kwargs
2318    ):
2319        super(AzureReachabilityReport, self).__init__(**kwargs)
2320        self.aggregation_level = kwargs['aggregation_level']
2321        self.provider_location = kwargs['provider_location']
2322        self.reachability_report = kwargs['reachability_report']
2323
2324
2325class AzureReachabilityReportItem(msrest.serialization.Model):
2326    """Azure reachability report details for a given provider location.
2327
2328    :param provider: The Internet service provider.
2329    :type provider: str
2330    :param azure_location: The Azure region.
2331    :type azure_location: str
2332    :param latencies: List of latency details for each of the time series.
2333    :type latencies:
2334     list[~azure.mgmt.network.v2018_07_01.models.AzureReachabilityReportLatencyInfo]
2335    """
2336
2337    _attribute_map = {
2338        'provider': {'key': 'provider', 'type': 'str'},
2339        'azure_location': {'key': 'azureLocation', 'type': 'str'},
2340        'latencies': {'key': 'latencies', 'type': '[AzureReachabilityReportLatencyInfo]'},
2341    }
2342
2343    def __init__(
2344        self,
2345        **kwargs
2346    ):
2347        super(AzureReachabilityReportItem, self).__init__(**kwargs)
2348        self.provider = kwargs.get('provider', None)
2349        self.azure_location = kwargs.get('azure_location', None)
2350        self.latencies = kwargs.get('latencies', None)
2351
2352
2353class AzureReachabilityReportLatencyInfo(msrest.serialization.Model):
2354    """Details on latency for a time series.
2355
2356    :param time_stamp: The time stamp.
2357    :type time_stamp: ~datetime.datetime
2358    :param score: The relative latency score between 1 and 100, higher values indicating a faster
2359     connection.
2360    :type score: int
2361    """
2362
2363    _validation = {
2364        'score': {'maximum': 100, 'minimum': 1},
2365    }
2366
2367    _attribute_map = {
2368        'time_stamp': {'key': 'timeStamp', 'type': 'iso-8601'},
2369        'score': {'key': 'score', 'type': 'int'},
2370    }
2371
2372    def __init__(
2373        self,
2374        **kwargs
2375    ):
2376        super(AzureReachabilityReportLatencyInfo, self).__init__(**kwargs)
2377        self.time_stamp = kwargs.get('time_stamp', None)
2378        self.score = kwargs.get('score', None)
2379
2380
2381class AzureReachabilityReportLocation(msrest.serialization.Model):
2382    """Parameters that define a geographic location.
2383
2384    All required parameters must be populated in order to send to Azure.
2385
2386    :param country: Required. The name of the country.
2387    :type country: str
2388    :param state: The name of the state.
2389    :type state: str
2390    :param city: The name of the city or town.
2391    :type city: str
2392    """
2393
2394    _validation = {
2395        'country': {'required': True},
2396    }
2397
2398    _attribute_map = {
2399        'country': {'key': 'country', 'type': 'str'},
2400        'state': {'key': 'state', 'type': 'str'},
2401        'city': {'key': 'city', 'type': 'str'},
2402    }
2403
2404    def __init__(
2405        self,
2406        **kwargs
2407    ):
2408        super(AzureReachabilityReportLocation, self).__init__(**kwargs)
2409        self.country = kwargs['country']
2410        self.state = kwargs.get('state', None)
2411        self.city = kwargs.get('city', None)
2412
2413
2414class AzureReachabilityReportParameters(msrest.serialization.Model):
2415    """Geographic and time constraints for Azure reachability report.
2416
2417    All required parameters must be populated in order to send to Azure.
2418
2419    :param provider_location: Required. Parameters that define a geographic location.
2420    :type provider_location: ~azure.mgmt.network.v2018_07_01.models.AzureReachabilityReportLocation
2421    :param providers: List of Internet service providers.
2422    :type providers: list[str]
2423    :param azure_locations: Optional Azure regions to scope the query to.
2424    :type azure_locations: list[str]
2425    :param start_time: Required. The start time for the Azure reachability report.
2426    :type start_time: ~datetime.datetime
2427    :param end_time: Required. The end time for the Azure reachability report.
2428    :type end_time: ~datetime.datetime
2429    """
2430
2431    _validation = {
2432        'provider_location': {'required': True},
2433        'start_time': {'required': True},
2434        'end_time': {'required': True},
2435    }
2436
2437    _attribute_map = {
2438        'provider_location': {'key': 'providerLocation', 'type': 'AzureReachabilityReportLocation'},
2439        'providers': {'key': 'providers', 'type': '[str]'},
2440        'azure_locations': {'key': 'azureLocations', 'type': '[str]'},
2441        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
2442        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
2443    }
2444
2445    def __init__(
2446        self,
2447        **kwargs
2448    ):
2449        super(AzureReachabilityReportParameters, self).__init__(**kwargs)
2450        self.provider_location = kwargs['provider_location']
2451        self.providers = kwargs.get('providers', None)
2452        self.azure_locations = kwargs.get('azure_locations', None)
2453        self.start_time = kwargs['start_time']
2454        self.end_time = kwargs['end_time']
2455
2456
2457class BackendAddressPool(SubResource):
2458    """Pool of backend IP addresses.
2459
2460    Variables are only populated by the server, and will be ignored when sending a request.
2461
2462    :param id: Resource ID.
2463    :type id: str
2464    :param name: Gets name of the resource that is unique within a resource group. This name can be
2465     used to access the resource.
2466    :type name: str
2467    :param etag: A unique read-only string that changes whenever the resource is updated.
2468    :type etag: str
2469    :ivar backend_ip_configurations: Gets collection of references to IP addresses defined in
2470     network interfaces.
2471    :vartype backend_ip_configurations:
2472     list[~azure.mgmt.network.v2018_07_01.models.NetworkInterfaceIPConfiguration]
2473    :ivar load_balancing_rules: Gets load balancing rules that use this backend address pool.
2474    :vartype load_balancing_rules: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
2475    :ivar outbound_rule: Gets outbound rules that use this backend address pool.
2476    :vartype outbound_rule: ~azure.mgmt.network.v2018_07_01.models.SubResource
2477    :ivar outbound_rules: Gets outbound rules that use this backend address pool.
2478    :vartype outbound_rules: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
2479    :param provisioning_state: Get provisioning state of the public IP resource. Possible values
2480     are: 'Updating', 'Deleting', and 'Failed'.
2481    :type provisioning_state: str
2482    """
2483
2484    _validation = {
2485        'backend_ip_configurations': {'readonly': True},
2486        'load_balancing_rules': {'readonly': True},
2487        'outbound_rule': {'readonly': True},
2488        'outbound_rules': {'readonly': True},
2489    }
2490
2491    _attribute_map = {
2492        'id': {'key': 'id', 'type': 'str'},
2493        'name': {'key': 'name', 'type': 'str'},
2494        'etag': {'key': 'etag', 'type': 'str'},
2495        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
2496        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
2497        'outbound_rule': {'key': 'properties.outboundRule', 'type': 'SubResource'},
2498        'outbound_rules': {'key': 'properties.outboundRules', 'type': '[SubResource]'},
2499        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2500    }
2501
2502    def __init__(
2503        self,
2504        **kwargs
2505    ):
2506        super(BackendAddressPool, self).__init__(**kwargs)
2507        self.name = kwargs.get('name', None)
2508        self.etag = kwargs.get('etag', None)
2509        self.backend_ip_configurations = None
2510        self.load_balancing_rules = None
2511        self.outbound_rule = None
2512        self.outbound_rules = None
2513        self.provisioning_state = kwargs.get('provisioning_state', None)
2514
2515
2516class BGPCommunity(msrest.serialization.Model):
2517    """Contains bgp community information offered in Service Community resources.
2518
2519    :param service_supported_region: The region which the service support. e.g. For O365, region is
2520     Global.
2521    :type service_supported_region: str
2522    :param community_name: The name of the bgp community. e.g. Skype.
2523    :type community_name: str
2524    :param community_value: The value of the bgp community. For more information:
2525     https://docs.microsoft.com/en-us/azure/expressroute/expressroute-routing.
2526    :type community_value: str
2527    :param community_prefixes: The prefixes that the bgp community contains.
2528    :type community_prefixes: list[str]
2529    :param is_authorized_to_use: Customer is authorized to use bgp community or not.
2530    :type is_authorized_to_use: bool
2531    :param service_group: The service group of the bgp community contains.
2532    :type service_group: str
2533    """
2534
2535    _attribute_map = {
2536        'service_supported_region': {'key': 'serviceSupportedRegion', 'type': 'str'},
2537        'community_name': {'key': 'communityName', 'type': 'str'},
2538        'community_value': {'key': 'communityValue', 'type': 'str'},
2539        'community_prefixes': {'key': 'communityPrefixes', 'type': '[str]'},
2540        'is_authorized_to_use': {'key': 'isAuthorizedToUse', 'type': 'bool'},
2541        'service_group': {'key': 'serviceGroup', 'type': 'str'},
2542    }
2543
2544    def __init__(
2545        self,
2546        **kwargs
2547    ):
2548        super(BGPCommunity, self).__init__(**kwargs)
2549        self.service_supported_region = kwargs.get('service_supported_region', None)
2550        self.community_name = kwargs.get('community_name', None)
2551        self.community_value = kwargs.get('community_value', None)
2552        self.community_prefixes = kwargs.get('community_prefixes', None)
2553        self.is_authorized_to_use = kwargs.get('is_authorized_to_use', None)
2554        self.service_group = kwargs.get('service_group', None)
2555
2556
2557class BgpPeerStatus(msrest.serialization.Model):
2558    """BGP peer status details.
2559
2560    Variables are only populated by the server, and will be ignored when sending a request.
2561
2562    :ivar local_address: The virtual network gateway's local address.
2563    :vartype local_address: str
2564    :ivar neighbor: The remote BGP peer.
2565    :vartype neighbor: str
2566    :ivar asn: The autonomous system number of the remote BGP peer.
2567    :vartype asn: int
2568    :ivar state: The BGP peer state. Possible values include: "Unknown", "Stopped", "Idle",
2569     "Connecting", "Connected".
2570    :vartype state: str or ~azure.mgmt.network.v2018_07_01.models.BgpPeerState
2571    :ivar connected_duration: For how long the peering has been up.
2572    :vartype connected_duration: str
2573    :ivar routes_received: The number of routes learned from this peer.
2574    :vartype routes_received: long
2575    :ivar messages_sent: The number of BGP messages sent.
2576    :vartype messages_sent: long
2577    :ivar messages_received: The number of BGP messages received.
2578    :vartype messages_received: long
2579    """
2580
2581    _validation = {
2582        'local_address': {'readonly': True},
2583        'neighbor': {'readonly': True},
2584        'asn': {'readonly': True},
2585        'state': {'readonly': True},
2586        'connected_duration': {'readonly': True},
2587        'routes_received': {'readonly': True},
2588        'messages_sent': {'readonly': True},
2589        'messages_received': {'readonly': True},
2590    }
2591
2592    _attribute_map = {
2593        'local_address': {'key': 'localAddress', 'type': 'str'},
2594        'neighbor': {'key': 'neighbor', 'type': 'str'},
2595        'asn': {'key': 'asn', 'type': 'int'},
2596        'state': {'key': 'state', 'type': 'str'},
2597        'connected_duration': {'key': 'connectedDuration', 'type': 'str'},
2598        'routes_received': {'key': 'routesReceived', 'type': 'long'},
2599        'messages_sent': {'key': 'messagesSent', 'type': 'long'},
2600        'messages_received': {'key': 'messagesReceived', 'type': 'long'},
2601    }
2602
2603    def __init__(
2604        self,
2605        **kwargs
2606    ):
2607        super(BgpPeerStatus, self).__init__(**kwargs)
2608        self.local_address = None
2609        self.neighbor = None
2610        self.asn = None
2611        self.state = None
2612        self.connected_duration = None
2613        self.routes_received = None
2614        self.messages_sent = None
2615        self.messages_received = None
2616
2617
2618class BgpPeerStatusListResult(msrest.serialization.Model):
2619    """Response for list BGP peer status API service call.
2620
2621    :param value: List of BGP peers.
2622    :type value: list[~azure.mgmt.network.v2018_07_01.models.BgpPeerStatus]
2623    """
2624
2625    _attribute_map = {
2626        'value': {'key': 'value', 'type': '[BgpPeerStatus]'},
2627    }
2628
2629    def __init__(
2630        self,
2631        **kwargs
2632    ):
2633        super(BgpPeerStatusListResult, self).__init__(**kwargs)
2634        self.value = kwargs.get('value', None)
2635
2636
2637class BgpServiceCommunity(Resource):
2638    """Service Community Properties.
2639
2640    Variables are only populated by the server, and will be ignored when sending a request.
2641
2642    :param id: Resource ID.
2643    :type id: str
2644    :ivar name: Resource name.
2645    :vartype name: str
2646    :ivar type: Resource type.
2647    :vartype type: str
2648    :param location: Resource location.
2649    :type location: str
2650    :param tags: A set of tags. Resource tags.
2651    :type tags: dict[str, str]
2652    :param service_name: The name of the bgp community. e.g. Skype.
2653    :type service_name: str
2654    :param bgp_communities: Get a list of bgp communities.
2655    :type bgp_communities: list[~azure.mgmt.network.v2018_07_01.models.BGPCommunity]
2656    """
2657
2658    _validation = {
2659        'name': {'readonly': True},
2660        'type': {'readonly': True},
2661    }
2662
2663    _attribute_map = {
2664        'id': {'key': 'id', 'type': 'str'},
2665        'name': {'key': 'name', 'type': 'str'},
2666        'type': {'key': 'type', 'type': 'str'},
2667        'location': {'key': 'location', 'type': 'str'},
2668        'tags': {'key': 'tags', 'type': '{str}'},
2669        'service_name': {'key': 'properties.serviceName', 'type': 'str'},
2670        'bgp_communities': {'key': 'properties.bgpCommunities', 'type': '[BGPCommunity]'},
2671    }
2672
2673    def __init__(
2674        self,
2675        **kwargs
2676    ):
2677        super(BgpServiceCommunity, self).__init__(**kwargs)
2678        self.service_name = kwargs.get('service_name', None)
2679        self.bgp_communities = kwargs.get('bgp_communities', None)
2680
2681
2682class BgpServiceCommunityListResult(msrest.serialization.Model):
2683    """Response for the ListServiceCommunity API service call.
2684
2685    :param value: A list of service community resources.
2686    :type value: list[~azure.mgmt.network.v2018_07_01.models.BgpServiceCommunity]
2687    :param next_link: The URL to get the next set of results.
2688    :type next_link: str
2689    """
2690
2691    _attribute_map = {
2692        'value': {'key': 'value', 'type': '[BgpServiceCommunity]'},
2693        'next_link': {'key': 'nextLink', 'type': 'str'},
2694    }
2695
2696    def __init__(
2697        self,
2698        **kwargs
2699    ):
2700        super(BgpServiceCommunityListResult, self).__init__(**kwargs)
2701        self.value = kwargs.get('value', None)
2702        self.next_link = kwargs.get('next_link', None)
2703
2704
2705class BgpSettings(msrest.serialization.Model):
2706    """BGP settings details.
2707
2708    :param asn: The BGP speaker's ASN.
2709    :type asn: long
2710    :param bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker.
2711    :type bgp_peering_address: str
2712    :param peer_weight: The weight added to routes learned from this BGP speaker.
2713    :type peer_weight: int
2714    """
2715
2716    _attribute_map = {
2717        'asn': {'key': 'asn', 'type': 'long'},
2718        'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'},
2719        'peer_weight': {'key': 'peerWeight', 'type': 'int'},
2720    }
2721
2722    def __init__(
2723        self,
2724        **kwargs
2725    ):
2726        super(BgpSettings, self).__init__(**kwargs)
2727        self.asn = kwargs.get('asn', None)
2728        self.bgp_peering_address = kwargs.get('bgp_peering_address', None)
2729        self.peer_weight = kwargs.get('peer_weight', None)
2730
2731
2732class ConnectionMonitor(msrest.serialization.Model):
2733    """Parameters that define the operation to create a connection monitor.
2734
2735    All required parameters must be populated in order to send to Azure.
2736
2737    :param location: Connection monitor location.
2738    :type location: str
2739    :param tags: A set of tags. Connection monitor tags.
2740    :type tags: dict[str, str]
2741    :param source: Required. Describes the source of connection monitor.
2742    :type source: ~azure.mgmt.network.v2018_07_01.models.ConnectionMonitorSource
2743    :param destination: Required. Describes the destination of connection monitor.
2744    :type destination: ~azure.mgmt.network.v2018_07_01.models.ConnectionMonitorDestination
2745    :param auto_start: Determines if the connection monitor will start automatically once created.
2746    :type auto_start: bool
2747    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
2748    :type monitoring_interval_in_seconds: int
2749    """
2750
2751    _validation = {
2752        'source': {'required': True},
2753        'destination': {'required': True},
2754    }
2755
2756    _attribute_map = {
2757        'location': {'key': 'location', 'type': 'str'},
2758        'tags': {'key': 'tags', 'type': '{str}'},
2759        'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'},
2760        'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'},
2761        'auto_start': {'key': 'properties.autoStart', 'type': 'bool'},
2762        'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'},
2763    }
2764
2765    def __init__(
2766        self,
2767        **kwargs
2768    ):
2769        super(ConnectionMonitor, self).__init__(**kwargs)
2770        self.location = kwargs.get('location', None)
2771        self.tags = kwargs.get('tags', None)
2772        self.source = kwargs['source']
2773        self.destination = kwargs['destination']
2774        self.auto_start = kwargs.get('auto_start', True)
2775        self.monitoring_interval_in_seconds = kwargs.get('monitoring_interval_in_seconds', 60)
2776
2777
2778class ConnectionMonitorDestination(msrest.serialization.Model):
2779    """Describes the destination of connection monitor.
2780
2781    :param resource_id: The ID of the resource used as the destination by connection monitor.
2782    :type resource_id: str
2783    :param address: Address of the connection monitor destination (IP or domain name).
2784    :type address: str
2785    :param port: The destination port used by connection monitor.
2786    :type port: int
2787    """
2788
2789    _attribute_map = {
2790        'resource_id': {'key': 'resourceId', 'type': 'str'},
2791        'address': {'key': 'address', 'type': 'str'},
2792        'port': {'key': 'port', 'type': 'int'},
2793    }
2794
2795    def __init__(
2796        self,
2797        **kwargs
2798    ):
2799        super(ConnectionMonitorDestination, self).__init__(**kwargs)
2800        self.resource_id = kwargs.get('resource_id', None)
2801        self.address = kwargs.get('address', None)
2802        self.port = kwargs.get('port', None)
2803
2804
2805class ConnectionMonitorListResult(msrest.serialization.Model):
2806    """List of connection monitors.
2807
2808    :param value: Information about connection monitors.
2809    :type value: list[~azure.mgmt.network.v2018_07_01.models.ConnectionMonitorResult]
2810    """
2811
2812    _attribute_map = {
2813        'value': {'key': 'value', 'type': '[ConnectionMonitorResult]'},
2814    }
2815
2816    def __init__(
2817        self,
2818        **kwargs
2819    ):
2820        super(ConnectionMonitorListResult, self).__init__(**kwargs)
2821        self.value = kwargs.get('value', None)
2822
2823
2824class ConnectionMonitorParameters(msrest.serialization.Model):
2825    """Parameters that define the operation to create a connection monitor.
2826
2827    All required parameters must be populated in order to send to Azure.
2828
2829    :param source: Required. Describes the source of connection monitor.
2830    :type source: ~azure.mgmt.network.v2018_07_01.models.ConnectionMonitorSource
2831    :param destination: Required. Describes the destination of connection monitor.
2832    :type destination: ~azure.mgmt.network.v2018_07_01.models.ConnectionMonitorDestination
2833    :param auto_start: Determines if the connection monitor will start automatically once created.
2834    :type auto_start: bool
2835    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
2836    :type monitoring_interval_in_seconds: int
2837    """
2838
2839    _validation = {
2840        'source': {'required': True},
2841        'destination': {'required': True},
2842    }
2843
2844    _attribute_map = {
2845        'source': {'key': 'source', 'type': 'ConnectionMonitorSource'},
2846        'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'},
2847        'auto_start': {'key': 'autoStart', 'type': 'bool'},
2848        'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'},
2849    }
2850
2851    def __init__(
2852        self,
2853        **kwargs
2854    ):
2855        super(ConnectionMonitorParameters, self).__init__(**kwargs)
2856        self.source = kwargs['source']
2857        self.destination = kwargs['destination']
2858        self.auto_start = kwargs.get('auto_start', True)
2859        self.monitoring_interval_in_seconds = kwargs.get('monitoring_interval_in_seconds', 60)
2860
2861
2862class ConnectionMonitorQueryResult(msrest.serialization.Model):
2863    """List of connection states snapshots.
2864
2865    :param source_status: Status of connection monitor source. Possible values include: "Uknown",
2866     "Active", "Inactive".
2867    :type source_status: str or
2868     ~azure.mgmt.network.v2018_07_01.models.ConnectionMonitorSourceStatus
2869    :param states: Information about connection states.
2870    :type states: list[~azure.mgmt.network.v2018_07_01.models.ConnectionStateSnapshot]
2871    """
2872
2873    _attribute_map = {
2874        'source_status': {'key': 'sourceStatus', 'type': 'str'},
2875        'states': {'key': 'states', 'type': '[ConnectionStateSnapshot]'},
2876    }
2877
2878    def __init__(
2879        self,
2880        **kwargs
2881    ):
2882        super(ConnectionMonitorQueryResult, self).__init__(**kwargs)
2883        self.source_status = kwargs.get('source_status', None)
2884        self.states = kwargs.get('states', None)
2885
2886
2887class ConnectionMonitorResult(msrest.serialization.Model):
2888    """Information about the connection monitor.
2889
2890    Variables are only populated by the server, and will be ignored when sending a request.
2891
2892    :ivar name: Name of the connection monitor.
2893    :vartype name: str
2894    :ivar id: ID of the connection monitor.
2895    :vartype id: str
2896    :param etag:
2897    :type etag: str
2898    :ivar type: Connection monitor type.
2899    :vartype type: str
2900    :param location: Connection monitor location.
2901    :type location: str
2902    :param tags: A set of tags. Connection monitor tags.
2903    :type tags: dict[str, str]
2904    :param source: Describes the source of connection monitor.
2905    :type source: ~azure.mgmt.network.v2018_07_01.models.ConnectionMonitorSource
2906    :param destination: Describes the destination of connection monitor.
2907    :type destination: ~azure.mgmt.network.v2018_07_01.models.ConnectionMonitorDestination
2908    :param auto_start: Determines if the connection monitor will start automatically once created.
2909    :type auto_start: bool
2910    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
2911    :type monitoring_interval_in_seconds: int
2912    :param provisioning_state: The provisioning state of the connection monitor. Possible values
2913     include: "Succeeded", "Updating", "Deleting", "Failed".
2914    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
2915    :param start_time: The date and time when the connection monitor was started.
2916    :type start_time: ~datetime.datetime
2917    :param monitoring_status: The monitoring status of the connection monitor.
2918    :type monitoring_status: str
2919    """
2920
2921    _validation = {
2922        'name': {'readonly': True},
2923        'id': {'readonly': True},
2924        'type': {'readonly': True},
2925    }
2926
2927    _attribute_map = {
2928        'name': {'key': 'name', 'type': 'str'},
2929        'id': {'key': 'id', 'type': 'str'},
2930        'etag': {'key': 'etag', 'type': 'str'},
2931        'type': {'key': 'type', 'type': 'str'},
2932        'location': {'key': 'location', 'type': 'str'},
2933        'tags': {'key': 'tags', 'type': '{str}'},
2934        'source': {'key': 'properties.source', 'type': 'ConnectionMonitorSource'},
2935        'destination': {'key': 'properties.destination', 'type': 'ConnectionMonitorDestination'},
2936        'auto_start': {'key': 'properties.autoStart', 'type': 'bool'},
2937        'monitoring_interval_in_seconds': {'key': 'properties.monitoringIntervalInSeconds', 'type': 'int'},
2938        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2939        'start_time': {'key': 'properties.startTime', 'type': 'iso-8601'},
2940        'monitoring_status': {'key': 'properties.monitoringStatus', 'type': 'str'},
2941    }
2942
2943    def __init__(
2944        self,
2945        **kwargs
2946    ):
2947        super(ConnectionMonitorResult, self).__init__(**kwargs)
2948        self.name = None
2949        self.id = None
2950        self.etag = kwargs.get('etag', "A unique read-only string that changes whenever the resource is updated.")
2951        self.type = None
2952        self.location = kwargs.get('location', None)
2953        self.tags = kwargs.get('tags', None)
2954        self.source = kwargs.get('source', None)
2955        self.destination = kwargs.get('destination', None)
2956        self.auto_start = kwargs.get('auto_start', True)
2957        self.monitoring_interval_in_seconds = kwargs.get('monitoring_interval_in_seconds', 60)
2958        self.provisioning_state = kwargs.get('provisioning_state', None)
2959        self.start_time = kwargs.get('start_time', None)
2960        self.monitoring_status = kwargs.get('monitoring_status', None)
2961
2962
2963class ConnectionMonitorResultProperties(ConnectionMonitorParameters):
2964    """Describes the properties of a connection monitor.
2965
2966    All required parameters must be populated in order to send to Azure.
2967
2968    :param source: Required. Describes the source of connection monitor.
2969    :type source: ~azure.mgmt.network.v2018_07_01.models.ConnectionMonitorSource
2970    :param destination: Required. Describes the destination of connection monitor.
2971    :type destination: ~azure.mgmt.network.v2018_07_01.models.ConnectionMonitorDestination
2972    :param auto_start: Determines if the connection monitor will start automatically once created.
2973    :type auto_start: bool
2974    :param monitoring_interval_in_seconds: Monitoring interval in seconds.
2975    :type monitoring_interval_in_seconds: int
2976    :param provisioning_state: The provisioning state of the connection monitor. Possible values
2977     include: "Succeeded", "Updating", "Deleting", "Failed".
2978    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
2979    :param start_time: The date and time when the connection monitor was started.
2980    :type start_time: ~datetime.datetime
2981    :param monitoring_status: The monitoring status of the connection monitor.
2982    :type monitoring_status: str
2983    """
2984
2985    _validation = {
2986        'source': {'required': True},
2987        'destination': {'required': True},
2988    }
2989
2990    _attribute_map = {
2991        'source': {'key': 'source', 'type': 'ConnectionMonitorSource'},
2992        'destination': {'key': 'destination', 'type': 'ConnectionMonitorDestination'},
2993        'auto_start': {'key': 'autoStart', 'type': 'bool'},
2994        'monitoring_interval_in_seconds': {'key': 'monitoringIntervalInSeconds', 'type': 'int'},
2995        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
2996        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
2997        'monitoring_status': {'key': 'monitoringStatus', 'type': 'str'},
2998    }
2999
3000    def __init__(
3001        self,
3002        **kwargs
3003    ):
3004        super(ConnectionMonitorResultProperties, self).__init__(**kwargs)
3005        self.provisioning_state = kwargs.get('provisioning_state', None)
3006        self.start_time = kwargs.get('start_time', None)
3007        self.monitoring_status = kwargs.get('monitoring_status', None)
3008
3009
3010class ConnectionMonitorSource(msrest.serialization.Model):
3011    """Describes the source of connection monitor.
3012
3013    All required parameters must be populated in order to send to Azure.
3014
3015    :param resource_id: Required. The ID of the resource used as the source by connection monitor.
3016    :type resource_id: str
3017    :param port: The source port used by connection monitor.
3018    :type port: int
3019    """
3020
3021    _validation = {
3022        'resource_id': {'required': True},
3023    }
3024
3025    _attribute_map = {
3026        'resource_id': {'key': 'resourceId', 'type': 'str'},
3027        'port': {'key': 'port', 'type': 'int'},
3028    }
3029
3030    def __init__(
3031        self,
3032        **kwargs
3033    ):
3034        super(ConnectionMonitorSource, self).__init__(**kwargs)
3035        self.resource_id = kwargs['resource_id']
3036        self.port = kwargs.get('port', None)
3037
3038
3039class ConnectionResetSharedKey(msrest.serialization.Model):
3040    """The virtual network connection reset shared key.
3041
3042    All required parameters must be populated in order to send to Azure.
3043
3044    :param key_length: Required. The virtual network connection reset shared key length, should
3045     between 1 and 128.
3046    :type key_length: int
3047    """
3048
3049    _validation = {
3050        'key_length': {'required': True, 'maximum': 128, 'minimum': 1},
3051    }
3052
3053    _attribute_map = {
3054        'key_length': {'key': 'keyLength', 'type': 'int'},
3055    }
3056
3057    def __init__(
3058        self,
3059        **kwargs
3060    ):
3061        super(ConnectionResetSharedKey, self).__init__(**kwargs)
3062        self.key_length = kwargs['key_length']
3063
3064
3065class ConnectionSharedKey(SubResource):
3066    """Response for GetConnectionSharedKey API service call.
3067
3068    All required parameters must be populated in order to send to Azure.
3069
3070    :param id: Resource ID.
3071    :type id: str
3072    :param value: Required. The virtual network connection shared key value.
3073    :type value: str
3074    """
3075
3076    _validation = {
3077        'value': {'required': True},
3078    }
3079
3080    _attribute_map = {
3081        'id': {'key': 'id', 'type': 'str'},
3082        'value': {'key': 'value', 'type': 'str'},
3083    }
3084
3085    def __init__(
3086        self,
3087        **kwargs
3088    ):
3089        super(ConnectionSharedKey, self).__init__(**kwargs)
3090        self.value = kwargs['value']
3091
3092
3093class ConnectionStateSnapshot(msrest.serialization.Model):
3094    """Connection state snapshot.
3095
3096    Variables are only populated by the server, and will be ignored when sending a request.
3097
3098    :param connection_state: The connection state. Possible values include: "Reachable",
3099     "Unreachable", "Unknown".
3100    :type connection_state: str or ~azure.mgmt.network.v2018_07_01.models.ConnectionState
3101    :param start_time: The start time of the connection snapshot.
3102    :type start_time: ~datetime.datetime
3103    :param end_time: The end time of the connection snapshot.
3104    :type end_time: ~datetime.datetime
3105    :param evaluation_state: Connectivity analysis evaluation state. Possible values include:
3106     "NotStarted", "InProgress", "Completed".
3107    :type evaluation_state: str or ~azure.mgmt.network.v2018_07_01.models.EvaluationState
3108    :param avg_latency_in_ms: Average latency in ms.
3109    :type avg_latency_in_ms: int
3110    :param min_latency_in_ms: Minimum latency in ms.
3111    :type min_latency_in_ms: int
3112    :param max_latency_in_ms: Maximum latency in ms.
3113    :type max_latency_in_ms: int
3114    :param probes_sent: The number of sent probes.
3115    :type probes_sent: int
3116    :param probes_failed: The number of failed probes.
3117    :type probes_failed: int
3118    :ivar hops: List of hops between the source and the destination.
3119    :vartype hops: list[~azure.mgmt.network.v2018_07_01.models.ConnectivityHop]
3120    """
3121
3122    _validation = {
3123        'hops': {'readonly': True},
3124    }
3125
3126    _attribute_map = {
3127        'connection_state': {'key': 'connectionState', 'type': 'str'},
3128        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
3129        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
3130        'evaluation_state': {'key': 'evaluationState', 'type': 'str'},
3131        'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'int'},
3132        'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'int'},
3133        'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'int'},
3134        'probes_sent': {'key': 'probesSent', 'type': 'int'},
3135        'probes_failed': {'key': 'probesFailed', 'type': 'int'},
3136        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
3137    }
3138
3139    def __init__(
3140        self,
3141        **kwargs
3142    ):
3143        super(ConnectionStateSnapshot, self).__init__(**kwargs)
3144        self.connection_state = kwargs.get('connection_state', None)
3145        self.start_time = kwargs.get('start_time', None)
3146        self.end_time = kwargs.get('end_time', None)
3147        self.evaluation_state = kwargs.get('evaluation_state', None)
3148        self.avg_latency_in_ms = kwargs.get('avg_latency_in_ms', None)
3149        self.min_latency_in_ms = kwargs.get('min_latency_in_ms', None)
3150        self.max_latency_in_ms = kwargs.get('max_latency_in_ms', None)
3151        self.probes_sent = kwargs.get('probes_sent', None)
3152        self.probes_failed = kwargs.get('probes_failed', None)
3153        self.hops = None
3154
3155
3156class ConnectivityDestination(msrest.serialization.Model):
3157    """Parameters that define destination of connection.
3158
3159    :param resource_id: The ID of the resource to which a connection attempt will be made.
3160    :type resource_id: str
3161    :param address: The IP address or URI the resource to which a connection attempt will be made.
3162    :type address: str
3163    :param port: Port on which check connectivity will be performed.
3164    :type port: int
3165    """
3166
3167    _attribute_map = {
3168        'resource_id': {'key': 'resourceId', 'type': 'str'},
3169        'address': {'key': 'address', 'type': 'str'},
3170        'port': {'key': 'port', 'type': 'int'},
3171    }
3172
3173    def __init__(
3174        self,
3175        **kwargs
3176    ):
3177        super(ConnectivityDestination, self).__init__(**kwargs)
3178        self.resource_id = kwargs.get('resource_id', None)
3179        self.address = kwargs.get('address', None)
3180        self.port = kwargs.get('port', None)
3181
3182
3183class ConnectivityHop(msrest.serialization.Model):
3184    """Information about a hop between the source and the destination.
3185
3186    Variables are only populated by the server, and will be ignored when sending a request.
3187
3188    :ivar type: The type of the hop.
3189    :vartype type: str
3190    :ivar id: The ID of the hop.
3191    :vartype id: str
3192    :ivar address: The IP address of the hop.
3193    :vartype address: str
3194    :ivar resource_id: The ID of the resource corresponding to this hop.
3195    :vartype resource_id: str
3196    :ivar next_hop_ids: List of next hop identifiers.
3197    :vartype next_hop_ids: list[str]
3198    :ivar issues: List of issues.
3199    :vartype issues: list[~azure.mgmt.network.v2018_07_01.models.ConnectivityIssue]
3200    """
3201
3202    _validation = {
3203        'type': {'readonly': True},
3204        'id': {'readonly': True},
3205        'address': {'readonly': True},
3206        'resource_id': {'readonly': True},
3207        'next_hop_ids': {'readonly': True},
3208        'issues': {'readonly': True},
3209    }
3210
3211    _attribute_map = {
3212        'type': {'key': 'type', 'type': 'str'},
3213        'id': {'key': 'id', 'type': 'str'},
3214        'address': {'key': 'address', 'type': 'str'},
3215        'resource_id': {'key': 'resourceId', 'type': 'str'},
3216        'next_hop_ids': {'key': 'nextHopIds', 'type': '[str]'},
3217        'issues': {'key': 'issues', 'type': '[ConnectivityIssue]'},
3218    }
3219
3220    def __init__(
3221        self,
3222        **kwargs
3223    ):
3224        super(ConnectivityHop, self).__init__(**kwargs)
3225        self.type = None
3226        self.id = None
3227        self.address = None
3228        self.resource_id = None
3229        self.next_hop_ids = None
3230        self.issues = None
3231
3232
3233class ConnectivityInformation(msrest.serialization.Model):
3234    """Information on the connectivity status.
3235
3236    Variables are only populated by the server, and will be ignored when sending a request.
3237
3238    :ivar hops: List of hops between the source and the destination.
3239    :vartype hops: list[~azure.mgmt.network.v2018_07_01.models.ConnectivityHop]
3240    :ivar connection_status: The connection status. Possible values include: "Unknown",
3241     "Connected", "Disconnected", "Degraded".
3242    :vartype connection_status: str or ~azure.mgmt.network.v2018_07_01.models.ConnectionStatus
3243    :ivar avg_latency_in_ms: Average latency in milliseconds.
3244    :vartype avg_latency_in_ms: int
3245    :ivar min_latency_in_ms: Minimum latency in milliseconds.
3246    :vartype min_latency_in_ms: int
3247    :ivar max_latency_in_ms: Maximum latency in milliseconds.
3248    :vartype max_latency_in_ms: int
3249    :ivar probes_sent: Total number of probes sent.
3250    :vartype probes_sent: int
3251    :ivar probes_failed: Number of failed probes.
3252    :vartype probes_failed: int
3253    """
3254
3255    _validation = {
3256        'hops': {'readonly': True},
3257        'connection_status': {'readonly': True},
3258        'avg_latency_in_ms': {'readonly': True},
3259        'min_latency_in_ms': {'readonly': True},
3260        'max_latency_in_ms': {'readonly': True},
3261        'probes_sent': {'readonly': True},
3262        'probes_failed': {'readonly': True},
3263    }
3264
3265    _attribute_map = {
3266        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
3267        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
3268        'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'int'},
3269        'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'int'},
3270        'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'int'},
3271        'probes_sent': {'key': 'probesSent', 'type': 'int'},
3272        'probes_failed': {'key': 'probesFailed', 'type': 'int'},
3273    }
3274
3275    def __init__(
3276        self,
3277        **kwargs
3278    ):
3279        super(ConnectivityInformation, self).__init__(**kwargs)
3280        self.hops = None
3281        self.connection_status = None
3282        self.avg_latency_in_ms = None
3283        self.min_latency_in_ms = None
3284        self.max_latency_in_ms = None
3285        self.probes_sent = None
3286        self.probes_failed = None
3287
3288
3289class ConnectivityIssue(msrest.serialization.Model):
3290    """Information about an issue encountered in the process of checking for connectivity.
3291
3292    Variables are only populated by the server, and will be ignored when sending a request.
3293
3294    :ivar origin: The origin of the issue. Possible values include: "Local", "Inbound", "Outbound".
3295    :vartype origin: str or ~azure.mgmt.network.v2018_07_01.models.Origin
3296    :ivar severity: The severity of the issue. Possible values include: "Error", "Warning".
3297    :vartype severity: str or ~azure.mgmt.network.v2018_07_01.models.Severity
3298    :ivar type: The type of issue. Possible values include: "Unknown", "AgentStopped",
3299     "GuestFirewall", "DnsResolution", "SocketBind", "NetworkSecurityRule", "UserDefinedRoute",
3300     "PortThrottled", "Platform".
3301    :vartype type: str or ~azure.mgmt.network.v2018_07_01.models.IssueType
3302    :ivar context: Provides additional context on the issue.
3303    :vartype context: list[dict[str, str]]
3304    """
3305
3306    _validation = {
3307        'origin': {'readonly': True},
3308        'severity': {'readonly': True},
3309        'type': {'readonly': True},
3310        'context': {'readonly': True},
3311    }
3312
3313    _attribute_map = {
3314        'origin': {'key': 'origin', 'type': 'str'},
3315        'severity': {'key': 'severity', 'type': 'str'},
3316        'type': {'key': 'type', 'type': 'str'},
3317        'context': {'key': 'context', 'type': '[{str}]'},
3318    }
3319
3320    def __init__(
3321        self,
3322        **kwargs
3323    ):
3324        super(ConnectivityIssue, self).__init__(**kwargs)
3325        self.origin = None
3326        self.severity = None
3327        self.type = None
3328        self.context = None
3329
3330
3331class ConnectivityParameters(msrest.serialization.Model):
3332    """Parameters that determine how the connectivity check will be performed.
3333
3334    All required parameters must be populated in order to send to Azure.
3335
3336    :param source: Required. Parameters that define the source of the connection.
3337    :type source: ~azure.mgmt.network.v2018_07_01.models.ConnectivitySource
3338    :param destination: Required. Parameters that define destination of connection.
3339    :type destination: ~azure.mgmt.network.v2018_07_01.models.ConnectivityDestination
3340    :param protocol: Network protocol. Possible values include: "Tcp", "Http", "Https", "Icmp".
3341    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.Protocol
3342    :param protocol_configuration: Configuration of the protocol.
3343    :type protocol_configuration: ~azure.mgmt.network.v2018_07_01.models.ProtocolConfiguration
3344    """
3345
3346    _validation = {
3347        'source': {'required': True},
3348        'destination': {'required': True},
3349    }
3350
3351    _attribute_map = {
3352        'source': {'key': 'source', 'type': 'ConnectivitySource'},
3353        'destination': {'key': 'destination', 'type': 'ConnectivityDestination'},
3354        'protocol': {'key': 'protocol', 'type': 'str'},
3355        'protocol_configuration': {'key': 'protocolConfiguration', 'type': 'ProtocolConfiguration'},
3356    }
3357
3358    def __init__(
3359        self,
3360        **kwargs
3361    ):
3362        super(ConnectivityParameters, self).__init__(**kwargs)
3363        self.source = kwargs['source']
3364        self.destination = kwargs['destination']
3365        self.protocol = kwargs.get('protocol', None)
3366        self.protocol_configuration = kwargs.get('protocol_configuration', None)
3367
3368
3369class ConnectivitySource(msrest.serialization.Model):
3370    """Parameters that define the source of the connection.
3371
3372    All required parameters must be populated in order to send to Azure.
3373
3374    :param resource_id: Required. The ID of the resource from which a connectivity check will be
3375     initiated.
3376    :type resource_id: str
3377    :param port: The source port from which a connectivity check will be performed.
3378    :type port: int
3379    """
3380
3381    _validation = {
3382        'resource_id': {'required': True},
3383    }
3384
3385    _attribute_map = {
3386        'resource_id': {'key': 'resourceId', 'type': 'str'},
3387        'port': {'key': 'port', 'type': 'int'},
3388    }
3389
3390    def __init__(
3391        self,
3392        **kwargs
3393    ):
3394        super(ConnectivitySource, self).__init__(**kwargs)
3395        self.resource_id = kwargs['resource_id']
3396        self.port = kwargs.get('port', None)
3397
3398
3399class DdosProtectionPlan(msrest.serialization.Model):
3400    """A DDoS protection plan in a resource group.
3401
3402    Variables are only populated by the server, and will be ignored when sending a request.
3403
3404    :ivar id: Resource ID.
3405    :vartype id: str
3406    :ivar name: Resource name.
3407    :vartype name: str
3408    :ivar type: Resource type.
3409    :vartype type: str
3410    :param location: Resource location.
3411    :type location: str
3412    :param tags: A set of tags. Resource tags.
3413    :type tags: dict[str, str]
3414    :ivar etag: A unique read-only string that changes whenever the resource is updated.
3415    :vartype etag: str
3416    :ivar resource_guid: The resource GUID property of the DDoS protection plan resource. It
3417     uniquely identifies the resource, even if the user changes its name or migrate the resource
3418     across subscriptions or resource groups.
3419    :vartype resource_guid: str
3420    :ivar provisioning_state: The provisioning state of the DDoS protection plan resource. Possible
3421     values are: 'Succeeded', 'Updating', 'Deleting', and 'Failed'.
3422    :vartype provisioning_state: str
3423    :ivar virtual_networks: The list of virtual networks associated with the DDoS protection plan
3424     resource. This list is read-only.
3425    :vartype virtual_networks: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
3426    """
3427
3428    _validation = {
3429        'id': {'readonly': True},
3430        'name': {'readonly': True},
3431        'type': {'readonly': True},
3432        'etag': {'readonly': True},
3433        'resource_guid': {'readonly': True},
3434        'provisioning_state': {'readonly': True},
3435        'virtual_networks': {'readonly': True},
3436    }
3437
3438    _attribute_map = {
3439        'id': {'key': 'id', 'type': 'str'},
3440        'name': {'key': 'name', 'type': 'str'},
3441        'type': {'key': 'type', 'type': 'str'},
3442        'location': {'key': 'location', 'type': 'str'},
3443        'tags': {'key': 'tags', 'type': '{str}'},
3444        'etag': {'key': 'etag', 'type': 'str'},
3445        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
3446        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3447        'virtual_networks': {'key': 'properties.virtualNetworks', 'type': '[SubResource]'},
3448    }
3449
3450    def __init__(
3451        self,
3452        **kwargs
3453    ):
3454        super(DdosProtectionPlan, self).__init__(**kwargs)
3455        self.id = None
3456        self.name = None
3457        self.type = None
3458        self.location = kwargs.get('location', None)
3459        self.tags = kwargs.get('tags', None)
3460        self.etag = None
3461        self.resource_guid = None
3462        self.provisioning_state = None
3463        self.virtual_networks = None
3464
3465
3466class DdosProtectionPlanListResult(msrest.serialization.Model):
3467    """A list of DDoS protection plans.
3468
3469    Variables are only populated by the server, and will be ignored when sending a request.
3470
3471    :param value: A list of DDoS protection plans.
3472    :type value: list[~azure.mgmt.network.v2018_07_01.models.DdosProtectionPlan]
3473    :ivar next_link: The URL to get the next set of results.
3474    :vartype next_link: str
3475    """
3476
3477    _validation = {
3478        'next_link': {'readonly': True},
3479    }
3480
3481    _attribute_map = {
3482        'value': {'key': 'value', 'type': '[DdosProtectionPlan]'},
3483        'next_link': {'key': 'nextLink', 'type': 'str'},
3484    }
3485
3486    def __init__(
3487        self,
3488        **kwargs
3489    ):
3490        super(DdosProtectionPlanListResult, self).__init__(**kwargs)
3491        self.value = kwargs.get('value', None)
3492        self.next_link = None
3493
3494
3495class DeviceProperties(msrest.serialization.Model):
3496    """List of properties of the device.
3497
3498    :param device_vendor: Name of the device Vendor.
3499    :type device_vendor: str
3500    :param device_model: Model of the device.
3501    :type device_model: str
3502    :param link_speed_in_mbps: Link speed.
3503    :type link_speed_in_mbps: int
3504    """
3505
3506    _attribute_map = {
3507        'device_vendor': {'key': 'deviceVendor', 'type': 'str'},
3508        'device_model': {'key': 'deviceModel', 'type': 'str'},
3509        'link_speed_in_mbps': {'key': 'linkSpeedInMbps', 'type': 'int'},
3510    }
3511
3512    def __init__(
3513        self,
3514        **kwargs
3515    ):
3516        super(DeviceProperties, self).__init__(**kwargs)
3517        self.device_vendor = kwargs.get('device_vendor', None)
3518        self.device_model = kwargs.get('device_model', None)
3519        self.link_speed_in_mbps = kwargs.get('link_speed_in_mbps', None)
3520
3521
3522class DhcpOptions(msrest.serialization.Model):
3523    """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.
3524
3525    :param dns_servers: The list of DNS servers IP addresses.
3526    :type dns_servers: list[str]
3527    """
3528
3529    _attribute_map = {
3530        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
3531    }
3532
3533    def __init__(
3534        self,
3535        **kwargs
3536    ):
3537        super(DhcpOptions, self).__init__(**kwargs)
3538        self.dns_servers = kwargs.get('dns_servers', None)
3539
3540
3541class Dimension(msrest.serialization.Model):
3542    """Dimension of the metric.
3543
3544    :param name: The name of the dimension.
3545    :type name: str
3546    :param display_name: The display name of the dimension.
3547    :type display_name: str
3548    :param internal_name: The internal name of the dimension.
3549    :type internal_name: str
3550    """
3551
3552    _attribute_map = {
3553        'name': {'key': 'name', 'type': 'str'},
3554        'display_name': {'key': 'displayName', 'type': 'str'},
3555        'internal_name': {'key': 'internalName', 'type': 'str'},
3556    }
3557
3558    def __init__(
3559        self,
3560        **kwargs
3561    ):
3562        super(Dimension, self).__init__(**kwargs)
3563        self.name = kwargs.get('name', None)
3564        self.display_name = kwargs.get('display_name', None)
3565        self.internal_name = kwargs.get('internal_name', None)
3566
3567
3568class DnsNameAvailabilityResult(msrest.serialization.Model):
3569    """Response for the CheckDnsNameAvailability API service call.
3570
3571    :param available: Domain availability (True/False).
3572    :type available: bool
3573    """
3574
3575    _attribute_map = {
3576        'available': {'key': 'available', 'type': 'bool'},
3577    }
3578
3579    def __init__(
3580        self,
3581        **kwargs
3582    ):
3583        super(DnsNameAvailabilityResult, self).__init__(**kwargs)
3584        self.available = kwargs.get('available', None)
3585
3586
3587class EffectiveNetworkSecurityGroup(msrest.serialization.Model):
3588    """Effective network security group.
3589
3590    :param network_security_group: The ID of network security group that is applied.
3591    :type network_security_group: ~azure.mgmt.network.v2018_07_01.models.SubResource
3592    :param association: Associated resources.
3593    :type association:
3594     ~azure.mgmt.network.v2018_07_01.models.EffectiveNetworkSecurityGroupAssociation
3595    :param effective_security_rules: A collection of effective security rules.
3596    :type effective_security_rules:
3597     list[~azure.mgmt.network.v2018_07_01.models.EffectiveNetworkSecurityRule]
3598    :param tag_map: Mapping of tags to list of IP Addresses included within the tag.
3599    :type tag_map: str
3600    """
3601
3602    _attribute_map = {
3603        'network_security_group': {'key': 'networkSecurityGroup', 'type': 'SubResource'},
3604        'association': {'key': 'association', 'type': 'EffectiveNetworkSecurityGroupAssociation'},
3605        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
3606        'tag_map': {'key': 'tagMap', 'type': 'str'},
3607    }
3608
3609    def __init__(
3610        self,
3611        **kwargs
3612    ):
3613        super(EffectiveNetworkSecurityGroup, self).__init__(**kwargs)
3614        self.network_security_group = kwargs.get('network_security_group', None)
3615        self.association = kwargs.get('association', None)
3616        self.effective_security_rules = kwargs.get('effective_security_rules', None)
3617        self.tag_map = kwargs.get('tag_map', None)
3618
3619
3620class EffectiveNetworkSecurityGroupAssociation(msrest.serialization.Model):
3621    """The effective network security group association.
3622
3623    :param subnet: The ID of the subnet if assigned.
3624    :type subnet: ~azure.mgmt.network.v2018_07_01.models.SubResource
3625    :param network_interface: The ID of the network interface if assigned.
3626    :type network_interface: ~azure.mgmt.network.v2018_07_01.models.SubResource
3627    """
3628
3629    _attribute_map = {
3630        'subnet': {'key': 'subnet', 'type': 'SubResource'},
3631        'network_interface': {'key': 'networkInterface', 'type': 'SubResource'},
3632    }
3633
3634    def __init__(
3635        self,
3636        **kwargs
3637    ):
3638        super(EffectiveNetworkSecurityGroupAssociation, self).__init__(**kwargs)
3639        self.subnet = kwargs.get('subnet', None)
3640        self.network_interface = kwargs.get('network_interface', None)
3641
3642
3643class EffectiveNetworkSecurityGroupListResult(msrest.serialization.Model):
3644    """Response for list effective network security groups API service call.
3645
3646    Variables are only populated by the server, and will be ignored when sending a request.
3647
3648    :param value: A list of effective network security groups.
3649    :type value: list[~azure.mgmt.network.v2018_07_01.models.EffectiveNetworkSecurityGroup]
3650    :ivar next_link: The URL to get the next set of results.
3651    :vartype next_link: str
3652    """
3653
3654    _validation = {
3655        'next_link': {'readonly': True},
3656    }
3657
3658    _attribute_map = {
3659        'value': {'key': 'value', 'type': '[EffectiveNetworkSecurityGroup]'},
3660        'next_link': {'key': 'nextLink', 'type': 'str'},
3661    }
3662
3663    def __init__(
3664        self,
3665        **kwargs
3666    ):
3667        super(EffectiveNetworkSecurityGroupListResult, self).__init__(**kwargs)
3668        self.value = kwargs.get('value', None)
3669        self.next_link = None
3670
3671
3672class EffectiveNetworkSecurityRule(msrest.serialization.Model):
3673    """Effective network security rules.
3674
3675    :param name: The name of the security rule specified by the user (if created by the user).
3676    :type name: str
3677    :param protocol: The network protocol this rule applies to. Possible values are: 'Tcp', 'Udp',
3678     and 'All'. Possible values include: "Tcp", "Udp", "All".
3679    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.EffectiveSecurityRuleProtocol
3680    :param source_port_range: The source port or range.
3681    :type source_port_range: str
3682    :param destination_port_range: The destination port or range.
3683    :type destination_port_range: str
3684    :param source_port_ranges: The source port ranges. Expected values include a single integer
3685     between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
3686    :type source_port_ranges: list[str]
3687    :param destination_port_ranges: The destination port ranges. Expected values include a single
3688     integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
3689    :type destination_port_ranges: list[str]
3690    :param source_address_prefix: The source address prefix.
3691    :type source_address_prefix: str
3692    :param destination_address_prefix: The destination address prefix.
3693    :type destination_address_prefix: str
3694    :param source_address_prefixes: The source address prefixes. Expected values include CIDR IP
3695     ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the
3696     asterisk (*).
3697    :type source_address_prefixes: list[str]
3698    :param destination_address_prefixes: The destination address prefixes. Expected values include
3699     CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and
3700     the asterisk (*).
3701    :type destination_address_prefixes: list[str]
3702    :param expanded_source_address_prefix: The expanded source address prefix.
3703    :type expanded_source_address_prefix: list[str]
3704    :param expanded_destination_address_prefix: Expanded destination address prefix.
3705    :type expanded_destination_address_prefix: list[str]
3706    :param access: Whether network traffic is allowed or denied. Possible values are: 'Allow' and
3707     'Deny'. Possible values include: "Allow", "Deny".
3708    :type access: str or ~azure.mgmt.network.v2018_07_01.models.SecurityRuleAccess
3709    :param priority: The priority of the rule.
3710    :type priority: int
3711    :param direction: The direction of the rule. Possible values are: 'Inbound and Outbound'.
3712     Possible values include: "Inbound", "Outbound".
3713    :type direction: str or ~azure.mgmt.network.v2018_07_01.models.SecurityRuleDirection
3714    """
3715
3716    _attribute_map = {
3717        'name': {'key': 'name', 'type': 'str'},
3718        'protocol': {'key': 'protocol', 'type': 'str'},
3719        'source_port_range': {'key': 'sourcePortRange', 'type': 'str'},
3720        'destination_port_range': {'key': 'destinationPortRange', 'type': 'str'},
3721        'source_port_ranges': {'key': 'sourcePortRanges', 'type': '[str]'},
3722        'destination_port_ranges': {'key': 'destinationPortRanges', 'type': '[str]'},
3723        'source_address_prefix': {'key': 'sourceAddressPrefix', 'type': 'str'},
3724        'destination_address_prefix': {'key': 'destinationAddressPrefix', 'type': 'str'},
3725        'source_address_prefixes': {'key': 'sourceAddressPrefixes', 'type': '[str]'},
3726        'destination_address_prefixes': {'key': 'destinationAddressPrefixes', 'type': '[str]'},
3727        'expanded_source_address_prefix': {'key': 'expandedSourceAddressPrefix', 'type': '[str]'},
3728        'expanded_destination_address_prefix': {'key': 'expandedDestinationAddressPrefix', 'type': '[str]'},
3729        'access': {'key': 'access', 'type': 'str'},
3730        'priority': {'key': 'priority', 'type': 'int'},
3731        'direction': {'key': 'direction', 'type': 'str'},
3732    }
3733
3734    def __init__(
3735        self,
3736        **kwargs
3737    ):
3738        super(EffectiveNetworkSecurityRule, self).__init__(**kwargs)
3739        self.name = kwargs.get('name', None)
3740        self.protocol = kwargs.get('protocol', None)
3741        self.source_port_range = kwargs.get('source_port_range', None)
3742        self.destination_port_range = kwargs.get('destination_port_range', None)
3743        self.source_port_ranges = kwargs.get('source_port_ranges', None)
3744        self.destination_port_ranges = kwargs.get('destination_port_ranges', None)
3745        self.source_address_prefix = kwargs.get('source_address_prefix', None)
3746        self.destination_address_prefix = kwargs.get('destination_address_prefix', None)
3747        self.source_address_prefixes = kwargs.get('source_address_prefixes', None)
3748        self.destination_address_prefixes = kwargs.get('destination_address_prefixes', None)
3749        self.expanded_source_address_prefix = kwargs.get('expanded_source_address_prefix', None)
3750        self.expanded_destination_address_prefix = kwargs.get('expanded_destination_address_prefix', None)
3751        self.access = kwargs.get('access', None)
3752        self.priority = kwargs.get('priority', None)
3753        self.direction = kwargs.get('direction', None)
3754
3755
3756class EffectiveRoute(msrest.serialization.Model):
3757    """Effective Route.
3758
3759    :param name: The name of the user defined route. This is optional.
3760    :type name: str
3761    :param source: Who created the route. Possible values are: 'Unknown', 'User',
3762     'VirtualNetworkGateway', and 'Default'. Possible values include: "Unknown", "User",
3763     "VirtualNetworkGateway", "Default".
3764    :type source: str or ~azure.mgmt.network.v2018_07_01.models.EffectiveRouteSource
3765    :param state: The value of effective route. Possible values are: 'Active' and 'Invalid'.
3766     Possible values include: "Active", "Invalid".
3767    :type state: str or ~azure.mgmt.network.v2018_07_01.models.EffectiveRouteState
3768    :param address_prefix: The address prefixes of the effective routes in CIDR notation.
3769    :type address_prefix: list[str]
3770    :param next_hop_ip_address: The IP address of the next hop of the effective route.
3771    :type next_hop_ip_address: list[str]
3772    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values are:
3773     'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', and 'None'. Possible
3774     values include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
3775    :type next_hop_type: str or ~azure.mgmt.network.v2018_07_01.models.RouteNextHopType
3776    """
3777
3778    _attribute_map = {
3779        'name': {'key': 'name', 'type': 'str'},
3780        'source': {'key': 'source', 'type': 'str'},
3781        'state': {'key': 'state', 'type': 'str'},
3782        'address_prefix': {'key': 'addressPrefix', 'type': '[str]'},
3783        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': '[str]'},
3784        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
3785    }
3786
3787    def __init__(
3788        self,
3789        **kwargs
3790    ):
3791        super(EffectiveRoute, self).__init__(**kwargs)
3792        self.name = kwargs.get('name', None)
3793        self.source = kwargs.get('source', None)
3794        self.state = kwargs.get('state', None)
3795        self.address_prefix = kwargs.get('address_prefix', None)
3796        self.next_hop_ip_address = kwargs.get('next_hop_ip_address', None)
3797        self.next_hop_type = kwargs.get('next_hop_type', None)
3798
3799
3800class EffectiveRouteListResult(msrest.serialization.Model):
3801    """Response for list effective route API service call.
3802
3803    Variables are only populated by the server, and will be ignored when sending a request.
3804
3805    :param value: A list of effective routes.
3806    :type value: list[~azure.mgmt.network.v2018_07_01.models.EffectiveRoute]
3807    :ivar next_link: The URL to get the next set of results.
3808    :vartype next_link: str
3809    """
3810
3811    _validation = {
3812        'next_link': {'readonly': True},
3813    }
3814
3815    _attribute_map = {
3816        'value': {'key': 'value', 'type': '[EffectiveRoute]'},
3817        'next_link': {'key': 'nextLink', 'type': 'str'},
3818    }
3819
3820    def __init__(
3821        self,
3822        **kwargs
3823    ):
3824        super(EffectiveRouteListResult, self).__init__(**kwargs)
3825        self.value = kwargs.get('value', None)
3826        self.next_link = None
3827
3828
3829class EndpointServiceResult(SubResource):
3830    """Endpoint service.
3831
3832    Variables are only populated by the server, and will be ignored when sending a request.
3833
3834    :param id: Resource ID.
3835    :type id: str
3836    :ivar name: Name of the endpoint service.
3837    :vartype name: str
3838    :ivar type: Type of the endpoint service.
3839    :vartype type: str
3840    """
3841
3842    _validation = {
3843        'name': {'readonly': True},
3844        'type': {'readonly': True},
3845    }
3846
3847    _attribute_map = {
3848        'id': {'key': 'id', 'type': 'str'},
3849        'name': {'key': 'name', 'type': 'str'},
3850        'type': {'key': 'type', 'type': 'str'},
3851    }
3852
3853    def __init__(
3854        self,
3855        **kwargs
3856    ):
3857        super(EndpointServiceResult, self).__init__(**kwargs)
3858        self.name = None
3859        self.type = None
3860
3861
3862class EndpointServicesListResult(msrest.serialization.Model):
3863    """Response for the ListAvailableEndpointServices API service call.
3864
3865    :param value: List of available endpoint services in a region.
3866    :type value: list[~azure.mgmt.network.v2018_07_01.models.EndpointServiceResult]
3867    :param next_link: The URL to get the next set of results.
3868    :type next_link: str
3869    """
3870
3871    _attribute_map = {
3872        'value': {'key': 'value', 'type': '[EndpointServiceResult]'},
3873        'next_link': {'key': 'nextLink', 'type': 'str'},
3874    }
3875
3876    def __init__(
3877        self,
3878        **kwargs
3879    ):
3880        super(EndpointServicesListResult, self).__init__(**kwargs)
3881        self.value = kwargs.get('value', None)
3882        self.next_link = kwargs.get('next_link', None)
3883
3884
3885class Error(msrest.serialization.Model):
3886    """Error.
3887
3888    :param code:
3889    :type code: str
3890    :param message:
3891    :type message: str
3892    :param target:
3893    :type target: str
3894    :param details:
3895    :type details: list[~azure.mgmt.network.v2018_07_01.models.ErrorDetails]
3896    :param inner_error:
3897    :type inner_error: str
3898    """
3899
3900    _attribute_map = {
3901        'code': {'key': 'code', 'type': 'str'},
3902        'message': {'key': 'message', 'type': 'str'},
3903        'target': {'key': 'target', 'type': 'str'},
3904        'details': {'key': 'details', 'type': '[ErrorDetails]'},
3905        'inner_error': {'key': 'innerError', 'type': 'str'},
3906    }
3907
3908    def __init__(
3909        self,
3910        **kwargs
3911    ):
3912        super(Error, self).__init__(**kwargs)
3913        self.code = kwargs.get('code', None)
3914        self.message = kwargs.get('message', None)
3915        self.target = kwargs.get('target', None)
3916        self.details = kwargs.get('details', None)
3917        self.inner_error = kwargs.get('inner_error', None)
3918
3919
3920class ErrorDetails(msrest.serialization.Model):
3921    """ErrorDetails.
3922
3923    :param code:
3924    :type code: str
3925    :param target:
3926    :type target: str
3927    :param message:
3928    :type message: str
3929    """
3930
3931    _attribute_map = {
3932        'code': {'key': 'code', 'type': 'str'},
3933        'target': {'key': 'target', 'type': 'str'},
3934        'message': {'key': 'message', 'type': 'str'},
3935    }
3936
3937    def __init__(
3938        self,
3939        **kwargs
3940    ):
3941        super(ErrorDetails, self).__init__(**kwargs)
3942        self.code = kwargs.get('code', None)
3943        self.target = kwargs.get('target', None)
3944        self.message = kwargs.get('message', None)
3945
3946
3947class ErrorResponse(msrest.serialization.Model):
3948    """The error object.
3949
3950    :param error:
3951    :type error: ~azure.mgmt.network.v2018_07_01.models.ErrorDetails
3952    """
3953
3954    _attribute_map = {
3955        'error': {'key': 'error', 'type': 'ErrorDetails'},
3956    }
3957
3958    def __init__(
3959        self,
3960        **kwargs
3961    ):
3962        super(ErrorResponse, self).__init__(**kwargs)
3963        self.error = kwargs.get('error', None)
3964
3965
3966class EvaluatedNetworkSecurityGroup(msrest.serialization.Model):
3967    """Results of network security group evaluation.
3968
3969    Variables are only populated by the server, and will be ignored when sending a request.
3970
3971    :param network_security_group_id: Network security group ID.
3972    :type network_security_group_id: str
3973    :param matched_rule: Matched rule.
3974    :type matched_rule: ~azure.mgmt.network.v2018_07_01.models.MatchedRule
3975    :ivar rules_evaluation_result: List of network security rules evaluation results.
3976    :vartype rules_evaluation_result:
3977     list[~azure.mgmt.network.v2018_07_01.models.NetworkSecurityRulesEvaluationResult]
3978    """
3979
3980    _validation = {
3981        'rules_evaluation_result': {'readonly': True},
3982    }
3983
3984    _attribute_map = {
3985        'network_security_group_id': {'key': 'networkSecurityGroupId', 'type': 'str'},
3986        'matched_rule': {'key': 'matchedRule', 'type': 'MatchedRule'},
3987        'rules_evaluation_result': {'key': 'rulesEvaluationResult', 'type': '[NetworkSecurityRulesEvaluationResult]'},
3988    }
3989
3990    def __init__(
3991        self,
3992        **kwargs
3993    ):
3994        super(EvaluatedNetworkSecurityGroup, self).__init__(**kwargs)
3995        self.network_security_group_id = kwargs.get('network_security_group_id', None)
3996        self.matched_rule = kwargs.get('matched_rule', None)
3997        self.rules_evaluation_result = None
3998
3999
4000class ExpressRouteCircuit(Resource):
4001    """ExpressRouteCircuit resource.
4002
4003    Variables are only populated by the server, and will be ignored when sending a request.
4004
4005    :param id: Resource ID.
4006    :type id: str
4007    :ivar name: Resource name.
4008    :vartype name: str
4009    :ivar type: Resource type.
4010    :vartype type: str
4011    :param location: Resource location.
4012    :type location: str
4013    :param tags: A set of tags. Resource tags.
4014    :type tags: dict[str, str]
4015    :param sku: The SKU.
4016    :type sku: ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitSku
4017    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
4018    :vartype etag: str
4019    :param allow_classic_operations: Allow classic operations.
4020    :type allow_classic_operations: bool
4021    :param circuit_provisioning_state: The CircuitProvisioningState state of the resource.
4022    :type circuit_provisioning_state: str
4023    :param service_provider_provisioning_state: The ServiceProviderProvisioningState state of the
4024     resource. Possible values are 'NotProvisioned', 'Provisioning', 'Provisioned', and
4025     'Deprovisioning'. Possible values include: "NotProvisioned", "Provisioning", "Provisioned",
4026     "Deprovisioning".
4027    :type service_provider_provisioning_state: str or
4028     ~azure.mgmt.network.v2018_07_01.models.ServiceProviderProvisioningState
4029    :param authorizations: The list of authorizations.
4030    :type authorizations:
4031     list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitAuthorization]
4032    :param peerings: The list of peerings.
4033    :type peerings: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitPeering]
4034    :param service_key: The ServiceKey.
4035    :type service_key: str
4036    :param service_provider_notes: The ServiceProviderNotes.
4037    :type service_provider_notes: str
4038    :param service_provider_properties: The ServiceProviderProperties.
4039    :type service_provider_properties:
4040     ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitServiceProviderProperties
4041    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
4042     values are: 'Updating', 'Deleting', and 'Failed'.
4043    :type provisioning_state: str
4044    :param gateway_manager_etag: The GatewayManager Etag.
4045    :type gateway_manager_etag: str
4046    :param allow_global_reach: Flag to enable Global Reach on the circuit.
4047    :type allow_global_reach: bool
4048    """
4049
4050    _validation = {
4051        'name': {'readonly': True},
4052        'type': {'readonly': True},
4053        'etag': {'readonly': True},
4054    }
4055
4056    _attribute_map = {
4057        'id': {'key': 'id', 'type': 'str'},
4058        'name': {'key': 'name', 'type': 'str'},
4059        'type': {'key': 'type', 'type': 'str'},
4060        'location': {'key': 'location', 'type': 'str'},
4061        'tags': {'key': 'tags', 'type': '{str}'},
4062        'sku': {'key': 'sku', 'type': 'ExpressRouteCircuitSku'},
4063        'etag': {'key': 'etag', 'type': 'str'},
4064        'allow_classic_operations': {'key': 'properties.allowClassicOperations', 'type': 'bool'},
4065        'circuit_provisioning_state': {'key': 'properties.circuitProvisioningState', 'type': 'str'},
4066        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
4067        'authorizations': {'key': 'properties.authorizations', 'type': '[ExpressRouteCircuitAuthorization]'},
4068        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
4069        'service_key': {'key': 'properties.serviceKey', 'type': 'str'},
4070        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
4071        'service_provider_properties': {'key': 'properties.serviceProviderProperties', 'type': 'ExpressRouteCircuitServiceProviderProperties'},
4072        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4073        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
4074        'allow_global_reach': {'key': 'properties.allowGlobalReach', 'type': 'bool'},
4075    }
4076
4077    def __init__(
4078        self,
4079        **kwargs
4080    ):
4081        super(ExpressRouteCircuit, self).__init__(**kwargs)
4082        self.sku = kwargs.get('sku', None)
4083        self.etag = None
4084        self.allow_classic_operations = kwargs.get('allow_classic_operations', None)
4085        self.circuit_provisioning_state = kwargs.get('circuit_provisioning_state', None)
4086        self.service_provider_provisioning_state = kwargs.get('service_provider_provisioning_state', None)
4087        self.authorizations = kwargs.get('authorizations', None)
4088        self.peerings = kwargs.get('peerings', None)
4089        self.service_key = kwargs.get('service_key', None)
4090        self.service_provider_notes = kwargs.get('service_provider_notes', None)
4091        self.service_provider_properties = kwargs.get('service_provider_properties', None)
4092        self.provisioning_state = kwargs.get('provisioning_state', None)
4093        self.gateway_manager_etag = kwargs.get('gateway_manager_etag', None)
4094        self.allow_global_reach = kwargs.get('allow_global_reach', None)
4095
4096
4097class ExpressRouteCircuitArpTable(msrest.serialization.Model):
4098    """The ARP table associated with the ExpressRouteCircuit.
4099
4100    :param age: Entry age in minutes.
4101    :type age: int
4102    :param interface: Interface address.
4103    :type interface: str
4104    :param ip_address: The IP address.
4105    :type ip_address: str
4106    :param mac_address: The MAC address.
4107    :type mac_address: str
4108    """
4109
4110    _attribute_map = {
4111        'age': {'key': 'age', 'type': 'int'},
4112        'interface': {'key': 'interface', 'type': 'str'},
4113        'ip_address': {'key': 'ipAddress', 'type': 'str'},
4114        'mac_address': {'key': 'macAddress', 'type': 'str'},
4115    }
4116
4117    def __init__(
4118        self,
4119        **kwargs
4120    ):
4121        super(ExpressRouteCircuitArpTable, self).__init__(**kwargs)
4122        self.age = kwargs.get('age', None)
4123        self.interface = kwargs.get('interface', None)
4124        self.ip_address = kwargs.get('ip_address', None)
4125        self.mac_address = kwargs.get('mac_address', None)
4126
4127
4128class ExpressRouteCircuitAuthorization(SubResource):
4129    """Authorization in an ExpressRouteCircuit resource.
4130
4131    Variables are only populated by the server, and will be ignored when sending a request.
4132
4133    :param id: Resource ID.
4134    :type id: str
4135    :param name: Gets name of the resource that is unique within a resource group. This name can be
4136     used to access the resource.
4137    :type name: str
4138    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4139    :vartype etag: str
4140    :param authorization_key: The authorization key.
4141    :type authorization_key: str
4142    :param authorization_use_status: AuthorizationUseStatus. Possible values are: 'Available' and
4143     'InUse'. Possible values include: "Available", "InUse".
4144    :type authorization_use_status: str or
4145     ~azure.mgmt.network.v2018_07_01.models.AuthorizationUseStatus
4146    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
4147     values are: 'Updating', 'Deleting', and 'Failed'.
4148    :type provisioning_state: str
4149    """
4150
4151    _validation = {
4152        'etag': {'readonly': True},
4153    }
4154
4155    _attribute_map = {
4156        'id': {'key': 'id', 'type': 'str'},
4157        'name': {'key': 'name', 'type': 'str'},
4158        'etag': {'key': 'etag', 'type': 'str'},
4159        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
4160        'authorization_use_status': {'key': 'properties.authorizationUseStatus', 'type': 'str'},
4161        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4162    }
4163
4164    def __init__(
4165        self,
4166        **kwargs
4167    ):
4168        super(ExpressRouteCircuitAuthorization, self).__init__(**kwargs)
4169        self.name = kwargs.get('name', None)
4170        self.etag = None
4171        self.authorization_key = kwargs.get('authorization_key', None)
4172        self.authorization_use_status = kwargs.get('authorization_use_status', None)
4173        self.provisioning_state = kwargs.get('provisioning_state', None)
4174
4175
4176class ExpressRouteCircuitConnection(SubResource):
4177    """Express Route Circuit Connection in an ExpressRouteCircuitPeering resource.
4178
4179    Variables are only populated by the server, and will be ignored when sending a request.
4180
4181    :param id: Resource ID.
4182    :type id: str
4183    :param name: Gets name of the resource that is unique within a resource group. This name can be
4184     used to access the resource.
4185    :type name: str
4186    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4187    :vartype etag: str
4188    :param express_route_circuit_peering: Reference to Express Route Circuit Private Peering
4189     Resource of the circuit initiating connection.
4190    :type express_route_circuit_peering: ~azure.mgmt.network.v2018_07_01.models.SubResource
4191    :param peer_express_route_circuit_peering: Reference to Express Route Circuit Private Peering
4192     Resource of the peered circuit.
4193    :type peer_express_route_circuit_peering: ~azure.mgmt.network.v2018_07_01.models.SubResource
4194    :param address_prefix: /29 IP address space to carve out Customer addresses for tunnels.
4195    :type address_prefix: str
4196    :param authorization_key: The authorization key.
4197    :type authorization_key: str
4198    :ivar circuit_connection_status: Express Route Circuit Connection State. Possible values are:
4199     'Connected' and 'Disconnected'. Possible values include: "Connected", "Connecting",
4200     "Disconnected".
4201    :vartype circuit_connection_status: str or
4202     ~azure.mgmt.network.v2018_07_01.models.CircuitConnectionStatus
4203    :ivar provisioning_state: Provisioning state of the circuit connection resource. Possible
4204     values are: 'Succeeded', 'Updating', 'Deleting', and 'Failed'.
4205    :vartype provisioning_state: str
4206    """
4207
4208    _validation = {
4209        'etag': {'readonly': True},
4210        'circuit_connection_status': {'readonly': True},
4211        'provisioning_state': {'readonly': True},
4212    }
4213
4214    _attribute_map = {
4215        'id': {'key': 'id', 'type': 'str'},
4216        'name': {'key': 'name', 'type': 'str'},
4217        'etag': {'key': 'etag', 'type': 'str'},
4218        'express_route_circuit_peering': {'key': 'properties.expressRouteCircuitPeering', 'type': 'SubResource'},
4219        'peer_express_route_circuit_peering': {'key': 'properties.peerExpressRouteCircuitPeering', 'type': 'SubResource'},
4220        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
4221        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
4222        'circuit_connection_status': {'key': 'properties.circuitConnectionStatus', 'type': 'str'},
4223        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4224    }
4225
4226    def __init__(
4227        self,
4228        **kwargs
4229    ):
4230        super(ExpressRouteCircuitConnection, self).__init__(**kwargs)
4231        self.name = kwargs.get('name', None)
4232        self.etag = None
4233        self.express_route_circuit_peering = kwargs.get('express_route_circuit_peering', None)
4234        self.peer_express_route_circuit_peering = kwargs.get('peer_express_route_circuit_peering', None)
4235        self.address_prefix = kwargs.get('address_prefix', None)
4236        self.authorization_key = kwargs.get('authorization_key', None)
4237        self.circuit_connection_status = None
4238        self.provisioning_state = None
4239
4240
4241class ExpressRouteCircuitListResult(msrest.serialization.Model):
4242    """Response for ListExpressRouteCircuit API service call.
4243
4244    :param value: A list of ExpressRouteCircuits in a resource group.
4245    :type value: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuit]
4246    :param next_link: The URL to get the next set of results.
4247    :type next_link: str
4248    """
4249
4250    _attribute_map = {
4251        'value': {'key': 'value', 'type': '[ExpressRouteCircuit]'},
4252        'next_link': {'key': 'nextLink', 'type': 'str'},
4253    }
4254
4255    def __init__(
4256        self,
4257        **kwargs
4258    ):
4259        super(ExpressRouteCircuitListResult, self).__init__(**kwargs)
4260        self.value = kwargs.get('value', None)
4261        self.next_link = kwargs.get('next_link', None)
4262
4263
4264class ExpressRouteCircuitPeering(SubResource):
4265    """Peering in an ExpressRouteCircuit resource.
4266
4267    Variables are only populated by the server, and will be ignored when sending a request.
4268
4269    :param id: Resource ID.
4270    :type id: str
4271    :param name: Gets name of the resource that is unique within a resource group. This name can be
4272     used to access the resource.
4273    :type name: str
4274    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4275    :vartype etag: str
4276    :param peering_type: The peering type. Possible values include: "AzurePublicPeering",
4277     "AzurePrivatePeering", "MicrosoftPeering".
4278    :type peering_type: str or ~azure.mgmt.network.v2018_07_01.models.ExpressRoutePeeringType
4279    :param state: The peering state. Possible values include: "Disabled", "Enabled".
4280    :type state: str or ~azure.mgmt.network.v2018_07_01.models.ExpressRoutePeeringState
4281    :param azure_asn: The Azure ASN.
4282    :type azure_asn: int
4283    :param peer_asn: The peer ASN.
4284    :type peer_asn: long
4285    :param primary_peer_address_prefix: The primary address prefix.
4286    :type primary_peer_address_prefix: str
4287    :param secondary_peer_address_prefix: The secondary address prefix.
4288    :type secondary_peer_address_prefix: str
4289    :param primary_azure_port: The primary port.
4290    :type primary_azure_port: str
4291    :param secondary_azure_port: The secondary port.
4292    :type secondary_azure_port: str
4293    :param shared_key: The shared key.
4294    :type shared_key: str
4295    :param vlan_id: The VLAN ID.
4296    :type vlan_id: int
4297    :param microsoft_peering_config: The Microsoft peering configuration.
4298    :type microsoft_peering_config:
4299     ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitPeeringConfig
4300    :param stats: Gets peering stats.
4301    :type stats: ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitStats
4302    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
4303     values are: 'Updating', 'Deleting', and 'Failed'.
4304    :type provisioning_state: str
4305    :param gateway_manager_etag: The GatewayManager Etag.
4306    :type gateway_manager_etag: str
4307    :param last_modified_by: Gets whether the provider or the customer last modified the peering.
4308    :type last_modified_by: str
4309    :param route_filter: The reference of the RouteFilter resource.
4310    :type route_filter: ~azure.mgmt.network.v2018_07_01.models.RouteFilter
4311    :param ipv6_peering_config: The IPv6 peering configuration.
4312    :type ipv6_peering_config:
4313     ~azure.mgmt.network.v2018_07_01.models.Ipv6ExpressRouteCircuitPeeringConfig
4314    :param connections: The list of circuit connections associated with Azure Private Peering for
4315     this circuit.
4316    :type connections: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitConnection]
4317    """
4318
4319    _validation = {
4320        'etag': {'readonly': True},
4321        'peer_asn': {'maximum': 4294967295, 'minimum': 1},
4322    }
4323
4324    _attribute_map = {
4325        'id': {'key': 'id', 'type': 'str'},
4326        'name': {'key': 'name', 'type': 'str'},
4327        'etag': {'key': 'etag', 'type': 'str'},
4328        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
4329        'state': {'key': 'properties.state', 'type': 'str'},
4330        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
4331        'peer_asn': {'key': 'properties.peerASN', 'type': 'long'},
4332        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
4333        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
4334        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
4335        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
4336        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
4337        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
4338        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
4339        'stats': {'key': 'properties.stats', 'type': 'ExpressRouteCircuitStats'},
4340        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4341        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
4342        'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'},
4343        'route_filter': {'key': 'properties.routeFilter', 'type': 'RouteFilter'},
4344        'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'},
4345        'connections': {'key': 'properties.connections', 'type': '[ExpressRouteCircuitConnection]'},
4346    }
4347
4348    def __init__(
4349        self,
4350        **kwargs
4351    ):
4352        super(ExpressRouteCircuitPeering, self).__init__(**kwargs)
4353        self.name = kwargs.get('name', None)
4354        self.etag = None
4355        self.peering_type = kwargs.get('peering_type', None)
4356        self.state = kwargs.get('state', None)
4357        self.azure_asn = kwargs.get('azure_asn', None)
4358        self.peer_asn = kwargs.get('peer_asn', None)
4359        self.primary_peer_address_prefix = kwargs.get('primary_peer_address_prefix', None)
4360        self.secondary_peer_address_prefix = kwargs.get('secondary_peer_address_prefix', None)
4361        self.primary_azure_port = kwargs.get('primary_azure_port', None)
4362        self.secondary_azure_port = kwargs.get('secondary_azure_port', None)
4363        self.shared_key = kwargs.get('shared_key', None)
4364        self.vlan_id = kwargs.get('vlan_id', None)
4365        self.microsoft_peering_config = kwargs.get('microsoft_peering_config', None)
4366        self.stats = kwargs.get('stats', None)
4367        self.provisioning_state = kwargs.get('provisioning_state', None)
4368        self.gateway_manager_etag = kwargs.get('gateway_manager_etag', None)
4369        self.last_modified_by = kwargs.get('last_modified_by', None)
4370        self.route_filter = kwargs.get('route_filter', None)
4371        self.ipv6_peering_config = kwargs.get('ipv6_peering_config', None)
4372        self.connections = kwargs.get('connections', None)
4373
4374
4375class ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
4376    """Specifies the peering configuration.
4377
4378    :param advertised_public_prefixes: The reference of AdvertisedPublicPrefixes.
4379    :type advertised_public_prefixes: list[str]
4380    :param advertised_communities: The communities of bgp peering. Specified for microsoft peering.
4381    :type advertised_communities: list[str]
4382    :param advertised_public_prefixes_state: AdvertisedPublicPrefixState of the Peering resource.
4383     Possible values are 'NotConfigured', 'Configuring', 'Configured', and 'ValidationNeeded'.
4384     Possible values include: "NotConfigured", "Configuring", "Configured", "ValidationNeeded".
4385    :type advertised_public_prefixes_state: str or
4386     ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitPeeringAdvertisedPublicPrefixState
4387    :param legacy_mode: The legacy mode of the peering.
4388    :type legacy_mode: int
4389    :param customer_asn: The CustomerASN of the peering.
4390    :type customer_asn: int
4391    :param routing_registry_name: The RoutingRegistryName of the configuration.
4392    :type routing_registry_name: str
4393    """
4394
4395    _attribute_map = {
4396        'advertised_public_prefixes': {'key': 'advertisedPublicPrefixes', 'type': '[str]'},
4397        'advertised_communities': {'key': 'advertisedCommunities', 'type': '[str]'},
4398        'advertised_public_prefixes_state': {'key': 'advertisedPublicPrefixesState', 'type': 'str'},
4399        'legacy_mode': {'key': 'legacyMode', 'type': 'int'},
4400        'customer_asn': {'key': 'customerASN', 'type': 'int'},
4401        'routing_registry_name': {'key': 'routingRegistryName', 'type': 'str'},
4402    }
4403
4404    def __init__(
4405        self,
4406        **kwargs
4407    ):
4408        super(ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
4409        self.advertised_public_prefixes = kwargs.get('advertised_public_prefixes', None)
4410        self.advertised_communities = kwargs.get('advertised_communities', None)
4411        self.advertised_public_prefixes_state = kwargs.get('advertised_public_prefixes_state', None)
4412        self.legacy_mode = kwargs.get('legacy_mode', None)
4413        self.customer_asn = kwargs.get('customer_asn', None)
4414        self.routing_registry_name = kwargs.get('routing_registry_name', None)
4415
4416
4417class ExpressRouteCircuitPeeringListResult(msrest.serialization.Model):
4418    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCircuit.
4419
4420    :param value: The peerings in an express route circuit.
4421    :type value: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitPeering]
4422    :param next_link: The URL to get the next set of results.
4423    :type next_link: str
4424    """
4425
4426    _attribute_map = {
4427        'value': {'key': 'value', 'type': '[ExpressRouteCircuitPeering]'},
4428        'next_link': {'key': 'nextLink', 'type': 'str'},
4429    }
4430
4431    def __init__(
4432        self,
4433        **kwargs
4434    ):
4435        super(ExpressRouteCircuitPeeringListResult, self).__init__(**kwargs)
4436        self.value = kwargs.get('value', None)
4437        self.next_link = kwargs.get('next_link', None)
4438
4439
4440class ExpressRouteCircuitReference(msrest.serialization.Model):
4441    """ExpressRouteCircuitReference.
4442
4443    :param id: Corresponding Express Route Circuit Id.
4444    :type id: str
4445    """
4446
4447    _attribute_map = {
4448        'id': {'key': 'id', 'type': 'str'},
4449    }
4450
4451    def __init__(
4452        self,
4453        **kwargs
4454    ):
4455        super(ExpressRouteCircuitReference, self).__init__(**kwargs)
4456        self.id = kwargs.get('id', None)
4457
4458
4459class ExpressRouteCircuitRoutesTable(msrest.serialization.Model):
4460    """The routes table associated with the ExpressRouteCircuit.
4461
4462    :param network: IP address of a network entity.
4463    :type network: str
4464    :param next_hop: NextHop address.
4465    :type next_hop: str
4466    :param loc_prf: Local preference value as set with the set local-preference route-map
4467     configuration command.
4468    :type loc_prf: str
4469    :param weight: Route Weight.
4470    :type weight: int
4471    :param path: Autonomous system paths to the destination network.
4472    :type path: str
4473    """
4474
4475    _attribute_map = {
4476        'network': {'key': 'network', 'type': 'str'},
4477        'next_hop': {'key': 'nextHop', 'type': 'str'},
4478        'loc_prf': {'key': 'locPrf', 'type': 'str'},
4479        'weight': {'key': 'weight', 'type': 'int'},
4480        'path': {'key': 'path', 'type': 'str'},
4481    }
4482
4483    def __init__(
4484        self,
4485        **kwargs
4486    ):
4487        super(ExpressRouteCircuitRoutesTable, self).__init__(**kwargs)
4488        self.network = kwargs.get('network', None)
4489        self.next_hop = kwargs.get('next_hop', None)
4490        self.loc_prf = kwargs.get('loc_prf', None)
4491        self.weight = kwargs.get('weight', None)
4492        self.path = kwargs.get('path', None)
4493
4494
4495class ExpressRouteCircuitRoutesTableSummary(msrest.serialization.Model):
4496    """The routes table associated with the ExpressRouteCircuit.
4497
4498    :param neighbor: IP address of the neighbor.
4499    :type neighbor: str
4500    :param v: BGP version number spoken to the neighbor.
4501    :type v: int
4502    :param as_property: Autonomous system number.
4503    :type as_property: int
4504    :param up_down: The length of time that the BGP session has been in the Established state, or
4505     the current status if not in the Established state.
4506    :type up_down: str
4507    :param state_pfx_rcd: Current state of the BGP session, and the number of prefixes that have
4508     been received from a neighbor or peer group.
4509    :type state_pfx_rcd: str
4510    """
4511
4512    _attribute_map = {
4513        'neighbor': {'key': 'neighbor', 'type': 'str'},
4514        'v': {'key': 'v', 'type': 'int'},
4515        'as_property': {'key': 'as', 'type': 'int'},
4516        'up_down': {'key': 'upDown', 'type': 'str'},
4517        'state_pfx_rcd': {'key': 'statePfxRcd', 'type': 'str'},
4518    }
4519
4520    def __init__(
4521        self,
4522        **kwargs
4523    ):
4524        super(ExpressRouteCircuitRoutesTableSummary, self).__init__(**kwargs)
4525        self.neighbor = kwargs.get('neighbor', None)
4526        self.v = kwargs.get('v', None)
4527        self.as_property = kwargs.get('as_property', None)
4528        self.up_down = kwargs.get('up_down', None)
4529        self.state_pfx_rcd = kwargs.get('state_pfx_rcd', None)
4530
4531
4532class ExpressRouteCircuitsArpTableListResult(msrest.serialization.Model):
4533    """Response for ListArpTable associated with the Express Route Circuits API.
4534
4535    :param value: Gets list of the ARP table.
4536    :type value: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitArpTable]
4537    :param next_link: The URL to get the next set of results.
4538    :type next_link: str
4539    """
4540
4541    _attribute_map = {
4542        'value': {'key': 'value', 'type': '[ExpressRouteCircuitArpTable]'},
4543        'next_link': {'key': 'nextLink', 'type': 'str'},
4544    }
4545
4546    def __init__(
4547        self,
4548        **kwargs
4549    ):
4550        super(ExpressRouteCircuitsArpTableListResult, self).__init__(**kwargs)
4551        self.value = kwargs.get('value', None)
4552        self.next_link = kwargs.get('next_link', None)
4553
4554
4555class ExpressRouteCircuitServiceProviderProperties(msrest.serialization.Model):
4556    """Contains ServiceProviderProperties in an ExpressRouteCircuit.
4557
4558    :param service_provider_name: The serviceProviderName.
4559    :type service_provider_name: str
4560    :param peering_location: The peering location.
4561    :type peering_location: str
4562    :param bandwidth_in_mbps: The BandwidthInMbps.
4563    :type bandwidth_in_mbps: int
4564    """
4565
4566    _attribute_map = {
4567        'service_provider_name': {'key': 'serviceProviderName', 'type': 'str'},
4568        'peering_location': {'key': 'peeringLocation', 'type': 'str'},
4569        'bandwidth_in_mbps': {'key': 'bandwidthInMbps', 'type': 'int'},
4570    }
4571
4572    def __init__(
4573        self,
4574        **kwargs
4575    ):
4576        super(ExpressRouteCircuitServiceProviderProperties, self).__init__(**kwargs)
4577        self.service_provider_name = kwargs.get('service_provider_name', None)
4578        self.peering_location = kwargs.get('peering_location', None)
4579        self.bandwidth_in_mbps = kwargs.get('bandwidth_in_mbps', None)
4580
4581
4582class ExpressRouteCircuitSku(msrest.serialization.Model):
4583    """Contains SKU in an ExpressRouteCircuit.
4584
4585    :param name: The name of the SKU.
4586    :type name: str
4587    :param tier: The tier of the SKU. Possible values are 'Standard' and 'Premium'. Possible values
4588     include: "Standard", "Premium".
4589    :type tier: str or ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitSkuTier
4590    :param family: The family of the SKU. Possible values are: 'UnlimitedData' and 'MeteredData'.
4591     Possible values include: "UnlimitedData", "MeteredData".
4592    :type family: str or ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitSkuFamily
4593    """
4594
4595    _attribute_map = {
4596        'name': {'key': 'name', 'type': 'str'},
4597        'tier': {'key': 'tier', 'type': 'str'},
4598        'family': {'key': 'family', 'type': 'str'},
4599    }
4600
4601    def __init__(
4602        self,
4603        **kwargs
4604    ):
4605        super(ExpressRouteCircuitSku, self).__init__(**kwargs)
4606        self.name = kwargs.get('name', None)
4607        self.tier = kwargs.get('tier', None)
4608        self.family = kwargs.get('family', None)
4609
4610
4611class ExpressRouteCircuitsRoutesTableListResult(msrest.serialization.Model):
4612    """Response for ListRoutesTable associated with the Express Route Circuits API.
4613
4614    :param value: The list of routes table.
4615    :type value: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitRoutesTable]
4616    :param next_link: The URL to get the next set of results.
4617    :type next_link: str
4618    """
4619
4620    _attribute_map = {
4621        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTable]'},
4622        'next_link': {'key': 'nextLink', 'type': 'str'},
4623    }
4624
4625    def __init__(
4626        self,
4627        **kwargs
4628    ):
4629        super(ExpressRouteCircuitsRoutesTableListResult, self).__init__(**kwargs)
4630        self.value = kwargs.get('value', None)
4631        self.next_link = kwargs.get('next_link', None)
4632
4633
4634class ExpressRouteCircuitsRoutesTableSummaryListResult(msrest.serialization.Model):
4635    """Response for ListRoutesTable associated with the Express Route Circuits API.
4636
4637    :param value: A list of the routes table.
4638    :type value: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitRoutesTableSummary]
4639    :param next_link: The URL to get the next set of results.
4640    :type next_link: str
4641    """
4642
4643    _attribute_map = {
4644        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTableSummary]'},
4645        'next_link': {'key': 'nextLink', 'type': 'str'},
4646    }
4647
4648    def __init__(
4649        self,
4650        **kwargs
4651    ):
4652        super(ExpressRouteCircuitsRoutesTableSummaryListResult, self).__init__(**kwargs)
4653        self.value = kwargs.get('value', None)
4654        self.next_link = kwargs.get('next_link', None)
4655
4656
4657class ExpressRouteCircuitStats(msrest.serialization.Model):
4658    """Contains stats associated with the peering.
4659
4660    :param primarybytes_in: Gets BytesIn of the peering.
4661    :type primarybytes_in: long
4662    :param primarybytes_out: Gets BytesOut of the peering.
4663    :type primarybytes_out: long
4664    :param secondarybytes_in: Gets BytesIn of the peering.
4665    :type secondarybytes_in: long
4666    :param secondarybytes_out: Gets BytesOut of the peering.
4667    :type secondarybytes_out: long
4668    """
4669
4670    _attribute_map = {
4671        'primarybytes_in': {'key': 'primarybytesIn', 'type': 'long'},
4672        'primarybytes_out': {'key': 'primarybytesOut', 'type': 'long'},
4673        'secondarybytes_in': {'key': 'secondarybytesIn', 'type': 'long'},
4674        'secondarybytes_out': {'key': 'secondarybytesOut', 'type': 'long'},
4675    }
4676
4677    def __init__(
4678        self,
4679        **kwargs
4680    ):
4681        super(ExpressRouteCircuitStats, self).__init__(**kwargs)
4682        self.primarybytes_in = kwargs.get('primarybytes_in', None)
4683        self.primarybytes_out = kwargs.get('primarybytes_out', None)
4684        self.secondarybytes_in = kwargs.get('secondarybytes_in', None)
4685        self.secondarybytes_out = kwargs.get('secondarybytes_out', None)
4686
4687
4688class ExpressRouteCrossConnection(Resource):
4689    """ExpressRouteCrossConnection resource.
4690
4691    Variables are only populated by the server, and will be ignored when sending a request.
4692
4693    :param id: Resource ID.
4694    :type id: str
4695    :ivar name: Resource name.
4696    :vartype name: str
4697    :ivar type: Resource type.
4698    :vartype type: str
4699    :param location: Resource location.
4700    :type location: str
4701    :param tags: A set of tags. Resource tags.
4702    :type tags: dict[str, str]
4703    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
4704    :vartype etag: str
4705    :ivar primary_azure_port: The name of the primary  port.
4706    :vartype primary_azure_port: str
4707    :ivar secondary_azure_port: The name of the secondary  port.
4708    :vartype secondary_azure_port: str
4709    :ivar s_tag: The identifier of the circuit traffic.
4710    :vartype s_tag: int
4711    :param peering_location: The peering location of the ExpressRoute circuit.
4712    :type peering_location: str
4713    :param bandwidth_in_mbps: The circuit bandwidth In Mbps.
4714    :type bandwidth_in_mbps: int
4715    :param express_route_circuit: The ExpressRouteCircuit.
4716    :type express_route_circuit:
4717     ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitReference
4718    :param service_provider_provisioning_state: The provisioning state of the circuit in the
4719     connectivity provider system. Possible values are 'NotProvisioned', 'Provisioning',
4720     'Provisioned'. Possible values include: "NotProvisioned", "Provisioning", "Provisioned",
4721     "Deprovisioning".
4722    :type service_provider_provisioning_state: str or
4723     ~azure.mgmt.network.v2018_07_01.models.ServiceProviderProvisioningState
4724    :param service_provider_notes: Additional read only notes set by the connectivity provider.
4725    :type service_provider_notes: str
4726    :ivar provisioning_state: Gets the provisioning state of the public IP resource. Possible
4727     values are: 'Updating', 'Deleting', and 'Failed'.
4728    :vartype provisioning_state: str
4729    :param peerings: The list of peerings.
4730    :type peerings: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCrossConnectionPeering]
4731    """
4732
4733    _validation = {
4734        'name': {'readonly': True},
4735        'type': {'readonly': True},
4736        'etag': {'readonly': True},
4737        'primary_azure_port': {'readonly': True},
4738        'secondary_azure_port': {'readonly': True},
4739        's_tag': {'readonly': True},
4740        'provisioning_state': {'readonly': True},
4741    }
4742
4743    _attribute_map = {
4744        'id': {'key': 'id', 'type': 'str'},
4745        'name': {'key': 'name', 'type': 'str'},
4746        'type': {'key': 'type', 'type': 'str'},
4747        'location': {'key': 'location', 'type': 'str'},
4748        'tags': {'key': 'tags', 'type': '{str}'},
4749        'etag': {'key': 'etag', 'type': 'str'},
4750        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
4751        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
4752        's_tag': {'key': 'properties.sTag', 'type': 'int'},
4753        'peering_location': {'key': 'properties.peeringLocation', 'type': 'str'},
4754        'bandwidth_in_mbps': {'key': 'properties.bandwidthInMbps', 'type': 'int'},
4755        'express_route_circuit': {'key': 'properties.expressRouteCircuit', 'type': 'ExpressRouteCircuitReference'},
4756        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
4757        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
4758        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4759        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCrossConnectionPeering]'},
4760    }
4761
4762    def __init__(
4763        self,
4764        **kwargs
4765    ):
4766        super(ExpressRouteCrossConnection, self).__init__(**kwargs)
4767        self.etag = None
4768        self.primary_azure_port = None
4769        self.secondary_azure_port = None
4770        self.s_tag = None
4771        self.peering_location = kwargs.get('peering_location', None)
4772        self.bandwidth_in_mbps = kwargs.get('bandwidth_in_mbps', None)
4773        self.express_route_circuit = kwargs.get('express_route_circuit', None)
4774        self.service_provider_provisioning_state = kwargs.get('service_provider_provisioning_state', None)
4775        self.service_provider_notes = kwargs.get('service_provider_notes', None)
4776        self.provisioning_state = None
4777        self.peerings = kwargs.get('peerings', None)
4778
4779
4780class ExpressRouteCrossConnectionListResult(msrest.serialization.Model):
4781    """Response for ListExpressRouteCrossConnection API service call.
4782
4783    Variables are only populated by the server, and will be ignored when sending a request.
4784
4785    :param value: A list of ExpressRouteCrossConnection resources.
4786    :type value: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCrossConnection]
4787    :ivar next_link: The URL to get the next set of results.
4788    :vartype next_link: str
4789    """
4790
4791    _validation = {
4792        'next_link': {'readonly': True},
4793    }
4794
4795    _attribute_map = {
4796        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnection]'},
4797        'next_link': {'key': 'nextLink', 'type': 'str'},
4798    }
4799
4800    def __init__(
4801        self,
4802        **kwargs
4803    ):
4804        super(ExpressRouteCrossConnectionListResult, self).__init__(**kwargs)
4805        self.value = kwargs.get('value', None)
4806        self.next_link = None
4807
4808
4809class ExpressRouteCrossConnectionPeering(SubResource):
4810    """Peering in an ExpressRoute Cross Connection resource.
4811
4812    Variables are only populated by the server, and will be ignored when sending a request.
4813
4814    :param id: Resource ID.
4815    :type id: str
4816    :param name: Gets name of the resource that is unique within a resource group. This name can be
4817     used to access the resource.
4818    :type name: str
4819    :ivar etag: A unique read-only string that changes whenever the resource is updated.
4820    :vartype etag: str
4821    :param peering_type: The peering type. Possible values include: "AzurePublicPeering",
4822     "AzurePrivatePeering", "MicrosoftPeering".
4823    :type peering_type: str or ~azure.mgmt.network.v2018_07_01.models.ExpressRoutePeeringType
4824    :param state: The peering state. Possible values include: "Disabled", "Enabled".
4825    :type state: str or ~azure.mgmt.network.v2018_07_01.models.ExpressRoutePeeringState
4826    :ivar azure_asn: The Azure ASN.
4827    :vartype azure_asn: int
4828    :param peer_asn: The peer ASN.
4829    :type peer_asn: long
4830    :param primary_peer_address_prefix: The primary address prefix.
4831    :type primary_peer_address_prefix: str
4832    :param secondary_peer_address_prefix: The secondary address prefix.
4833    :type secondary_peer_address_prefix: str
4834    :ivar primary_azure_port: The primary port.
4835    :vartype primary_azure_port: str
4836    :ivar secondary_azure_port: The secondary port.
4837    :vartype secondary_azure_port: str
4838    :param shared_key: The shared key.
4839    :type shared_key: str
4840    :param vlan_id: The VLAN ID.
4841    :type vlan_id: int
4842    :param microsoft_peering_config: The Microsoft peering configuration.
4843    :type microsoft_peering_config:
4844     ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitPeeringConfig
4845    :ivar provisioning_state: Gets the provisioning state of the public IP resource. Possible
4846     values are: 'Updating', 'Deleting', and 'Failed'.
4847    :vartype provisioning_state: str
4848    :param gateway_manager_etag: The GatewayManager Etag.
4849    :type gateway_manager_etag: str
4850    :param last_modified_by: Gets whether the provider or the customer last modified the peering.
4851    :type last_modified_by: str
4852    :param ipv6_peering_config: The IPv6 peering configuration.
4853    :type ipv6_peering_config:
4854     ~azure.mgmt.network.v2018_07_01.models.Ipv6ExpressRouteCircuitPeeringConfig
4855    """
4856
4857    _validation = {
4858        'etag': {'readonly': True},
4859        'azure_asn': {'readonly': True},
4860        'peer_asn': {'maximum': 4294967295, 'minimum': 1},
4861        'primary_azure_port': {'readonly': True},
4862        'secondary_azure_port': {'readonly': True},
4863        'provisioning_state': {'readonly': True},
4864    }
4865
4866    _attribute_map = {
4867        'id': {'key': 'id', 'type': 'str'},
4868        'name': {'key': 'name', 'type': 'str'},
4869        'etag': {'key': 'etag', 'type': 'str'},
4870        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
4871        'state': {'key': 'properties.state', 'type': 'str'},
4872        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
4873        'peer_asn': {'key': 'properties.peerASN', 'type': 'long'},
4874        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
4875        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
4876        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
4877        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
4878        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
4879        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
4880        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
4881        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4882        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
4883        'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'},
4884        'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'},
4885    }
4886
4887    def __init__(
4888        self,
4889        **kwargs
4890    ):
4891        super(ExpressRouteCrossConnectionPeering, self).__init__(**kwargs)
4892        self.name = kwargs.get('name', None)
4893        self.etag = None
4894        self.peering_type = kwargs.get('peering_type', None)
4895        self.state = kwargs.get('state', None)
4896        self.azure_asn = None
4897        self.peer_asn = kwargs.get('peer_asn', None)
4898        self.primary_peer_address_prefix = kwargs.get('primary_peer_address_prefix', None)
4899        self.secondary_peer_address_prefix = kwargs.get('secondary_peer_address_prefix', None)
4900        self.primary_azure_port = None
4901        self.secondary_azure_port = None
4902        self.shared_key = kwargs.get('shared_key', None)
4903        self.vlan_id = kwargs.get('vlan_id', None)
4904        self.microsoft_peering_config = kwargs.get('microsoft_peering_config', None)
4905        self.provisioning_state = None
4906        self.gateway_manager_etag = kwargs.get('gateway_manager_etag', None)
4907        self.last_modified_by = kwargs.get('last_modified_by', None)
4908        self.ipv6_peering_config = kwargs.get('ipv6_peering_config', None)
4909
4910
4911class ExpressRouteCrossConnectionPeeringList(msrest.serialization.Model):
4912    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCrossConnection.
4913
4914    Variables are only populated by the server, and will be ignored when sending a request.
4915
4916    :param value: The peerings in an express route cross connection.
4917    :type value: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCrossConnectionPeering]
4918    :ivar next_link: The URL to get the next set of results.
4919    :vartype next_link: str
4920    """
4921
4922    _validation = {
4923        'next_link': {'readonly': True},
4924    }
4925
4926    _attribute_map = {
4927        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnectionPeering]'},
4928        'next_link': {'key': 'nextLink', 'type': 'str'},
4929    }
4930
4931    def __init__(
4932        self,
4933        **kwargs
4934    ):
4935        super(ExpressRouteCrossConnectionPeeringList, self).__init__(**kwargs)
4936        self.value = kwargs.get('value', None)
4937        self.next_link = None
4938
4939
4940class ExpressRouteCrossConnectionRoutesTableSummary(msrest.serialization.Model):
4941    """The routes table associated with the ExpressRouteCircuit.
4942
4943    :param neighbor: IP address of Neighbor router.
4944    :type neighbor: str
4945    :param asn: Autonomous system number.
4946    :type asn: int
4947    :param up_down: The length of time that the BGP session has been in the Established state, or
4948     the current status if not in the Established state.
4949    :type up_down: str
4950    :param state_or_prefixes_received: Current state of the BGP session, and the number of prefixes
4951     that have been received from a neighbor or peer group.
4952    :type state_or_prefixes_received: str
4953    """
4954
4955    _attribute_map = {
4956        'neighbor': {'key': 'neighbor', 'type': 'str'},
4957        'asn': {'key': 'asn', 'type': 'int'},
4958        'up_down': {'key': 'upDown', 'type': 'str'},
4959        'state_or_prefixes_received': {'key': 'stateOrPrefixesReceived', 'type': 'str'},
4960    }
4961
4962    def __init__(
4963        self,
4964        **kwargs
4965    ):
4966        super(ExpressRouteCrossConnectionRoutesTableSummary, self).__init__(**kwargs)
4967        self.neighbor = kwargs.get('neighbor', None)
4968        self.asn = kwargs.get('asn', None)
4969        self.up_down = kwargs.get('up_down', None)
4970        self.state_or_prefixes_received = kwargs.get('state_or_prefixes_received', None)
4971
4972
4973class ExpressRouteCrossConnectionsRoutesTableSummaryListResult(msrest.serialization.Model):
4974    """Response for ListRoutesTable associated with the Express Route Cross Connections.
4975
4976    Variables are only populated by the server, and will be ignored when sending a request.
4977
4978    :param value: A list of the routes table.
4979    :type value:
4980     list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCrossConnectionRoutesTableSummary]
4981    :ivar next_link: The URL to get the next set of results.
4982    :vartype next_link: str
4983    """
4984
4985    _validation = {
4986        'next_link': {'readonly': True},
4987    }
4988
4989    _attribute_map = {
4990        'value': {'key': 'value', 'type': '[ExpressRouteCrossConnectionRoutesTableSummary]'},
4991        'next_link': {'key': 'nextLink', 'type': 'str'},
4992    }
4993
4994    def __init__(
4995        self,
4996        **kwargs
4997    ):
4998        super(ExpressRouteCrossConnectionsRoutesTableSummaryListResult, self).__init__(**kwargs)
4999        self.value = kwargs.get('value', None)
5000        self.next_link = None
5001
5002
5003class ExpressRouteServiceProvider(Resource):
5004    """A ExpressRouteResourceProvider object.
5005
5006    Variables are only populated by the server, and will be ignored when sending a request.
5007
5008    :param id: Resource ID.
5009    :type id: str
5010    :ivar name: Resource name.
5011    :vartype name: str
5012    :ivar type: Resource type.
5013    :vartype type: str
5014    :param location: Resource location.
5015    :type location: str
5016    :param tags: A set of tags. Resource tags.
5017    :type tags: dict[str, str]
5018    :param peering_locations: Get a list of peering locations.
5019    :type peering_locations: list[str]
5020    :param bandwidths_offered: Gets bandwidths offered.
5021    :type bandwidths_offered:
5022     list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteServiceProviderBandwidthsOffered]
5023    :param provisioning_state: Gets the provisioning state of the resource.
5024    :type provisioning_state: str
5025    """
5026
5027    _validation = {
5028        'name': {'readonly': True},
5029        'type': {'readonly': True},
5030    }
5031
5032    _attribute_map = {
5033        'id': {'key': 'id', 'type': 'str'},
5034        'name': {'key': 'name', 'type': 'str'},
5035        'type': {'key': 'type', 'type': 'str'},
5036        'location': {'key': 'location', 'type': 'str'},
5037        'tags': {'key': 'tags', 'type': '{str}'},
5038        'peering_locations': {'key': 'properties.peeringLocations', 'type': '[str]'},
5039        'bandwidths_offered': {'key': 'properties.bandwidthsOffered', 'type': '[ExpressRouteServiceProviderBandwidthsOffered]'},
5040        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5041    }
5042
5043    def __init__(
5044        self,
5045        **kwargs
5046    ):
5047        super(ExpressRouteServiceProvider, self).__init__(**kwargs)
5048        self.peering_locations = kwargs.get('peering_locations', None)
5049        self.bandwidths_offered = kwargs.get('bandwidths_offered', None)
5050        self.provisioning_state = kwargs.get('provisioning_state', None)
5051
5052
5053class ExpressRouteServiceProviderBandwidthsOffered(msrest.serialization.Model):
5054    """Contains bandwidths offered in ExpressRouteServiceProvider resources.
5055
5056    :param offer_name: The OfferName.
5057    :type offer_name: str
5058    :param value_in_mbps: The ValueInMbps.
5059    :type value_in_mbps: int
5060    """
5061
5062    _attribute_map = {
5063        'offer_name': {'key': 'offerName', 'type': 'str'},
5064        'value_in_mbps': {'key': 'valueInMbps', 'type': 'int'},
5065    }
5066
5067    def __init__(
5068        self,
5069        **kwargs
5070    ):
5071        super(ExpressRouteServiceProviderBandwidthsOffered, self).__init__(**kwargs)
5072        self.offer_name = kwargs.get('offer_name', None)
5073        self.value_in_mbps = kwargs.get('value_in_mbps', None)
5074
5075
5076class ExpressRouteServiceProviderListResult(msrest.serialization.Model):
5077    """Response for the ListExpressRouteServiceProvider API service call.
5078
5079    :param value: A list of ExpressRouteResourceProvider resources.
5080    :type value: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteServiceProvider]
5081    :param next_link: The URL to get the next set of results.
5082    :type next_link: str
5083    """
5084
5085    _attribute_map = {
5086        'value': {'key': 'value', 'type': '[ExpressRouteServiceProvider]'},
5087        'next_link': {'key': 'nextLink', 'type': 'str'},
5088    }
5089
5090    def __init__(
5091        self,
5092        **kwargs
5093    ):
5094        super(ExpressRouteServiceProviderListResult, self).__init__(**kwargs)
5095        self.value = kwargs.get('value', None)
5096        self.next_link = kwargs.get('next_link', None)
5097
5098
5099class FlowLogInformation(msrest.serialization.Model):
5100    """Information on the configuration of flow log and traffic analytics (optional) .
5101
5102    All required parameters must be populated in order to send to Azure.
5103
5104    :param target_resource_id: Required. The ID of the resource to configure for flow log and
5105     traffic analytics (optional) .
5106    :type target_resource_id: str
5107    :param flow_analytics_configuration: Parameters that define the configuration of traffic
5108     analytics.
5109    :type flow_analytics_configuration:
5110     ~azure.mgmt.network.v2018_07_01.models.TrafficAnalyticsProperties
5111    :param storage_id: Required. ID of the storage account which is used to store the flow log.
5112    :type storage_id: str
5113    :param enabled: Required. Flag to enable/disable flow logging.
5114    :type enabled: bool
5115    :param retention_policy: Parameters that define the retention policy for flow log.
5116    :type retention_policy: ~azure.mgmt.network.v2018_07_01.models.RetentionPolicyParameters
5117    """
5118
5119    _validation = {
5120        'target_resource_id': {'required': True},
5121        'storage_id': {'required': True},
5122        'enabled': {'required': True},
5123    }
5124
5125    _attribute_map = {
5126        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
5127        'flow_analytics_configuration': {'key': 'flowAnalyticsConfiguration', 'type': 'TrafficAnalyticsProperties'},
5128        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
5129        'enabled': {'key': 'properties.enabled', 'type': 'bool'},
5130        'retention_policy': {'key': 'properties.retentionPolicy', 'type': 'RetentionPolicyParameters'},
5131    }
5132
5133    def __init__(
5134        self,
5135        **kwargs
5136    ):
5137        super(FlowLogInformation, self).__init__(**kwargs)
5138        self.target_resource_id = kwargs['target_resource_id']
5139        self.flow_analytics_configuration = kwargs.get('flow_analytics_configuration', None)
5140        self.storage_id = kwargs['storage_id']
5141        self.enabled = kwargs['enabled']
5142        self.retention_policy = kwargs.get('retention_policy', None)
5143
5144
5145class FlowLogStatusParameters(msrest.serialization.Model):
5146    """Parameters that define a resource to query flow log and traffic analytics (optional) status.
5147
5148    All required parameters must be populated in order to send to Azure.
5149
5150    :param target_resource_id: Required. The target resource where getting the flow log and traffic
5151     analytics (optional) status.
5152    :type target_resource_id: str
5153    """
5154
5155    _validation = {
5156        'target_resource_id': {'required': True},
5157    }
5158
5159    _attribute_map = {
5160        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
5161    }
5162
5163    def __init__(
5164        self,
5165        **kwargs
5166    ):
5167        super(FlowLogStatusParameters, self).__init__(**kwargs)
5168        self.target_resource_id = kwargs['target_resource_id']
5169
5170
5171class FrontendIPConfiguration(SubResource):
5172    """Frontend IP address of the load balancer.
5173
5174    Variables are only populated by the server, and will be ignored when sending a request.
5175
5176    :param id: Resource ID.
5177    :type id: str
5178    :param name: The name of the resource that is unique within a resource group. This name can be
5179     used to access the resource.
5180    :type name: str
5181    :param etag: A unique read-only string that changes whenever the resource is updated.
5182    :type etag: str
5183    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
5184     come from.
5185    :type zones: list[str]
5186    :ivar inbound_nat_rules: Read only. Inbound rules URIs that use this frontend IP.
5187    :vartype inbound_nat_rules: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
5188    :ivar inbound_nat_pools: Read only. Inbound pools URIs that use this frontend IP.
5189    :vartype inbound_nat_pools: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
5190    :ivar outbound_rules: Read only. Outbound rules URIs that use this frontend IP.
5191    :vartype outbound_rules: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
5192    :ivar load_balancing_rules: Gets load balancing rules URIs that use this frontend IP.
5193    :vartype load_balancing_rules: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
5194    :param private_ip_address: The private IP address of the IP configuration.
5195    :type private_ip_address: str
5196    :param private_ip_allocation_method: The Private IP allocation method. Possible values are:
5197     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
5198    :type private_ip_allocation_method: str or
5199     ~azure.mgmt.network.v2018_07_01.models.IPAllocationMethod
5200    :param subnet: The reference of the subnet resource.
5201    :type subnet: ~azure.mgmt.network.v2018_07_01.models.Subnet
5202    :param public_ip_address: The reference of the Public IP resource.
5203    :type public_ip_address: ~azure.mgmt.network.v2018_07_01.models.PublicIPAddress
5204    :param public_ip_prefix: The reference of the Public IP Prefix resource.
5205    :type public_ip_prefix: ~azure.mgmt.network.v2018_07_01.models.SubResource
5206    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
5207     values are: 'Updating', 'Deleting', and 'Failed'.
5208    :type provisioning_state: str
5209    """
5210
5211    _validation = {
5212        'inbound_nat_rules': {'readonly': True},
5213        'inbound_nat_pools': {'readonly': True},
5214        'outbound_rules': {'readonly': True},
5215        'load_balancing_rules': {'readonly': True},
5216    }
5217
5218    _attribute_map = {
5219        'id': {'key': 'id', 'type': 'str'},
5220        'name': {'key': 'name', 'type': 'str'},
5221        'etag': {'key': 'etag', 'type': 'str'},
5222        'zones': {'key': 'zones', 'type': '[str]'},
5223        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[SubResource]'},
5224        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[SubResource]'},
5225        'outbound_rules': {'key': 'properties.outboundRules', 'type': '[SubResource]'},
5226        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
5227        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
5228        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
5229        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
5230        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
5231        'public_ip_prefix': {'key': 'properties.publicIPPrefix', 'type': 'SubResource'},
5232        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5233    }
5234
5235    def __init__(
5236        self,
5237        **kwargs
5238    ):
5239        super(FrontendIPConfiguration, self).__init__(**kwargs)
5240        self.name = kwargs.get('name', None)
5241        self.etag = kwargs.get('etag', None)
5242        self.zones = kwargs.get('zones', None)
5243        self.inbound_nat_rules = None
5244        self.inbound_nat_pools = None
5245        self.outbound_rules = None
5246        self.load_balancing_rules = None
5247        self.private_ip_address = kwargs.get('private_ip_address', None)
5248        self.private_ip_allocation_method = kwargs.get('private_ip_allocation_method', None)
5249        self.subnet = kwargs.get('subnet', None)
5250        self.public_ip_address = kwargs.get('public_ip_address', None)
5251        self.public_ip_prefix = kwargs.get('public_ip_prefix', None)
5252        self.provisioning_state = kwargs.get('provisioning_state', None)
5253
5254
5255class GatewayRoute(msrest.serialization.Model):
5256    """Gateway routing details.
5257
5258    Variables are only populated by the server, and will be ignored when sending a request.
5259
5260    :ivar local_address: The gateway's local address.
5261    :vartype local_address: str
5262    :ivar network: The route's network prefix.
5263    :vartype network: str
5264    :ivar next_hop: The route's next hop.
5265    :vartype next_hop: str
5266    :ivar source_peer: The peer this route was learned from.
5267    :vartype source_peer: str
5268    :ivar origin: The source this route was learned from.
5269    :vartype origin: str
5270    :ivar as_path: The route's AS path sequence.
5271    :vartype as_path: str
5272    :ivar weight: The route's weight.
5273    :vartype weight: int
5274    """
5275
5276    _validation = {
5277        'local_address': {'readonly': True},
5278        'network': {'readonly': True},
5279        'next_hop': {'readonly': True},
5280        'source_peer': {'readonly': True},
5281        'origin': {'readonly': True},
5282        'as_path': {'readonly': True},
5283        'weight': {'readonly': True},
5284    }
5285
5286    _attribute_map = {
5287        'local_address': {'key': 'localAddress', 'type': 'str'},
5288        'network': {'key': 'network', 'type': 'str'},
5289        'next_hop': {'key': 'nextHop', 'type': 'str'},
5290        'source_peer': {'key': 'sourcePeer', 'type': 'str'},
5291        'origin': {'key': 'origin', 'type': 'str'},
5292        'as_path': {'key': 'asPath', 'type': 'str'},
5293        'weight': {'key': 'weight', 'type': 'int'},
5294    }
5295
5296    def __init__(
5297        self,
5298        **kwargs
5299    ):
5300        super(GatewayRoute, self).__init__(**kwargs)
5301        self.local_address = None
5302        self.network = None
5303        self.next_hop = None
5304        self.source_peer = None
5305        self.origin = None
5306        self.as_path = None
5307        self.weight = None
5308
5309
5310class GatewayRouteListResult(msrest.serialization.Model):
5311    """List of virtual network gateway routes.
5312
5313    :param value: List of gateway routes.
5314    :type value: list[~azure.mgmt.network.v2018_07_01.models.GatewayRoute]
5315    """
5316
5317    _attribute_map = {
5318        'value': {'key': 'value', 'type': '[GatewayRoute]'},
5319    }
5320
5321    def __init__(
5322        self,
5323        **kwargs
5324    ):
5325        super(GatewayRouteListResult, self).__init__(**kwargs)
5326        self.value = kwargs.get('value', None)
5327
5328
5329class GetVpnSitesConfigurationRequest(msrest.serialization.Model):
5330    """List of Vpn-Sites.
5331
5332    :param vpn_sites: List of resource-ids of the vpn-sites for which config is to be downloaded.
5333    :type vpn_sites: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
5334    :param output_blob_sas_url: The sas-url to download the configurations for vpn-sites.
5335    :type output_blob_sas_url: str
5336    """
5337
5338    _attribute_map = {
5339        'vpn_sites': {'key': 'vpnSites', 'type': '[SubResource]'},
5340        'output_blob_sas_url': {'key': 'outputBlobSasUrl', 'type': 'str'},
5341    }
5342
5343    def __init__(
5344        self,
5345        **kwargs
5346    ):
5347        super(GetVpnSitesConfigurationRequest, self).__init__(**kwargs)
5348        self.vpn_sites = kwargs.get('vpn_sites', None)
5349        self.output_blob_sas_url = kwargs.get('output_blob_sas_url', None)
5350
5351
5352class HTTPConfiguration(msrest.serialization.Model):
5353    """HTTP configuration of the connectivity check.
5354
5355    :param method: HTTP method. Possible values include: "Get".
5356    :type method: str or ~azure.mgmt.network.v2018_07_01.models.HTTPMethod
5357    :param headers: List of HTTP headers.
5358    :type headers: list[~azure.mgmt.network.v2018_07_01.models.HTTPHeader]
5359    :param valid_status_codes: Valid status codes.
5360    :type valid_status_codes: list[int]
5361    """
5362
5363    _attribute_map = {
5364        'method': {'key': 'method', 'type': 'str'},
5365        'headers': {'key': 'headers', 'type': '[HTTPHeader]'},
5366        'valid_status_codes': {'key': 'validStatusCodes', 'type': '[int]'},
5367    }
5368
5369    def __init__(
5370        self,
5371        **kwargs
5372    ):
5373        super(HTTPConfiguration, self).__init__(**kwargs)
5374        self.method = kwargs.get('method', None)
5375        self.headers = kwargs.get('headers', None)
5376        self.valid_status_codes = kwargs.get('valid_status_codes', None)
5377
5378
5379class HTTPHeader(msrest.serialization.Model):
5380    """Describes the HTTP header.
5381
5382    :param name: The name in HTTP header.
5383    :type name: str
5384    :param value: The value in HTTP header.
5385    :type value: str
5386    """
5387
5388    _attribute_map = {
5389        'name': {'key': 'name', 'type': 'str'},
5390        'value': {'key': 'value', 'type': 'str'},
5391    }
5392
5393    def __init__(
5394        self,
5395        **kwargs
5396    ):
5397        super(HTTPHeader, self).__init__(**kwargs)
5398        self.name = kwargs.get('name', None)
5399        self.value = kwargs.get('value', None)
5400
5401
5402class HubVirtualNetworkConnection(Resource):
5403    """HubVirtualNetworkConnection Resource.
5404
5405    Variables are only populated by the server, and will be ignored when sending a request.
5406
5407    :param id: Resource ID.
5408    :type id: str
5409    :ivar name: Resource name.
5410    :vartype name: str
5411    :ivar type: Resource type.
5412    :vartype type: str
5413    :param location: Resource location.
5414    :type location: str
5415    :param tags: A set of tags. Resource tags.
5416    :type tags: dict[str, str]
5417    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
5418    :vartype etag: str
5419    :param remote_virtual_network: Reference to the remote virtual network.
5420    :type remote_virtual_network: ~azure.mgmt.network.v2018_07_01.models.SubResource
5421    :param allow_hub_to_remote_vnet_transit: VirtualHub to RemoteVnet transit to enabled or not.
5422    :type allow_hub_to_remote_vnet_transit: bool
5423    :param allow_remote_vnet_to_use_hub_vnet_gateways: Allow RemoteVnet to use Virtual Hub's
5424     gateways.
5425    :type allow_remote_vnet_to_use_hub_vnet_gateways: bool
5426    :param provisioning_state: The provisioning state of the resource. Possible values include:
5427     "Succeeded", "Updating", "Deleting", "Failed".
5428    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
5429    """
5430
5431    _validation = {
5432        'name': {'readonly': True},
5433        'type': {'readonly': True},
5434        'etag': {'readonly': True},
5435    }
5436
5437    _attribute_map = {
5438        'id': {'key': 'id', 'type': 'str'},
5439        'name': {'key': 'name', 'type': 'str'},
5440        'type': {'key': 'type', 'type': 'str'},
5441        'location': {'key': 'location', 'type': 'str'},
5442        'tags': {'key': 'tags', 'type': '{str}'},
5443        'etag': {'key': 'etag', 'type': 'str'},
5444        'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'},
5445        'allow_hub_to_remote_vnet_transit': {'key': 'properties.allowHubToRemoteVnetTransit', 'type': 'bool'},
5446        'allow_remote_vnet_to_use_hub_vnet_gateways': {'key': 'properties.allowRemoteVnetToUseHubVnetGateways', 'type': 'bool'},
5447        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5448    }
5449
5450    def __init__(
5451        self,
5452        **kwargs
5453    ):
5454        super(HubVirtualNetworkConnection, self).__init__(**kwargs)
5455        self.etag = None
5456        self.remote_virtual_network = kwargs.get('remote_virtual_network', None)
5457        self.allow_hub_to_remote_vnet_transit = kwargs.get('allow_hub_to_remote_vnet_transit', None)
5458        self.allow_remote_vnet_to_use_hub_vnet_gateways = kwargs.get('allow_remote_vnet_to_use_hub_vnet_gateways', None)
5459        self.provisioning_state = kwargs.get('provisioning_state', None)
5460
5461
5462class InboundNatPool(SubResource):
5463    """Inbound NAT pool of the load balancer.
5464
5465    :param id: Resource ID.
5466    :type id: str
5467    :param name: The name of the resource that is unique within a resource group. This name can be
5468     used to access the resource.
5469    :type name: str
5470    :param etag: A unique read-only string that changes whenever the resource is updated.
5471    :type etag: str
5472    :param frontend_ip_configuration: A reference to frontend IP addresses.
5473    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_07_01.models.SubResource
5474    :param protocol: The transport protocol for the endpoint. Possible values are 'Udp' or 'Tcp' or
5475     'All'. Possible values include: "Udp", "Tcp", "All".
5476    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.TransportProtocol
5477    :param frontend_port_range_start: The first port number in the range of external ports that
5478     will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values
5479     range between 1 and 65534.
5480    :type frontend_port_range_start: int
5481    :param frontend_port_range_end: The last port number in the range of external ports that will
5482     be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range
5483     between 1 and 65535.
5484    :type frontend_port_range_end: int
5485    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
5486     are between 1 and 65535.
5487    :type backend_port: int
5488    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
5489     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
5490     protocol is set to TCP.
5491    :type idle_timeout_in_minutes: int
5492    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
5493     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
5494     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
5495     after you create the endpoint.
5496    :type enable_floating_ip: bool
5497    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
5498     connection termination. This element is only used when the protocol is set to TCP.
5499    :type enable_tcp_reset: bool
5500    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
5501     values are: 'Updating', 'Deleting', and 'Failed'.
5502    :type provisioning_state: str
5503    """
5504
5505    _attribute_map = {
5506        'id': {'key': 'id', 'type': 'str'},
5507        'name': {'key': 'name', 'type': 'str'},
5508        'etag': {'key': 'etag', 'type': 'str'},
5509        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
5510        'protocol': {'key': 'properties.protocol', 'type': 'str'},
5511        'frontend_port_range_start': {'key': 'properties.frontendPortRangeStart', 'type': 'int'},
5512        'frontend_port_range_end': {'key': 'properties.frontendPortRangeEnd', 'type': 'int'},
5513        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
5514        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
5515        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
5516        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
5517        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5518    }
5519
5520    def __init__(
5521        self,
5522        **kwargs
5523    ):
5524        super(InboundNatPool, self).__init__(**kwargs)
5525        self.name = kwargs.get('name', None)
5526        self.etag = kwargs.get('etag', None)
5527        self.frontend_ip_configuration = kwargs.get('frontend_ip_configuration', None)
5528        self.protocol = kwargs.get('protocol', None)
5529        self.frontend_port_range_start = kwargs.get('frontend_port_range_start', None)
5530        self.frontend_port_range_end = kwargs.get('frontend_port_range_end', None)
5531        self.backend_port = kwargs.get('backend_port', None)
5532        self.idle_timeout_in_minutes = kwargs.get('idle_timeout_in_minutes', None)
5533        self.enable_floating_ip = kwargs.get('enable_floating_ip', None)
5534        self.enable_tcp_reset = kwargs.get('enable_tcp_reset', None)
5535        self.provisioning_state = kwargs.get('provisioning_state', None)
5536
5537
5538class InboundNatRule(SubResource):
5539    """Inbound NAT rule of the load balancer.
5540
5541    Variables are only populated by the server, and will be ignored when sending a request.
5542
5543    :param id: Resource ID.
5544    :type id: str
5545    :param name: Gets name of the resource that is unique within a resource group. This name can be
5546     used to access the resource.
5547    :type name: str
5548    :param etag: A unique read-only string that changes whenever the resource is updated.
5549    :type etag: str
5550    :param frontend_ip_configuration: A reference to frontend IP addresses.
5551    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_07_01.models.SubResource
5552    :ivar backend_ip_configuration: A reference to a private IP address defined on a network
5553     interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations
5554     is forwarded to the backend IP.
5555    :vartype backend_ip_configuration:
5556     ~azure.mgmt.network.v2018_07_01.models.NetworkInterfaceIPConfiguration
5557    :param protocol: The transport protocol for the endpoint. Possible values are 'Udp' or 'Tcp' or
5558     'All'. Possible values include: "Udp", "Tcp", "All".
5559    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.TransportProtocol
5560    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
5561     unique within the Load Balancer. Acceptable values range from 1 to 65534.
5562    :type frontend_port: int
5563    :param backend_port: The port used for the internal endpoint. Acceptable values range from 1 to
5564     65535.
5565    :type backend_port: int
5566    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
5567     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
5568     protocol is set to TCP.
5569    :type idle_timeout_in_minutes: int
5570    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
5571     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
5572     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
5573     after you create the endpoint.
5574    :type enable_floating_ip: bool
5575    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
5576     connection termination. This element is only used when the protocol is set to TCP.
5577    :type enable_tcp_reset: bool
5578    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
5579     values are: 'Updating', 'Deleting', and 'Failed'.
5580    :type provisioning_state: str
5581    """
5582
5583    _validation = {
5584        'backend_ip_configuration': {'readonly': True},
5585    }
5586
5587    _attribute_map = {
5588        'id': {'key': 'id', 'type': 'str'},
5589        'name': {'key': 'name', 'type': 'str'},
5590        'etag': {'key': 'etag', 'type': 'str'},
5591        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
5592        'backend_ip_configuration': {'key': 'properties.backendIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
5593        'protocol': {'key': 'properties.protocol', 'type': 'str'},
5594        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
5595        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
5596        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
5597        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
5598        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
5599        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5600    }
5601
5602    def __init__(
5603        self,
5604        **kwargs
5605    ):
5606        super(InboundNatRule, self).__init__(**kwargs)
5607        self.name = kwargs.get('name', None)
5608        self.etag = kwargs.get('etag', None)
5609        self.frontend_ip_configuration = kwargs.get('frontend_ip_configuration', None)
5610        self.backend_ip_configuration = None
5611        self.protocol = kwargs.get('protocol', None)
5612        self.frontend_port = kwargs.get('frontend_port', None)
5613        self.backend_port = kwargs.get('backend_port', None)
5614        self.idle_timeout_in_minutes = kwargs.get('idle_timeout_in_minutes', None)
5615        self.enable_floating_ip = kwargs.get('enable_floating_ip', None)
5616        self.enable_tcp_reset = kwargs.get('enable_tcp_reset', None)
5617        self.provisioning_state = kwargs.get('provisioning_state', None)
5618
5619
5620class InboundNatRuleListResult(msrest.serialization.Model):
5621    """Response for ListInboundNatRule API service call.
5622
5623    Variables are only populated by the server, and will be ignored when sending a request.
5624
5625    :param value: A list of inbound nat rules in a load balancer.
5626    :type value: list[~azure.mgmt.network.v2018_07_01.models.InboundNatRule]
5627    :ivar next_link: The URL to get the next set of results.
5628    :vartype next_link: str
5629    """
5630
5631    _validation = {
5632        'next_link': {'readonly': True},
5633    }
5634
5635    _attribute_map = {
5636        'value': {'key': 'value', 'type': '[InboundNatRule]'},
5637        'next_link': {'key': 'nextLink', 'type': 'str'},
5638    }
5639
5640    def __init__(
5641        self,
5642        **kwargs
5643    ):
5644        super(InboundNatRuleListResult, self).__init__(**kwargs)
5645        self.value = kwargs.get('value', None)
5646        self.next_link = None
5647
5648
5649class IPAddressAvailabilityResult(msrest.serialization.Model):
5650    """Response for CheckIPAddressAvailability API service call.
5651
5652    :param available: Private IP address availability.
5653    :type available: bool
5654    :param available_ip_addresses: Contains other available private IP addresses if the asked for
5655     address is taken.
5656    :type available_ip_addresses: list[str]
5657    """
5658
5659    _attribute_map = {
5660        'available': {'key': 'available', 'type': 'bool'},
5661        'available_ip_addresses': {'key': 'availableIPAddresses', 'type': '[str]'},
5662    }
5663
5664    def __init__(
5665        self,
5666        **kwargs
5667    ):
5668        super(IPAddressAvailabilityResult, self).__init__(**kwargs)
5669        self.available = kwargs.get('available', None)
5670        self.available_ip_addresses = kwargs.get('available_ip_addresses', None)
5671
5672
5673class IPConfiguration(SubResource):
5674    """IP configuration.
5675
5676    :param id: Resource ID.
5677    :type id: str
5678    :param name: The name of the resource that is unique within a resource group. This name can be
5679     used to access the resource.
5680    :type name: str
5681    :param etag: A unique read-only string that changes whenever the resource is updated.
5682    :type etag: str
5683    :param private_ip_address: The private IP address of the IP configuration.
5684    :type private_ip_address: str
5685    :param private_ip_allocation_method: The private IP allocation method. Possible values are
5686     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
5687    :type private_ip_allocation_method: str or
5688     ~azure.mgmt.network.v2018_07_01.models.IPAllocationMethod
5689    :param subnet: The reference of the subnet resource.
5690    :type subnet: ~azure.mgmt.network.v2018_07_01.models.Subnet
5691    :param public_ip_address: The reference of the public IP resource.
5692    :type public_ip_address: ~azure.mgmt.network.v2018_07_01.models.PublicIPAddress
5693    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
5694     values are: 'Updating', 'Deleting', and 'Failed'.
5695    :type provisioning_state: str
5696    """
5697
5698    _attribute_map = {
5699        'id': {'key': 'id', 'type': 'str'},
5700        'name': {'key': 'name', 'type': 'str'},
5701        'etag': {'key': 'etag', 'type': 'str'},
5702        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
5703        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
5704        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
5705        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
5706        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5707    }
5708
5709    def __init__(
5710        self,
5711        **kwargs
5712    ):
5713        super(IPConfiguration, self).__init__(**kwargs)
5714        self.name = kwargs.get('name', None)
5715        self.etag = kwargs.get('etag', None)
5716        self.private_ip_address = kwargs.get('private_ip_address', None)
5717        self.private_ip_allocation_method = kwargs.get('private_ip_allocation_method', None)
5718        self.subnet = kwargs.get('subnet', None)
5719        self.public_ip_address = kwargs.get('public_ip_address', None)
5720        self.provisioning_state = kwargs.get('provisioning_state', None)
5721
5722
5723class IpsecPolicy(msrest.serialization.Model):
5724    """An IPSec Policy configuration for a virtual network gateway connection.
5725
5726    All required parameters must be populated in order to send to Azure.
5727
5728    :param sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode
5729     or Phase 2 SA) lifetime in seconds for a site to site VPN tunnel.
5730    :type sa_life_time_seconds: int
5731    :param sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode
5732     or Phase 2 SA) payload size in KB for a site to site VPN tunnel.
5733    :type sa_data_size_kilobytes: int
5734    :param ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible
5735     values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192",
5736     "GCMAES256".
5737    :type ipsec_encryption: str or ~azure.mgmt.network.v2018_07_01.models.IpsecEncryption
5738    :param ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values
5739     include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256".
5740    :type ipsec_integrity: str or ~azure.mgmt.network.v2018_07_01.models.IpsecIntegrity
5741    :param ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values
5742     include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128".
5743    :type ike_encryption: str or ~azure.mgmt.network.v2018_07_01.models.IkeEncryption
5744    :param ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values
5745     include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128".
5746    :type ike_integrity: str or ~azure.mgmt.network.v2018_07_01.models.IkeIntegrity
5747    :param dh_group: Required. The DH Groups used in IKE Phase 1 for initial SA. Possible values
5748     include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384",
5749     "DHGroup24".
5750    :type dh_group: str or ~azure.mgmt.network.v2018_07_01.models.DhGroup
5751    :param pfs_group: Required. The Pfs Groups used in IKE Phase 2 for new child SA. Possible
5752     values include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14",
5753     "PFSMM".
5754    :type pfs_group: str or ~azure.mgmt.network.v2018_07_01.models.PfsGroup
5755    """
5756
5757    _validation = {
5758        'sa_life_time_seconds': {'required': True},
5759        'sa_data_size_kilobytes': {'required': True},
5760        'ipsec_encryption': {'required': True},
5761        'ipsec_integrity': {'required': True},
5762        'ike_encryption': {'required': True},
5763        'ike_integrity': {'required': True},
5764        'dh_group': {'required': True},
5765        'pfs_group': {'required': True},
5766    }
5767
5768    _attribute_map = {
5769        'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'},
5770        'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'},
5771        'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'},
5772        'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'},
5773        'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'},
5774        'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'},
5775        'dh_group': {'key': 'dhGroup', 'type': 'str'},
5776        'pfs_group': {'key': 'pfsGroup', 'type': 'str'},
5777    }
5778
5779    def __init__(
5780        self,
5781        **kwargs
5782    ):
5783        super(IpsecPolicy, self).__init__(**kwargs)
5784        self.sa_life_time_seconds = kwargs['sa_life_time_seconds']
5785        self.sa_data_size_kilobytes = kwargs['sa_data_size_kilobytes']
5786        self.ipsec_encryption = kwargs['ipsec_encryption']
5787        self.ipsec_integrity = kwargs['ipsec_integrity']
5788        self.ike_encryption = kwargs['ike_encryption']
5789        self.ike_integrity = kwargs['ike_integrity']
5790        self.dh_group = kwargs['dh_group']
5791        self.pfs_group = kwargs['pfs_group']
5792
5793
5794class IpTag(msrest.serialization.Model):
5795    """Contains the IpTag associated with the object.
5796
5797    :param ip_tag_type: Gets or sets the ipTag type: Example FirstPartyUsage.
5798    :type ip_tag_type: str
5799    :param tag: Gets or sets value of the IpTag associated with the public IP. Example SQL, Storage
5800     etc.
5801    :type tag: str
5802    """
5803
5804    _attribute_map = {
5805        'ip_tag_type': {'key': 'ipTagType', 'type': 'str'},
5806        'tag': {'key': 'tag', 'type': 'str'},
5807    }
5808
5809    def __init__(
5810        self,
5811        **kwargs
5812    ):
5813        super(IpTag, self).__init__(**kwargs)
5814        self.ip_tag_type = kwargs.get('ip_tag_type', None)
5815        self.tag = kwargs.get('tag', None)
5816
5817
5818class Ipv6ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
5819    """Contains IPv6 peering config.
5820
5821    :param primary_peer_address_prefix: The primary address prefix.
5822    :type primary_peer_address_prefix: str
5823    :param secondary_peer_address_prefix: The secondary address prefix.
5824    :type secondary_peer_address_prefix: str
5825    :param microsoft_peering_config: The Microsoft peering configuration.
5826    :type microsoft_peering_config:
5827     ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitPeeringConfig
5828    :param route_filter: The reference of the RouteFilter resource.
5829    :type route_filter: ~azure.mgmt.network.v2018_07_01.models.RouteFilter
5830    :param state: The state of peering. Possible values are: 'Disabled' and 'Enabled'. Possible
5831     values include: "Disabled", "Enabled".
5832    :type state: str or ~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitPeeringState
5833    """
5834
5835    _attribute_map = {
5836        'primary_peer_address_prefix': {'key': 'primaryPeerAddressPrefix', 'type': 'str'},
5837        'secondary_peer_address_prefix': {'key': 'secondaryPeerAddressPrefix', 'type': 'str'},
5838        'microsoft_peering_config': {'key': 'microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
5839        'route_filter': {'key': 'routeFilter', 'type': 'RouteFilter'},
5840        'state': {'key': 'state', 'type': 'str'},
5841    }
5842
5843    def __init__(
5844        self,
5845        **kwargs
5846    ):
5847        super(Ipv6ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
5848        self.primary_peer_address_prefix = kwargs.get('primary_peer_address_prefix', None)
5849        self.secondary_peer_address_prefix = kwargs.get('secondary_peer_address_prefix', None)
5850        self.microsoft_peering_config = kwargs.get('microsoft_peering_config', None)
5851        self.route_filter = kwargs.get('route_filter', None)
5852        self.state = kwargs.get('state', None)
5853
5854
5855class ListHubVirtualNetworkConnectionsResult(msrest.serialization.Model):
5856    """List of HubVirtualNetworkConnections and a URL nextLink to get the next set of results.
5857
5858    :param value: List of HubVirtualNetworkConnections.
5859    :type value: list[~azure.mgmt.network.v2018_07_01.models.HubVirtualNetworkConnection]
5860    :param next_link: URL to get the next set of operation list results if there are any.
5861    :type next_link: str
5862    """
5863
5864    _attribute_map = {
5865        'value': {'key': 'value', 'type': '[HubVirtualNetworkConnection]'},
5866        'next_link': {'key': 'nextLink', 'type': 'str'},
5867    }
5868
5869    def __init__(
5870        self,
5871        **kwargs
5872    ):
5873        super(ListHubVirtualNetworkConnectionsResult, self).__init__(**kwargs)
5874        self.value = kwargs.get('value', None)
5875        self.next_link = kwargs.get('next_link', None)
5876
5877
5878class ListVirtualHubsResult(msrest.serialization.Model):
5879    """Result of the request to list VirtualHubs. It contains a list of VirtualHubs and a URL nextLink to get the next set of results.
5880
5881    :param value: List of VirtualHubs.
5882    :type value: list[~azure.mgmt.network.v2018_07_01.models.VirtualHub]
5883    :param next_link: URL to get the next set of operation list results if there are any.
5884    :type next_link: str
5885    """
5886
5887    _attribute_map = {
5888        'value': {'key': 'value', 'type': '[VirtualHub]'},
5889        'next_link': {'key': 'nextLink', 'type': 'str'},
5890    }
5891
5892    def __init__(
5893        self,
5894        **kwargs
5895    ):
5896        super(ListVirtualHubsResult, self).__init__(**kwargs)
5897        self.value = kwargs.get('value', None)
5898        self.next_link = kwargs.get('next_link', None)
5899
5900
5901class ListVirtualWANsResult(msrest.serialization.Model):
5902    """Result of the request to list VirtualWANs. It contains a list of VirtualWANs and a URL nextLink to get the next set of results.
5903
5904    :param value: List of VirtualWANs.
5905    :type value: list[~azure.mgmt.network.v2018_07_01.models.VirtualWAN]
5906    :param next_link: URL to get the next set of operation list results if there are any.
5907    :type next_link: str
5908    """
5909
5910    _attribute_map = {
5911        'value': {'key': 'value', 'type': '[VirtualWAN]'},
5912        'next_link': {'key': 'nextLink', 'type': 'str'},
5913    }
5914
5915    def __init__(
5916        self,
5917        **kwargs
5918    ):
5919        super(ListVirtualWANsResult, self).__init__(**kwargs)
5920        self.value = kwargs.get('value', None)
5921        self.next_link = kwargs.get('next_link', None)
5922
5923
5924class ListVpnConnectionsResult(msrest.serialization.Model):
5925    """Result of the request to list all vpn connections to a virtual wan vpn gateway. It contains a list of Vpn Connections and a URL nextLink to get the next set of results.
5926
5927    :param value: List of Vpn Connections.
5928    :type value: list[~azure.mgmt.network.v2018_07_01.models.VpnConnection]
5929    :param next_link: URL to get the next set of operation list results if there are any.
5930    :type next_link: str
5931    """
5932
5933    _attribute_map = {
5934        'value': {'key': 'value', 'type': '[VpnConnection]'},
5935        'next_link': {'key': 'nextLink', 'type': 'str'},
5936    }
5937
5938    def __init__(
5939        self,
5940        **kwargs
5941    ):
5942        super(ListVpnConnectionsResult, self).__init__(**kwargs)
5943        self.value = kwargs.get('value', None)
5944        self.next_link = kwargs.get('next_link', None)
5945
5946
5947class ListVpnGatewaysResult(msrest.serialization.Model):
5948    """Result of the request to list VpnGateways. It contains a list of VpnGateways and a URL nextLink to get the next set of results.
5949
5950    :param value: List of VpnGateways.
5951    :type value: list[~azure.mgmt.network.v2018_07_01.models.VpnGateway]
5952    :param next_link: URL to get the next set of operation list results if there are any.
5953    :type next_link: str
5954    """
5955
5956    _attribute_map = {
5957        'value': {'key': 'value', 'type': '[VpnGateway]'},
5958        'next_link': {'key': 'nextLink', 'type': 'str'},
5959    }
5960
5961    def __init__(
5962        self,
5963        **kwargs
5964    ):
5965        super(ListVpnGatewaysResult, self).__init__(**kwargs)
5966        self.value = kwargs.get('value', None)
5967        self.next_link = kwargs.get('next_link', None)
5968
5969
5970class ListVpnSitesResult(msrest.serialization.Model):
5971    """Result of the request to list VpnSites. It contains a list of VpnSites and a URL nextLink to get the next set of results.
5972
5973    :param value: List of VpnSites.
5974    :type value: list[~azure.mgmt.network.v2018_07_01.models.VpnSite]
5975    :param next_link: URL to get the next set of operation list results if there are any.
5976    :type next_link: str
5977    """
5978
5979    _attribute_map = {
5980        'value': {'key': 'value', 'type': '[VpnSite]'},
5981        'next_link': {'key': 'nextLink', 'type': 'str'},
5982    }
5983
5984    def __init__(
5985        self,
5986        **kwargs
5987    ):
5988        super(ListVpnSitesResult, self).__init__(**kwargs)
5989        self.value = kwargs.get('value', None)
5990        self.next_link = kwargs.get('next_link', None)
5991
5992
5993class LoadBalancer(Resource):
5994    """LoadBalancer resource.
5995
5996    Variables are only populated by the server, and will be ignored when sending a request.
5997
5998    :param id: Resource ID.
5999    :type id: str
6000    :ivar name: Resource name.
6001    :vartype name: str
6002    :ivar type: Resource type.
6003    :vartype type: str
6004    :param location: Resource location.
6005    :type location: str
6006    :param tags: A set of tags. Resource tags.
6007    :type tags: dict[str, str]
6008    :param sku: The load balancer SKU.
6009    :type sku: ~azure.mgmt.network.v2018_07_01.models.LoadBalancerSku
6010    :param etag: A unique read-only string that changes whenever the resource is updated.
6011    :type etag: str
6012    :param frontend_ip_configurations: Object representing the frontend IPs to be used for the load
6013     balancer.
6014    :type frontend_ip_configurations:
6015     list[~azure.mgmt.network.v2018_07_01.models.FrontendIPConfiguration]
6016    :param backend_address_pools: Collection of backend address pools used by a load balancer.
6017    :type backend_address_pools: list[~azure.mgmt.network.v2018_07_01.models.BackendAddressPool]
6018    :param load_balancing_rules: Object collection representing the load balancing rules Gets the
6019     provisioning.
6020    :type load_balancing_rules: list[~azure.mgmt.network.v2018_07_01.models.LoadBalancingRule]
6021    :param probes: Collection of probe objects used in the load balancer.
6022    :type probes: list[~azure.mgmt.network.v2018_07_01.models.Probe]
6023    :param inbound_nat_rules: Collection of inbound NAT Rules used by a load balancer. Defining
6024     inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT
6025     pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are
6026     associated with individual virtual machines cannot reference an Inbound NAT pool. They have to
6027     reference individual inbound NAT rules.
6028    :type inbound_nat_rules: list[~azure.mgmt.network.v2018_07_01.models.InboundNatRule]
6029    :param inbound_nat_pools: Defines an external port range for inbound NAT to a single backend
6030     port on NICs associated with a load balancer. Inbound NAT rules are created automatically for
6031     each NIC associated with the Load Balancer using an external port from this range. Defining an
6032     Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules.
6033     Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with
6034     individual virtual machines cannot reference an inbound NAT pool. They have to reference
6035     individual inbound NAT rules.
6036    :type inbound_nat_pools: list[~azure.mgmt.network.v2018_07_01.models.InboundNatPool]
6037    :param outbound_rules: The outbound rules.
6038    :type outbound_rules: list[~azure.mgmt.network.v2018_07_01.models.OutboundRule]
6039    :param resource_guid: The resource GUID property of the load balancer resource.
6040    :type resource_guid: str
6041    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
6042     values are: 'Updating', 'Deleting', and 'Failed'.
6043    :type provisioning_state: str
6044    """
6045
6046    _validation = {
6047        'name': {'readonly': True},
6048        'type': {'readonly': True},
6049    }
6050
6051    _attribute_map = {
6052        'id': {'key': 'id', 'type': 'str'},
6053        'name': {'key': 'name', 'type': 'str'},
6054        'type': {'key': 'type', 'type': 'str'},
6055        'location': {'key': 'location', 'type': 'str'},
6056        'tags': {'key': 'tags', 'type': '{str}'},
6057        'sku': {'key': 'sku', 'type': 'LoadBalancerSku'},
6058        'etag': {'key': 'etag', 'type': 'str'},
6059        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[FrontendIPConfiguration]'},
6060        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[BackendAddressPool]'},
6061        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[LoadBalancingRule]'},
6062        'probes': {'key': 'properties.probes', 'type': '[Probe]'},
6063        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[InboundNatRule]'},
6064        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[InboundNatPool]'},
6065        'outbound_rules': {'key': 'properties.outboundRules', 'type': '[OutboundRule]'},
6066        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6067        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6068    }
6069
6070    def __init__(
6071        self,
6072        **kwargs
6073    ):
6074        super(LoadBalancer, self).__init__(**kwargs)
6075        self.sku = kwargs.get('sku', None)
6076        self.etag = kwargs.get('etag', None)
6077        self.frontend_ip_configurations = kwargs.get('frontend_ip_configurations', None)
6078        self.backend_address_pools = kwargs.get('backend_address_pools', None)
6079        self.load_balancing_rules = kwargs.get('load_balancing_rules', None)
6080        self.probes = kwargs.get('probes', None)
6081        self.inbound_nat_rules = kwargs.get('inbound_nat_rules', None)
6082        self.inbound_nat_pools = kwargs.get('inbound_nat_pools', None)
6083        self.outbound_rules = kwargs.get('outbound_rules', None)
6084        self.resource_guid = kwargs.get('resource_guid', None)
6085        self.provisioning_state = kwargs.get('provisioning_state', None)
6086
6087
6088class LoadBalancerBackendAddressPoolListResult(msrest.serialization.Model):
6089    """Response for ListBackendAddressPool API service call.
6090
6091    Variables are only populated by the server, and will be ignored when sending a request.
6092
6093    :param value: A list of backend address pools in a load balancer.
6094    :type value: list[~azure.mgmt.network.v2018_07_01.models.BackendAddressPool]
6095    :ivar next_link: The URL to get the next set of results.
6096    :vartype next_link: str
6097    """
6098
6099    _validation = {
6100        'next_link': {'readonly': True},
6101    }
6102
6103    _attribute_map = {
6104        'value': {'key': 'value', 'type': '[BackendAddressPool]'},
6105        'next_link': {'key': 'nextLink', 'type': 'str'},
6106    }
6107
6108    def __init__(
6109        self,
6110        **kwargs
6111    ):
6112        super(LoadBalancerBackendAddressPoolListResult, self).__init__(**kwargs)
6113        self.value = kwargs.get('value', None)
6114        self.next_link = None
6115
6116
6117class LoadBalancerFrontendIPConfigurationListResult(msrest.serialization.Model):
6118    """Response for ListFrontendIPConfiguration API service call.
6119
6120    Variables are only populated by the server, and will be ignored when sending a request.
6121
6122    :param value: A list of frontend IP configurations in a load balancer.
6123    :type value: list[~azure.mgmt.network.v2018_07_01.models.FrontendIPConfiguration]
6124    :ivar next_link: The URL to get the next set of results.
6125    :vartype next_link: str
6126    """
6127
6128    _validation = {
6129        'next_link': {'readonly': True},
6130    }
6131
6132    _attribute_map = {
6133        'value': {'key': 'value', 'type': '[FrontendIPConfiguration]'},
6134        'next_link': {'key': 'nextLink', 'type': 'str'},
6135    }
6136
6137    def __init__(
6138        self,
6139        **kwargs
6140    ):
6141        super(LoadBalancerFrontendIPConfigurationListResult, self).__init__(**kwargs)
6142        self.value = kwargs.get('value', None)
6143        self.next_link = None
6144
6145
6146class LoadBalancerListResult(msrest.serialization.Model):
6147    """Response for ListLoadBalancers API service call.
6148
6149    Variables are only populated by the server, and will be ignored when sending a request.
6150
6151    :param value: A list of load balancers in a resource group.
6152    :type value: list[~azure.mgmt.network.v2018_07_01.models.LoadBalancer]
6153    :ivar next_link: The URL to get the next set of results.
6154    :vartype next_link: str
6155    """
6156
6157    _validation = {
6158        'next_link': {'readonly': True},
6159    }
6160
6161    _attribute_map = {
6162        'value': {'key': 'value', 'type': '[LoadBalancer]'},
6163        'next_link': {'key': 'nextLink', 'type': 'str'},
6164    }
6165
6166    def __init__(
6167        self,
6168        **kwargs
6169    ):
6170        super(LoadBalancerListResult, self).__init__(**kwargs)
6171        self.value = kwargs.get('value', None)
6172        self.next_link = None
6173
6174
6175class LoadBalancerLoadBalancingRuleListResult(msrest.serialization.Model):
6176    """Response for ListLoadBalancingRule API service call.
6177
6178    Variables are only populated by the server, and will be ignored when sending a request.
6179
6180    :param value: A list of load balancing rules in a load balancer.
6181    :type value: list[~azure.mgmt.network.v2018_07_01.models.LoadBalancingRule]
6182    :ivar next_link: The URL to get the next set of results.
6183    :vartype next_link: str
6184    """
6185
6186    _validation = {
6187        'next_link': {'readonly': True},
6188    }
6189
6190    _attribute_map = {
6191        'value': {'key': 'value', 'type': '[LoadBalancingRule]'},
6192        'next_link': {'key': 'nextLink', 'type': 'str'},
6193    }
6194
6195    def __init__(
6196        self,
6197        **kwargs
6198    ):
6199        super(LoadBalancerLoadBalancingRuleListResult, self).__init__(**kwargs)
6200        self.value = kwargs.get('value', None)
6201        self.next_link = None
6202
6203
6204class LoadBalancerProbeListResult(msrest.serialization.Model):
6205    """Response for ListProbe 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 probes in a load balancer.
6210    :type value: list[~azure.mgmt.network.v2018_07_01.models.Probe]
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': '[Probe]'},
6221        'next_link': {'key': 'nextLink', 'type': 'str'},
6222    }
6223
6224    def __init__(
6225        self,
6226        **kwargs
6227    ):
6228        super(LoadBalancerProbeListResult, self).__init__(**kwargs)
6229        self.value = kwargs.get('value', None)
6230        self.next_link = None
6231
6232
6233class LoadBalancerSku(msrest.serialization.Model):
6234    """SKU of a load balancer.
6235
6236    :param name: Name of a load balancer SKU. Possible values include: "Basic", "Standard".
6237    :type name: str or ~azure.mgmt.network.v2018_07_01.models.LoadBalancerSkuName
6238    """
6239
6240    _attribute_map = {
6241        'name': {'key': 'name', 'type': 'str'},
6242    }
6243
6244    def __init__(
6245        self,
6246        **kwargs
6247    ):
6248        super(LoadBalancerSku, self).__init__(**kwargs)
6249        self.name = kwargs.get('name', None)
6250
6251
6252class LoadBalancingRule(SubResource):
6253    """A load balancing rule for a load balancer.
6254
6255    :param id: Resource ID.
6256    :type id: str
6257    :param name: The name of the resource that is unique within a resource group. This name can be
6258     used to access the resource.
6259    :type name: str
6260    :param etag: A unique read-only string that changes whenever the resource is updated.
6261    :type etag: str
6262    :param frontend_ip_configuration: A reference to frontend IP addresses.
6263    :type frontend_ip_configuration: ~azure.mgmt.network.v2018_07_01.models.SubResource
6264    :param backend_address_pool: A reference to a pool of DIPs. Inbound traffic is randomly load
6265     balanced across IPs in the backend IPs.
6266    :type backend_address_pool: ~azure.mgmt.network.v2018_07_01.models.SubResource
6267    :param probe: The reference of the load balancer probe used by the load balancing rule.
6268    :type probe: ~azure.mgmt.network.v2018_07_01.models.SubResource
6269    :param protocol: The transport protocol for the endpoint. Possible values are 'Udp' or 'Tcp' or
6270     'All'. Possible values include: "Udp", "Tcp", "All".
6271    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.TransportProtocol
6272    :param load_distribution: The load distribution policy for this rule. Possible values are
6273     'Default', 'SourceIP', and 'SourceIPProtocol'. Possible values include: "Default", "SourceIP",
6274     "SourceIPProtocol".
6275    :type load_distribution: str or ~azure.mgmt.network.v2018_07_01.models.LoadDistribution
6276    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
6277     unique within the Load Balancer. Acceptable values are between 0 and 65534. Note that value 0
6278     enables "Any Port".
6279    :type frontend_port: int
6280    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
6281     are between 0 and 65535. Note that value 0 enables "Any Port".
6282    :type backend_port: int
6283    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
6284     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
6285     protocol is set to TCP.
6286    :type idle_timeout_in_minutes: int
6287    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
6288     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
6289     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
6290     after you create the endpoint.
6291    :type enable_floating_ip: bool
6292    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
6293     connection termination. This element is only used when the protocol is set to TCP.
6294    :type enable_tcp_reset: bool
6295    :param disable_outbound_snat: Configures SNAT for the VMs in the backend pool to use the
6296     publicIP address specified in the frontend of the load balancing rule.
6297    :type disable_outbound_snat: bool
6298    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
6299     values are: 'Updating', 'Deleting', and 'Failed'.
6300    :type provisioning_state: str
6301    """
6302
6303    _attribute_map = {
6304        'id': {'key': 'id', 'type': 'str'},
6305        'name': {'key': 'name', 'type': 'str'},
6306        'etag': {'key': 'etag', 'type': 'str'},
6307        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
6308        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
6309        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
6310        'protocol': {'key': 'properties.protocol', 'type': 'str'},
6311        'load_distribution': {'key': 'properties.loadDistribution', 'type': 'str'},
6312        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
6313        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
6314        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
6315        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
6316        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
6317        'disable_outbound_snat': {'key': 'properties.disableOutboundSnat', 'type': 'bool'},
6318        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6319    }
6320
6321    def __init__(
6322        self,
6323        **kwargs
6324    ):
6325        super(LoadBalancingRule, self).__init__(**kwargs)
6326        self.name = kwargs.get('name', None)
6327        self.etag = kwargs.get('etag', None)
6328        self.frontend_ip_configuration = kwargs.get('frontend_ip_configuration', None)
6329        self.backend_address_pool = kwargs.get('backend_address_pool', None)
6330        self.probe = kwargs.get('probe', None)
6331        self.protocol = kwargs.get('protocol', None)
6332        self.load_distribution = kwargs.get('load_distribution', None)
6333        self.frontend_port = kwargs.get('frontend_port', None)
6334        self.backend_port = kwargs.get('backend_port', None)
6335        self.idle_timeout_in_minutes = kwargs.get('idle_timeout_in_minutes', None)
6336        self.enable_floating_ip = kwargs.get('enable_floating_ip', None)
6337        self.enable_tcp_reset = kwargs.get('enable_tcp_reset', None)
6338        self.disable_outbound_snat = kwargs.get('disable_outbound_snat', None)
6339        self.provisioning_state = kwargs.get('provisioning_state', None)
6340
6341
6342class LocalNetworkGateway(Resource):
6343    """A common class for general resource information.
6344
6345    Variables are only populated by the server, and will be ignored when sending a request.
6346
6347    :param id: Resource ID.
6348    :type id: str
6349    :ivar name: Resource name.
6350    :vartype name: str
6351    :ivar type: Resource type.
6352    :vartype type: str
6353    :param location: Resource location.
6354    :type location: str
6355    :param tags: A set of tags. Resource tags.
6356    :type tags: dict[str, str]
6357    :param etag: A unique read-only string that changes whenever the resource is updated.
6358    :type etag: str
6359    :param local_network_address_space: Local network site address space.
6360    :type local_network_address_space: ~azure.mgmt.network.v2018_07_01.models.AddressSpace
6361    :param gateway_ip_address: IP address of local network gateway.
6362    :type gateway_ip_address: str
6363    :param bgp_settings: Local network gateway's BGP speaker settings.
6364    :type bgp_settings: ~azure.mgmt.network.v2018_07_01.models.BgpSettings
6365    :param resource_guid: The resource GUID property of the LocalNetworkGateway resource.
6366    :type resource_guid: str
6367    :ivar provisioning_state: The provisioning state of the LocalNetworkGateway resource. Possible
6368     values are: 'Updating', 'Deleting', and 'Failed'.
6369    :vartype provisioning_state: str
6370    """
6371
6372    _validation = {
6373        'name': {'readonly': True},
6374        'type': {'readonly': True},
6375        'provisioning_state': {'readonly': True},
6376    }
6377
6378    _attribute_map = {
6379        'id': {'key': 'id', 'type': 'str'},
6380        'name': {'key': 'name', 'type': 'str'},
6381        'type': {'key': 'type', 'type': 'str'},
6382        'location': {'key': 'location', 'type': 'str'},
6383        'tags': {'key': 'tags', 'type': '{str}'},
6384        'etag': {'key': 'etag', 'type': 'str'},
6385        'local_network_address_space': {'key': 'properties.localNetworkAddressSpace', 'type': 'AddressSpace'},
6386        'gateway_ip_address': {'key': 'properties.gatewayIpAddress', 'type': 'str'},
6387        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
6388        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6389        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6390    }
6391
6392    def __init__(
6393        self,
6394        **kwargs
6395    ):
6396        super(LocalNetworkGateway, self).__init__(**kwargs)
6397        self.etag = kwargs.get('etag', None)
6398        self.local_network_address_space = kwargs.get('local_network_address_space', None)
6399        self.gateway_ip_address = kwargs.get('gateway_ip_address', None)
6400        self.bgp_settings = kwargs.get('bgp_settings', None)
6401        self.resource_guid = kwargs.get('resource_guid', None)
6402        self.provisioning_state = None
6403
6404
6405class LocalNetworkGatewayListResult(msrest.serialization.Model):
6406    """Response for ListLocalNetworkGateways API service call.
6407
6408    Variables are only populated by the server, and will be ignored when sending a request.
6409
6410    :param value: A list of local network gateways that exists in a resource group.
6411    :type value: list[~azure.mgmt.network.v2018_07_01.models.LocalNetworkGateway]
6412    :ivar next_link: The URL to get the next set of results.
6413    :vartype next_link: str
6414    """
6415
6416    _validation = {
6417        'next_link': {'readonly': True},
6418    }
6419
6420    _attribute_map = {
6421        'value': {'key': 'value', 'type': '[LocalNetworkGateway]'},
6422        'next_link': {'key': 'nextLink', 'type': 'str'},
6423    }
6424
6425    def __init__(
6426        self,
6427        **kwargs
6428    ):
6429        super(LocalNetworkGatewayListResult, self).__init__(**kwargs)
6430        self.value = kwargs.get('value', None)
6431        self.next_link = None
6432
6433
6434class LogSpecification(msrest.serialization.Model):
6435    """Description of logging specification.
6436
6437    :param name: The name of the specification.
6438    :type name: str
6439    :param display_name: The display name of the specification.
6440    :type display_name: str
6441    :param blob_duration: Duration of the blob.
6442    :type blob_duration: str
6443    """
6444
6445    _attribute_map = {
6446        'name': {'key': 'name', 'type': 'str'},
6447        'display_name': {'key': 'displayName', 'type': 'str'},
6448        'blob_duration': {'key': 'blobDuration', 'type': 'str'},
6449    }
6450
6451    def __init__(
6452        self,
6453        **kwargs
6454    ):
6455        super(LogSpecification, self).__init__(**kwargs)
6456        self.name = kwargs.get('name', None)
6457        self.display_name = kwargs.get('display_name', None)
6458        self.blob_duration = kwargs.get('blob_duration', None)
6459
6460
6461class MatchedRule(msrest.serialization.Model):
6462    """Matched rule.
6463
6464    :param rule_name: Name of the matched network security rule.
6465    :type rule_name: str
6466    :param action: The network traffic is allowed or denied. Possible values are 'Allow' and
6467     'Deny'.
6468    :type action: str
6469    """
6470
6471    _attribute_map = {
6472        'rule_name': {'key': 'ruleName', 'type': 'str'},
6473        'action': {'key': 'action', 'type': 'str'},
6474    }
6475
6476    def __init__(
6477        self,
6478        **kwargs
6479    ):
6480        super(MatchedRule, self).__init__(**kwargs)
6481        self.rule_name = kwargs.get('rule_name', None)
6482        self.action = kwargs.get('action', None)
6483
6484
6485class MetricSpecification(msrest.serialization.Model):
6486    """Description of metrics specification.
6487
6488    :param name: The name of the metric.
6489    :type name: str
6490    :param display_name: The display name of the metric.
6491    :type display_name: str
6492    :param display_description: The description of the metric.
6493    :type display_description: str
6494    :param unit: Units the metric to be displayed in.
6495    :type unit: str
6496    :param aggregation_type: The aggregation type.
6497    :type aggregation_type: str
6498    :param availabilities: List of availability.
6499    :type availabilities: list[~azure.mgmt.network.v2018_07_01.models.Availability]
6500    :param enable_regional_mdm_account: Whether regional MDM account enabled.
6501    :type enable_regional_mdm_account: bool
6502    :param fill_gap_with_zero: Whether gaps would be filled with zeros.
6503    :type fill_gap_with_zero: bool
6504    :param metric_filter_pattern: Pattern for the filter of the metric.
6505    :type metric_filter_pattern: str
6506    :param dimensions: List of dimensions.
6507    :type dimensions: list[~azure.mgmt.network.v2018_07_01.models.Dimension]
6508    :param is_internal: Whether the metric is internal.
6509    :type is_internal: bool
6510    :param source_mdm_account: The source MDM account.
6511    :type source_mdm_account: str
6512    :param source_mdm_namespace: The source MDM namespace.
6513    :type source_mdm_namespace: str
6514    :param resource_id_dimension_name_override: The resource Id dimension name override.
6515    :type resource_id_dimension_name_override: str
6516    """
6517
6518    _attribute_map = {
6519        'name': {'key': 'name', 'type': 'str'},
6520        'display_name': {'key': 'displayName', 'type': 'str'},
6521        'display_description': {'key': 'displayDescription', 'type': 'str'},
6522        'unit': {'key': 'unit', 'type': 'str'},
6523        'aggregation_type': {'key': 'aggregationType', 'type': 'str'},
6524        'availabilities': {'key': 'availabilities', 'type': '[Availability]'},
6525        'enable_regional_mdm_account': {'key': 'enableRegionalMdmAccount', 'type': 'bool'},
6526        'fill_gap_with_zero': {'key': 'fillGapWithZero', 'type': 'bool'},
6527        'metric_filter_pattern': {'key': 'metricFilterPattern', 'type': 'str'},
6528        'dimensions': {'key': 'dimensions', 'type': '[Dimension]'},
6529        'is_internal': {'key': 'isInternal', 'type': 'bool'},
6530        'source_mdm_account': {'key': 'sourceMdmAccount', 'type': 'str'},
6531        'source_mdm_namespace': {'key': 'sourceMdmNamespace', 'type': 'str'},
6532        'resource_id_dimension_name_override': {'key': 'resourceIdDimensionNameOverride', 'type': 'str'},
6533    }
6534
6535    def __init__(
6536        self,
6537        **kwargs
6538    ):
6539        super(MetricSpecification, self).__init__(**kwargs)
6540        self.name = kwargs.get('name', None)
6541        self.display_name = kwargs.get('display_name', None)
6542        self.display_description = kwargs.get('display_description', None)
6543        self.unit = kwargs.get('unit', None)
6544        self.aggregation_type = kwargs.get('aggregation_type', None)
6545        self.availabilities = kwargs.get('availabilities', None)
6546        self.enable_regional_mdm_account = kwargs.get('enable_regional_mdm_account', None)
6547        self.fill_gap_with_zero = kwargs.get('fill_gap_with_zero', None)
6548        self.metric_filter_pattern = kwargs.get('metric_filter_pattern', None)
6549        self.dimensions = kwargs.get('dimensions', None)
6550        self.is_internal = kwargs.get('is_internal', None)
6551        self.source_mdm_account = kwargs.get('source_mdm_account', None)
6552        self.source_mdm_namespace = kwargs.get('source_mdm_namespace', None)
6553        self.resource_id_dimension_name_override = kwargs.get('resource_id_dimension_name_override', None)
6554
6555
6556class NetworkConfigurationDiagnosticParameters(msrest.serialization.Model):
6557    """Parameters to get network configuration diagnostic.
6558
6559    All required parameters must be populated in order to send to Azure.
6560
6561    :param target_resource_id: Required. The ID of the target resource to perform network
6562     configuration diagnostic. Valid options are VM, NetworkInterface, VMSS/NetworkInterface and
6563     Application Gateway.
6564    :type target_resource_id: str
6565    :param queries: Required. List of traffic queries.
6566    :type queries: list[~azure.mgmt.network.v2018_07_01.models.TrafficQuery]
6567    """
6568
6569    _validation = {
6570        'target_resource_id': {'required': True},
6571        'queries': {'required': True},
6572    }
6573
6574    _attribute_map = {
6575        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
6576        'queries': {'key': 'queries', 'type': '[TrafficQuery]'},
6577    }
6578
6579    def __init__(
6580        self,
6581        **kwargs
6582    ):
6583        super(NetworkConfigurationDiagnosticParameters, self).__init__(**kwargs)
6584        self.target_resource_id = kwargs['target_resource_id']
6585        self.queries = kwargs['queries']
6586
6587
6588class NetworkConfigurationDiagnosticResponse(msrest.serialization.Model):
6589    """Results of network configuration diagnostic on the target resource.
6590
6591    Variables are only populated by the server, and will be ignored when sending a request.
6592
6593    :ivar results: List of network configuration diagnostic results.
6594    :vartype results:
6595     list[~azure.mgmt.network.v2018_07_01.models.NetworkConfigurationDiagnosticResult]
6596    """
6597
6598    _validation = {
6599        'results': {'readonly': True},
6600    }
6601
6602    _attribute_map = {
6603        'results': {'key': 'results', 'type': '[NetworkConfigurationDiagnosticResult]'},
6604    }
6605
6606    def __init__(
6607        self,
6608        **kwargs
6609    ):
6610        super(NetworkConfigurationDiagnosticResponse, self).__init__(**kwargs)
6611        self.results = None
6612
6613
6614class NetworkConfigurationDiagnosticResult(msrest.serialization.Model):
6615    """Network configuration diagnostic result corresponded to provided traffic query.
6616
6617    :param traffic_query: Parameters to compare with network configuration.
6618    :type traffic_query: ~azure.mgmt.network.v2018_07_01.models.TrafficQuery
6619    :param network_security_group_result: Network configuration diagnostic result corresponded
6620     provided traffic query.
6621    :type network_security_group_result:
6622     ~azure.mgmt.network.v2018_07_01.models.NetworkSecurityGroupResult
6623    """
6624
6625    _attribute_map = {
6626        'traffic_query': {'key': 'trafficQuery', 'type': 'TrafficQuery'},
6627        'network_security_group_result': {'key': 'networkSecurityGroupResult', 'type': 'NetworkSecurityGroupResult'},
6628    }
6629
6630    def __init__(
6631        self,
6632        **kwargs
6633    ):
6634        super(NetworkConfigurationDiagnosticResult, self).__init__(**kwargs)
6635        self.traffic_query = kwargs.get('traffic_query', None)
6636        self.network_security_group_result = kwargs.get('network_security_group_result', None)
6637
6638
6639class NetworkInterface(Resource):
6640    """A network interface in a resource group.
6641
6642    Variables are only populated by the server, and will be ignored when sending a request.
6643
6644    :param id: Resource ID.
6645    :type id: str
6646    :ivar name: Resource name.
6647    :vartype name: str
6648    :ivar type: Resource type.
6649    :vartype type: str
6650    :param location: Resource location.
6651    :type location: str
6652    :param tags: A set of tags. Resource tags.
6653    :type tags: dict[str, str]
6654    :param etag: A unique read-only string that changes whenever the resource is updated.
6655    :type etag: str
6656    :param virtual_machine: The reference of a virtual machine.
6657    :type virtual_machine: ~azure.mgmt.network.v2018_07_01.models.SubResource
6658    :param network_security_group: The reference of the NetworkSecurityGroup resource.
6659    :type network_security_group: ~azure.mgmt.network.v2018_07_01.models.NetworkSecurityGroup
6660    :param ip_configurations: A list of IPConfigurations of the network interface.
6661    :type ip_configurations:
6662     list[~azure.mgmt.network.v2018_07_01.models.NetworkInterfaceIPConfiguration]
6663    :param dns_settings: The DNS settings in network interface.
6664    :type dns_settings: ~azure.mgmt.network.v2018_07_01.models.NetworkInterfaceDnsSettings
6665    :param mac_address: The MAC address of the network interface.
6666    :type mac_address: str
6667    :param primary: Gets whether this is a primary network interface on a virtual machine.
6668    :type primary: bool
6669    :param enable_accelerated_networking: If the network interface is accelerated networking
6670     enabled.
6671    :type enable_accelerated_networking: bool
6672    :param enable_ip_forwarding: Indicates whether IP forwarding is enabled on this network
6673     interface.
6674    :type enable_ip_forwarding: bool
6675    :param resource_guid: The resource GUID property of the network interface resource.
6676    :type resource_guid: str
6677    :param provisioning_state: The provisioning state of the public IP resource. Possible values
6678     are: 'Updating', 'Deleting', and 'Failed'.
6679    :type provisioning_state: str
6680    """
6681
6682    _validation = {
6683        'name': {'readonly': True},
6684        'type': {'readonly': True},
6685    }
6686
6687    _attribute_map = {
6688        'id': {'key': 'id', 'type': 'str'},
6689        'name': {'key': 'name', 'type': 'str'},
6690        'type': {'key': 'type', 'type': 'str'},
6691        'location': {'key': 'location', 'type': 'str'},
6692        'tags': {'key': 'tags', 'type': '{str}'},
6693        'etag': {'key': 'etag', 'type': 'str'},
6694        'virtual_machine': {'key': 'properties.virtualMachine', 'type': 'SubResource'},
6695        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
6696        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
6697        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'NetworkInterfaceDnsSettings'},
6698        'mac_address': {'key': 'properties.macAddress', 'type': 'str'},
6699        'primary': {'key': 'properties.primary', 'type': 'bool'},
6700        'enable_accelerated_networking': {'key': 'properties.enableAcceleratedNetworking', 'type': 'bool'},
6701        'enable_ip_forwarding': {'key': 'properties.enableIPForwarding', 'type': 'bool'},
6702        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6703        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6704    }
6705
6706    def __init__(
6707        self,
6708        **kwargs
6709    ):
6710        super(NetworkInterface, self).__init__(**kwargs)
6711        self.etag = kwargs.get('etag', None)
6712        self.virtual_machine = kwargs.get('virtual_machine', None)
6713        self.network_security_group = kwargs.get('network_security_group', None)
6714        self.ip_configurations = kwargs.get('ip_configurations', None)
6715        self.dns_settings = kwargs.get('dns_settings', None)
6716        self.mac_address = kwargs.get('mac_address', None)
6717        self.primary = kwargs.get('primary', None)
6718        self.enable_accelerated_networking = kwargs.get('enable_accelerated_networking', None)
6719        self.enable_ip_forwarding = kwargs.get('enable_ip_forwarding', None)
6720        self.resource_guid = kwargs.get('resource_guid', None)
6721        self.provisioning_state = kwargs.get('provisioning_state', None)
6722
6723
6724class NetworkInterfaceAssociation(msrest.serialization.Model):
6725    """Network interface and its custom security rules.
6726
6727    Variables are only populated by the server, and will be ignored when sending a request.
6728
6729    :ivar id: Network interface ID.
6730    :vartype id: str
6731    :param security_rules: Collection of custom security rules.
6732    :type security_rules: list[~azure.mgmt.network.v2018_07_01.models.SecurityRule]
6733    """
6734
6735    _validation = {
6736        'id': {'readonly': True},
6737    }
6738
6739    _attribute_map = {
6740        'id': {'key': 'id', 'type': 'str'},
6741        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
6742    }
6743
6744    def __init__(
6745        self,
6746        **kwargs
6747    ):
6748        super(NetworkInterfaceAssociation, self).__init__(**kwargs)
6749        self.id = None
6750        self.security_rules = kwargs.get('security_rules', None)
6751
6752
6753class NetworkInterfaceDnsSettings(msrest.serialization.Model):
6754    """DNS settings of a network interface.
6755
6756    :param dns_servers: List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure
6757     provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it must be
6758     the only value in dnsServers collection.
6759    :type dns_servers: list[str]
6760    :param applied_dns_servers: If the VM that uses this NIC is part of an Availability Set, then
6761     this list will have the union of all DNS servers from all NICs that are part of the
6762     Availability Set. This property is what is configured on each of those VMs.
6763    :type applied_dns_servers: list[str]
6764    :param internal_dns_name_label: Relative DNS name for this NIC used for internal communications
6765     between VMs in the same virtual network.
6766    :type internal_dns_name_label: str
6767    :param internal_fqdn: Fully qualified DNS name supporting internal communications between VMs
6768     in the same virtual network.
6769    :type internal_fqdn: str
6770    :param internal_domain_name_suffix: Even if internalDnsNameLabel is not specified, a DNS entry
6771     is created for the primary NIC of the VM. This DNS name can be constructed by concatenating the
6772     VM name with the value of internalDomainNameSuffix.
6773    :type internal_domain_name_suffix: str
6774    """
6775
6776    _attribute_map = {
6777        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
6778        'applied_dns_servers': {'key': 'appliedDnsServers', 'type': '[str]'},
6779        'internal_dns_name_label': {'key': 'internalDnsNameLabel', 'type': 'str'},
6780        'internal_fqdn': {'key': 'internalFqdn', 'type': 'str'},
6781        'internal_domain_name_suffix': {'key': 'internalDomainNameSuffix', 'type': 'str'},
6782    }
6783
6784    def __init__(
6785        self,
6786        **kwargs
6787    ):
6788        super(NetworkInterfaceDnsSettings, self).__init__(**kwargs)
6789        self.dns_servers = kwargs.get('dns_servers', None)
6790        self.applied_dns_servers = kwargs.get('applied_dns_servers', None)
6791        self.internal_dns_name_label = kwargs.get('internal_dns_name_label', None)
6792        self.internal_fqdn = kwargs.get('internal_fqdn', None)
6793        self.internal_domain_name_suffix = kwargs.get('internal_domain_name_suffix', None)
6794
6795
6796class NetworkInterfaceIPConfiguration(SubResource):
6797    """IPConfiguration in a network interface.
6798
6799    :param id: Resource ID.
6800    :type id: str
6801    :param name: The name of the resource that is unique within a resource group. This name can be
6802     used to access the resource.
6803    :type name: str
6804    :param etag: A unique read-only string that changes whenever the resource is updated.
6805    :type etag: str
6806    :param application_gateway_backend_address_pools: The reference of
6807     ApplicationGatewayBackendAddressPool resource.
6808    :type application_gateway_backend_address_pools:
6809     list[~azure.mgmt.network.v2018_07_01.models.ApplicationGatewayBackendAddressPool]
6810    :param load_balancer_backend_address_pools: The reference of LoadBalancerBackendAddressPool
6811     resource.
6812    :type load_balancer_backend_address_pools:
6813     list[~azure.mgmt.network.v2018_07_01.models.BackendAddressPool]
6814    :param load_balancer_inbound_nat_rules: A list of references of LoadBalancerInboundNatRules.
6815    :type load_balancer_inbound_nat_rules:
6816     list[~azure.mgmt.network.v2018_07_01.models.InboundNatRule]
6817    :param private_ip_address: Private IP address of the IP configuration.
6818    :type private_ip_address: str
6819    :param private_ip_allocation_method: Defines how a private IP address is assigned. Possible
6820     values are: 'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
6821    :type private_ip_allocation_method: str or
6822     ~azure.mgmt.network.v2018_07_01.models.IPAllocationMethod
6823    :param private_ip_address_version: Available from Api-Version 2016-03-30 onwards, it represents
6824     whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4.  Possible
6825     values are: 'IPv4' and 'IPv6'. Possible values include: "IPv4", "IPv6".
6826    :type private_ip_address_version: str or ~azure.mgmt.network.v2018_07_01.models.IPVersion
6827    :param subnet: Subnet bound to the IP configuration.
6828    :type subnet: ~azure.mgmt.network.v2018_07_01.models.Subnet
6829    :param primary: Gets whether this is a primary customer address on the network interface.
6830    :type primary: bool
6831    :param public_ip_address: Public IP address bound to the IP configuration.
6832    :type public_ip_address: ~azure.mgmt.network.v2018_07_01.models.PublicIPAddress
6833    :param application_security_groups: Application security groups in which the IP configuration
6834     is included.
6835    :type application_security_groups:
6836     list[~azure.mgmt.network.v2018_07_01.models.ApplicationSecurityGroup]
6837    :param provisioning_state: The provisioning state of the network interface IP configuration.
6838     Possible values are: 'Updating', 'Deleting', and 'Failed'.
6839    :type provisioning_state: str
6840    """
6841
6842    _attribute_map = {
6843        'id': {'key': 'id', 'type': 'str'},
6844        'name': {'key': 'name', 'type': 'str'},
6845        'etag': {'key': 'etag', 'type': 'str'},
6846        'application_gateway_backend_address_pools': {'key': 'properties.applicationGatewayBackendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
6847        'load_balancer_backend_address_pools': {'key': 'properties.loadBalancerBackendAddressPools', 'type': '[BackendAddressPool]'},
6848        'load_balancer_inbound_nat_rules': {'key': 'properties.loadBalancerInboundNatRules', 'type': '[InboundNatRule]'},
6849        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
6850        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
6851        'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'},
6852        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
6853        'primary': {'key': 'properties.primary', 'type': 'bool'},
6854        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
6855        'application_security_groups': {'key': 'properties.applicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
6856        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6857    }
6858
6859    def __init__(
6860        self,
6861        **kwargs
6862    ):
6863        super(NetworkInterfaceIPConfiguration, self).__init__(**kwargs)
6864        self.name = kwargs.get('name', None)
6865        self.etag = kwargs.get('etag', None)
6866        self.application_gateway_backend_address_pools = kwargs.get('application_gateway_backend_address_pools', None)
6867        self.load_balancer_backend_address_pools = kwargs.get('load_balancer_backend_address_pools', None)
6868        self.load_balancer_inbound_nat_rules = kwargs.get('load_balancer_inbound_nat_rules', None)
6869        self.private_ip_address = kwargs.get('private_ip_address', None)
6870        self.private_ip_allocation_method = kwargs.get('private_ip_allocation_method', None)
6871        self.private_ip_address_version = kwargs.get('private_ip_address_version', None)
6872        self.subnet = kwargs.get('subnet', None)
6873        self.primary = kwargs.get('primary', None)
6874        self.public_ip_address = kwargs.get('public_ip_address', None)
6875        self.application_security_groups = kwargs.get('application_security_groups', None)
6876        self.provisioning_state = kwargs.get('provisioning_state', None)
6877
6878
6879class NetworkInterfaceIPConfigurationListResult(msrest.serialization.Model):
6880    """Response for list ip configurations API service call.
6881
6882    Variables are only populated by the server, and will be ignored when sending a request.
6883
6884    :param value: A list of ip configurations.
6885    :type value: list[~azure.mgmt.network.v2018_07_01.models.NetworkInterfaceIPConfiguration]
6886    :ivar next_link: The URL to get the next set of results.
6887    :vartype next_link: str
6888    """
6889
6890    _validation = {
6891        'next_link': {'readonly': True},
6892    }
6893
6894    _attribute_map = {
6895        'value': {'key': 'value', 'type': '[NetworkInterfaceIPConfiguration]'},
6896        'next_link': {'key': 'nextLink', 'type': 'str'},
6897    }
6898
6899    def __init__(
6900        self,
6901        **kwargs
6902    ):
6903        super(NetworkInterfaceIPConfigurationListResult, self).__init__(**kwargs)
6904        self.value = kwargs.get('value', None)
6905        self.next_link = None
6906
6907
6908class NetworkInterfaceListResult(msrest.serialization.Model):
6909    """Response for the ListNetworkInterface API service call.
6910
6911    Variables are only populated by the server, and will be ignored when sending a request.
6912
6913    :param value: A list of network interfaces in a resource group.
6914    :type value: list[~azure.mgmt.network.v2018_07_01.models.NetworkInterface]
6915    :ivar next_link: The URL to get the next set of results.
6916    :vartype next_link: str
6917    """
6918
6919    _validation = {
6920        'next_link': {'readonly': True},
6921    }
6922
6923    _attribute_map = {
6924        'value': {'key': 'value', 'type': '[NetworkInterface]'},
6925        'next_link': {'key': 'nextLink', 'type': 'str'},
6926    }
6927
6928    def __init__(
6929        self,
6930        **kwargs
6931    ):
6932        super(NetworkInterfaceListResult, self).__init__(**kwargs)
6933        self.value = kwargs.get('value', None)
6934        self.next_link = None
6935
6936
6937class NetworkInterfaceLoadBalancerListResult(msrest.serialization.Model):
6938    """Response for list ip configurations API service call.
6939
6940    Variables are only populated by the server, and will be ignored when sending a request.
6941
6942    :param value: A list of load balancers.
6943    :type value: list[~azure.mgmt.network.v2018_07_01.models.LoadBalancer]
6944    :ivar next_link: The URL to get the next set of results.
6945    :vartype next_link: str
6946    """
6947
6948    _validation = {
6949        'next_link': {'readonly': True},
6950    }
6951
6952    _attribute_map = {
6953        'value': {'key': 'value', 'type': '[LoadBalancer]'},
6954        'next_link': {'key': 'nextLink', 'type': 'str'},
6955    }
6956
6957    def __init__(
6958        self,
6959        **kwargs
6960    ):
6961        super(NetworkInterfaceLoadBalancerListResult, self).__init__(**kwargs)
6962        self.value = kwargs.get('value', None)
6963        self.next_link = None
6964
6965
6966class NetworkSecurityGroup(Resource):
6967    """NetworkSecurityGroup resource.
6968
6969    Variables are only populated by the server, and will be ignored when sending a request.
6970
6971    :param id: Resource ID.
6972    :type id: str
6973    :ivar name: Resource name.
6974    :vartype name: str
6975    :ivar type: Resource type.
6976    :vartype type: str
6977    :param location: Resource location.
6978    :type location: str
6979    :param tags: A set of tags. Resource tags.
6980    :type tags: dict[str, str]
6981    :param etag: A unique read-only string that changes whenever the resource is updated.
6982    :type etag: str
6983    :param security_rules: A collection of security rules of the network security group.
6984    :type security_rules: list[~azure.mgmt.network.v2018_07_01.models.SecurityRule]
6985    :param default_security_rules: The default security rules of network security group.
6986    :type default_security_rules: list[~azure.mgmt.network.v2018_07_01.models.SecurityRule]
6987    :ivar network_interfaces: A collection of references to network interfaces.
6988    :vartype network_interfaces: list[~azure.mgmt.network.v2018_07_01.models.NetworkInterface]
6989    :ivar subnets: A collection of references to subnets.
6990    :vartype subnets: list[~azure.mgmt.network.v2018_07_01.models.Subnet]
6991    :param resource_guid: The resource GUID property of the network security group resource.
6992    :type resource_guid: str
6993    :param provisioning_state: The provisioning state of the public IP resource. Possible values
6994     are: 'Updating', 'Deleting', and 'Failed'.
6995    :type provisioning_state: str
6996    """
6997
6998    _validation = {
6999        'name': {'readonly': True},
7000        'type': {'readonly': True},
7001        'network_interfaces': {'readonly': True},
7002        'subnets': {'readonly': True},
7003    }
7004
7005    _attribute_map = {
7006        'id': {'key': 'id', 'type': 'str'},
7007        'name': {'key': 'name', 'type': 'str'},
7008        'type': {'key': 'type', 'type': 'str'},
7009        'location': {'key': 'location', 'type': 'str'},
7010        'tags': {'key': 'tags', 'type': '{str}'},
7011        'etag': {'key': 'etag', 'type': 'str'},
7012        'security_rules': {'key': 'properties.securityRules', 'type': '[SecurityRule]'},
7013        'default_security_rules': {'key': 'properties.defaultSecurityRules', 'type': '[SecurityRule]'},
7014        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
7015        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
7016        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
7017        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7018    }
7019
7020    def __init__(
7021        self,
7022        **kwargs
7023    ):
7024        super(NetworkSecurityGroup, self).__init__(**kwargs)
7025        self.etag = kwargs.get('etag', None)
7026        self.security_rules = kwargs.get('security_rules', None)
7027        self.default_security_rules = kwargs.get('default_security_rules', None)
7028        self.network_interfaces = None
7029        self.subnets = None
7030        self.resource_guid = kwargs.get('resource_guid', None)
7031        self.provisioning_state = kwargs.get('provisioning_state', None)
7032
7033
7034class NetworkSecurityGroupListResult(msrest.serialization.Model):
7035    """Response for ListNetworkSecurityGroups API service call.
7036
7037    :param value: A list of NetworkSecurityGroup resources.
7038    :type value: list[~azure.mgmt.network.v2018_07_01.models.NetworkSecurityGroup]
7039    :param next_link: The URL to get the next set of results.
7040    :type next_link: str
7041    """
7042
7043    _attribute_map = {
7044        'value': {'key': 'value', 'type': '[NetworkSecurityGroup]'},
7045        'next_link': {'key': 'nextLink', 'type': 'str'},
7046    }
7047
7048    def __init__(
7049        self,
7050        **kwargs
7051    ):
7052        super(NetworkSecurityGroupListResult, self).__init__(**kwargs)
7053        self.value = kwargs.get('value', None)
7054        self.next_link = kwargs.get('next_link', None)
7055
7056
7057class NetworkSecurityGroupResult(msrest.serialization.Model):
7058    """Network configuration diagnostic result corresponded provided traffic query.
7059
7060    Variables are only populated by the server, and will be ignored when sending a request.
7061
7062    :param security_rule_access_result: The network traffic is allowed or denied. Possible values
7063     are 'Allow' and 'Deny'. Possible values include: "Allow", "Deny".
7064    :type security_rule_access_result: str or
7065     ~azure.mgmt.network.v2018_07_01.models.SecurityRuleAccess
7066    :ivar evaluated_network_security_groups: List of results network security groups diagnostic.
7067    :vartype evaluated_network_security_groups:
7068     list[~azure.mgmt.network.v2018_07_01.models.EvaluatedNetworkSecurityGroup]
7069    """
7070
7071    _validation = {
7072        'evaluated_network_security_groups': {'readonly': True},
7073    }
7074
7075    _attribute_map = {
7076        'security_rule_access_result': {'key': 'securityRuleAccessResult', 'type': 'str'},
7077        'evaluated_network_security_groups': {'key': 'evaluatedNetworkSecurityGroups', 'type': '[EvaluatedNetworkSecurityGroup]'},
7078    }
7079
7080    def __init__(
7081        self,
7082        **kwargs
7083    ):
7084        super(NetworkSecurityGroupResult, self).__init__(**kwargs)
7085        self.security_rule_access_result = kwargs.get('security_rule_access_result', None)
7086        self.evaluated_network_security_groups = None
7087
7088
7089class NetworkSecurityRulesEvaluationResult(msrest.serialization.Model):
7090    """Network security rules evaluation result.
7091
7092    :param name: Name of the network security rule.
7093    :type name: str
7094    :param protocol_matched: Value indicating whether protocol is matched.
7095    :type protocol_matched: bool
7096    :param source_matched: Value indicating whether source is matched.
7097    :type source_matched: bool
7098    :param source_port_matched: Value indicating whether source port is matched.
7099    :type source_port_matched: bool
7100    :param destination_matched: Value indicating whether destination is matched.
7101    :type destination_matched: bool
7102    :param destination_port_matched: Value indicating whether destination port is matched.
7103    :type destination_port_matched: bool
7104    """
7105
7106    _attribute_map = {
7107        'name': {'key': 'name', 'type': 'str'},
7108        'protocol_matched': {'key': 'protocolMatched', 'type': 'bool'},
7109        'source_matched': {'key': 'sourceMatched', 'type': 'bool'},
7110        'source_port_matched': {'key': 'sourcePortMatched', 'type': 'bool'},
7111        'destination_matched': {'key': 'destinationMatched', 'type': 'bool'},
7112        'destination_port_matched': {'key': 'destinationPortMatched', 'type': 'bool'},
7113    }
7114
7115    def __init__(
7116        self,
7117        **kwargs
7118    ):
7119        super(NetworkSecurityRulesEvaluationResult, self).__init__(**kwargs)
7120        self.name = kwargs.get('name', None)
7121        self.protocol_matched = kwargs.get('protocol_matched', None)
7122        self.source_matched = kwargs.get('source_matched', None)
7123        self.source_port_matched = kwargs.get('source_port_matched', None)
7124        self.destination_matched = kwargs.get('destination_matched', None)
7125        self.destination_port_matched = kwargs.get('destination_port_matched', None)
7126
7127
7128class NetworkWatcher(Resource):
7129    """Network watcher in a resource group.
7130
7131    Variables are only populated by the server, and will be ignored when sending a request.
7132
7133    :param id: Resource ID.
7134    :type id: str
7135    :ivar name: Resource name.
7136    :vartype name: str
7137    :ivar type: Resource type.
7138    :vartype type: str
7139    :param location: Resource location.
7140    :type location: str
7141    :param tags: A set of tags. Resource tags.
7142    :type tags: dict[str, str]
7143    :param etag: A unique read-only string that changes whenever the resource is updated.
7144    :type etag: str
7145    :ivar provisioning_state: The provisioning state of the resource. Possible values include:
7146     "Succeeded", "Updating", "Deleting", "Failed".
7147    :vartype provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
7148    """
7149
7150    _validation = {
7151        'name': {'readonly': True},
7152        'type': {'readonly': True},
7153        'provisioning_state': {'readonly': True},
7154    }
7155
7156    _attribute_map = {
7157        'id': {'key': 'id', 'type': 'str'},
7158        'name': {'key': 'name', 'type': 'str'},
7159        'type': {'key': 'type', 'type': 'str'},
7160        'location': {'key': 'location', 'type': 'str'},
7161        'tags': {'key': 'tags', 'type': '{str}'},
7162        'etag': {'key': 'etag', 'type': 'str'},
7163        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7164    }
7165
7166    def __init__(
7167        self,
7168        **kwargs
7169    ):
7170        super(NetworkWatcher, self).__init__(**kwargs)
7171        self.etag = kwargs.get('etag', None)
7172        self.provisioning_state = None
7173
7174
7175class NetworkWatcherListResult(msrest.serialization.Model):
7176    """List of network watcher resources.
7177
7178    :param value:
7179    :type value: list[~azure.mgmt.network.v2018_07_01.models.NetworkWatcher]
7180    """
7181
7182    _attribute_map = {
7183        'value': {'key': 'value', 'type': '[NetworkWatcher]'},
7184    }
7185
7186    def __init__(
7187        self,
7188        **kwargs
7189    ):
7190        super(NetworkWatcherListResult, self).__init__(**kwargs)
7191        self.value = kwargs.get('value', None)
7192
7193
7194class NextHopParameters(msrest.serialization.Model):
7195    """Parameters that define the source and destination endpoint.
7196
7197    All required parameters must be populated in order to send to Azure.
7198
7199    :param target_resource_id: Required. The resource identifier of the target resource against
7200     which the action is to be performed.
7201    :type target_resource_id: str
7202    :param source_ip_address: Required. The source IP address.
7203    :type source_ip_address: str
7204    :param destination_ip_address: Required. The destination IP address.
7205    :type destination_ip_address: str
7206    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
7207     enabled on any of the nics, then this parameter must be specified. Otherwise optional).
7208    :type target_nic_resource_id: str
7209    """
7210
7211    _validation = {
7212        'target_resource_id': {'required': True},
7213        'source_ip_address': {'required': True},
7214        'destination_ip_address': {'required': True},
7215    }
7216
7217    _attribute_map = {
7218        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
7219        'source_ip_address': {'key': 'sourceIPAddress', 'type': 'str'},
7220        'destination_ip_address': {'key': 'destinationIPAddress', 'type': 'str'},
7221        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
7222    }
7223
7224    def __init__(
7225        self,
7226        **kwargs
7227    ):
7228        super(NextHopParameters, self).__init__(**kwargs)
7229        self.target_resource_id = kwargs['target_resource_id']
7230        self.source_ip_address = kwargs['source_ip_address']
7231        self.destination_ip_address = kwargs['destination_ip_address']
7232        self.target_nic_resource_id = kwargs.get('target_nic_resource_id', None)
7233
7234
7235class NextHopResult(msrest.serialization.Model):
7236    """The information about next hop from the specified VM.
7237
7238    :param next_hop_type: Next hop type. Possible values include: "Internet", "VirtualAppliance",
7239     "VirtualNetworkGateway", "VnetLocal", "HyperNetGateway", "None".
7240    :type next_hop_type: str or ~azure.mgmt.network.v2018_07_01.models.NextHopType
7241    :param next_hop_ip_address: Next hop IP Address.
7242    :type next_hop_ip_address: str
7243    :param route_table_id: The resource identifier for the route table associated with the route
7244     being returned. If the route being returned does not correspond to any user created routes then
7245     this field will be the string 'System Route'.
7246    :type route_table_id: str
7247    """
7248
7249    _attribute_map = {
7250        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
7251        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'},
7252        'route_table_id': {'key': 'routeTableId', 'type': 'str'},
7253    }
7254
7255    def __init__(
7256        self,
7257        **kwargs
7258    ):
7259        super(NextHopResult, self).__init__(**kwargs)
7260        self.next_hop_type = kwargs.get('next_hop_type', None)
7261        self.next_hop_ip_address = kwargs.get('next_hop_ip_address', None)
7262        self.route_table_id = kwargs.get('route_table_id', None)
7263
7264
7265class Operation(msrest.serialization.Model):
7266    """Network REST API operation definition.
7267
7268    :param name: Operation name: {provider}/{resource}/{operation}.
7269    :type name: str
7270    :param display: Display metadata associated with the operation.
7271    :type display: ~azure.mgmt.network.v2018_07_01.models.OperationDisplay
7272    :param origin: Origin of the operation.
7273    :type origin: str
7274    :param service_specification: Specification of the service.
7275    :type service_specification:
7276     ~azure.mgmt.network.v2018_07_01.models.OperationPropertiesFormatServiceSpecification
7277    """
7278
7279    _attribute_map = {
7280        'name': {'key': 'name', 'type': 'str'},
7281        'display': {'key': 'display', 'type': 'OperationDisplay'},
7282        'origin': {'key': 'origin', 'type': 'str'},
7283        'service_specification': {'key': 'properties.serviceSpecification', 'type': 'OperationPropertiesFormatServiceSpecification'},
7284    }
7285
7286    def __init__(
7287        self,
7288        **kwargs
7289    ):
7290        super(Operation, self).__init__(**kwargs)
7291        self.name = kwargs.get('name', None)
7292        self.display = kwargs.get('display', None)
7293        self.origin = kwargs.get('origin', None)
7294        self.service_specification = kwargs.get('service_specification', None)
7295
7296
7297class OperationDisplay(msrest.serialization.Model):
7298    """Display metadata associated with the operation.
7299
7300    :param provider: Service provider: Microsoft Network.
7301    :type provider: str
7302    :param resource: Resource on which the operation is performed.
7303    :type resource: str
7304    :param operation: Type of the operation: get, read, delete, etc.
7305    :type operation: str
7306    :param description: Description of the operation.
7307    :type description: str
7308    """
7309
7310    _attribute_map = {
7311        'provider': {'key': 'provider', 'type': 'str'},
7312        'resource': {'key': 'resource', 'type': 'str'},
7313        'operation': {'key': 'operation', 'type': 'str'},
7314        'description': {'key': 'description', 'type': 'str'},
7315    }
7316
7317    def __init__(
7318        self,
7319        **kwargs
7320    ):
7321        super(OperationDisplay, self).__init__(**kwargs)
7322        self.provider = kwargs.get('provider', None)
7323        self.resource = kwargs.get('resource', None)
7324        self.operation = kwargs.get('operation', None)
7325        self.description = kwargs.get('description', None)
7326
7327
7328class OperationListResult(msrest.serialization.Model):
7329    """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.
7330
7331    :param value: List of Network operations supported by the Network resource provider.
7332    :type value: list[~azure.mgmt.network.v2018_07_01.models.Operation]
7333    :param next_link: URL to get the next set of operation list results if there are any.
7334    :type next_link: str
7335    """
7336
7337    _attribute_map = {
7338        'value': {'key': 'value', 'type': '[Operation]'},
7339        'next_link': {'key': 'nextLink', 'type': 'str'},
7340    }
7341
7342    def __init__(
7343        self,
7344        **kwargs
7345    ):
7346        super(OperationListResult, self).__init__(**kwargs)
7347        self.value = kwargs.get('value', None)
7348        self.next_link = kwargs.get('next_link', None)
7349
7350
7351class OperationPropertiesFormatServiceSpecification(msrest.serialization.Model):
7352    """Specification of the service.
7353
7354    :param metric_specifications: Operation service specification.
7355    :type metric_specifications: list[~azure.mgmt.network.v2018_07_01.models.MetricSpecification]
7356    :param log_specifications: Operation log specification.
7357    :type log_specifications: list[~azure.mgmt.network.v2018_07_01.models.LogSpecification]
7358    """
7359
7360    _attribute_map = {
7361        'metric_specifications': {'key': 'metricSpecifications', 'type': '[MetricSpecification]'},
7362        'log_specifications': {'key': 'logSpecifications', 'type': '[LogSpecification]'},
7363    }
7364
7365    def __init__(
7366        self,
7367        **kwargs
7368    ):
7369        super(OperationPropertiesFormatServiceSpecification, self).__init__(**kwargs)
7370        self.metric_specifications = kwargs.get('metric_specifications', None)
7371        self.log_specifications = kwargs.get('log_specifications', None)
7372
7373
7374class OutboundRule(SubResource):
7375    """Outbound rule of the load balancer.
7376
7377    :param id: Resource ID.
7378    :type id: str
7379    :param name: The name of the resource that is unique within a resource group. This name can be
7380     used to access the resource.
7381    :type name: str
7382    :param etag: A unique read-only string that changes whenever the resource is updated.
7383    :type etag: str
7384    :param allocated_outbound_ports: The number of outbound ports to be used for NAT.
7385    :type allocated_outbound_ports: int
7386    :param frontend_ip_configurations: The Frontend IP addresses of the load balancer.
7387    :type frontend_ip_configurations: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
7388    :param backend_address_pool: A reference to a pool of DIPs. Outbound traffic is randomly load
7389     balanced across IPs in the backend IPs.
7390    :type backend_address_pool: ~azure.mgmt.network.v2018_07_01.models.SubResource
7391    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
7392     values are: 'Updating', 'Deleting', and 'Failed'.
7393    :type provisioning_state: str
7394    :param protocol: Protocol - TCP, UDP or All. Possible values include: "Tcp", "Udp", "All".
7395    :type protocol: str or
7396     ~azure.mgmt.network.v2018_07_01.models.OutboundRulePropertiesFormatProtocol
7397    :param enable_tcp_reset: Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected
7398     connection termination. This element is only used when the protocol is set to TCP.
7399    :type enable_tcp_reset: bool
7400    :param idle_timeout_in_minutes: The timeout for the TCP idle connection.
7401    :type idle_timeout_in_minutes: int
7402    """
7403
7404    _attribute_map = {
7405        'id': {'key': 'id', 'type': 'str'},
7406        'name': {'key': 'name', 'type': 'str'},
7407        'etag': {'key': 'etag', 'type': 'str'},
7408        'allocated_outbound_ports': {'key': 'properties.allocatedOutboundPorts', 'type': 'int'},
7409        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[SubResource]'},
7410        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
7411        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7412        'protocol': {'key': 'properties.protocol', 'type': 'str'},
7413        'enable_tcp_reset': {'key': 'properties.enableTcpReset', 'type': 'bool'},
7414        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
7415    }
7416
7417    def __init__(
7418        self,
7419        **kwargs
7420    ):
7421        super(OutboundRule, self).__init__(**kwargs)
7422        self.name = kwargs.get('name', None)
7423        self.etag = kwargs.get('etag', None)
7424        self.allocated_outbound_ports = kwargs.get('allocated_outbound_ports', None)
7425        self.frontend_ip_configurations = kwargs.get('frontend_ip_configurations', None)
7426        self.backend_address_pool = kwargs.get('backend_address_pool', None)
7427        self.provisioning_state = kwargs.get('provisioning_state', None)
7428        self.protocol = kwargs.get('protocol', None)
7429        self.enable_tcp_reset = kwargs.get('enable_tcp_reset', None)
7430        self.idle_timeout_in_minutes = kwargs.get('idle_timeout_in_minutes', None)
7431
7432
7433class PacketCapture(msrest.serialization.Model):
7434    """Parameters that define the create packet capture operation.
7435
7436    All required parameters must be populated in order to send to Azure.
7437
7438    :param target: Required. The ID of the targeted resource, only VM is currently supported.
7439    :type target: str
7440    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
7441     are truncated.
7442    :type bytes_to_capture_per_packet: int
7443    :param total_bytes_per_session: Maximum size of the capture output.
7444    :type total_bytes_per_session: int
7445    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
7446    :type time_limit_in_seconds: int
7447    :param storage_location: Required. Describes the storage location for a packet capture session.
7448    :type storage_location: ~azure.mgmt.network.v2018_07_01.models.PacketCaptureStorageLocation
7449    :param filters:
7450    :type filters: list[~azure.mgmt.network.v2018_07_01.models.PacketCaptureFilter]
7451    """
7452
7453    _validation = {
7454        'target': {'required': True},
7455        'storage_location': {'required': True},
7456    }
7457
7458    _attribute_map = {
7459        'target': {'key': 'properties.target', 'type': 'str'},
7460        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
7461        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
7462        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
7463        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
7464        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
7465    }
7466
7467    def __init__(
7468        self,
7469        **kwargs
7470    ):
7471        super(PacketCapture, self).__init__(**kwargs)
7472        self.target = kwargs['target']
7473        self.bytes_to_capture_per_packet = kwargs.get('bytes_to_capture_per_packet', 0)
7474        self.total_bytes_per_session = kwargs.get('total_bytes_per_session', 1073741824)
7475        self.time_limit_in_seconds = kwargs.get('time_limit_in_seconds', 18000)
7476        self.storage_location = kwargs['storage_location']
7477        self.filters = kwargs.get('filters', None)
7478
7479
7480class PacketCaptureFilter(msrest.serialization.Model):
7481    """Filter that is applied to packet capture request. Multiple filters can be applied.
7482
7483    :param protocol: Protocol to be filtered on. Possible values include: "TCP", "UDP", "Any".
7484     Default value: "Any".
7485    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.PcProtocol
7486    :param local_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
7487     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple entries.
7488     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
7489     supported. Default = null.
7490    :type local_ip_address: str
7491    :param remote_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
7492     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple entries.
7493     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
7494     supported. Default = null.
7495    :type remote_ip_address: str
7496    :param local_port: Local port to be filtered on. Notation: "80" for single port entry."80-85"
7497     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
7498     ranges with multiple entries not currently supported. Default = null.
7499    :type local_port: str
7500    :param remote_port: Remote port to be filtered on. Notation: "80" for single port entry."80-85"
7501     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
7502     ranges with multiple entries not currently supported. Default = null.
7503    :type remote_port: str
7504    """
7505
7506    _attribute_map = {
7507        'protocol': {'key': 'protocol', 'type': 'str'},
7508        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
7509        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
7510        'local_port': {'key': 'localPort', 'type': 'str'},
7511        'remote_port': {'key': 'remotePort', 'type': 'str'},
7512    }
7513
7514    def __init__(
7515        self,
7516        **kwargs
7517    ):
7518        super(PacketCaptureFilter, self).__init__(**kwargs)
7519        self.protocol = kwargs.get('protocol', "Any")
7520        self.local_ip_address = kwargs.get('local_ip_address', None)
7521        self.remote_ip_address = kwargs.get('remote_ip_address', None)
7522        self.local_port = kwargs.get('local_port', None)
7523        self.remote_port = kwargs.get('remote_port', None)
7524
7525
7526class PacketCaptureListResult(msrest.serialization.Model):
7527    """List of packet capture sessions.
7528
7529    :param value: Information about packet capture sessions.
7530    :type value: list[~azure.mgmt.network.v2018_07_01.models.PacketCaptureResult]
7531    """
7532
7533    _attribute_map = {
7534        'value': {'key': 'value', 'type': '[PacketCaptureResult]'},
7535    }
7536
7537    def __init__(
7538        self,
7539        **kwargs
7540    ):
7541        super(PacketCaptureListResult, self).__init__(**kwargs)
7542        self.value = kwargs.get('value', None)
7543
7544
7545class PacketCaptureParameters(msrest.serialization.Model):
7546    """Parameters that define the create packet capture operation.
7547
7548    All required parameters must be populated in order to send to Azure.
7549
7550    :param target: Required. The ID of the targeted resource, only VM is currently supported.
7551    :type target: str
7552    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
7553     are truncated.
7554    :type bytes_to_capture_per_packet: int
7555    :param total_bytes_per_session: Maximum size of the capture output.
7556    :type total_bytes_per_session: int
7557    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
7558    :type time_limit_in_seconds: int
7559    :param storage_location: Required. Describes the storage location for a packet capture session.
7560    :type storage_location: ~azure.mgmt.network.v2018_07_01.models.PacketCaptureStorageLocation
7561    :param filters:
7562    :type filters: list[~azure.mgmt.network.v2018_07_01.models.PacketCaptureFilter]
7563    """
7564
7565    _validation = {
7566        'target': {'required': True},
7567        'storage_location': {'required': True},
7568    }
7569
7570    _attribute_map = {
7571        'target': {'key': 'target', 'type': 'str'},
7572        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
7573        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
7574        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
7575        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
7576        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
7577    }
7578
7579    def __init__(
7580        self,
7581        **kwargs
7582    ):
7583        super(PacketCaptureParameters, self).__init__(**kwargs)
7584        self.target = kwargs['target']
7585        self.bytes_to_capture_per_packet = kwargs.get('bytes_to_capture_per_packet', 0)
7586        self.total_bytes_per_session = kwargs.get('total_bytes_per_session', 1073741824)
7587        self.time_limit_in_seconds = kwargs.get('time_limit_in_seconds', 18000)
7588        self.storage_location = kwargs['storage_location']
7589        self.filters = kwargs.get('filters', None)
7590
7591
7592class PacketCaptureQueryStatusResult(msrest.serialization.Model):
7593    """Status of packet capture session.
7594
7595    :param name: The name of the packet capture resource.
7596    :type name: str
7597    :param id: The ID of the packet capture resource.
7598    :type id: str
7599    :param capture_start_time: The start time of the packet capture session.
7600    :type capture_start_time: ~datetime.datetime
7601    :param packet_capture_status: The status of the packet capture session. Possible values
7602     include: "NotStarted", "Running", "Stopped", "Error", "Unknown".
7603    :type packet_capture_status: str or ~azure.mgmt.network.v2018_07_01.models.PcStatus
7604    :param stop_reason: The reason the current packet capture session was stopped.
7605    :type stop_reason: str
7606    :param packet_capture_error: List of errors of packet capture session.
7607    :type packet_capture_error: list[str or ~azure.mgmt.network.v2018_07_01.models.PcError]
7608    """
7609
7610    _attribute_map = {
7611        'name': {'key': 'name', 'type': 'str'},
7612        'id': {'key': 'id', 'type': 'str'},
7613        'capture_start_time': {'key': 'captureStartTime', 'type': 'iso-8601'},
7614        'packet_capture_status': {'key': 'packetCaptureStatus', 'type': 'str'},
7615        'stop_reason': {'key': 'stopReason', 'type': 'str'},
7616        'packet_capture_error': {'key': 'packetCaptureError', 'type': '[str]'},
7617    }
7618
7619    def __init__(
7620        self,
7621        **kwargs
7622    ):
7623        super(PacketCaptureQueryStatusResult, self).__init__(**kwargs)
7624        self.name = kwargs.get('name', None)
7625        self.id = kwargs.get('id', None)
7626        self.capture_start_time = kwargs.get('capture_start_time', None)
7627        self.packet_capture_status = kwargs.get('packet_capture_status', None)
7628        self.stop_reason = kwargs.get('stop_reason', None)
7629        self.packet_capture_error = kwargs.get('packet_capture_error', None)
7630
7631
7632class PacketCaptureResult(msrest.serialization.Model):
7633    """Information about packet capture session.
7634
7635    Variables are only populated by the server, and will be ignored when sending a request.
7636
7637    :ivar name: Name of the packet capture session.
7638    :vartype name: str
7639    :ivar id: ID of the packet capture operation.
7640    :vartype id: str
7641    :param etag:
7642    :type etag: str
7643    :param target: The ID of the targeted resource, only VM is currently supported.
7644    :type target: str
7645    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
7646     are truncated.
7647    :type bytes_to_capture_per_packet: int
7648    :param total_bytes_per_session: Maximum size of the capture output.
7649    :type total_bytes_per_session: int
7650    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
7651    :type time_limit_in_seconds: int
7652    :param storage_location: Describes the storage location for a packet capture session.
7653    :type storage_location: ~azure.mgmt.network.v2018_07_01.models.PacketCaptureStorageLocation
7654    :param filters:
7655    :type filters: list[~azure.mgmt.network.v2018_07_01.models.PacketCaptureFilter]
7656    :param provisioning_state: The provisioning state of the packet capture session. Possible
7657     values include: "Succeeded", "Updating", "Deleting", "Failed".
7658    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
7659    """
7660
7661    _validation = {
7662        'name': {'readonly': True},
7663        'id': {'readonly': True},
7664    }
7665
7666    _attribute_map = {
7667        'name': {'key': 'name', 'type': 'str'},
7668        'id': {'key': 'id', 'type': 'str'},
7669        'etag': {'key': 'etag', 'type': 'str'},
7670        'target': {'key': 'properties.target', 'type': 'str'},
7671        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
7672        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
7673        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
7674        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
7675        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
7676        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7677    }
7678
7679    def __init__(
7680        self,
7681        **kwargs
7682    ):
7683        super(PacketCaptureResult, self).__init__(**kwargs)
7684        self.name = None
7685        self.id = None
7686        self.etag = kwargs.get('etag', "A unique read-only string that changes whenever the resource is updated.")
7687        self.target = kwargs.get('target', None)
7688        self.bytes_to_capture_per_packet = kwargs.get('bytes_to_capture_per_packet', 0)
7689        self.total_bytes_per_session = kwargs.get('total_bytes_per_session', 1073741824)
7690        self.time_limit_in_seconds = kwargs.get('time_limit_in_seconds', 18000)
7691        self.storage_location = kwargs.get('storage_location', None)
7692        self.filters = kwargs.get('filters', None)
7693        self.provisioning_state = kwargs.get('provisioning_state', None)
7694
7695
7696class PacketCaptureResultProperties(PacketCaptureParameters):
7697    """Describes the properties of a packet capture session.
7698
7699    All required parameters must be populated in order to send to Azure.
7700
7701    :param target: Required. The ID of the targeted resource, only VM is currently supported.
7702    :type target: str
7703    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
7704     are truncated.
7705    :type bytes_to_capture_per_packet: int
7706    :param total_bytes_per_session: Maximum size of the capture output.
7707    :type total_bytes_per_session: int
7708    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
7709    :type time_limit_in_seconds: int
7710    :param storage_location: Required. Describes the storage location for a packet capture session.
7711    :type storage_location: ~azure.mgmt.network.v2018_07_01.models.PacketCaptureStorageLocation
7712    :param filters:
7713    :type filters: list[~azure.mgmt.network.v2018_07_01.models.PacketCaptureFilter]
7714    :param provisioning_state: The provisioning state of the packet capture session. Possible
7715     values include: "Succeeded", "Updating", "Deleting", "Failed".
7716    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
7717    """
7718
7719    _validation = {
7720        'target': {'required': True},
7721        'storage_location': {'required': True},
7722    }
7723
7724    _attribute_map = {
7725        'target': {'key': 'target', 'type': 'str'},
7726        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
7727        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
7728        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
7729        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
7730        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
7731        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
7732    }
7733
7734    def __init__(
7735        self,
7736        **kwargs
7737    ):
7738        super(PacketCaptureResultProperties, self).__init__(**kwargs)
7739        self.provisioning_state = kwargs.get('provisioning_state', None)
7740
7741
7742class PacketCaptureStorageLocation(msrest.serialization.Model):
7743    """Describes the storage location for a packet capture session.
7744
7745    :param storage_id: The ID of the storage account to save the packet capture session. Required
7746     if no local file path is provided.
7747    :type storage_id: str
7748    :param storage_path: The URI of the storage path to save the packet capture. Must be a
7749     well-formed URI describing the location to save the packet capture.
7750    :type storage_path: str
7751    :param file_path: A valid local path on the targeting VM. Must include the name of the capture
7752     file (*.cap). For linux virtual machine it must start with /var/captures. Required if no
7753     storage ID is provided, otherwise optional.
7754    :type file_path: str
7755    """
7756
7757    _attribute_map = {
7758        'storage_id': {'key': 'storageId', 'type': 'str'},
7759        'storage_path': {'key': 'storagePath', 'type': 'str'},
7760        'file_path': {'key': 'filePath', 'type': 'str'},
7761    }
7762
7763    def __init__(
7764        self,
7765        **kwargs
7766    ):
7767        super(PacketCaptureStorageLocation, self).__init__(**kwargs)
7768        self.storage_id = kwargs.get('storage_id', None)
7769        self.storage_path = kwargs.get('storage_path', None)
7770        self.file_path = kwargs.get('file_path', None)
7771
7772
7773class PatchRouteFilter(SubResource):
7774    """Route Filter Resource.
7775
7776    Variables are only populated by the server, and will be ignored when sending a request.
7777
7778    :param id: Resource ID.
7779    :type id: str
7780    :ivar name: The name of the resource that is unique within a resource group. This name can be
7781     used to access the resource.
7782    :vartype name: str
7783    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7784    :vartype etag: str
7785    :ivar type: Resource type.
7786    :vartype type: str
7787    :param tags: A set of tags. Resource tags.
7788    :type tags: dict[str, str]
7789    :param rules: Collection of RouteFilterRules contained within a route filter.
7790    :type rules: list[~azure.mgmt.network.v2018_07_01.models.RouteFilterRule]
7791    :param peerings: A collection of references to express route circuit peerings.
7792    :type peerings: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitPeering]
7793    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
7794     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
7795    :vartype provisioning_state: str
7796    """
7797
7798    _validation = {
7799        'name': {'readonly': True},
7800        'etag': {'readonly': True},
7801        'type': {'readonly': True},
7802        'provisioning_state': {'readonly': True},
7803    }
7804
7805    _attribute_map = {
7806        'id': {'key': 'id', 'type': 'str'},
7807        'name': {'key': 'name', 'type': 'str'},
7808        'etag': {'key': 'etag', 'type': 'str'},
7809        'type': {'key': 'type', 'type': 'str'},
7810        'tags': {'key': 'tags', 'type': '{str}'},
7811        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
7812        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
7813        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7814    }
7815
7816    def __init__(
7817        self,
7818        **kwargs
7819    ):
7820        super(PatchRouteFilter, self).__init__(**kwargs)
7821        self.name = None
7822        self.etag = None
7823        self.type = None
7824        self.tags = kwargs.get('tags', None)
7825        self.rules = kwargs.get('rules', None)
7826        self.peerings = kwargs.get('peerings', None)
7827        self.provisioning_state = None
7828
7829
7830class PatchRouteFilterRule(SubResource):
7831    """Route Filter Rule Resource.
7832
7833    Variables are only populated by the server, and will be ignored when sending a request.
7834
7835    :param id: Resource ID.
7836    :type id: str
7837    :ivar name: The name of the resource that is unique within a resource group. This name can be
7838     used to access the resource.
7839    :vartype name: str
7840    :ivar etag: A unique read-only string that changes whenever the resource is updated.
7841    :vartype etag: str
7842    :param access: The access type of the rule. Valid values are: 'Allow', 'Deny'. Possible values
7843     include: "Allow", "Deny".
7844    :type access: str or ~azure.mgmt.network.v2018_07_01.models.Access
7845    :param route_filter_rule_type: The rule type of the rule. Valid value is: 'Community'. Possible
7846     values include: "Community".
7847    :type route_filter_rule_type: str or ~azure.mgmt.network.v2018_07_01.models.RouteFilterRuleType
7848    :param communities: The collection for bgp community values to filter on. e.g.
7849     ['12076:5010','12076:5020'].
7850    :type communities: list[str]
7851    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
7852     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
7853    :vartype provisioning_state: str
7854    """
7855
7856    _validation = {
7857        'name': {'readonly': True},
7858        'etag': {'readonly': True},
7859        'provisioning_state': {'readonly': True},
7860    }
7861
7862    _attribute_map = {
7863        'id': {'key': 'id', 'type': 'str'},
7864        'name': {'key': 'name', 'type': 'str'},
7865        'etag': {'key': 'etag', 'type': 'str'},
7866        'access': {'key': 'properties.access', 'type': 'str'},
7867        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
7868        'communities': {'key': 'properties.communities', 'type': '[str]'},
7869        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7870    }
7871
7872    def __init__(
7873        self,
7874        **kwargs
7875    ):
7876        super(PatchRouteFilterRule, self).__init__(**kwargs)
7877        self.name = None
7878        self.etag = None
7879        self.access = kwargs.get('access', None)
7880        self.route_filter_rule_type = kwargs.get('route_filter_rule_type', None)
7881        self.communities = kwargs.get('communities', None)
7882        self.provisioning_state = None
7883
7884
7885class Policies(msrest.serialization.Model):
7886    """Policies for vpn gateway.
7887
7888    :param allow_branch_to_branch_traffic: True if branch to branch traffic is allowed.
7889    :type allow_branch_to_branch_traffic: bool
7890    :param allow_vnet_to_vnet_traffic: True if Vnet to Vnet traffic is allowed.
7891    :type allow_vnet_to_vnet_traffic: bool
7892    """
7893
7894    _attribute_map = {
7895        'allow_branch_to_branch_traffic': {'key': 'allowBranchToBranchTraffic', 'type': 'bool'},
7896        'allow_vnet_to_vnet_traffic': {'key': 'allowVnetToVnetTraffic', 'type': 'bool'},
7897    }
7898
7899    def __init__(
7900        self,
7901        **kwargs
7902    ):
7903        super(Policies, self).__init__(**kwargs)
7904        self.allow_branch_to_branch_traffic = kwargs.get('allow_branch_to_branch_traffic', None)
7905        self.allow_vnet_to_vnet_traffic = kwargs.get('allow_vnet_to_vnet_traffic', None)
7906
7907
7908class Probe(SubResource):
7909    """A load balancer probe.
7910
7911    Variables are only populated by the server, and will be ignored when sending a request.
7912
7913    :param id: Resource ID.
7914    :type id: str
7915    :param name: Gets name of the resource that is unique within a resource group. This name can be
7916     used to access the resource.
7917    :type name: str
7918    :param etag: A unique read-only string that changes whenever the resource is updated.
7919    :type etag: str
7920    :ivar load_balancing_rules: The load balancer rules that use this probe.
7921    :vartype load_balancing_rules: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
7922    :param protocol: The protocol of the end point. Possible values are: 'Http', 'Tcp', or 'Https'.
7923     If 'Tcp' is specified, a received ACK is required for the probe to be successful. If 'Http' or
7924     'Https' is specified, a 200 OK response from the specifies URI is required for the probe to be
7925     successful. Possible values include: "Http", "Tcp", "Https".
7926    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.ProbeProtocol
7927    :param port: The port for communicating the probe. Possible values range from 1 to 65535,
7928     inclusive.
7929    :type port: int
7930    :param interval_in_seconds: The interval, in seconds, for how frequently to probe the endpoint
7931     for health status. Typically, the interval is slightly less than half the allocated timeout
7932     period (in seconds) which allows two full probes before taking the instance out of rotation.
7933     The default value is 15, the minimum value is 5.
7934    :type interval_in_seconds: int
7935    :param number_of_probes: The number of probes where if no response, will result in stopping
7936     further traffic from being delivered to the endpoint. This values allows endpoints to be taken
7937     out of rotation faster or slower than the typical times used in Azure.
7938    :type number_of_probes: int
7939    :param request_path: The URI used for requesting health status from the VM. Path is required if
7940     a protocol is set to http. Otherwise, it is not allowed. There is no default value.
7941    :type request_path: str
7942    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
7943     values are: 'Updating', 'Deleting', and 'Failed'.
7944    :type provisioning_state: str
7945    """
7946
7947    _validation = {
7948        'load_balancing_rules': {'readonly': True},
7949    }
7950
7951    _attribute_map = {
7952        'id': {'key': 'id', 'type': 'str'},
7953        'name': {'key': 'name', 'type': 'str'},
7954        'etag': {'key': 'etag', 'type': 'str'},
7955        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
7956        'protocol': {'key': 'properties.protocol', 'type': 'str'},
7957        'port': {'key': 'properties.port', 'type': 'int'},
7958        'interval_in_seconds': {'key': 'properties.intervalInSeconds', 'type': 'int'},
7959        'number_of_probes': {'key': 'properties.numberOfProbes', 'type': 'int'},
7960        'request_path': {'key': 'properties.requestPath', 'type': 'str'},
7961        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7962    }
7963
7964    def __init__(
7965        self,
7966        **kwargs
7967    ):
7968        super(Probe, self).__init__(**kwargs)
7969        self.name = kwargs.get('name', None)
7970        self.etag = kwargs.get('etag', None)
7971        self.load_balancing_rules = None
7972        self.protocol = kwargs.get('protocol', None)
7973        self.port = kwargs.get('port', None)
7974        self.interval_in_seconds = kwargs.get('interval_in_seconds', None)
7975        self.number_of_probes = kwargs.get('number_of_probes', None)
7976        self.request_path = kwargs.get('request_path', None)
7977        self.provisioning_state = kwargs.get('provisioning_state', None)
7978
7979
7980class ProtocolConfiguration(msrest.serialization.Model):
7981    """Configuration of the protocol.
7982
7983    :param http_configuration: HTTP configuration of the connectivity check.
7984    :type http_configuration: ~azure.mgmt.network.v2018_07_01.models.HTTPConfiguration
7985    """
7986
7987    _attribute_map = {
7988        'http_configuration': {'key': 'HTTPConfiguration', 'type': 'HTTPConfiguration'},
7989    }
7990
7991    def __init__(
7992        self,
7993        **kwargs
7994    ):
7995        super(ProtocolConfiguration, self).__init__(**kwargs)
7996        self.http_configuration = kwargs.get('http_configuration', None)
7997
7998
7999class PublicIPAddress(Resource):
8000    """Public IP address resource.
8001
8002    Variables are only populated by the server, and will be ignored when sending a request.
8003
8004    :param id: Resource ID.
8005    :type id: str
8006    :ivar name: Resource name.
8007    :vartype name: str
8008    :ivar type: Resource type.
8009    :vartype type: str
8010    :param location: Resource location.
8011    :type location: str
8012    :param tags: A set of tags. Resource tags.
8013    :type tags: dict[str, str]
8014    :param sku: The public IP address SKU.
8015    :type sku: ~azure.mgmt.network.v2018_07_01.models.PublicIPAddressSku
8016    :param etag: A unique read-only string that changes whenever the resource is updated.
8017    :type etag: str
8018    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
8019     come from.
8020    :type zones: list[str]
8021    :param public_ip_allocation_method: The public IP allocation method. Possible values are:
8022     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
8023    :type public_ip_allocation_method: str or
8024     ~azure.mgmt.network.v2018_07_01.models.IPAllocationMethod
8025    :param public_ip_address_version: The public IP address version. Possible values are: 'IPv4'
8026     and 'IPv6'. Possible values include: "IPv4", "IPv6".
8027    :type public_ip_address_version: str or ~azure.mgmt.network.v2018_07_01.models.IPVersion
8028    :ivar ip_configuration: The IP configuration associated with the public IP address.
8029    :vartype ip_configuration: ~azure.mgmt.network.v2018_07_01.models.IPConfiguration
8030    :param dns_settings: The FQDN of the DNS record associated with the public IP address.
8031    :type dns_settings: ~azure.mgmt.network.v2018_07_01.models.PublicIPAddressDnsSettings
8032    :param ip_tags: The list of tags associated with the public IP address.
8033    :type ip_tags: list[~azure.mgmt.network.v2018_07_01.models.IpTag]
8034    :param ip_address: The IP address associated with the public IP address resource.
8035    :type ip_address: str
8036    :param public_ip_prefix: The Public IP Prefix this Public IP Address should be allocated from.
8037    :type public_ip_prefix: ~azure.mgmt.network.v2018_07_01.models.SubResource
8038    :param idle_timeout_in_minutes: The idle timeout of the public IP address.
8039    :type idle_timeout_in_minutes: int
8040    :param resource_guid: The resource GUID property of the public IP resource.
8041    :type resource_guid: str
8042    :param provisioning_state: The provisioning state of the PublicIP resource. Possible values
8043     are: 'Updating', 'Deleting', and 'Failed'.
8044    :type provisioning_state: str
8045    """
8046
8047    _validation = {
8048        'name': {'readonly': True},
8049        'type': {'readonly': True},
8050        'ip_configuration': {'readonly': True},
8051    }
8052
8053    _attribute_map = {
8054        'id': {'key': 'id', 'type': 'str'},
8055        'name': {'key': 'name', 'type': 'str'},
8056        'type': {'key': 'type', 'type': 'str'},
8057        'location': {'key': 'location', 'type': 'str'},
8058        'tags': {'key': 'tags', 'type': '{str}'},
8059        'sku': {'key': 'sku', 'type': 'PublicIPAddressSku'},
8060        'etag': {'key': 'etag', 'type': 'str'},
8061        'zones': {'key': 'zones', 'type': '[str]'},
8062        'public_ip_allocation_method': {'key': 'properties.publicIPAllocationMethod', 'type': 'str'},
8063        'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'},
8064        'ip_configuration': {'key': 'properties.ipConfiguration', 'type': 'IPConfiguration'},
8065        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'PublicIPAddressDnsSettings'},
8066        'ip_tags': {'key': 'properties.ipTags', 'type': '[IpTag]'},
8067        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
8068        'public_ip_prefix': {'key': 'properties.publicIPPrefix', 'type': 'SubResource'},
8069        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
8070        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
8071        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8072    }
8073
8074    def __init__(
8075        self,
8076        **kwargs
8077    ):
8078        super(PublicIPAddress, self).__init__(**kwargs)
8079        self.sku = kwargs.get('sku', None)
8080        self.etag = kwargs.get('etag', None)
8081        self.zones = kwargs.get('zones', None)
8082        self.public_ip_allocation_method = kwargs.get('public_ip_allocation_method', None)
8083        self.public_ip_address_version = kwargs.get('public_ip_address_version', None)
8084        self.ip_configuration = None
8085        self.dns_settings = kwargs.get('dns_settings', None)
8086        self.ip_tags = kwargs.get('ip_tags', None)
8087        self.ip_address = kwargs.get('ip_address', None)
8088        self.public_ip_prefix = kwargs.get('public_ip_prefix', None)
8089        self.idle_timeout_in_minutes = kwargs.get('idle_timeout_in_minutes', None)
8090        self.resource_guid = kwargs.get('resource_guid', None)
8091        self.provisioning_state = kwargs.get('provisioning_state', None)
8092
8093
8094class PublicIPAddressDnsSettings(msrest.serialization.Model):
8095    """Contains FQDN of the DNS record associated with the public IP address.
8096
8097    :param domain_name_label: Gets or sets the Domain name label.The concatenation of the domain
8098     name label and the regionalized DNS zone make up the fully qualified domain name associated
8099     with the public IP address. If a domain name label is specified, an A DNS record is created for
8100     the public IP in the Microsoft Azure DNS system.
8101    :type domain_name_label: str
8102    :param fqdn: Gets the FQDN, Fully qualified domain name of the A DNS record associated with the
8103     public IP. This is the concatenation of the domainNameLabel and the regionalized DNS zone.
8104    :type fqdn: str
8105    :param reverse_fqdn: Gets or Sets the Reverse FQDN. A user-visible, fully qualified domain name
8106     that resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record
8107     is created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN.
8108    :type reverse_fqdn: str
8109    """
8110
8111    _attribute_map = {
8112        'domain_name_label': {'key': 'domainNameLabel', 'type': 'str'},
8113        'fqdn': {'key': 'fqdn', 'type': 'str'},
8114        'reverse_fqdn': {'key': 'reverseFqdn', 'type': 'str'},
8115    }
8116
8117    def __init__(
8118        self,
8119        **kwargs
8120    ):
8121        super(PublicIPAddressDnsSettings, self).__init__(**kwargs)
8122        self.domain_name_label = kwargs.get('domain_name_label', None)
8123        self.fqdn = kwargs.get('fqdn', None)
8124        self.reverse_fqdn = kwargs.get('reverse_fqdn', None)
8125
8126
8127class PublicIPAddressListResult(msrest.serialization.Model):
8128    """Response for ListPublicIpAddresses API service call.
8129
8130    :param value: A list of public IP addresses that exists in a resource group.
8131    :type value: list[~azure.mgmt.network.v2018_07_01.models.PublicIPAddress]
8132    :param next_link: The URL to get the next set of results.
8133    :type next_link: str
8134    """
8135
8136    _attribute_map = {
8137        'value': {'key': 'value', 'type': '[PublicIPAddress]'},
8138        'next_link': {'key': 'nextLink', 'type': 'str'},
8139    }
8140
8141    def __init__(
8142        self,
8143        **kwargs
8144    ):
8145        super(PublicIPAddressListResult, self).__init__(**kwargs)
8146        self.value = kwargs.get('value', None)
8147        self.next_link = kwargs.get('next_link', None)
8148
8149
8150class PublicIPAddressSku(msrest.serialization.Model):
8151    """SKU of a public IP address.
8152
8153    :param name: Name of a public IP address SKU. Possible values include: "Basic", "Standard".
8154    :type name: str or ~azure.mgmt.network.v2018_07_01.models.PublicIPAddressSkuName
8155    """
8156
8157    _attribute_map = {
8158        'name': {'key': 'name', 'type': 'str'},
8159    }
8160
8161    def __init__(
8162        self,
8163        **kwargs
8164    ):
8165        super(PublicIPAddressSku, self).__init__(**kwargs)
8166        self.name = kwargs.get('name', None)
8167
8168
8169class PublicIPPrefix(Resource):
8170    """Public IP prefix resource.
8171
8172    Variables are only populated by the server, and will be ignored when sending a request.
8173
8174    :param id: Resource ID.
8175    :type id: str
8176    :ivar name: Resource name.
8177    :vartype name: str
8178    :ivar type: Resource type.
8179    :vartype type: str
8180    :param location: Resource location.
8181    :type location: str
8182    :param tags: A set of tags. Resource tags.
8183    :type tags: dict[str, str]
8184    :param sku: The public IP prefix SKU.
8185    :type sku: ~azure.mgmt.network.v2018_07_01.models.PublicIPPrefixSku
8186    :param etag: A unique read-only string that changes whenever the resource is updated.
8187    :type etag: str
8188    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
8189     come from.
8190    :type zones: list[str]
8191    :param public_ip_address_version: The public IP address version. Possible values are: 'IPv4'
8192     and 'IPv6'. Possible values include: "IPv4", "IPv6".
8193    :type public_ip_address_version: str or ~azure.mgmt.network.v2018_07_01.models.IPVersion
8194    :param ip_tags: The list of tags associated with the public IP prefix.
8195    :type ip_tags: list[~azure.mgmt.network.v2018_07_01.models.IpTag]
8196    :param prefix_length: The Length of the Public IP Prefix.
8197    :type prefix_length: int
8198    :param ip_prefix: The allocated Prefix.
8199    :type ip_prefix: str
8200    :param public_ip_addresses: The list of all referenced PublicIPAddresses.
8201    :type public_ip_addresses:
8202     list[~azure.mgmt.network.v2018_07_01.models.ReferencedPublicIpAddress]
8203    :ivar load_balancer_frontend_ip_configuration: The reference to load balancer frontend IP
8204     configuration associated with the public IP prefix.
8205    :vartype load_balancer_frontend_ip_configuration:
8206     ~azure.mgmt.network.v2018_07_01.models.SubResource
8207    :param resource_guid: The resource GUID property of the public IP prefix resource.
8208    :type resource_guid: str
8209    :param provisioning_state: The provisioning state of the Public IP prefix resource. Possible
8210     values are: 'Updating', 'Deleting', and 'Failed'.
8211    :type provisioning_state: str
8212    """
8213
8214    _validation = {
8215        'name': {'readonly': True},
8216        'type': {'readonly': True},
8217        'load_balancer_frontend_ip_configuration': {'readonly': True},
8218    }
8219
8220    _attribute_map = {
8221        'id': {'key': 'id', 'type': 'str'},
8222        'name': {'key': 'name', 'type': 'str'},
8223        'type': {'key': 'type', 'type': 'str'},
8224        'location': {'key': 'location', 'type': 'str'},
8225        'tags': {'key': 'tags', 'type': '{str}'},
8226        'sku': {'key': 'sku', 'type': 'PublicIPPrefixSku'},
8227        'etag': {'key': 'etag', 'type': 'str'},
8228        'zones': {'key': 'zones', 'type': '[str]'},
8229        'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'},
8230        'ip_tags': {'key': 'properties.ipTags', 'type': '[IpTag]'},
8231        'prefix_length': {'key': 'properties.prefixLength', 'type': 'int'},
8232        'ip_prefix': {'key': 'properties.ipPrefix', 'type': 'str'},
8233        'public_ip_addresses': {'key': 'properties.publicIPAddresses', 'type': '[ReferencedPublicIpAddress]'},
8234        'load_balancer_frontend_ip_configuration': {'key': 'properties.loadBalancerFrontendIpConfiguration', 'type': 'SubResource'},
8235        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
8236        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8237    }
8238
8239    def __init__(
8240        self,
8241        **kwargs
8242    ):
8243        super(PublicIPPrefix, self).__init__(**kwargs)
8244        self.sku = kwargs.get('sku', None)
8245        self.etag = kwargs.get('etag', None)
8246        self.zones = kwargs.get('zones', None)
8247        self.public_ip_address_version = kwargs.get('public_ip_address_version', None)
8248        self.ip_tags = kwargs.get('ip_tags', None)
8249        self.prefix_length = kwargs.get('prefix_length', None)
8250        self.ip_prefix = kwargs.get('ip_prefix', None)
8251        self.public_ip_addresses = kwargs.get('public_ip_addresses', None)
8252        self.load_balancer_frontend_ip_configuration = None
8253        self.resource_guid = kwargs.get('resource_guid', None)
8254        self.provisioning_state = kwargs.get('provisioning_state', None)
8255
8256
8257class PublicIPPrefixListResult(msrest.serialization.Model):
8258    """Response for ListPublicIpPrefixes API service call.
8259
8260    :param value: A list of public IP prefixes that exists in a resource group.
8261    :type value: list[~azure.mgmt.network.v2018_07_01.models.PublicIPPrefix]
8262    :param next_link: The URL to get the next set of results.
8263    :type next_link: str
8264    """
8265
8266    _attribute_map = {
8267        'value': {'key': 'value', 'type': '[PublicIPPrefix]'},
8268        'next_link': {'key': 'nextLink', 'type': 'str'},
8269    }
8270
8271    def __init__(
8272        self,
8273        **kwargs
8274    ):
8275        super(PublicIPPrefixListResult, self).__init__(**kwargs)
8276        self.value = kwargs.get('value', None)
8277        self.next_link = kwargs.get('next_link', None)
8278
8279
8280class PublicIPPrefixSku(msrest.serialization.Model):
8281    """SKU of a public IP prefix.
8282
8283    :param name: Name of a public IP prefix SKU. Possible values include: "Standard".
8284    :type name: str or ~azure.mgmt.network.v2018_07_01.models.PublicIPPrefixSkuName
8285    """
8286
8287    _attribute_map = {
8288        'name': {'key': 'name', 'type': 'str'},
8289    }
8290
8291    def __init__(
8292        self,
8293        **kwargs
8294    ):
8295        super(PublicIPPrefixSku, self).__init__(**kwargs)
8296        self.name = kwargs.get('name', None)
8297
8298
8299class QueryTroubleshootingParameters(msrest.serialization.Model):
8300    """Parameters that define the resource to query the troubleshooting result.
8301
8302    All required parameters must be populated in order to send to Azure.
8303
8304    :param target_resource_id: Required. The target resource ID to query the troubleshooting
8305     result.
8306    :type target_resource_id: str
8307    """
8308
8309    _validation = {
8310        'target_resource_id': {'required': True},
8311    }
8312
8313    _attribute_map = {
8314        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
8315    }
8316
8317    def __init__(
8318        self,
8319        **kwargs
8320    ):
8321        super(QueryTroubleshootingParameters, self).__init__(**kwargs)
8322        self.target_resource_id = kwargs['target_resource_id']
8323
8324
8325class ReferencedPublicIpAddress(msrest.serialization.Model):
8326    """ReferencedPublicIpAddress.
8327
8328    :param id: The PublicIPAddress Reference.
8329    :type id: str
8330    """
8331
8332    _attribute_map = {
8333        'id': {'key': 'id', 'type': 'str'},
8334    }
8335
8336    def __init__(
8337        self,
8338        **kwargs
8339    ):
8340        super(ReferencedPublicIpAddress, self).__init__(**kwargs)
8341        self.id = kwargs.get('id', None)
8342
8343
8344class ResourceNavigationLink(SubResource):
8345    """ResourceNavigationLink resource.
8346
8347    Variables are only populated by the server, and will be ignored when sending a request.
8348
8349    :param id: Resource ID.
8350    :type id: str
8351    :param name: Name of the resource that is unique within a resource group. This name can be used
8352     to access the resource.
8353    :type name: str
8354    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8355    :vartype etag: str
8356    :param linked_resource_type: Resource type of the linked resource.
8357    :type linked_resource_type: str
8358    :param link: Link to the external resource.
8359    :type link: str
8360    :ivar provisioning_state: Provisioning state of the ResourceNavigationLink resource.
8361    :vartype provisioning_state: str
8362    """
8363
8364    _validation = {
8365        'etag': {'readonly': True},
8366        'provisioning_state': {'readonly': True},
8367    }
8368
8369    _attribute_map = {
8370        'id': {'key': 'id', 'type': 'str'},
8371        'name': {'key': 'name', 'type': 'str'},
8372        'etag': {'key': 'etag', 'type': 'str'},
8373        'linked_resource_type': {'key': 'properties.linkedResourceType', 'type': 'str'},
8374        'link': {'key': 'properties.link', 'type': 'str'},
8375        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8376    }
8377
8378    def __init__(
8379        self,
8380        **kwargs
8381    ):
8382        super(ResourceNavigationLink, self).__init__(**kwargs)
8383        self.name = kwargs.get('name', None)
8384        self.etag = None
8385        self.linked_resource_type = kwargs.get('linked_resource_type', None)
8386        self.link = kwargs.get('link', None)
8387        self.provisioning_state = None
8388
8389
8390class RetentionPolicyParameters(msrest.serialization.Model):
8391    """Parameters that define the retention policy for flow log.
8392
8393    :param days: Number of days to retain flow log records.
8394    :type days: int
8395    :param enabled: Flag to enable/disable retention.
8396    :type enabled: bool
8397    """
8398
8399    _attribute_map = {
8400        'days': {'key': 'days', 'type': 'int'},
8401        'enabled': {'key': 'enabled', 'type': 'bool'},
8402    }
8403
8404    def __init__(
8405        self,
8406        **kwargs
8407    ):
8408        super(RetentionPolicyParameters, self).__init__(**kwargs)
8409        self.days = kwargs.get('days', 0)
8410        self.enabled = kwargs.get('enabled', False)
8411
8412
8413class Route(SubResource):
8414    """Route resource.
8415
8416    :param id: Resource ID.
8417    :type id: str
8418    :param name: The name of the resource that is unique within a resource group. This name can be
8419     used to access the resource.
8420    :type name: str
8421    :param etag: A unique read-only string that changes whenever the resource is updated.
8422    :type etag: str
8423    :param address_prefix: The destination CIDR to which the route applies.
8424    :type address_prefix: str
8425    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values are:
8426     'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', and 'None'. Possible
8427     values include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
8428    :type next_hop_type: str or ~azure.mgmt.network.v2018_07_01.models.RouteNextHopType
8429    :param next_hop_ip_address: The IP address packets should be forwarded to. Next hop values are
8430     only allowed in routes where the next hop type is VirtualAppliance.
8431    :type next_hop_ip_address: str
8432    :param provisioning_state: The provisioning state of the resource. Possible values are:
8433     'Updating', 'Deleting', and 'Failed'.
8434    :type provisioning_state: str
8435    """
8436
8437    _attribute_map = {
8438        'id': {'key': 'id', 'type': 'str'},
8439        'name': {'key': 'name', 'type': 'str'},
8440        'etag': {'key': 'etag', 'type': 'str'},
8441        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
8442        'next_hop_type': {'key': 'properties.nextHopType', 'type': 'str'},
8443        'next_hop_ip_address': {'key': 'properties.nextHopIpAddress', 'type': 'str'},
8444        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8445    }
8446
8447    def __init__(
8448        self,
8449        **kwargs
8450    ):
8451        super(Route, self).__init__(**kwargs)
8452        self.name = kwargs.get('name', None)
8453        self.etag = kwargs.get('etag', None)
8454        self.address_prefix = kwargs.get('address_prefix', None)
8455        self.next_hop_type = kwargs.get('next_hop_type', None)
8456        self.next_hop_ip_address = kwargs.get('next_hop_ip_address', None)
8457        self.provisioning_state = kwargs.get('provisioning_state', None)
8458
8459
8460class RouteFilter(Resource):
8461    """Route Filter Resource.
8462
8463    Variables are only populated by the server, and will be ignored when sending a request.
8464
8465    :param id: Resource ID.
8466    :type id: str
8467    :ivar name: Resource name.
8468    :vartype name: str
8469    :ivar type: Resource type.
8470    :vartype type: str
8471    :param location: Resource location.
8472    :type location: str
8473    :param tags: A set of tags. Resource tags.
8474    :type tags: dict[str, str]
8475    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
8476    :vartype etag: str
8477    :param rules: Collection of RouteFilterRules contained within a route filter.
8478    :type rules: list[~azure.mgmt.network.v2018_07_01.models.RouteFilterRule]
8479    :param peerings: A collection of references to express route circuit peerings.
8480    :type peerings: list[~azure.mgmt.network.v2018_07_01.models.ExpressRouteCircuitPeering]
8481    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
8482     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
8483    :vartype provisioning_state: str
8484    """
8485
8486    _validation = {
8487        'name': {'readonly': True},
8488        'type': {'readonly': True},
8489        'etag': {'readonly': True},
8490        'provisioning_state': {'readonly': True},
8491    }
8492
8493    _attribute_map = {
8494        'id': {'key': 'id', 'type': 'str'},
8495        'name': {'key': 'name', 'type': 'str'},
8496        'type': {'key': 'type', 'type': 'str'},
8497        'location': {'key': 'location', 'type': 'str'},
8498        'tags': {'key': 'tags', 'type': '{str}'},
8499        'etag': {'key': 'etag', 'type': 'str'},
8500        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
8501        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
8502        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8503    }
8504
8505    def __init__(
8506        self,
8507        **kwargs
8508    ):
8509        super(RouteFilter, self).__init__(**kwargs)
8510        self.etag = None
8511        self.rules = kwargs.get('rules', None)
8512        self.peerings = kwargs.get('peerings', None)
8513        self.provisioning_state = None
8514
8515
8516class RouteFilterListResult(msrest.serialization.Model):
8517    """Response for the ListRouteFilters API service call.
8518
8519    :param value: Gets a list of route filters in a resource group.
8520    :type value: list[~azure.mgmt.network.v2018_07_01.models.RouteFilter]
8521    :param next_link: The URL to get the next set of results.
8522    :type next_link: str
8523    """
8524
8525    _attribute_map = {
8526        'value': {'key': 'value', 'type': '[RouteFilter]'},
8527        'next_link': {'key': 'nextLink', 'type': 'str'},
8528    }
8529
8530    def __init__(
8531        self,
8532        **kwargs
8533    ):
8534        super(RouteFilterListResult, self).__init__(**kwargs)
8535        self.value = kwargs.get('value', None)
8536        self.next_link = kwargs.get('next_link', None)
8537
8538
8539class RouteFilterRule(SubResource):
8540    """Route Filter Rule Resource.
8541
8542    Variables are only populated by the server, and will be ignored when sending a request.
8543
8544    :param id: Resource ID.
8545    :type id: str
8546    :param name: The name of the resource that is unique within a resource group. This name can be
8547     used to access the resource.
8548    :type name: str
8549    :param location: Resource location.
8550    :type location: str
8551    :ivar etag: A unique read-only string that changes whenever the resource is updated.
8552    :vartype etag: str
8553    :param access: The access type of the rule. Valid values are: 'Allow', 'Deny'. Possible values
8554     include: "Allow", "Deny".
8555    :type access: str or ~azure.mgmt.network.v2018_07_01.models.Access
8556    :param route_filter_rule_type: The rule type of the rule. Valid value is: 'Community'. Possible
8557     values include: "Community".
8558    :type route_filter_rule_type: str or ~azure.mgmt.network.v2018_07_01.models.RouteFilterRuleType
8559    :param communities: The collection for bgp community values to filter on. e.g.
8560     ['12076:5010','12076:5020'].
8561    :type communities: list[str]
8562    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
8563     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
8564    :vartype provisioning_state: str
8565    """
8566
8567    _validation = {
8568        'etag': {'readonly': True},
8569        'provisioning_state': {'readonly': True},
8570    }
8571
8572    _attribute_map = {
8573        'id': {'key': 'id', 'type': 'str'},
8574        'name': {'key': 'name', 'type': 'str'},
8575        'location': {'key': 'location', 'type': 'str'},
8576        'etag': {'key': 'etag', 'type': 'str'},
8577        'access': {'key': 'properties.access', 'type': 'str'},
8578        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
8579        'communities': {'key': 'properties.communities', 'type': '[str]'},
8580        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8581    }
8582
8583    def __init__(
8584        self,
8585        **kwargs
8586    ):
8587        super(RouteFilterRule, self).__init__(**kwargs)
8588        self.name = kwargs.get('name', None)
8589        self.location = kwargs.get('location', None)
8590        self.etag = None
8591        self.access = kwargs.get('access', None)
8592        self.route_filter_rule_type = kwargs.get('route_filter_rule_type', None)
8593        self.communities = kwargs.get('communities', None)
8594        self.provisioning_state = None
8595
8596
8597class RouteFilterRuleListResult(msrest.serialization.Model):
8598    """Response for the ListRouteFilterRules API service call.
8599
8600    :param value: Gets a list of RouteFilterRules in a resource group.
8601    :type value: list[~azure.mgmt.network.v2018_07_01.models.RouteFilterRule]
8602    :param next_link: The URL to get the next set of results.
8603    :type next_link: str
8604    """
8605
8606    _attribute_map = {
8607        'value': {'key': 'value', 'type': '[RouteFilterRule]'},
8608        'next_link': {'key': 'nextLink', 'type': 'str'},
8609    }
8610
8611    def __init__(
8612        self,
8613        **kwargs
8614    ):
8615        super(RouteFilterRuleListResult, self).__init__(**kwargs)
8616        self.value = kwargs.get('value', None)
8617        self.next_link = kwargs.get('next_link', None)
8618
8619
8620class RouteListResult(msrest.serialization.Model):
8621    """Response for the ListRoute API service call.
8622
8623    :param value: Gets a list of routes in a resource group.
8624    :type value: list[~azure.mgmt.network.v2018_07_01.models.Route]
8625    :param next_link: The URL to get the next set of results.
8626    :type next_link: str
8627    """
8628
8629    _attribute_map = {
8630        'value': {'key': 'value', 'type': '[Route]'},
8631        'next_link': {'key': 'nextLink', 'type': 'str'},
8632    }
8633
8634    def __init__(
8635        self,
8636        **kwargs
8637    ):
8638        super(RouteListResult, self).__init__(**kwargs)
8639        self.value = kwargs.get('value', None)
8640        self.next_link = kwargs.get('next_link', None)
8641
8642
8643class RouteTable(Resource):
8644    """Route table resource.
8645
8646    Variables are only populated by the server, and will be ignored when sending a request.
8647
8648    :param id: Resource ID.
8649    :type id: str
8650    :ivar name: Resource name.
8651    :vartype name: str
8652    :ivar type: Resource type.
8653    :vartype type: str
8654    :param location: Resource location.
8655    :type location: str
8656    :param tags: A set of tags. Resource tags.
8657    :type tags: dict[str, str]
8658    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
8659    :type etag: str
8660    :param routes: Collection of routes contained within a route table.
8661    :type routes: list[~azure.mgmt.network.v2018_07_01.models.Route]
8662    :ivar subnets: A collection of references to subnets.
8663    :vartype subnets: list[~azure.mgmt.network.v2018_07_01.models.Subnet]
8664    :param disable_bgp_route_propagation: Gets or sets whether to disable the routes learned by BGP
8665     on that route table. True means disable.
8666    :type disable_bgp_route_propagation: bool
8667    :param provisioning_state: The provisioning state of the resource. Possible values are:
8668     'Updating', 'Deleting', and 'Failed'.
8669    :type provisioning_state: str
8670    """
8671
8672    _validation = {
8673        'name': {'readonly': True},
8674        'type': {'readonly': True},
8675        'subnets': {'readonly': True},
8676    }
8677
8678    _attribute_map = {
8679        'id': {'key': 'id', 'type': 'str'},
8680        'name': {'key': 'name', 'type': 'str'},
8681        'type': {'key': 'type', 'type': 'str'},
8682        'location': {'key': 'location', 'type': 'str'},
8683        'tags': {'key': 'tags', 'type': '{str}'},
8684        'etag': {'key': 'etag', 'type': 'str'},
8685        'routes': {'key': 'properties.routes', 'type': '[Route]'},
8686        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
8687        'disable_bgp_route_propagation': {'key': 'properties.disableBgpRoutePropagation', 'type': 'bool'},
8688        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8689    }
8690
8691    def __init__(
8692        self,
8693        **kwargs
8694    ):
8695        super(RouteTable, self).__init__(**kwargs)
8696        self.etag = kwargs.get('etag', None)
8697        self.routes = kwargs.get('routes', None)
8698        self.subnets = None
8699        self.disable_bgp_route_propagation = kwargs.get('disable_bgp_route_propagation', None)
8700        self.provisioning_state = kwargs.get('provisioning_state', None)
8701
8702
8703class RouteTableListResult(msrest.serialization.Model):
8704    """Response for the ListRouteTable API service call.
8705
8706    :param value: Gets a list of route tables in a resource group.
8707    :type value: list[~azure.mgmt.network.v2018_07_01.models.RouteTable]
8708    :param next_link: The URL to get the next set of results.
8709    :type next_link: str
8710    """
8711
8712    _attribute_map = {
8713        'value': {'key': 'value', 'type': '[RouteTable]'},
8714        'next_link': {'key': 'nextLink', 'type': 'str'},
8715    }
8716
8717    def __init__(
8718        self,
8719        **kwargs
8720    ):
8721        super(RouteTableListResult, self).__init__(**kwargs)
8722        self.value = kwargs.get('value', None)
8723        self.next_link = kwargs.get('next_link', None)
8724
8725
8726class SecurityGroupNetworkInterface(msrest.serialization.Model):
8727    """Network interface and all its associated security rules.
8728
8729    :param id: ID of the network interface.
8730    :type id: str
8731    :param security_rule_associations: All security rules associated with the network interface.
8732    :type security_rule_associations:
8733     ~azure.mgmt.network.v2018_07_01.models.SecurityRuleAssociations
8734    """
8735
8736    _attribute_map = {
8737        'id': {'key': 'id', 'type': 'str'},
8738        'security_rule_associations': {'key': 'securityRuleAssociations', 'type': 'SecurityRuleAssociations'},
8739    }
8740
8741    def __init__(
8742        self,
8743        **kwargs
8744    ):
8745        super(SecurityGroupNetworkInterface, self).__init__(**kwargs)
8746        self.id = kwargs.get('id', None)
8747        self.security_rule_associations = kwargs.get('security_rule_associations', None)
8748
8749
8750class SecurityGroupViewParameters(msrest.serialization.Model):
8751    """Parameters that define the VM to check security groups for.
8752
8753    All required parameters must be populated in order to send to Azure.
8754
8755    :param target_resource_id: Required. ID of the target VM.
8756    :type target_resource_id: str
8757    """
8758
8759    _validation = {
8760        'target_resource_id': {'required': True},
8761    }
8762
8763    _attribute_map = {
8764        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
8765    }
8766
8767    def __init__(
8768        self,
8769        **kwargs
8770    ):
8771        super(SecurityGroupViewParameters, self).__init__(**kwargs)
8772        self.target_resource_id = kwargs['target_resource_id']
8773
8774
8775class SecurityGroupViewResult(msrest.serialization.Model):
8776    """The information about security rules applied to the specified VM.
8777
8778    :param network_interfaces: List of network interfaces on the specified VM.
8779    :type network_interfaces:
8780     list[~azure.mgmt.network.v2018_07_01.models.SecurityGroupNetworkInterface]
8781    """
8782
8783    _attribute_map = {
8784        'network_interfaces': {'key': 'networkInterfaces', 'type': '[SecurityGroupNetworkInterface]'},
8785    }
8786
8787    def __init__(
8788        self,
8789        **kwargs
8790    ):
8791        super(SecurityGroupViewResult, self).__init__(**kwargs)
8792        self.network_interfaces = kwargs.get('network_interfaces', None)
8793
8794
8795class SecurityRule(SubResource):
8796    """Network security rule.
8797
8798    :param id: Resource ID.
8799    :type id: str
8800    :param name: The name of the resource that is unique within a resource group. This name can be
8801     used to access the resource.
8802    :type name: str
8803    :param etag: A unique read-only string that changes whenever the resource is updated.
8804    :type etag: str
8805    :param description: A description for this rule. Restricted to 140 chars.
8806    :type description: str
8807    :param protocol: Network protocol this rule applies to. Possible values are 'Tcp', 'Udp', and
8808     '*'. Possible values include: "Tcp", "Udp", "*".
8809    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.SecurityRuleProtocol
8810    :param source_port_range: The source port or range. Integer or range between 0 and 65535.
8811     Asterisk '*' can also be used to match all ports.
8812    :type source_port_range: str
8813    :param destination_port_range: The destination port or range. Integer or range between 0 and
8814     65535. Asterisk '*' can also be used to match all ports.
8815    :type destination_port_range: str
8816    :param source_address_prefix: The CIDR or source IP range. Asterisk '*' can also be used to
8817     match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet'
8818     can also be used. If this is an ingress rule, specifies where network traffic originates from.
8819    :type source_address_prefix: str
8820    :param source_address_prefixes: The CIDR or source IP ranges.
8821    :type source_address_prefixes: list[str]
8822    :param source_application_security_groups: The application security group specified as source.
8823    :type source_application_security_groups:
8824     list[~azure.mgmt.network.v2018_07_01.models.ApplicationSecurityGroup]
8825    :param destination_address_prefix: The destination address prefix. CIDR or destination IP
8826     range. Asterisk '*' can also be used to match all source IPs. Default tags such as
8827     'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
8828    :type destination_address_prefix: str
8829    :param destination_address_prefixes: The destination address prefixes. CIDR or destination IP
8830     ranges.
8831    :type destination_address_prefixes: list[str]
8832    :param destination_application_security_groups: The application security group specified as
8833     destination.
8834    :type destination_application_security_groups:
8835     list[~azure.mgmt.network.v2018_07_01.models.ApplicationSecurityGroup]
8836    :param source_port_ranges: The source port ranges.
8837    :type source_port_ranges: list[str]
8838    :param destination_port_ranges: The destination port ranges.
8839    :type destination_port_ranges: list[str]
8840    :param access: The network traffic is allowed or denied. Possible values are: 'Allow' and
8841     'Deny'. Possible values include: "Allow", "Deny".
8842    :type access: str or ~azure.mgmt.network.v2018_07_01.models.SecurityRuleAccess
8843    :param priority: The priority of the rule. The value can be between 100 and 4096. The priority
8844     number must be unique for each rule in the collection. The lower the priority number, the
8845     higher the priority of the rule.
8846    :type priority: int
8847    :param direction: The direction of the rule. The direction specifies if rule will be evaluated
8848     on incoming or outgoing traffic. Possible values are: 'Inbound' and 'Outbound'. Possible values
8849     include: "Inbound", "Outbound".
8850    :type direction: str or ~azure.mgmt.network.v2018_07_01.models.SecurityRuleDirection
8851    :param provisioning_state: The provisioning state of the public IP resource. Possible values
8852     are: 'Updating', 'Deleting', and 'Failed'.
8853    :type provisioning_state: str
8854    """
8855
8856    _attribute_map = {
8857        'id': {'key': 'id', 'type': 'str'},
8858        'name': {'key': 'name', 'type': 'str'},
8859        'etag': {'key': 'etag', 'type': 'str'},
8860        'description': {'key': 'properties.description', 'type': 'str'},
8861        'protocol': {'key': 'properties.protocol', 'type': 'str'},
8862        'source_port_range': {'key': 'properties.sourcePortRange', 'type': 'str'},
8863        'destination_port_range': {'key': 'properties.destinationPortRange', 'type': 'str'},
8864        'source_address_prefix': {'key': 'properties.sourceAddressPrefix', 'type': 'str'},
8865        'source_address_prefixes': {'key': 'properties.sourceAddressPrefixes', 'type': '[str]'},
8866        'source_application_security_groups': {'key': 'properties.sourceApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
8867        'destination_address_prefix': {'key': 'properties.destinationAddressPrefix', 'type': 'str'},
8868        'destination_address_prefixes': {'key': 'properties.destinationAddressPrefixes', 'type': '[str]'},
8869        'destination_application_security_groups': {'key': 'properties.destinationApplicationSecurityGroups', 'type': '[ApplicationSecurityGroup]'},
8870        'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'},
8871        'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'},
8872        'access': {'key': 'properties.access', 'type': 'str'},
8873        'priority': {'key': 'properties.priority', 'type': 'int'},
8874        'direction': {'key': 'properties.direction', 'type': 'str'},
8875        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
8876    }
8877
8878    def __init__(
8879        self,
8880        **kwargs
8881    ):
8882        super(SecurityRule, self).__init__(**kwargs)
8883        self.name = kwargs.get('name', None)
8884        self.etag = kwargs.get('etag', None)
8885        self.description = kwargs.get('description', None)
8886        self.protocol = kwargs.get('protocol', None)
8887        self.source_port_range = kwargs.get('source_port_range', None)
8888        self.destination_port_range = kwargs.get('destination_port_range', None)
8889        self.source_address_prefix = kwargs.get('source_address_prefix', None)
8890        self.source_address_prefixes = kwargs.get('source_address_prefixes', None)
8891        self.source_application_security_groups = kwargs.get('source_application_security_groups', None)
8892        self.destination_address_prefix = kwargs.get('destination_address_prefix', None)
8893        self.destination_address_prefixes = kwargs.get('destination_address_prefixes', None)
8894        self.destination_application_security_groups = kwargs.get('destination_application_security_groups', None)
8895        self.source_port_ranges = kwargs.get('source_port_ranges', None)
8896        self.destination_port_ranges = kwargs.get('destination_port_ranges', None)
8897        self.access = kwargs.get('access', None)
8898        self.priority = kwargs.get('priority', None)
8899        self.direction = kwargs.get('direction', None)
8900        self.provisioning_state = kwargs.get('provisioning_state', None)
8901
8902
8903class SecurityRuleAssociations(msrest.serialization.Model):
8904    """All security rules associated with the network interface.
8905
8906    :param network_interface_association: Network interface and its custom security rules.
8907    :type network_interface_association:
8908     ~azure.mgmt.network.v2018_07_01.models.NetworkInterfaceAssociation
8909    :param subnet_association: Network interface and its custom security rules.
8910    :type subnet_association: ~azure.mgmt.network.v2018_07_01.models.SubnetAssociation
8911    :param default_security_rules: Collection of default security rules of the network security
8912     group.
8913    :type default_security_rules: list[~azure.mgmt.network.v2018_07_01.models.SecurityRule]
8914    :param effective_security_rules: Collection of effective security rules.
8915    :type effective_security_rules:
8916     list[~azure.mgmt.network.v2018_07_01.models.EffectiveNetworkSecurityRule]
8917    """
8918
8919    _attribute_map = {
8920        'network_interface_association': {'key': 'networkInterfaceAssociation', 'type': 'NetworkInterfaceAssociation'},
8921        'subnet_association': {'key': 'subnetAssociation', 'type': 'SubnetAssociation'},
8922        'default_security_rules': {'key': 'defaultSecurityRules', 'type': '[SecurityRule]'},
8923        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
8924    }
8925
8926    def __init__(
8927        self,
8928        **kwargs
8929    ):
8930        super(SecurityRuleAssociations, self).__init__(**kwargs)
8931        self.network_interface_association = kwargs.get('network_interface_association', None)
8932        self.subnet_association = kwargs.get('subnet_association', None)
8933        self.default_security_rules = kwargs.get('default_security_rules', None)
8934        self.effective_security_rules = kwargs.get('effective_security_rules', None)
8935
8936
8937class SecurityRuleListResult(msrest.serialization.Model):
8938    """Response for ListSecurityRule API service call. Retrieves all security rules that belongs to a network security group.
8939
8940    :param value: The security rules in a network security group.
8941    :type value: list[~azure.mgmt.network.v2018_07_01.models.SecurityRule]
8942    :param next_link: The URL to get the next set of results.
8943    :type next_link: str
8944    """
8945
8946    _attribute_map = {
8947        'value': {'key': 'value', 'type': '[SecurityRule]'},
8948        'next_link': {'key': 'nextLink', 'type': 'str'},
8949    }
8950
8951    def __init__(
8952        self,
8953        **kwargs
8954    ):
8955        super(SecurityRuleListResult, self).__init__(**kwargs)
8956        self.value = kwargs.get('value', None)
8957        self.next_link = kwargs.get('next_link', None)
8958
8959
8960class ServiceEndpointPolicy(Resource):
8961    """Service End point policy resource.
8962
8963    Variables are only populated by the server, and will be ignored when sending a request.
8964
8965    :param id: Resource ID.
8966    :type id: str
8967    :ivar name: Resource name.
8968    :vartype name: str
8969    :ivar type: Resource type.
8970    :vartype type: str
8971    :param location: Resource location.
8972    :type location: str
8973    :param tags: A set of tags. Resource tags.
8974    :type tags: dict[str, str]
8975    :param etag: A unique read-only string that changes whenever the resource is updated.
8976    :type etag: str
8977    :param service_endpoint_policy_definitions: A collection of service endpoint policy definitions
8978     of the service endpoint policy.
8979    :type service_endpoint_policy_definitions:
8980     list[~azure.mgmt.network.v2018_07_01.models.ServiceEndpointPolicyDefinition]
8981    :param resource_guid: The resource GUID property of the service endpoint policy resource.
8982    :type resource_guid: str
8983    :param provisioning_state: The provisioning state of the service endpoint policy. Possible
8984     values are: 'Updating', 'Deleting', and 'Failed'.
8985    :type provisioning_state: str
8986    """
8987
8988    _validation = {
8989        'name': {'readonly': True},
8990        'type': {'readonly': True},
8991    }
8992
8993    _attribute_map = {
8994        'id': {'key': 'id', 'type': 'str'},
8995        'name': {'key': 'name', 'type': 'str'},
8996        'type': {'key': 'type', 'type': 'str'},
8997        'location': {'key': 'location', 'type': 'str'},
8998        'tags': {'key': 'tags', 'type': '{str}'},
8999        'etag': {'key': 'etag', 'type': 'str'},
9000        'service_endpoint_policy_definitions': {'key': 'properties.serviceEndpointPolicyDefinitions', 'type': '[ServiceEndpointPolicyDefinition]'},
9001        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
9002        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9003    }
9004
9005    def __init__(
9006        self,
9007        **kwargs
9008    ):
9009        super(ServiceEndpointPolicy, self).__init__(**kwargs)
9010        self.etag = kwargs.get('etag', None)
9011        self.service_endpoint_policy_definitions = kwargs.get('service_endpoint_policy_definitions', None)
9012        self.resource_guid = kwargs.get('resource_guid', None)
9013        self.provisioning_state = kwargs.get('provisioning_state', None)
9014
9015
9016class ServiceEndpointPolicyDefinition(SubResource):
9017    """Service Endpoint policy definitions.
9018
9019    :param id: Resource ID.
9020    :type id: str
9021    :param name: The name of the resource that is unique within a resource group. This name can be
9022     used to access the resource.
9023    :type name: str
9024    :param etag: A unique read-only string that changes whenever the resource is updated.
9025    :type etag: str
9026    :param description: A description for this rule. Restricted to 140 chars.
9027    :type description: str
9028    :param service: service endpoint name.
9029    :type service: str
9030    :param service_resources: A list of service resources.
9031    :type service_resources: list[str]
9032    :param provisioning_state: The provisioning state of the service end point policy definition.
9033     Possible values are: 'Updating', 'Deleting', and 'Failed'.
9034    :type provisioning_state: str
9035    """
9036
9037    _attribute_map = {
9038        'id': {'key': 'id', 'type': 'str'},
9039        'name': {'key': 'name', 'type': 'str'},
9040        'etag': {'key': 'etag', 'type': 'str'},
9041        'description': {'key': 'properties.description', 'type': 'str'},
9042        'service': {'key': 'properties.service', 'type': 'str'},
9043        'service_resources': {'key': 'properties.serviceResources', 'type': '[str]'},
9044        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9045    }
9046
9047    def __init__(
9048        self,
9049        **kwargs
9050    ):
9051        super(ServiceEndpointPolicyDefinition, self).__init__(**kwargs)
9052        self.name = kwargs.get('name', None)
9053        self.etag = kwargs.get('etag', None)
9054        self.description = kwargs.get('description', None)
9055        self.service = kwargs.get('service', None)
9056        self.service_resources = kwargs.get('service_resources', None)
9057        self.provisioning_state = kwargs.get('provisioning_state', None)
9058
9059
9060class ServiceEndpointPolicyDefinitionListResult(msrest.serialization.Model):
9061    """Response for ListServiceEndpointPolicyDefinition API service call. Retrieves all service endpoint policy definition that belongs to a service endpoint policy.
9062
9063    :param value: The service endpoint policy definition in a service endpoint policy.
9064    :type value: list[~azure.mgmt.network.v2018_07_01.models.ServiceEndpointPolicyDefinition]
9065    :param next_link: The URL to get the next set of results.
9066    :type next_link: str
9067    """
9068
9069    _attribute_map = {
9070        'value': {'key': 'value', 'type': '[ServiceEndpointPolicyDefinition]'},
9071        'next_link': {'key': 'nextLink', 'type': 'str'},
9072    }
9073
9074    def __init__(
9075        self,
9076        **kwargs
9077    ):
9078        super(ServiceEndpointPolicyDefinitionListResult, self).__init__(**kwargs)
9079        self.value = kwargs.get('value', None)
9080        self.next_link = kwargs.get('next_link', None)
9081
9082
9083class ServiceEndpointPolicyListResult(msrest.serialization.Model):
9084    """Response for ListServiceEndpointPolicies API service call.
9085
9086    Variables are only populated by the server, and will be ignored when sending a request.
9087
9088    :param value: A list of ServiceEndpointPolicy resources.
9089    :type value: list[~azure.mgmt.network.v2018_07_01.models.ServiceEndpointPolicy]
9090    :ivar next_link: The URL to get the next set of results.
9091    :vartype next_link: str
9092    """
9093
9094    _validation = {
9095        'next_link': {'readonly': True},
9096    }
9097
9098    _attribute_map = {
9099        'value': {'key': 'value', 'type': '[ServiceEndpointPolicy]'},
9100        'next_link': {'key': 'nextLink', 'type': 'str'},
9101    }
9102
9103    def __init__(
9104        self,
9105        **kwargs
9106    ):
9107        super(ServiceEndpointPolicyListResult, self).__init__(**kwargs)
9108        self.value = kwargs.get('value', None)
9109        self.next_link = None
9110
9111
9112class ServiceEndpointPropertiesFormat(msrest.serialization.Model):
9113    """The service endpoint properties.
9114
9115    :param service: The type of the endpoint service.
9116    :type service: str
9117    :param locations: A list of locations.
9118    :type locations: list[str]
9119    :param provisioning_state: The provisioning state of the resource.
9120    :type provisioning_state: str
9121    """
9122
9123    _attribute_map = {
9124        'service': {'key': 'service', 'type': 'str'},
9125        'locations': {'key': 'locations', 'type': '[str]'},
9126        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
9127    }
9128
9129    def __init__(
9130        self,
9131        **kwargs
9132    ):
9133        super(ServiceEndpointPropertiesFormat, self).__init__(**kwargs)
9134        self.service = kwargs.get('service', None)
9135        self.locations = kwargs.get('locations', None)
9136        self.provisioning_state = kwargs.get('provisioning_state', None)
9137
9138
9139class Subnet(SubResource):
9140    """Subnet in a virtual network resource.
9141
9142    Variables are only populated by the server, and will be ignored when sending a request.
9143
9144    :param id: Resource ID.
9145    :type id: str
9146    :param name: The name of the resource that is unique within a resource group. This name can be
9147     used to access the resource.
9148    :type name: str
9149    :param etag: A unique read-only string that changes whenever the resource is updated.
9150    :type etag: str
9151    :param address_prefix: The address prefix for the subnet.
9152    :type address_prefix: str
9153    :param network_security_group: The reference of the NetworkSecurityGroup resource.
9154    :type network_security_group: ~azure.mgmt.network.v2018_07_01.models.NetworkSecurityGroup
9155    :param route_table: The reference of the RouteTable resource.
9156    :type route_table: ~azure.mgmt.network.v2018_07_01.models.RouteTable
9157    :param service_endpoints: An array of service endpoints.
9158    :type service_endpoints:
9159     list[~azure.mgmt.network.v2018_07_01.models.ServiceEndpointPropertiesFormat]
9160    :param service_endpoint_policies: An array of service endpoint policies.
9161    :type service_endpoint_policies:
9162     list[~azure.mgmt.network.v2018_07_01.models.ServiceEndpointPolicy]
9163    :ivar ip_configurations: Gets an array of references to the network interface IP configurations
9164     using subnet.
9165    :vartype ip_configurations: list[~azure.mgmt.network.v2018_07_01.models.IPConfiguration]
9166    :param resource_navigation_links: Gets an array of references to the external resources using
9167     subnet.
9168    :type resource_navigation_links:
9169     list[~azure.mgmt.network.v2018_07_01.models.ResourceNavigationLink]
9170    :param provisioning_state: The provisioning state of the resource.
9171    :type provisioning_state: str
9172    """
9173
9174    _validation = {
9175        'ip_configurations': {'readonly': True},
9176    }
9177
9178    _attribute_map = {
9179        'id': {'key': 'id', 'type': 'str'},
9180        'name': {'key': 'name', 'type': 'str'},
9181        'etag': {'key': 'etag', 'type': 'str'},
9182        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
9183        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
9184        'route_table': {'key': 'properties.routeTable', 'type': 'RouteTable'},
9185        'service_endpoints': {'key': 'properties.serviceEndpoints', 'type': '[ServiceEndpointPropertiesFormat]'},
9186        'service_endpoint_policies': {'key': 'properties.serviceEndpointPolicies', 'type': '[ServiceEndpointPolicy]'},
9187        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfiguration]'},
9188        'resource_navigation_links': {'key': 'properties.resourceNavigationLinks', 'type': '[ResourceNavigationLink]'},
9189        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9190    }
9191
9192    def __init__(
9193        self,
9194        **kwargs
9195    ):
9196        super(Subnet, self).__init__(**kwargs)
9197        self.name = kwargs.get('name', None)
9198        self.etag = kwargs.get('etag', None)
9199        self.address_prefix = kwargs.get('address_prefix', None)
9200        self.network_security_group = kwargs.get('network_security_group', None)
9201        self.route_table = kwargs.get('route_table', None)
9202        self.service_endpoints = kwargs.get('service_endpoints', None)
9203        self.service_endpoint_policies = kwargs.get('service_endpoint_policies', None)
9204        self.ip_configurations = None
9205        self.resource_navigation_links = kwargs.get('resource_navigation_links', None)
9206        self.provisioning_state = kwargs.get('provisioning_state', None)
9207
9208
9209class SubnetAssociation(msrest.serialization.Model):
9210    """Network interface and its custom security rules.
9211
9212    Variables are only populated by the server, and will be ignored when sending a request.
9213
9214    :ivar id: Subnet ID.
9215    :vartype id: str
9216    :param security_rules: Collection of custom security rules.
9217    :type security_rules: list[~azure.mgmt.network.v2018_07_01.models.SecurityRule]
9218    """
9219
9220    _validation = {
9221        'id': {'readonly': True},
9222    }
9223
9224    _attribute_map = {
9225        'id': {'key': 'id', 'type': 'str'},
9226        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
9227    }
9228
9229    def __init__(
9230        self,
9231        **kwargs
9232    ):
9233        super(SubnetAssociation, self).__init__(**kwargs)
9234        self.id = None
9235        self.security_rules = kwargs.get('security_rules', None)
9236
9237
9238class SubnetListResult(msrest.serialization.Model):
9239    """Response for ListSubnets API service callRetrieves all subnet that belongs to a virtual network.
9240
9241    :param value: The subnets in a virtual network.
9242    :type value: list[~azure.mgmt.network.v2018_07_01.models.Subnet]
9243    :param next_link: The URL to get the next set of results.
9244    :type next_link: str
9245    """
9246
9247    _attribute_map = {
9248        'value': {'key': 'value', 'type': '[Subnet]'},
9249        'next_link': {'key': 'nextLink', 'type': 'str'},
9250    }
9251
9252    def __init__(
9253        self,
9254        **kwargs
9255    ):
9256        super(SubnetListResult, self).__init__(**kwargs)
9257        self.value = kwargs.get('value', None)
9258        self.next_link = kwargs.get('next_link', None)
9259
9260
9261class TagsObject(msrest.serialization.Model):
9262    """Tags object for patch operations.
9263
9264    :param tags: A set of tags. Resource tags.
9265    :type tags: dict[str, str]
9266    """
9267
9268    _attribute_map = {
9269        'tags': {'key': 'tags', 'type': '{str}'},
9270    }
9271
9272    def __init__(
9273        self,
9274        **kwargs
9275    ):
9276        super(TagsObject, self).__init__(**kwargs)
9277        self.tags = kwargs.get('tags', None)
9278
9279
9280class Topology(msrest.serialization.Model):
9281    """Topology of the specified resource group.
9282
9283    Variables are only populated by the server, and will be ignored when sending a request.
9284
9285    :ivar id: GUID representing the operation id.
9286    :vartype id: str
9287    :ivar created_date_time: The datetime when the topology was initially created for the resource
9288     group.
9289    :vartype created_date_time: ~datetime.datetime
9290    :ivar last_modified: The datetime when the topology was last modified.
9291    :vartype last_modified: ~datetime.datetime
9292    :param resources:
9293    :type resources: list[~azure.mgmt.network.v2018_07_01.models.TopologyResource]
9294    """
9295
9296    _validation = {
9297        'id': {'readonly': True},
9298        'created_date_time': {'readonly': True},
9299        'last_modified': {'readonly': True},
9300    }
9301
9302    _attribute_map = {
9303        'id': {'key': 'id', 'type': 'str'},
9304        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
9305        'last_modified': {'key': 'lastModified', 'type': 'iso-8601'},
9306        'resources': {'key': 'resources', 'type': '[TopologyResource]'},
9307    }
9308
9309    def __init__(
9310        self,
9311        **kwargs
9312    ):
9313        super(Topology, self).__init__(**kwargs)
9314        self.id = None
9315        self.created_date_time = None
9316        self.last_modified = None
9317        self.resources = kwargs.get('resources', None)
9318
9319
9320class TopologyAssociation(msrest.serialization.Model):
9321    """Resources that have an association with the parent resource.
9322
9323    :param name: The name of the resource that is associated with the parent resource.
9324    :type name: str
9325    :param resource_id: The ID of the resource that is associated with the parent resource.
9326    :type resource_id: str
9327    :param association_type: The association type of the child resource to the parent resource.
9328     Possible values include: "Associated", "Contains".
9329    :type association_type: str or ~azure.mgmt.network.v2018_07_01.models.AssociationType
9330    """
9331
9332    _attribute_map = {
9333        'name': {'key': 'name', 'type': 'str'},
9334        'resource_id': {'key': 'resourceId', 'type': 'str'},
9335        'association_type': {'key': 'associationType', 'type': 'str'},
9336    }
9337
9338    def __init__(
9339        self,
9340        **kwargs
9341    ):
9342        super(TopologyAssociation, self).__init__(**kwargs)
9343        self.name = kwargs.get('name', None)
9344        self.resource_id = kwargs.get('resource_id', None)
9345        self.association_type = kwargs.get('association_type', None)
9346
9347
9348class TopologyParameters(msrest.serialization.Model):
9349    """Parameters that define the representation of topology.
9350
9351    :param target_resource_group_name: The name of the target resource group to perform topology
9352     on.
9353    :type target_resource_group_name: str
9354    :param target_virtual_network: The reference of the Virtual Network resource.
9355    :type target_virtual_network: ~azure.mgmt.network.v2018_07_01.models.SubResource
9356    :param target_subnet: The reference of the Subnet resource.
9357    :type target_subnet: ~azure.mgmt.network.v2018_07_01.models.SubResource
9358    """
9359
9360    _attribute_map = {
9361        'target_resource_group_name': {'key': 'targetResourceGroupName', 'type': 'str'},
9362        'target_virtual_network': {'key': 'targetVirtualNetwork', 'type': 'SubResource'},
9363        'target_subnet': {'key': 'targetSubnet', 'type': 'SubResource'},
9364    }
9365
9366    def __init__(
9367        self,
9368        **kwargs
9369    ):
9370        super(TopologyParameters, self).__init__(**kwargs)
9371        self.target_resource_group_name = kwargs.get('target_resource_group_name', None)
9372        self.target_virtual_network = kwargs.get('target_virtual_network', None)
9373        self.target_subnet = kwargs.get('target_subnet', None)
9374
9375
9376class TopologyResource(msrest.serialization.Model):
9377    """The network resource topology information for the given resource group.
9378
9379    :param name: Name of the resource.
9380    :type name: str
9381    :param id: ID of the resource.
9382    :type id: str
9383    :param location: Resource location.
9384    :type location: str
9385    :param associations: Holds the associations the resource has with other resources in the
9386     resource group.
9387    :type associations: list[~azure.mgmt.network.v2018_07_01.models.TopologyAssociation]
9388    """
9389
9390    _attribute_map = {
9391        'name': {'key': 'name', 'type': 'str'},
9392        'id': {'key': 'id', 'type': 'str'},
9393        'location': {'key': 'location', 'type': 'str'},
9394        'associations': {'key': 'associations', 'type': '[TopologyAssociation]'},
9395    }
9396
9397    def __init__(
9398        self,
9399        **kwargs
9400    ):
9401        super(TopologyResource, self).__init__(**kwargs)
9402        self.name = kwargs.get('name', None)
9403        self.id = kwargs.get('id', None)
9404        self.location = kwargs.get('location', None)
9405        self.associations = kwargs.get('associations', None)
9406
9407
9408class TrafficAnalyticsConfigurationProperties(msrest.serialization.Model):
9409    """Parameters that define the configuration of traffic analytics.
9410
9411    All required parameters must be populated in order to send to Azure.
9412
9413    :param enabled: Required. Flag to enable/disable traffic analytics.
9414    :type enabled: bool
9415    :param workspace_id: Required. The resource guid of the attached workspace.
9416    :type workspace_id: str
9417    :param workspace_region: Required. The location of the attached workspace.
9418    :type workspace_region: str
9419    :param workspace_resource_id: Required. Resource Id of the attached workspace.
9420    :type workspace_resource_id: str
9421    """
9422
9423    _validation = {
9424        'enabled': {'required': True},
9425        'workspace_id': {'required': True},
9426        'workspace_region': {'required': True},
9427        'workspace_resource_id': {'required': True},
9428    }
9429
9430    _attribute_map = {
9431        'enabled': {'key': 'enabled', 'type': 'bool'},
9432        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
9433        'workspace_region': {'key': 'workspaceRegion', 'type': 'str'},
9434        'workspace_resource_id': {'key': 'workspaceResourceId', 'type': 'str'},
9435    }
9436
9437    def __init__(
9438        self,
9439        **kwargs
9440    ):
9441        super(TrafficAnalyticsConfigurationProperties, self).__init__(**kwargs)
9442        self.enabled = kwargs['enabled']
9443        self.workspace_id = kwargs['workspace_id']
9444        self.workspace_region = kwargs['workspace_region']
9445        self.workspace_resource_id = kwargs['workspace_resource_id']
9446
9447
9448class TrafficAnalyticsProperties(msrest.serialization.Model):
9449    """Parameters that define the configuration of traffic analytics.
9450
9451    All required parameters must be populated in order to send to Azure.
9452
9453    :param network_watcher_flow_analytics_configuration: Required. Parameters that define the
9454     configuration of traffic analytics.
9455    :type network_watcher_flow_analytics_configuration:
9456     ~azure.mgmt.network.v2018_07_01.models.TrafficAnalyticsConfigurationProperties
9457    """
9458
9459    _validation = {
9460        'network_watcher_flow_analytics_configuration': {'required': True},
9461    }
9462
9463    _attribute_map = {
9464        'network_watcher_flow_analytics_configuration': {'key': 'networkWatcherFlowAnalyticsConfiguration', 'type': 'TrafficAnalyticsConfigurationProperties'},
9465    }
9466
9467    def __init__(
9468        self,
9469        **kwargs
9470    ):
9471        super(TrafficAnalyticsProperties, self).__init__(**kwargs)
9472        self.network_watcher_flow_analytics_configuration = kwargs['network_watcher_flow_analytics_configuration']
9473
9474
9475class TrafficQuery(msrest.serialization.Model):
9476    """Parameters to compare with network configuration.
9477
9478    All required parameters must be populated in order to send to Azure.
9479
9480    :param direction: Required. The direction of the traffic. Accepted values are 'Inbound' and
9481     'Outbound'. Possible values include: "Inbound", "Outbound".
9482    :type direction: str or ~azure.mgmt.network.v2018_07_01.models.Direction
9483    :param protocol: Required. Protocol to be verified on. Accepted values are '*', TCP, UDP.
9484    :type protocol: str
9485    :param source: Required. Traffic source. Accepted values are '*', IP Address/CIDR, Service Tag.
9486    :type source: str
9487    :param destination: Required. Traffic destination. Accepted values are: '*', IP Address/CIDR,
9488     Service Tag.
9489    :type destination: str
9490    :param destination_port: Required. Traffic destination port. Accepted values are '*', port (for
9491     example, 3389) and port range (for example, 80-100).
9492    :type destination_port: str
9493    """
9494
9495    _validation = {
9496        'direction': {'required': True},
9497        'protocol': {'required': True},
9498        'source': {'required': True},
9499        'destination': {'required': True},
9500        'destination_port': {'required': True},
9501    }
9502
9503    _attribute_map = {
9504        'direction': {'key': 'direction', 'type': 'str'},
9505        'protocol': {'key': 'protocol', 'type': 'str'},
9506        'source': {'key': 'source', 'type': 'str'},
9507        'destination': {'key': 'destination', 'type': 'str'},
9508        'destination_port': {'key': 'destinationPort', 'type': 'str'},
9509    }
9510
9511    def __init__(
9512        self,
9513        **kwargs
9514    ):
9515        super(TrafficQuery, self).__init__(**kwargs)
9516        self.direction = kwargs['direction']
9517        self.protocol = kwargs['protocol']
9518        self.source = kwargs['source']
9519        self.destination = kwargs['destination']
9520        self.destination_port = kwargs['destination_port']
9521
9522
9523class TroubleshootingDetails(msrest.serialization.Model):
9524    """Information gained from troubleshooting of specified resource.
9525
9526    :param id: The id of the get troubleshoot operation.
9527    :type id: str
9528    :param reason_type: Reason type of failure.
9529    :type reason_type: str
9530    :param summary: A summary of troubleshooting.
9531    :type summary: str
9532    :param detail: Details on troubleshooting results.
9533    :type detail: str
9534    :param recommended_actions: List of recommended actions.
9535    :type recommended_actions:
9536     list[~azure.mgmt.network.v2018_07_01.models.TroubleshootingRecommendedActions]
9537    """
9538
9539    _attribute_map = {
9540        'id': {'key': 'id', 'type': 'str'},
9541        'reason_type': {'key': 'reasonType', 'type': 'str'},
9542        'summary': {'key': 'summary', 'type': 'str'},
9543        'detail': {'key': 'detail', 'type': 'str'},
9544        'recommended_actions': {'key': 'recommendedActions', 'type': '[TroubleshootingRecommendedActions]'},
9545    }
9546
9547    def __init__(
9548        self,
9549        **kwargs
9550    ):
9551        super(TroubleshootingDetails, self).__init__(**kwargs)
9552        self.id = kwargs.get('id', None)
9553        self.reason_type = kwargs.get('reason_type', None)
9554        self.summary = kwargs.get('summary', None)
9555        self.detail = kwargs.get('detail', None)
9556        self.recommended_actions = kwargs.get('recommended_actions', None)
9557
9558
9559class TroubleshootingParameters(msrest.serialization.Model):
9560    """Parameters that define the resource to troubleshoot.
9561
9562    All required parameters must be populated in order to send to Azure.
9563
9564    :param target_resource_id: Required. The target resource to troubleshoot.
9565    :type target_resource_id: str
9566    :param storage_id: Required. The ID for the storage account to save the troubleshoot result.
9567    :type storage_id: str
9568    :param storage_path: Required. The path to the blob to save the troubleshoot result in.
9569    :type storage_path: str
9570    """
9571
9572    _validation = {
9573        'target_resource_id': {'required': True},
9574        'storage_id': {'required': True},
9575        'storage_path': {'required': True},
9576    }
9577
9578    _attribute_map = {
9579        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
9580        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
9581        'storage_path': {'key': 'properties.storagePath', 'type': 'str'},
9582    }
9583
9584    def __init__(
9585        self,
9586        **kwargs
9587    ):
9588        super(TroubleshootingParameters, self).__init__(**kwargs)
9589        self.target_resource_id = kwargs['target_resource_id']
9590        self.storage_id = kwargs['storage_id']
9591        self.storage_path = kwargs['storage_path']
9592
9593
9594class TroubleshootingRecommendedActions(msrest.serialization.Model):
9595    """Recommended actions based on discovered issues.
9596
9597    :param action_id: ID of the recommended action.
9598    :type action_id: str
9599    :param action_text: Description of recommended actions.
9600    :type action_text: str
9601    :param action_uri: The uri linking to a documentation for the recommended troubleshooting
9602     actions.
9603    :type action_uri: str
9604    :param action_uri_text: The information from the URI for the recommended troubleshooting
9605     actions.
9606    :type action_uri_text: str
9607    """
9608
9609    _attribute_map = {
9610        'action_id': {'key': 'actionId', 'type': 'str'},
9611        'action_text': {'key': 'actionText', 'type': 'str'},
9612        'action_uri': {'key': 'actionUri', 'type': 'str'},
9613        'action_uri_text': {'key': 'actionUriText', 'type': 'str'},
9614    }
9615
9616    def __init__(
9617        self,
9618        **kwargs
9619    ):
9620        super(TroubleshootingRecommendedActions, self).__init__(**kwargs)
9621        self.action_id = kwargs.get('action_id', None)
9622        self.action_text = kwargs.get('action_text', None)
9623        self.action_uri = kwargs.get('action_uri', None)
9624        self.action_uri_text = kwargs.get('action_uri_text', None)
9625
9626
9627class TroubleshootingResult(msrest.serialization.Model):
9628    """Troubleshooting information gained from specified resource.
9629
9630    :param start_time: The start time of the troubleshooting.
9631    :type start_time: ~datetime.datetime
9632    :param end_time: The end time of the troubleshooting.
9633    :type end_time: ~datetime.datetime
9634    :param code: The result code of the troubleshooting.
9635    :type code: str
9636    :param results: Information from troubleshooting.
9637    :type results: list[~azure.mgmt.network.v2018_07_01.models.TroubleshootingDetails]
9638    """
9639
9640    _attribute_map = {
9641        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
9642        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
9643        'code': {'key': 'code', 'type': 'str'},
9644        'results': {'key': 'results', 'type': '[TroubleshootingDetails]'},
9645    }
9646
9647    def __init__(
9648        self,
9649        **kwargs
9650    ):
9651        super(TroubleshootingResult, self).__init__(**kwargs)
9652        self.start_time = kwargs.get('start_time', None)
9653        self.end_time = kwargs.get('end_time', None)
9654        self.code = kwargs.get('code', None)
9655        self.results = kwargs.get('results', None)
9656
9657
9658class TunnelConnectionHealth(msrest.serialization.Model):
9659    """VirtualNetworkGatewayConnection properties.
9660
9661    Variables are only populated by the server, and will be ignored when sending a request.
9662
9663    :ivar tunnel: Tunnel name.
9664    :vartype tunnel: str
9665    :ivar connection_status: Virtual network Gateway connection status. Possible values include:
9666     "Unknown", "Connecting", "Connected", "NotConnected".
9667    :vartype connection_status: str or
9668     ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewayConnectionStatus
9669    :ivar ingress_bytes_transferred: The Ingress Bytes Transferred in this connection.
9670    :vartype ingress_bytes_transferred: long
9671    :ivar egress_bytes_transferred: The Egress Bytes Transferred in this connection.
9672    :vartype egress_bytes_transferred: long
9673    :ivar last_connection_established_utc_time: The time at which connection was established in Utc
9674     format.
9675    :vartype last_connection_established_utc_time: str
9676    """
9677
9678    _validation = {
9679        'tunnel': {'readonly': True},
9680        'connection_status': {'readonly': True},
9681        'ingress_bytes_transferred': {'readonly': True},
9682        'egress_bytes_transferred': {'readonly': True},
9683        'last_connection_established_utc_time': {'readonly': True},
9684    }
9685
9686    _attribute_map = {
9687        'tunnel': {'key': 'tunnel', 'type': 'str'},
9688        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
9689        'ingress_bytes_transferred': {'key': 'ingressBytesTransferred', 'type': 'long'},
9690        'egress_bytes_transferred': {'key': 'egressBytesTransferred', 'type': 'long'},
9691        'last_connection_established_utc_time': {'key': 'lastConnectionEstablishedUtcTime', 'type': 'str'},
9692    }
9693
9694    def __init__(
9695        self,
9696        **kwargs
9697    ):
9698        super(TunnelConnectionHealth, self).__init__(**kwargs)
9699        self.tunnel = None
9700        self.connection_status = None
9701        self.ingress_bytes_transferred = None
9702        self.egress_bytes_transferred = None
9703        self.last_connection_established_utc_time = None
9704
9705
9706class Usage(msrest.serialization.Model):
9707    """Describes network resource usage.
9708
9709    Variables are only populated by the server, and will be ignored when sending a request.
9710
9711    All required parameters must be populated in order to send to Azure.
9712
9713    :ivar id: Resource identifier.
9714    :vartype id: str
9715    :param unit: Required. An enum describing the unit of measurement. Possible values include:
9716     "Count".
9717    :type unit: str or ~azure.mgmt.network.v2018_07_01.models.UsageUnit
9718    :param current_value: Required. The current value of the usage.
9719    :type current_value: long
9720    :param limit: Required. The limit of usage.
9721    :type limit: long
9722    :param name: Required. The name of the type of usage.
9723    :type name: ~azure.mgmt.network.v2018_07_01.models.UsageName
9724    """
9725
9726    _validation = {
9727        'id': {'readonly': True},
9728        'unit': {'required': True},
9729        'current_value': {'required': True},
9730        'limit': {'required': True},
9731        'name': {'required': True},
9732    }
9733
9734    _attribute_map = {
9735        'id': {'key': 'id', 'type': 'str'},
9736        'unit': {'key': 'unit', 'type': 'str'},
9737        'current_value': {'key': 'currentValue', 'type': 'long'},
9738        'limit': {'key': 'limit', 'type': 'long'},
9739        'name': {'key': 'name', 'type': 'UsageName'},
9740    }
9741
9742    def __init__(
9743        self,
9744        **kwargs
9745    ):
9746        super(Usage, self).__init__(**kwargs)
9747        self.id = None
9748        self.unit = kwargs['unit']
9749        self.current_value = kwargs['current_value']
9750        self.limit = kwargs['limit']
9751        self.name = kwargs['name']
9752
9753
9754class UsageName(msrest.serialization.Model):
9755    """The usage names.
9756
9757    :param value: A string describing the resource name.
9758    :type value: str
9759    :param localized_value: A localized string describing the resource name.
9760    :type localized_value: str
9761    """
9762
9763    _attribute_map = {
9764        'value': {'key': 'value', 'type': 'str'},
9765        'localized_value': {'key': 'localizedValue', 'type': 'str'},
9766    }
9767
9768    def __init__(
9769        self,
9770        **kwargs
9771    ):
9772        super(UsageName, self).__init__(**kwargs)
9773        self.value = kwargs.get('value', None)
9774        self.localized_value = kwargs.get('localized_value', None)
9775
9776
9777class UsagesListResult(msrest.serialization.Model):
9778    """The list usages operation response.
9779
9780    :param value: The list network resource usages.
9781    :type value: list[~azure.mgmt.network.v2018_07_01.models.Usage]
9782    :param next_link: URL to get the next set of results.
9783    :type next_link: str
9784    """
9785
9786    _attribute_map = {
9787        'value': {'key': 'value', 'type': '[Usage]'},
9788        'next_link': {'key': 'nextLink', 'type': 'str'},
9789    }
9790
9791    def __init__(
9792        self,
9793        **kwargs
9794    ):
9795        super(UsagesListResult, self).__init__(**kwargs)
9796        self.value = kwargs.get('value', None)
9797        self.next_link = kwargs.get('next_link', None)
9798
9799
9800class VerificationIPFlowParameters(msrest.serialization.Model):
9801    """Parameters that define the IP flow to be verified.
9802
9803    All required parameters must be populated in order to send to Azure.
9804
9805    :param target_resource_id: Required. The ID of the target resource to perform next-hop on.
9806    :type target_resource_id: str
9807    :param direction: Required. The direction of the packet represented as a 5-tuple. Possible
9808     values include: "Inbound", "Outbound".
9809    :type direction: str or ~azure.mgmt.network.v2018_07_01.models.Direction
9810    :param protocol: Required. Protocol to be verified on. Possible values include: "TCP", "UDP".
9811    :type protocol: str or ~azure.mgmt.network.v2018_07_01.models.IpFlowProtocol
9812    :param local_port: Required. The local port. Acceptable values are a single integer in the
9813     range (0-65535). Support for * for the source port, which depends on the direction.
9814    :type local_port: str
9815    :param remote_port: Required. The remote port. Acceptable values are a single integer in the
9816     range (0-65535). Support for * for the source port, which depends on the direction.
9817    :type remote_port: str
9818    :param local_ip_address: Required. The local IP address. Acceptable values are valid IPv4
9819     addresses.
9820    :type local_ip_address: str
9821    :param remote_ip_address: Required. The remote IP address. Acceptable values are valid IPv4
9822     addresses.
9823    :type remote_ip_address: str
9824    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
9825     enabled on any of them, then this parameter must be specified. Otherwise optional).
9826    :type target_nic_resource_id: str
9827    """
9828
9829    _validation = {
9830        'target_resource_id': {'required': True},
9831        'direction': {'required': True},
9832        'protocol': {'required': True},
9833        'local_port': {'required': True},
9834        'remote_port': {'required': True},
9835        'local_ip_address': {'required': True},
9836        'remote_ip_address': {'required': True},
9837    }
9838
9839    _attribute_map = {
9840        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
9841        'direction': {'key': 'direction', 'type': 'str'},
9842        'protocol': {'key': 'protocol', 'type': 'str'},
9843        'local_port': {'key': 'localPort', 'type': 'str'},
9844        'remote_port': {'key': 'remotePort', 'type': 'str'},
9845        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
9846        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
9847        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
9848    }
9849
9850    def __init__(
9851        self,
9852        **kwargs
9853    ):
9854        super(VerificationIPFlowParameters, self).__init__(**kwargs)
9855        self.target_resource_id = kwargs['target_resource_id']
9856        self.direction = kwargs['direction']
9857        self.protocol = kwargs['protocol']
9858        self.local_port = kwargs['local_port']
9859        self.remote_port = kwargs['remote_port']
9860        self.local_ip_address = kwargs['local_ip_address']
9861        self.remote_ip_address = kwargs['remote_ip_address']
9862        self.target_nic_resource_id = kwargs.get('target_nic_resource_id', None)
9863
9864
9865class VerificationIPFlowResult(msrest.serialization.Model):
9866    """Results of IP flow verification on the target resource.
9867
9868    :param access: Indicates whether the traffic is allowed or denied. Possible values include:
9869     "Allow", "Deny".
9870    :type access: str or ~azure.mgmt.network.v2018_07_01.models.Access
9871    :param rule_name: Name of the rule. If input is not matched against any security rule, it is
9872     not displayed.
9873    :type rule_name: str
9874    """
9875
9876    _attribute_map = {
9877        'access': {'key': 'access', 'type': 'str'},
9878        'rule_name': {'key': 'ruleName', 'type': 'str'},
9879    }
9880
9881    def __init__(
9882        self,
9883        **kwargs
9884    ):
9885        super(VerificationIPFlowResult, self).__init__(**kwargs)
9886        self.access = kwargs.get('access', None)
9887        self.rule_name = kwargs.get('rule_name', None)
9888
9889
9890class VirtualHub(Resource):
9891    """VirtualHub Resource.
9892
9893    Variables are only populated by the server, and will be ignored when sending a request.
9894
9895    :param id: Resource ID.
9896    :type id: str
9897    :ivar name: Resource name.
9898    :vartype name: str
9899    :ivar type: Resource type.
9900    :vartype type: str
9901    :param location: Resource location.
9902    :type location: str
9903    :param tags: A set of tags. Resource tags.
9904    :type tags: dict[str, str]
9905    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
9906    :vartype etag: str
9907    :param virtual_wan: The VirtualWAN to which the VirtualHub belongs.
9908    :type virtual_wan: ~azure.mgmt.network.v2018_07_01.models.SubResource
9909    :param hub_virtual_network_connections: list of all vnet connections with this VirtualHub.
9910    :type hub_virtual_network_connections:
9911     list[~azure.mgmt.network.v2018_07_01.models.HubVirtualNetworkConnection]
9912    :param address_prefix: Address-prefix for this VirtualHub.
9913    :type address_prefix: str
9914    :param provisioning_state: The provisioning state of the resource. Possible values include:
9915     "Succeeded", "Updating", "Deleting", "Failed".
9916    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
9917    """
9918
9919    _validation = {
9920        'name': {'readonly': True},
9921        'type': {'readonly': True},
9922        'etag': {'readonly': True},
9923    }
9924
9925    _attribute_map = {
9926        'id': {'key': 'id', 'type': 'str'},
9927        'name': {'key': 'name', 'type': 'str'},
9928        'type': {'key': 'type', 'type': 'str'},
9929        'location': {'key': 'location', 'type': 'str'},
9930        'tags': {'key': 'tags', 'type': '{str}'},
9931        'etag': {'key': 'etag', 'type': 'str'},
9932        'virtual_wan': {'key': 'properties.virtualWan', 'type': 'SubResource'},
9933        'hub_virtual_network_connections': {'key': 'properties.hubVirtualNetworkConnections', 'type': '[HubVirtualNetworkConnection]'},
9934        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
9935        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
9936    }
9937
9938    def __init__(
9939        self,
9940        **kwargs
9941    ):
9942        super(VirtualHub, self).__init__(**kwargs)
9943        self.etag = None
9944        self.virtual_wan = kwargs.get('virtual_wan', None)
9945        self.hub_virtual_network_connections = kwargs.get('hub_virtual_network_connections', None)
9946        self.address_prefix = kwargs.get('address_prefix', None)
9947        self.provisioning_state = kwargs.get('provisioning_state', None)
9948
9949
9950class VirtualNetwork(Resource):
9951    """Virtual Network resource.
9952
9953    Variables are only populated by the server, and will be ignored when sending a request.
9954
9955    :param id: Resource ID.
9956    :type id: str
9957    :ivar name: Resource name.
9958    :vartype name: str
9959    :ivar type: Resource type.
9960    :vartype type: str
9961    :param location: Resource location.
9962    :type location: str
9963    :param tags: A set of tags. Resource tags.
9964    :type tags: dict[str, str]
9965    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
9966    :type etag: str
9967    :param address_space: The AddressSpace that contains an array of IP address ranges that can be
9968     used by subnets.
9969    :type address_space: ~azure.mgmt.network.v2018_07_01.models.AddressSpace
9970    :param dhcp_options: The dhcpOptions that contains an array of DNS servers available to VMs
9971     deployed in the virtual network.
9972    :type dhcp_options: ~azure.mgmt.network.v2018_07_01.models.DhcpOptions
9973    :param subnets: A list of subnets in a Virtual Network.
9974    :type subnets: list[~azure.mgmt.network.v2018_07_01.models.Subnet]
9975    :param virtual_network_peerings: A list of peerings in a Virtual Network.
9976    :type virtual_network_peerings:
9977     list[~azure.mgmt.network.v2018_07_01.models.VirtualNetworkPeering]
9978    :param resource_guid: The resourceGuid property of the Virtual Network resource.
9979    :type resource_guid: str
9980    :param provisioning_state: The provisioning state of the PublicIP resource. Possible values
9981     are: 'Updating', 'Deleting', and 'Failed'.
9982    :type provisioning_state: str
9983    :param enable_ddos_protection: Indicates if DDoS protection is enabled for all the protected
9984     resources in the virtual network. It requires a DDoS protection plan associated with the
9985     resource.
9986    :type enable_ddos_protection: bool
9987    :param enable_vm_protection: Indicates if VM protection is enabled for all the subnets in the
9988     virtual network.
9989    :type enable_vm_protection: bool
9990    :param ddos_protection_plan: The DDoS protection plan associated with the virtual network.
9991    :type ddos_protection_plan: ~azure.mgmt.network.v2018_07_01.models.SubResource
9992    """
9993
9994    _validation = {
9995        'name': {'readonly': True},
9996        'type': {'readonly': True},
9997    }
9998
9999    _attribute_map = {
10000        'id': {'key': 'id', 'type': 'str'},
10001        'name': {'key': 'name', 'type': 'str'},
10002        'type': {'key': 'type', 'type': 'str'},
10003        'location': {'key': 'location', 'type': 'str'},
10004        'tags': {'key': 'tags', 'type': '{str}'},
10005        'etag': {'key': 'etag', 'type': 'str'},
10006        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
10007        'dhcp_options': {'key': 'properties.dhcpOptions', 'type': 'DhcpOptions'},
10008        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
10009        'virtual_network_peerings': {'key': 'properties.virtualNetworkPeerings', 'type': '[VirtualNetworkPeering]'},
10010        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
10011        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10012        'enable_ddos_protection': {'key': 'properties.enableDdosProtection', 'type': 'bool'},
10013        'enable_vm_protection': {'key': 'properties.enableVmProtection', 'type': 'bool'},
10014        'ddos_protection_plan': {'key': 'properties.ddosProtectionPlan', 'type': 'SubResource'},
10015    }
10016
10017    def __init__(
10018        self,
10019        **kwargs
10020    ):
10021        super(VirtualNetwork, self).__init__(**kwargs)
10022        self.etag = kwargs.get('etag', None)
10023        self.address_space = kwargs.get('address_space', None)
10024        self.dhcp_options = kwargs.get('dhcp_options', None)
10025        self.subnets = kwargs.get('subnets', None)
10026        self.virtual_network_peerings = kwargs.get('virtual_network_peerings', None)
10027        self.resource_guid = kwargs.get('resource_guid', None)
10028        self.provisioning_state = kwargs.get('provisioning_state', None)
10029        self.enable_ddos_protection = kwargs.get('enable_ddos_protection', False)
10030        self.enable_vm_protection = kwargs.get('enable_vm_protection', False)
10031        self.ddos_protection_plan = kwargs.get('ddos_protection_plan', None)
10032
10033
10034class VirtualNetworkConnectionGatewayReference(msrest.serialization.Model):
10035    """A reference to VirtualNetworkGateway or LocalNetworkGateway resource.
10036
10037    All required parameters must be populated in order to send to Azure.
10038
10039    :param id: Required. The ID of VirtualNetworkGateway or LocalNetworkGateway resource.
10040    :type id: str
10041    """
10042
10043    _validation = {
10044        'id': {'required': True},
10045    }
10046
10047    _attribute_map = {
10048        'id': {'key': 'id', 'type': 'str'},
10049    }
10050
10051    def __init__(
10052        self,
10053        **kwargs
10054    ):
10055        super(VirtualNetworkConnectionGatewayReference, self).__init__(**kwargs)
10056        self.id = kwargs['id']
10057
10058
10059class VirtualNetworkGateway(Resource):
10060    """A common class for general resource information.
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    :ivar name: Resource name.
10067    :vartype name: str
10068    :ivar type: Resource type.
10069    :vartype type: str
10070    :param location: Resource location.
10071    :type location: str
10072    :param tags: A set of tags. Resource tags.
10073    :type tags: dict[str, str]
10074    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
10075    :type etag: str
10076    :param ip_configurations: IP configurations for virtual network gateway.
10077    :type ip_configurations:
10078     list[~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewayIPConfiguration]
10079    :param gateway_type: The type of this virtual network gateway. Possible values are: 'Vpn' and
10080     'ExpressRoute'. Possible values include: "Vpn", "ExpressRoute".
10081    :type gateway_type: str or ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewayType
10082    :param vpn_type: The type of this virtual network gateway. Possible values are: 'PolicyBased'
10083     and 'RouteBased'. Possible values include: "PolicyBased", "RouteBased".
10084    :type vpn_type: str or ~azure.mgmt.network.v2018_07_01.models.VpnType
10085    :param enable_bgp: Whether BGP is enabled for this virtual network gateway or not.
10086    :type enable_bgp: bool
10087    :param active: ActiveActive flag.
10088    :type active: bool
10089    :param gateway_default_site: The reference of the LocalNetworkGateway resource which represents
10090     local network site having default routes. Assign Null value in case of removing existing
10091     default site setting.
10092    :type gateway_default_site: ~azure.mgmt.network.v2018_07_01.models.SubResource
10093    :param sku: The reference of the VirtualNetworkGatewaySku resource which represents the SKU
10094     selected for Virtual network gateway.
10095    :type sku: ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewaySku
10096    :param vpn_client_configuration: The reference of the VpnClientConfiguration resource which
10097     represents the P2S VpnClient configurations.
10098    :type vpn_client_configuration: ~azure.mgmt.network.v2018_07_01.models.VpnClientConfiguration
10099    :param bgp_settings: Virtual network gateway's BGP speaker settings.
10100    :type bgp_settings: ~azure.mgmt.network.v2018_07_01.models.BgpSettings
10101    :param resource_guid: The resource GUID property of the VirtualNetworkGateway resource.
10102    :type resource_guid: str
10103    :ivar provisioning_state: The provisioning state of the VirtualNetworkGateway resource.
10104     Possible values are: 'Updating', 'Deleting', and 'Failed'.
10105    :vartype provisioning_state: str
10106    """
10107
10108    _validation = {
10109        'name': {'readonly': True},
10110        'type': {'readonly': True},
10111        'provisioning_state': {'readonly': True},
10112    }
10113
10114    _attribute_map = {
10115        'id': {'key': 'id', 'type': 'str'},
10116        'name': {'key': 'name', 'type': 'str'},
10117        'type': {'key': 'type', 'type': 'str'},
10118        'location': {'key': 'location', 'type': 'str'},
10119        'tags': {'key': 'tags', 'type': '{str}'},
10120        'etag': {'key': 'etag', 'type': 'str'},
10121        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[VirtualNetworkGatewayIPConfiguration]'},
10122        'gateway_type': {'key': 'properties.gatewayType', 'type': 'str'},
10123        'vpn_type': {'key': 'properties.vpnType', 'type': 'str'},
10124        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
10125        'active': {'key': 'properties.activeActive', 'type': 'bool'},
10126        'gateway_default_site': {'key': 'properties.gatewayDefaultSite', 'type': 'SubResource'},
10127        'sku': {'key': 'properties.sku', 'type': 'VirtualNetworkGatewaySku'},
10128        'vpn_client_configuration': {'key': 'properties.vpnClientConfiguration', 'type': 'VpnClientConfiguration'},
10129        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
10130        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
10131        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10132    }
10133
10134    def __init__(
10135        self,
10136        **kwargs
10137    ):
10138        super(VirtualNetworkGateway, self).__init__(**kwargs)
10139        self.etag = kwargs.get('etag', None)
10140        self.ip_configurations = kwargs.get('ip_configurations', None)
10141        self.gateway_type = kwargs.get('gateway_type', None)
10142        self.vpn_type = kwargs.get('vpn_type', None)
10143        self.enable_bgp = kwargs.get('enable_bgp', None)
10144        self.active = kwargs.get('active', None)
10145        self.gateway_default_site = kwargs.get('gateway_default_site', None)
10146        self.sku = kwargs.get('sku', None)
10147        self.vpn_client_configuration = kwargs.get('vpn_client_configuration', None)
10148        self.bgp_settings = kwargs.get('bgp_settings', None)
10149        self.resource_guid = kwargs.get('resource_guid', None)
10150        self.provisioning_state = None
10151
10152
10153class VirtualNetworkGatewayConnection(Resource):
10154    """A common class for general resource information.
10155
10156    Variables are only populated by the server, and will be ignored when sending a request.
10157
10158    All required parameters must be populated in order to send to Azure.
10159
10160    :param id: Resource ID.
10161    :type id: str
10162    :ivar name: Resource name.
10163    :vartype name: str
10164    :ivar type: Resource type.
10165    :vartype type: str
10166    :param location: Resource location.
10167    :type location: str
10168    :param tags: A set of tags. Resource tags.
10169    :type tags: dict[str, str]
10170    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
10171    :type etag: str
10172    :param authorization_key: The authorizationKey.
10173    :type authorization_key: str
10174    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
10175    :type virtual_network_gateway1: ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGateway
10176    :param virtual_network_gateway2: The reference to virtual network gateway resource.
10177    :type virtual_network_gateway2: ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGateway
10178    :param local_network_gateway2: The reference to local network gateway resource.
10179    :type local_network_gateway2: ~azure.mgmt.network.v2018_07_01.models.LocalNetworkGateway
10180    :param connection_type: Required. Gateway connection type. Possible values are:
10181     'IPsec','Vnet2Vnet','ExpressRoute', and 'VPNClient. Possible values include: "IPsec",
10182     "Vnet2Vnet", "ExpressRoute", "VPNClient".
10183    :type connection_type: str or
10184     ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewayConnectionType
10185    :param routing_weight: The routing weight.
10186    :type routing_weight: int
10187    :param shared_key: The IPSec shared key.
10188    :type shared_key: str
10189    :ivar connection_status: Virtual network Gateway connection status. Possible values are
10190     'Unknown', 'Connecting', 'Connected' and 'NotConnected'. Possible values include: "Unknown",
10191     "Connecting", "Connected", "NotConnected".
10192    :vartype connection_status: str or
10193     ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewayConnectionStatus
10194    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
10195    :vartype tunnel_connection_status:
10196     list[~azure.mgmt.network.v2018_07_01.models.TunnelConnectionHealth]
10197    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
10198    :vartype egress_bytes_transferred: long
10199    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
10200    :vartype ingress_bytes_transferred: long
10201    :param peer: The reference to peerings resource.
10202    :type peer: ~azure.mgmt.network.v2018_07_01.models.SubResource
10203    :param enable_bgp: EnableBgp flag.
10204    :type enable_bgp: bool
10205    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
10206    :type use_policy_based_traffic_selectors: bool
10207    :param ipsec_policies: The IPSec Policies to be considered by this connection.
10208    :type ipsec_policies: list[~azure.mgmt.network.v2018_07_01.models.IpsecPolicy]
10209    :param resource_guid: The resource GUID property of the VirtualNetworkGatewayConnection
10210     resource.
10211    :type resource_guid: str
10212    :ivar provisioning_state: The provisioning state of the VirtualNetworkGatewayConnection
10213     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
10214    :vartype provisioning_state: str
10215    :param express_route_gateway_bypass: Bypass ExpressRoute Gateway for data forwarding.
10216    :type express_route_gateway_bypass: bool
10217    """
10218
10219    _validation = {
10220        'name': {'readonly': True},
10221        'type': {'readonly': True},
10222        'virtual_network_gateway1': {'required': True},
10223        'connection_type': {'required': True},
10224        'connection_status': {'readonly': True},
10225        'tunnel_connection_status': {'readonly': True},
10226        'egress_bytes_transferred': {'readonly': True},
10227        'ingress_bytes_transferred': {'readonly': True},
10228        'provisioning_state': {'readonly': True},
10229    }
10230
10231    _attribute_map = {
10232        'id': {'key': 'id', 'type': 'str'},
10233        'name': {'key': 'name', 'type': 'str'},
10234        'type': {'key': 'type', 'type': 'str'},
10235        'location': {'key': 'location', 'type': 'str'},
10236        'tags': {'key': 'tags', 'type': '{str}'},
10237        'etag': {'key': 'etag', 'type': 'str'},
10238        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
10239        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkGateway'},
10240        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkGateway'},
10241        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'LocalNetworkGateway'},
10242        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
10243        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
10244        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
10245        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
10246        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
10247        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
10248        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
10249        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
10250        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
10251        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
10252        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
10253        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
10254        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10255        'express_route_gateway_bypass': {'key': 'properties.expressRouteGatewayBypass', 'type': 'bool'},
10256    }
10257
10258    def __init__(
10259        self,
10260        **kwargs
10261    ):
10262        super(VirtualNetworkGatewayConnection, self).__init__(**kwargs)
10263        self.etag = kwargs.get('etag', None)
10264        self.authorization_key = kwargs.get('authorization_key', None)
10265        self.virtual_network_gateway1 = kwargs['virtual_network_gateway1']
10266        self.virtual_network_gateway2 = kwargs.get('virtual_network_gateway2', None)
10267        self.local_network_gateway2 = kwargs.get('local_network_gateway2', None)
10268        self.connection_type = kwargs['connection_type']
10269        self.routing_weight = kwargs.get('routing_weight', None)
10270        self.shared_key = kwargs.get('shared_key', None)
10271        self.connection_status = None
10272        self.tunnel_connection_status = None
10273        self.egress_bytes_transferred = None
10274        self.ingress_bytes_transferred = None
10275        self.peer = kwargs.get('peer', None)
10276        self.enable_bgp = kwargs.get('enable_bgp', None)
10277        self.use_policy_based_traffic_selectors = kwargs.get('use_policy_based_traffic_selectors', None)
10278        self.ipsec_policies = kwargs.get('ipsec_policies', None)
10279        self.resource_guid = kwargs.get('resource_guid', None)
10280        self.provisioning_state = None
10281        self.express_route_gateway_bypass = kwargs.get('express_route_gateway_bypass', None)
10282
10283
10284class VirtualNetworkGatewayConnectionListEntity(Resource):
10285    """A common class for general resource information.
10286
10287    Variables are only populated by the server, and will be ignored when sending a request.
10288
10289    All required parameters must be populated in order to send to Azure.
10290
10291    :param id: Resource ID.
10292    :type id: str
10293    :ivar name: Resource name.
10294    :vartype name: str
10295    :ivar type: Resource type.
10296    :vartype type: str
10297    :param location: Resource location.
10298    :type location: str
10299    :param tags: A set of tags. Resource tags.
10300    :type tags: dict[str, str]
10301    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
10302    :type etag: str
10303    :param authorization_key: The authorizationKey.
10304    :type authorization_key: str
10305    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
10306    :type virtual_network_gateway1:
10307     ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkConnectionGatewayReference
10308    :param virtual_network_gateway2: The reference to virtual network gateway resource.
10309    :type virtual_network_gateway2:
10310     ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkConnectionGatewayReference
10311    :param local_network_gateway2: The reference to local network gateway resource.
10312    :type local_network_gateway2:
10313     ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkConnectionGatewayReference
10314    :param connection_type: Required. Gateway connection type. Possible values are:
10315     'IPsec','Vnet2Vnet','ExpressRoute', and 'VPNClient. Possible values include: "IPsec",
10316     "Vnet2Vnet", "ExpressRoute", "VPNClient".
10317    :type connection_type: str or
10318     ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewayConnectionType
10319    :param routing_weight: The routing weight.
10320    :type routing_weight: int
10321    :param shared_key: The IPSec shared key.
10322    :type shared_key: str
10323    :ivar connection_status: Virtual network Gateway connection status. Possible values are
10324     'Unknown', 'Connecting', 'Connected' and 'NotConnected'. Possible values include: "Unknown",
10325     "Connecting", "Connected", "NotConnected".
10326    :vartype connection_status: str or
10327     ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewayConnectionStatus
10328    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
10329    :vartype tunnel_connection_status:
10330     list[~azure.mgmt.network.v2018_07_01.models.TunnelConnectionHealth]
10331    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
10332    :vartype egress_bytes_transferred: long
10333    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
10334    :vartype ingress_bytes_transferred: long
10335    :param peer: The reference to peerings resource.
10336    :type peer: ~azure.mgmt.network.v2018_07_01.models.SubResource
10337    :param enable_bgp: EnableBgp flag.
10338    :type enable_bgp: bool
10339    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
10340    :type use_policy_based_traffic_selectors: bool
10341    :param ipsec_policies: The IPSec Policies to be considered by this connection.
10342    :type ipsec_policies: list[~azure.mgmt.network.v2018_07_01.models.IpsecPolicy]
10343    :param resource_guid: The resource GUID property of the VirtualNetworkGatewayConnection
10344     resource.
10345    :type resource_guid: str
10346    :ivar provisioning_state: The provisioning state of the VirtualNetworkGatewayConnection
10347     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
10348    :vartype provisioning_state: str
10349    :param express_route_gateway_bypass: Bypass ExpressRoute Gateway for data forwarding.
10350    :type express_route_gateway_bypass: bool
10351    """
10352
10353    _validation = {
10354        'name': {'readonly': True},
10355        'type': {'readonly': True},
10356        'virtual_network_gateway1': {'required': True},
10357        'connection_type': {'required': True},
10358        'connection_status': {'readonly': True},
10359        'tunnel_connection_status': {'readonly': True},
10360        'egress_bytes_transferred': {'readonly': True},
10361        'ingress_bytes_transferred': {'readonly': True},
10362        'provisioning_state': {'readonly': True},
10363    }
10364
10365    _attribute_map = {
10366        'id': {'key': 'id', 'type': 'str'},
10367        'name': {'key': 'name', 'type': 'str'},
10368        'type': {'key': 'type', 'type': 'str'},
10369        'location': {'key': 'location', 'type': 'str'},
10370        'tags': {'key': 'tags', 'type': '{str}'},
10371        'etag': {'key': 'etag', 'type': 'str'},
10372        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
10373        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkConnectionGatewayReference'},
10374        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
10375        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
10376        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
10377        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
10378        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
10379        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
10380        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
10381        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
10382        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
10383        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
10384        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
10385        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
10386        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
10387        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
10388        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10389        'express_route_gateway_bypass': {'key': 'properties.expressRouteGatewayBypass', 'type': 'bool'},
10390    }
10391
10392    def __init__(
10393        self,
10394        **kwargs
10395    ):
10396        super(VirtualNetworkGatewayConnectionListEntity, self).__init__(**kwargs)
10397        self.etag = kwargs.get('etag', None)
10398        self.authorization_key = kwargs.get('authorization_key', None)
10399        self.virtual_network_gateway1 = kwargs['virtual_network_gateway1']
10400        self.virtual_network_gateway2 = kwargs.get('virtual_network_gateway2', None)
10401        self.local_network_gateway2 = kwargs.get('local_network_gateway2', None)
10402        self.connection_type = kwargs['connection_type']
10403        self.routing_weight = kwargs.get('routing_weight', None)
10404        self.shared_key = kwargs.get('shared_key', None)
10405        self.connection_status = None
10406        self.tunnel_connection_status = None
10407        self.egress_bytes_transferred = None
10408        self.ingress_bytes_transferred = None
10409        self.peer = kwargs.get('peer', None)
10410        self.enable_bgp = kwargs.get('enable_bgp', None)
10411        self.use_policy_based_traffic_selectors = kwargs.get('use_policy_based_traffic_selectors', None)
10412        self.ipsec_policies = kwargs.get('ipsec_policies', None)
10413        self.resource_guid = kwargs.get('resource_guid', None)
10414        self.provisioning_state = None
10415        self.express_route_gateway_bypass = kwargs.get('express_route_gateway_bypass', None)
10416
10417
10418class VirtualNetworkGatewayConnectionListResult(msrest.serialization.Model):
10419    """Response for the ListVirtualNetworkGatewayConnections API service call.
10420
10421    Variables are only populated by the server, and will be ignored when sending a request.
10422
10423    :param value: Gets a list of VirtualNetworkGatewayConnection resources that exists in a
10424     resource group.
10425    :type value: list[~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewayConnection]
10426    :ivar next_link: The URL to get the next set of results.
10427    :vartype next_link: str
10428    """
10429
10430    _validation = {
10431        'next_link': {'readonly': True},
10432    }
10433
10434    _attribute_map = {
10435        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnection]'},
10436        'next_link': {'key': 'nextLink', 'type': 'str'},
10437    }
10438
10439    def __init__(
10440        self,
10441        **kwargs
10442    ):
10443        super(VirtualNetworkGatewayConnectionListResult, self).__init__(**kwargs)
10444        self.value = kwargs.get('value', None)
10445        self.next_link = None
10446
10447
10448class VirtualNetworkGatewayIPConfiguration(SubResource):
10449    """IP configuration for virtual network gateway.
10450
10451    Variables are only populated by the server, and will be ignored when sending a request.
10452
10453    :param id: Resource ID.
10454    :type id: str
10455    :param name: The name of the resource that is unique within a resource group. This name can be
10456     used to access the resource.
10457    :type name: str
10458    :param etag: A unique read-only string that changes whenever the resource is updated.
10459    :type etag: str
10460    :param private_ip_allocation_method: The private IP allocation method. Possible values are:
10461     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
10462    :type private_ip_allocation_method: str or
10463     ~azure.mgmt.network.v2018_07_01.models.IPAllocationMethod
10464    :param subnet: The reference of the subnet resource.
10465    :type subnet: ~azure.mgmt.network.v2018_07_01.models.SubResource
10466    :param public_ip_address: The reference of the public IP resource.
10467    :type public_ip_address: ~azure.mgmt.network.v2018_07_01.models.SubResource
10468    :ivar provisioning_state: The provisioning state of the public IP resource. Possible values
10469     are: 'Updating', 'Deleting', and 'Failed'.
10470    :vartype provisioning_state: str
10471    """
10472
10473    _validation = {
10474        'provisioning_state': {'readonly': True},
10475    }
10476
10477    _attribute_map = {
10478        'id': {'key': 'id', 'type': 'str'},
10479        'name': {'key': 'name', 'type': 'str'},
10480        'etag': {'key': 'etag', 'type': 'str'},
10481        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
10482        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
10483        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
10484        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10485    }
10486
10487    def __init__(
10488        self,
10489        **kwargs
10490    ):
10491        super(VirtualNetworkGatewayIPConfiguration, self).__init__(**kwargs)
10492        self.name = kwargs.get('name', None)
10493        self.etag = kwargs.get('etag', None)
10494        self.private_ip_allocation_method = kwargs.get('private_ip_allocation_method', None)
10495        self.subnet = kwargs.get('subnet', None)
10496        self.public_ip_address = kwargs.get('public_ip_address', None)
10497        self.provisioning_state = None
10498
10499
10500class VirtualNetworkGatewayListConnectionsResult(msrest.serialization.Model):
10501    """Response for the VirtualNetworkGatewayListConnections API service call.
10502
10503    Variables are only populated by the server, and will be ignored when sending a request.
10504
10505    :param value: Gets a list of VirtualNetworkGatewayConnection resources that exists in a
10506     resource group.
10507    :type value:
10508     list[~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewayConnectionListEntity]
10509    :ivar next_link: The URL to get the next set of results.
10510    :vartype next_link: str
10511    """
10512
10513    _validation = {
10514        'next_link': {'readonly': True},
10515    }
10516
10517    _attribute_map = {
10518        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnectionListEntity]'},
10519        'next_link': {'key': 'nextLink', 'type': 'str'},
10520    }
10521
10522    def __init__(
10523        self,
10524        **kwargs
10525    ):
10526        super(VirtualNetworkGatewayListConnectionsResult, self).__init__(**kwargs)
10527        self.value = kwargs.get('value', None)
10528        self.next_link = None
10529
10530
10531class VirtualNetworkGatewayListResult(msrest.serialization.Model):
10532    """Response for the ListVirtualNetworkGateways API service call.
10533
10534    Variables are only populated by the server, and will be ignored when sending a request.
10535
10536    :param value: Gets a list of VirtualNetworkGateway resources that exists in a resource group.
10537    :type value: list[~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGateway]
10538    :ivar next_link: The URL to get the next set of results.
10539    :vartype next_link: str
10540    """
10541
10542    _validation = {
10543        'next_link': {'readonly': True},
10544    }
10545
10546    _attribute_map = {
10547        'value': {'key': 'value', 'type': '[VirtualNetworkGateway]'},
10548        'next_link': {'key': 'nextLink', 'type': 'str'},
10549    }
10550
10551    def __init__(
10552        self,
10553        **kwargs
10554    ):
10555        super(VirtualNetworkGatewayListResult, self).__init__(**kwargs)
10556        self.value = kwargs.get('value', None)
10557        self.next_link = None
10558
10559
10560class VirtualNetworkGatewaySku(msrest.serialization.Model):
10561    """VirtualNetworkGatewaySku details.
10562
10563    :param name: Gateway SKU name. Possible values include: "Basic", "HighPerformance", "Standard",
10564     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw1AZ", "VpnGw2AZ", "VpnGw3AZ",
10565     "ErGw1AZ", "ErGw2AZ", "ErGw3AZ".
10566    :type name: str or ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewaySkuName
10567    :param tier: Gateway SKU tier. Possible values include: "Basic", "HighPerformance", "Standard",
10568     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3", "VpnGw1AZ", "VpnGw2AZ", "VpnGw3AZ",
10569     "ErGw1AZ", "ErGw2AZ", "ErGw3AZ".
10570    :type tier: str or ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkGatewaySkuTier
10571    :param capacity: The capacity.
10572    :type capacity: int
10573    """
10574
10575    _attribute_map = {
10576        'name': {'key': 'name', 'type': 'str'},
10577        'tier': {'key': 'tier', 'type': 'str'},
10578        'capacity': {'key': 'capacity', 'type': 'int'},
10579    }
10580
10581    def __init__(
10582        self,
10583        **kwargs
10584    ):
10585        super(VirtualNetworkGatewaySku, self).__init__(**kwargs)
10586        self.name = kwargs.get('name', None)
10587        self.tier = kwargs.get('tier', None)
10588        self.capacity = kwargs.get('capacity', None)
10589
10590
10591class VirtualNetworkListResult(msrest.serialization.Model):
10592    """Response for the ListVirtualNetworks API service call.
10593
10594    :param value: Gets a list of VirtualNetwork resources in a resource group.
10595    :type value: list[~azure.mgmt.network.v2018_07_01.models.VirtualNetwork]
10596    :param next_link: The URL to get the next set of results.
10597    :type next_link: str
10598    """
10599
10600    _attribute_map = {
10601        'value': {'key': 'value', 'type': '[VirtualNetwork]'},
10602        'next_link': {'key': 'nextLink', 'type': 'str'},
10603    }
10604
10605    def __init__(
10606        self,
10607        **kwargs
10608    ):
10609        super(VirtualNetworkListResult, self).__init__(**kwargs)
10610        self.value = kwargs.get('value', None)
10611        self.next_link = kwargs.get('next_link', None)
10612
10613
10614class VirtualNetworkListUsageResult(msrest.serialization.Model):
10615    """Response for the virtual networks GetUsage API service call.
10616
10617    Variables are only populated by the server, and will be ignored when sending a request.
10618
10619    :ivar value: VirtualNetwork usage stats.
10620    :vartype value: list[~azure.mgmt.network.v2018_07_01.models.VirtualNetworkUsage]
10621    :param next_link: The URL to get the next set of results.
10622    :type next_link: str
10623    """
10624
10625    _validation = {
10626        'value': {'readonly': True},
10627    }
10628
10629    _attribute_map = {
10630        'value': {'key': 'value', 'type': '[VirtualNetworkUsage]'},
10631        'next_link': {'key': 'nextLink', 'type': 'str'},
10632    }
10633
10634    def __init__(
10635        self,
10636        **kwargs
10637    ):
10638        super(VirtualNetworkListUsageResult, self).__init__(**kwargs)
10639        self.value = None
10640        self.next_link = kwargs.get('next_link', None)
10641
10642
10643class VirtualNetworkPeering(SubResource):
10644    """Peerings in a virtual network resource.
10645
10646    :param id: Resource ID.
10647    :type id: str
10648    :param name: The name of the resource that is unique within a resource group. This name can be
10649     used to access the resource.
10650    :type name: str
10651    :param etag: A unique read-only string that changes whenever the resource is updated.
10652    :type etag: str
10653    :param allow_virtual_network_access: Whether the VMs in the linked virtual network space would
10654     be able to access all the VMs in local Virtual network space.
10655    :type allow_virtual_network_access: bool
10656    :param allow_forwarded_traffic: Whether the forwarded traffic from the VMs in the remote
10657     virtual network will be allowed/disallowed.
10658    :type allow_forwarded_traffic: bool
10659    :param allow_gateway_transit: If gateway links can be used in remote virtual networking to link
10660     to this virtual network.
10661    :type allow_gateway_transit: bool
10662    :param use_remote_gateways: If remote gateways can be used on this virtual network. If the flag
10663     is set to true, and allowGatewayTransit on remote peering is also true, virtual network will
10664     use gateways of remote virtual network for transit. Only one peering can have this flag set to
10665     true. This flag cannot be set if virtual network already has a gateway.
10666    :type use_remote_gateways: bool
10667    :param remote_virtual_network: The reference of the remote virtual network. The remote virtual
10668     network can be in the same or different region (preview). See here to register for the preview
10669     and learn more
10670     (https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-create-peering).
10671    :type remote_virtual_network: ~azure.mgmt.network.v2018_07_01.models.SubResource
10672    :param remote_address_space: The reference of the remote virtual network address space.
10673    :type remote_address_space: ~azure.mgmt.network.v2018_07_01.models.AddressSpace
10674    :param peering_state: The status of the virtual network peering. Possible values are
10675     'Initiated', 'Connected', and 'Disconnected'. Possible values include: "Initiated",
10676     "Connected", "Disconnected".
10677    :type peering_state: str or ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkPeeringState
10678    :param provisioning_state: The provisioning state of the resource.
10679    :type provisioning_state: str
10680    """
10681
10682    _attribute_map = {
10683        'id': {'key': 'id', 'type': 'str'},
10684        'name': {'key': 'name', 'type': 'str'},
10685        'etag': {'key': 'etag', 'type': 'str'},
10686        'allow_virtual_network_access': {'key': 'properties.allowVirtualNetworkAccess', 'type': 'bool'},
10687        'allow_forwarded_traffic': {'key': 'properties.allowForwardedTraffic', 'type': 'bool'},
10688        'allow_gateway_transit': {'key': 'properties.allowGatewayTransit', 'type': 'bool'},
10689        'use_remote_gateways': {'key': 'properties.useRemoteGateways', 'type': 'bool'},
10690        'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'},
10691        'remote_address_space': {'key': 'properties.remoteAddressSpace', 'type': 'AddressSpace'},
10692        'peering_state': {'key': 'properties.peeringState', 'type': 'str'},
10693        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10694    }
10695
10696    def __init__(
10697        self,
10698        **kwargs
10699    ):
10700        super(VirtualNetworkPeering, self).__init__(**kwargs)
10701        self.name = kwargs.get('name', None)
10702        self.etag = kwargs.get('etag', None)
10703        self.allow_virtual_network_access = kwargs.get('allow_virtual_network_access', None)
10704        self.allow_forwarded_traffic = kwargs.get('allow_forwarded_traffic', None)
10705        self.allow_gateway_transit = kwargs.get('allow_gateway_transit', None)
10706        self.use_remote_gateways = kwargs.get('use_remote_gateways', None)
10707        self.remote_virtual_network = kwargs.get('remote_virtual_network', None)
10708        self.remote_address_space = kwargs.get('remote_address_space', None)
10709        self.peering_state = kwargs.get('peering_state', None)
10710        self.provisioning_state = kwargs.get('provisioning_state', None)
10711
10712
10713class VirtualNetworkPeeringListResult(msrest.serialization.Model):
10714    """Response for ListSubnets API service call. Retrieves all subnets that belong to a virtual network.
10715
10716    :param value: The peerings in a virtual network.
10717    :type value: list[~azure.mgmt.network.v2018_07_01.models.VirtualNetworkPeering]
10718    :param next_link: The URL to get the next set of results.
10719    :type next_link: str
10720    """
10721
10722    _attribute_map = {
10723        'value': {'key': 'value', 'type': '[VirtualNetworkPeering]'},
10724        'next_link': {'key': 'nextLink', 'type': 'str'},
10725    }
10726
10727    def __init__(
10728        self,
10729        **kwargs
10730    ):
10731        super(VirtualNetworkPeeringListResult, self).__init__(**kwargs)
10732        self.value = kwargs.get('value', None)
10733        self.next_link = kwargs.get('next_link', None)
10734
10735
10736class VirtualNetworkUsage(msrest.serialization.Model):
10737    """Usage details for subnet.
10738
10739    Variables are only populated by the server, and will be ignored when sending a request.
10740
10741    :ivar current_value: Indicates number of IPs used from the Subnet.
10742    :vartype current_value: float
10743    :ivar id: Subnet identifier.
10744    :vartype id: str
10745    :ivar limit: Indicates the size of the subnet.
10746    :vartype limit: float
10747    :ivar name: The name containing common and localized value for usage.
10748    :vartype name: ~azure.mgmt.network.v2018_07_01.models.VirtualNetworkUsageName
10749    :ivar unit: Usage units. Returns 'Count'.
10750    :vartype unit: str
10751    """
10752
10753    _validation = {
10754        'current_value': {'readonly': True},
10755        'id': {'readonly': True},
10756        'limit': {'readonly': True},
10757        'name': {'readonly': True},
10758        'unit': {'readonly': True},
10759    }
10760
10761    _attribute_map = {
10762        'current_value': {'key': 'currentValue', 'type': 'float'},
10763        'id': {'key': 'id', 'type': 'str'},
10764        'limit': {'key': 'limit', 'type': 'float'},
10765        'name': {'key': 'name', 'type': 'VirtualNetworkUsageName'},
10766        'unit': {'key': 'unit', 'type': 'str'},
10767    }
10768
10769    def __init__(
10770        self,
10771        **kwargs
10772    ):
10773        super(VirtualNetworkUsage, self).__init__(**kwargs)
10774        self.current_value = None
10775        self.id = None
10776        self.limit = None
10777        self.name = None
10778        self.unit = None
10779
10780
10781class VirtualNetworkUsageName(msrest.serialization.Model):
10782    """Usage strings container.
10783
10784    Variables are only populated by the server, and will be ignored when sending a request.
10785
10786    :ivar localized_value: Localized subnet size and usage string.
10787    :vartype localized_value: str
10788    :ivar value: Subnet size and usage string.
10789    :vartype value: str
10790    """
10791
10792    _validation = {
10793        'localized_value': {'readonly': True},
10794        'value': {'readonly': True},
10795    }
10796
10797    _attribute_map = {
10798        'localized_value': {'key': 'localizedValue', 'type': 'str'},
10799        'value': {'key': 'value', 'type': 'str'},
10800    }
10801
10802    def __init__(
10803        self,
10804        **kwargs
10805    ):
10806        super(VirtualNetworkUsageName, self).__init__(**kwargs)
10807        self.localized_value = None
10808        self.value = None
10809
10810
10811class VirtualWAN(Resource):
10812    """VirtualWAN Resource.
10813
10814    Variables are only populated by the server, and will be ignored when sending a request.
10815
10816    :param id: Resource ID.
10817    :type id: str
10818    :ivar name: Resource name.
10819    :vartype name: str
10820    :ivar type: Resource type.
10821    :vartype type: str
10822    :param location: Resource location.
10823    :type location: str
10824    :param tags: A set of tags. Resource tags.
10825    :type tags: dict[str, str]
10826    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
10827    :vartype etag: str
10828    :param disable_vpn_encryption: Vpn encryption to be disabled or not.
10829    :type disable_vpn_encryption: bool
10830    :ivar virtual_hubs: List of VirtualHubs in the VirtualWAN.
10831    :vartype virtual_hubs: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
10832    :ivar vpn_sites:
10833    :vartype vpn_sites: list[~azure.mgmt.network.v2018_07_01.models.SubResource]
10834    :param provisioning_state: The provisioning state of the resource. Possible values include:
10835     "Succeeded", "Updating", "Deleting", "Failed".
10836    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
10837    """
10838
10839    _validation = {
10840        'name': {'readonly': True},
10841        'type': {'readonly': True},
10842        'etag': {'readonly': True},
10843        'virtual_hubs': {'readonly': True},
10844        'vpn_sites': {'readonly': True},
10845    }
10846
10847    _attribute_map = {
10848        'id': {'key': 'id', 'type': 'str'},
10849        'name': {'key': 'name', 'type': 'str'},
10850        'type': {'key': 'type', 'type': 'str'},
10851        'location': {'key': 'location', 'type': 'str'},
10852        'tags': {'key': 'tags', 'type': '{str}'},
10853        'etag': {'key': 'etag', 'type': 'str'},
10854        'disable_vpn_encryption': {'key': 'properties.disableVpnEncryption', 'type': 'bool'},
10855        'virtual_hubs': {'key': 'properties.virtualHubs', 'type': '[SubResource]'},
10856        'vpn_sites': {'key': 'properties.vpnSites', 'type': '[SubResource]'},
10857        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
10858    }
10859
10860    def __init__(
10861        self,
10862        **kwargs
10863    ):
10864        super(VirtualWAN, self).__init__(**kwargs)
10865        self.etag = None
10866        self.disable_vpn_encryption = kwargs.get('disable_vpn_encryption', None)
10867        self.virtual_hubs = None
10868        self.vpn_sites = None
10869        self.provisioning_state = kwargs.get('provisioning_state', None)
10870
10871
10872class VpnClientConfiguration(msrest.serialization.Model):
10873    """VpnClientConfiguration for P2S client.
10874
10875    :param vpn_client_address_pool: The reference of the address space resource which represents
10876     Address space for P2S VpnClient.
10877    :type vpn_client_address_pool: ~azure.mgmt.network.v2018_07_01.models.AddressSpace
10878    :param vpn_client_root_certificates: VpnClientRootCertificate for virtual network gateway.
10879    :type vpn_client_root_certificates:
10880     list[~azure.mgmt.network.v2018_07_01.models.VpnClientRootCertificate]
10881    :param vpn_client_revoked_certificates: VpnClientRevokedCertificate for Virtual network
10882     gateway.
10883    :type vpn_client_revoked_certificates:
10884     list[~azure.mgmt.network.v2018_07_01.models.VpnClientRevokedCertificate]
10885    :param vpn_client_protocols: VpnClientProtocols for Virtual network gateway.
10886    :type vpn_client_protocols: list[str or
10887     ~azure.mgmt.network.v2018_07_01.models.VpnClientProtocol]
10888    :param vpn_client_ipsec_policies: VpnClientIpsecPolicies for virtual network gateway P2S
10889     client.
10890    :type vpn_client_ipsec_policies: list[~azure.mgmt.network.v2018_07_01.models.IpsecPolicy]
10891    :param radius_server_address: The radius server address property of the VirtualNetworkGateway
10892     resource for vpn client connection.
10893    :type radius_server_address: str
10894    :param radius_server_secret: The radius secret property of the VirtualNetworkGateway resource
10895     for vpn client connection.
10896    :type radius_server_secret: str
10897    """
10898
10899    _attribute_map = {
10900        'vpn_client_address_pool': {'key': 'vpnClientAddressPool', 'type': 'AddressSpace'},
10901        'vpn_client_root_certificates': {'key': 'vpnClientRootCertificates', 'type': '[VpnClientRootCertificate]'},
10902        'vpn_client_revoked_certificates': {'key': 'vpnClientRevokedCertificates', 'type': '[VpnClientRevokedCertificate]'},
10903        'vpn_client_protocols': {'key': 'vpnClientProtocols', 'type': '[str]'},
10904        'vpn_client_ipsec_policies': {'key': 'vpnClientIpsecPolicies', 'type': '[IpsecPolicy]'},
10905        'radius_server_address': {'key': 'radiusServerAddress', 'type': 'str'},
10906        'radius_server_secret': {'key': 'radiusServerSecret', 'type': 'str'},
10907    }
10908
10909    def __init__(
10910        self,
10911        **kwargs
10912    ):
10913        super(VpnClientConfiguration, self).__init__(**kwargs)
10914        self.vpn_client_address_pool = kwargs.get('vpn_client_address_pool', None)
10915        self.vpn_client_root_certificates = kwargs.get('vpn_client_root_certificates', None)
10916        self.vpn_client_revoked_certificates = kwargs.get('vpn_client_revoked_certificates', None)
10917        self.vpn_client_protocols = kwargs.get('vpn_client_protocols', None)
10918        self.vpn_client_ipsec_policies = kwargs.get('vpn_client_ipsec_policies', None)
10919        self.radius_server_address = kwargs.get('radius_server_address', None)
10920        self.radius_server_secret = kwargs.get('radius_server_secret', None)
10921
10922
10923class VpnClientIPsecParameters(msrest.serialization.Model):
10924    """An IPSec parameters for a virtual network gateway P2S connection.
10925
10926    All required parameters must be populated in order to send to Azure.
10927
10928    :param sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode
10929     or Phase 2 SA) lifetime in seconds for P2S client.
10930    :type sa_life_time_seconds: int
10931    :param sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode
10932     or Phase 2 SA) payload size in KB for P2S client..
10933    :type sa_data_size_kilobytes: int
10934    :param ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible
10935     values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192",
10936     "GCMAES256".
10937    :type ipsec_encryption: str or ~azure.mgmt.network.v2018_07_01.models.IpsecEncryption
10938    :param ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values
10939     include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256".
10940    :type ipsec_integrity: str or ~azure.mgmt.network.v2018_07_01.models.IpsecIntegrity
10941    :param ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values
10942     include: "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES256", "GCMAES128".
10943    :type ike_encryption: str or ~azure.mgmt.network.v2018_07_01.models.IkeEncryption
10944    :param ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values
10945     include: "MD5", "SHA1", "SHA256", "SHA384", "GCMAES256", "GCMAES128".
10946    :type ike_integrity: str or ~azure.mgmt.network.v2018_07_01.models.IkeIntegrity
10947    :param dh_group: Required. The DH Groups used in IKE Phase 1 for initial SA. Possible values
10948     include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384",
10949     "DHGroup24".
10950    :type dh_group: str or ~azure.mgmt.network.v2018_07_01.models.DhGroup
10951    :param pfs_group: Required. The Pfs Groups used in IKE Phase 2 for new child SA. Possible
10952     values include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24", "PFS14",
10953     "PFSMM".
10954    :type pfs_group: str or ~azure.mgmt.network.v2018_07_01.models.PfsGroup
10955    """
10956
10957    _validation = {
10958        'sa_life_time_seconds': {'required': True},
10959        'sa_data_size_kilobytes': {'required': True},
10960        'ipsec_encryption': {'required': True},
10961        'ipsec_integrity': {'required': True},
10962        'ike_encryption': {'required': True},
10963        'ike_integrity': {'required': True},
10964        'dh_group': {'required': True},
10965        'pfs_group': {'required': True},
10966    }
10967
10968    _attribute_map = {
10969        'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'},
10970        'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'},
10971        'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'},
10972        'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'},
10973        'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'},
10974        'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'},
10975        'dh_group': {'key': 'dhGroup', 'type': 'str'},
10976        'pfs_group': {'key': 'pfsGroup', 'type': 'str'},
10977    }
10978
10979    def __init__(
10980        self,
10981        **kwargs
10982    ):
10983        super(VpnClientIPsecParameters, self).__init__(**kwargs)
10984        self.sa_life_time_seconds = kwargs['sa_life_time_seconds']
10985        self.sa_data_size_kilobytes = kwargs['sa_data_size_kilobytes']
10986        self.ipsec_encryption = kwargs['ipsec_encryption']
10987        self.ipsec_integrity = kwargs['ipsec_integrity']
10988        self.ike_encryption = kwargs['ike_encryption']
10989        self.ike_integrity = kwargs['ike_integrity']
10990        self.dh_group = kwargs['dh_group']
10991        self.pfs_group = kwargs['pfs_group']
10992
10993
10994class VpnClientParameters(msrest.serialization.Model):
10995    """Vpn Client Parameters for package generation.
10996
10997    :param processor_architecture: VPN client Processor Architecture. Possible values are: 'AMD64'
10998     and 'X86'. Possible values include: "Amd64", "X86".
10999    :type processor_architecture: str or
11000     ~azure.mgmt.network.v2018_07_01.models.ProcessorArchitecture
11001    :param authentication_method: VPN client Authentication Method. Possible values are: 'EAPTLS'
11002     and 'EAPMSCHAPv2'. Possible values include: "EAPTLS", "EAPMSCHAPv2".
11003    :type authentication_method: str or ~azure.mgmt.network.v2018_07_01.models.AuthenticationMethod
11004    :param radius_server_auth_certificate: The public certificate data for the radius server
11005     authentication certificate as a Base-64 encoded string. Required only if external radius
11006     authentication has been configured with EAPTLS authentication.
11007    :type radius_server_auth_certificate: str
11008    :param client_root_certificates: A list of client root certificates public certificate data
11009     encoded as Base-64 strings. Optional parameter for external radius based authentication with
11010     EAPTLS.
11011    :type client_root_certificates: list[str]
11012    """
11013
11014    _attribute_map = {
11015        'processor_architecture': {'key': 'processorArchitecture', 'type': 'str'},
11016        'authentication_method': {'key': 'authenticationMethod', 'type': 'str'},
11017        'radius_server_auth_certificate': {'key': 'radiusServerAuthCertificate', 'type': 'str'},
11018        'client_root_certificates': {'key': 'clientRootCertificates', 'type': '[str]'},
11019    }
11020
11021    def __init__(
11022        self,
11023        **kwargs
11024    ):
11025        super(VpnClientParameters, self).__init__(**kwargs)
11026        self.processor_architecture = kwargs.get('processor_architecture', None)
11027        self.authentication_method = kwargs.get('authentication_method', None)
11028        self.radius_server_auth_certificate = kwargs.get('radius_server_auth_certificate', None)
11029        self.client_root_certificates = kwargs.get('client_root_certificates', None)
11030
11031
11032class VpnClientRevokedCertificate(SubResource):
11033    """VPN client revoked certificate of virtual network gateway.
11034
11035    Variables are only populated by the server, and will be ignored when sending a request.
11036
11037    :param id: Resource ID.
11038    :type id: str
11039    :param name: The name of the resource that is unique within a resource group. This name can be
11040     used to access the resource.
11041    :type name: str
11042    :param etag: A unique read-only string that changes whenever the resource is updated.
11043    :type etag: str
11044    :param thumbprint: The revoked VPN client certificate thumbprint.
11045    :type thumbprint: str
11046    :ivar provisioning_state: The provisioning state of the VPN client revoked certificate
11047     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
11048    :vartype provisioning_state: str
11049    """
11050
11051    _validation = {
11052        'provisioning_state': {'readonly': True},
11053    }
11054
11055    _attribute_map = {
11056        'id': {'key': 'id', 'type': 'str'},
11057        'name': {'key': 'name', 'type': 'str'},
11058        'etag': {'key': 'etag', 'type': 'str'},
11059        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
11060        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11061    }
11062
11063    def __init__(
11064        self,
11065        **kwargs
11066    ):
11067        super(VpnClientRevokedCertificate, self).__init__(**kwargs)
11068        self.name = kwargs.get('name', None)
11069        self.etag = kwargs.get('etag', None)
11070        self.thumbprint = kwargs.get('thumbprint', None)
11071        self.provisioning_state = None
11072
11073
11074class VpnClientRootCertificate(SubResource):
11075    """VPN client root certificate of virtual network gateway.
11076
11077    Variables are only populated by the server, and will be ignored when sending a request.
11078
11079    All required parameters must be populated in order to send to Azure.
11080
11081    :param id: Resource ID.
11082    :type id: str
11083    :param name: The name of the resource that is unique within a resource group. This name can be
11084     used to access the resource.
11085    :type name: str
11086    :param etag: A unique read-only string that changes whenever the resource is updated.
11087    :type etag: str
11088    :param public_cert_data: Required. The certificate public data.
11089    :type public_cert_data: str
11090    :ivar provisioning_state: The provisioning state of the VPN client root certificate resource.
11091     Possible values are: 'Updating', 'Deleting', and 'Failed'.
11092    :vartype provisioning_state: str
11093    """
11094
11095    _validation = {
11096        'public_cert_data': {'required': True},
11097        'provisioning_state': {'readonly': True},
11098    }
11099
11100    _attribute_map = {
11101        'id': {'key': 'id', 'type': 'str'},
11102        'name': {'key': 'name', 'type': 'str'},
11103        'etag': {'key': 'etag', 'type': 'str'},
11104        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
11105        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11106    }
11107
11108    def __init__(
11109        self,
11110        **kwargs
11111    ):
11112        super(VpnClientRootCertificate, self).__init__(**kwargs)
11113        self.name = kwargs.get('name', None)
11114        self.etag = kwargs.get('etag', None)
11115        self.public_cert_data = kwargs['public_cert_data']
11116        self.provisioning_state = None
11117
11118
11119class VpnConnection(SubResource):
11120    """VpnConnection Resource.
11121
11122    Variables are only populated by the server, and will be ignored when sending a request.
11123
11124    :param id: Resource ID.
11125    :type id: str
11126    :param name: The name of the resource that is unique within a resource group. This name can be
11127     used to access the resource.
11128    :type name: str
11129    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
11130    :vartype etag: str
11131    :param remote_vpn_site: Id of the connected vpn site.
11132    :type remote_vpn_site: ~azure.mgmt.network.v2018_07_01.models.SubResource
11133    :param routing_weight: routing weight for vpn connection.
11134    :type routing_weight: int
11135    :ivar connection_status: The connection status. Possible values include: "Unknown",
11136     "Connecting", "Connected", "NotConnected".
11137    :vartype connection_status: str or ~azure.mgmt.network.v2018_07_01.models.VpnConnectionStatus
11138    :ivar ingress_bytes_transferred: Ingress bytes transferred.
11139    :vartype ingress_bytes_transferred: long
11140    :ivar egress_bytes_transferred: Egress bytes transferred.
11141    :vartype egress_bytes_transferred: long
11142    :ivar connection_bandwidth_in_mbps: Expected bandwidth in MBPS.
11143    :vartype connection_bandwidth_in_mbps: int
11144    :param shared_key: SharedKey for the vpn connection.
11145    :type shared_key: str
11146    :param enable_bgp: EnableBgp flag.
11147    :type enable_bgp: bool
11148    :param ipsec_policies: The IPSec Policies to be considered by this connection.
11149    :type ipsec_policies: list[~azure.mgmt.network.v2018_07_01.models.IpsecPolicy]
11150    :param provisioning_state: The provisioning state of the resource. Possible values include:
11151     "Succeeded", "Updating", "Deleting", "Failed".
11152    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
11153    """
11154
11155    _validation = {
11156        'etag': {'readonly': True},
11157        'connection_status': {'readonly': True},
11158        'ingress_bytes_transferred': {'readonly': True},
11159        'egress_bytes_transferred': {'readonly': True},
11160        'connection_bandwidth_in_mbps': {'readonly': True},
11161    }
11162
11163    _attribute_map = {
11164        'id': {'key': 'id', 'type': 'str'},
11165        'name': {'key': 'name', 'type': 'str'},
11166        'etag': {'key': 'etag', 'type': 'str'},
11167        'remote_vpn_site': {'key': 'properties.remoteVpnSite', 'type': 'SubResource'},
11168        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
11169        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
11170        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
11171        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
11172        'connection_bandwidth_in_mbps': {'key': 'properties.connectionBandwidthInMbps', 'type': 'int'},
11173        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
11174        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
11175        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
11176        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11177    }
11178
11179    def __init__(
11180        self,
11181        **kwargs
11182    ):
11183        super(VpnConnection, self).__init__(**kwargs)
11184        self.name = kwargs.get('name', None)
11185        self.etag = None
11186        self.remote_vpn_site = kwargs.get('remote_vpn_site', None)
11187        self.routing_weight = kwargs.get('routing_weight', None)
11188        self.connection_status = None
11189        self.ingress_bytes_transferred = None
11190        self.egress_bytes_transferred = None
11191        self.connection_bandwidth_in_mbps = None
11192        self.shared_key = kwargs.get('shared_key', None)
11193        self.enable_bgp = kwargs.get('enable_bgp', None)
11194        self.ipsec_policies = kwargs.get('ipsec_policies', None)
11195        self.provisioning_state = kwargs.get('provisioning_state', None)
11196
11197
11198class VpnDeviceScriptParameters(msrest.serialization.Model):
11199    """Vpn device configuration script generation parameters.
11200
11201    :param vendor: The vendor for the vpn device.
11202    :type vendor: str
11203    :param device_family: The device family for the vpn device.
11204    :type device_family: str
11205    :param firmware_version: The firmware version for the vpn device.
11206    :type firmware_version: str
11207    """
11208
11209    _attribute_map = {
11210        'vendor': {'key': 'vendor', 'type': 'str'},
11211        'device_family': {'key': 'deviceFamily', 'type': 'str'},
11212        'firmware_version': {'key': 'firmwareVersion', 'type': 'str'},
11213    }
11214
11215    def __init__(
11216        self,
11217        **kwargs
11218    ):
11219        super(VpnDeviceScriptParameters, self).__init__(**kwargs)
11220        self.vendor = kwargs.get('vendor', None)
11221        self.device_family = kwargs.get('device_family', None)
11222        self.firmware_version = kwargs.get('firmware_version', None)
11223
11224
11225class VpnGateway(Resource):
11226    """VpnGateway Resource.
11227
11228    Variables are only populated by the server, and will be ignored when sending a request.
11229
11230    :param id: Resource ID.
11231    :type id: str
11232    :ivar name: Resource name.
11233    :vartype name: str
11234    :ivar type: Resource type.
11235    :vartype type: str
11236    :param location: Resource location.
11237    :type location: str
11238    :param tags: A set of tags. Resource tags.
11239    :type tags: dict[str, str]
11240    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
11241    :vartype etag: str
11242    :param virtual_hub: The VirtualHub to which the gateway belongs.
11243    :type virtual_hub: ~azure.mgmt.network.v2018_07_01.models.SubResource
11244    :param connections: list of all vpn connections to the gateway.
11245    :type connections: list[~azure.mgmt.network.v2018_07_01.models.VpnConnection]
11246    :param bgp_settings: Local network gateway's BGP speaker settings.
11247    :type bgp_settings: ~azure.mgmt.network.v2018_07_01.models.BgpSettings
11248    :param provisioning_state: The provisioning state of the resource. Possible values include:
11249     "Succeeded", "Updating", "Deleting", "Failed".
11250    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
11251    :param policies: The policies applied to this vpn gateway.
11252    :type policies: ~azure.mgmt.network.v2018_07_01.models.Policies
11253    """
11254
11255    _validation = {
11256        'name': {'readonly': True},
11257        'type': {'readonly': True},
11258        'etag': {'readonly': True},
11259    }
11260
11261    _attribute_map = {
11262        'id': {'key': 'id', 'type': 'str'},
11263        'name': {'key': 'name', 'type': 'str'},
11264        'type': {'key': 'type', 'type': 'str'},
11265        'location': {'key': 'location', 'type': 'str'},
11266        'tags': {'key': 'tags', 'type': '{str}'},
11267        'etag': {'key': 'etag', 'type': 'str'},
11268        'virtual_hub': {'key': 'properties.virtualHub', 'type': 'SubResource'},
11269        'connections': {'key': 'properties.connections', 'type': '[VpnConnection]'},
11270        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
11271        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11272        'policies': {'key': 'properties.policies', 'type': 'Policies'},
11273    }
11274
11275    def __init__(
11276        self,
11277        **kwargs
11278    ):
11279        super(VpnGateway, self).__init__(**kwargs)
11280        self.etag = None
11281        self.virtual_hub = kwargs.get('virtual_hub', None)
11282        self.connections = kwargs.get('connections', None)
11283        self.bgp_settings = kwargs.get('bgp_settings', None)
11284        self.provisioning_state = kwargs.get('provisioning_state', None)
11285        self.policies = kwargs.get('policies', None)
11286
11287
11288class VpnSite(Resource):
11289    """VpnSite Resource.
11290
11291    Variables are only populated by the server, and will be ignored when sending a request.
11292
11293    :param id: Resource ID.
11294    :type id: str
11295    :ivar name: Resource name.
11296    :vartype name: str
11297    :ivar type: Resource type.
11298    :vartype type: str
11299    :param location: Resource location.
11300    :type location: str
11301    :param tags: A set of tags. Resource tags.
11302    :type tags: dict[str, str]
11303    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
11304    :vartype etag: str
11305    :param virtual_wan: The VirtualWAN to which the vpnSite belongs.
11306    :type virtual_wan: ~azure.mgmt.network.v2018_07_01.models.SubResource
11307    :param device_properties: The device properties.
11308    :type device_properties: ~azure.mgmt.network.v2018_07_01.models.DeviceProperties
11309    :param ip_address: The ip-address for the vpn-site.
11310    :type ip_address: str
11311    :param site_key: The key for vpn-site that can be used for connections.
11312    :type site_key: str
11313    :param address_space: The AddressSpace that contains an array of IP address ranges.
11314    :type address_space: ~azure.mgmt.network.v2018_07_01.models.AddressSpace
11315    :param bgp_properties: The set of bgp properties.
11316    :type bgp_properties: ~azure.mgmt.network.v2018_07_01.models.BgpSettings
11317    :param provisioning_state: The provisioning state of the resource. Possible values include:
11318     "Succeeded", "Updating", "Deleting", "Failed".
11319    :type provisioning_state: str or ~azure.mgmt.network.v2018_07_01.models.ProvisioningState
11320    """
11321
11322    _validation = {
11323        'name': {'readonly': True},
11324        'type': {'readonly': True},
11325        'etag': {'readonly': True},
11326    }
11327
11328    _attribute_map = {
11329        'id': {'key': 'id', 'type': 'str'},
11330        'name': {'key': 'name', 'type': 'str'},
11331        'type': {'key': 'type', 'type': 'str'},
11332        'location': {'key': 'location', 'type': 'str'},
11333        'tags': {'key': 'tags', 'type': '{str}'},
11334        'etag': {'key': 'etag', 'type': 'str'},
11335        'virtual_wan': {'key': 'properties.virtualWAN', 'type': 'SubResource'},
11336        'device_properties': {'key': 'properties.deviceProperties', 'type': 'DeviceProperties'},
11337        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
11338        'site_key': {'key': 'properties.siteKey', 'type': 'str'},
11339        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
11340        'bgp_properties': {'key': 'properties.bgpProperties', 'type': 'BgpSettings'},
11341        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
11342    }
11343
11344    def __init__(
11345        self,
11346        **kwargs
11347    ):
11348        super(VpnSite, self).__init__(**kwargs)
11349        self.etag = None
11350        self.virtual_wan = kwargs.get('virtual_wan', None)
11351        self.device_properties = kwargs.get('device_properties', None)
11352        self.ip_address = kwargs.get('ip_address', None)
11353        self.site_key = kwargs.get('site_key', None)
11354        self.address_space = kwargs.get('address_space', None)
11355        self.bgp_properties = kwargs.get('bgp_properties', None)
11356        self.provisioning_state = kwargs.get('provisioning_state', None)
11357
11358
11359class VpnSiteId(msrest.serialization.Model):
11360    """VpnSite Resource.
11361
11362    Variables are only populated by the server, and will be ignored when sending a request.
11363
11364    :ivar vpn_site: The resource-uri of the vpn-site for which config is to be fetched.
11365    :vartype vpn_site: str
11366    """
11367
11368    _validation = {
11369        'vpn_site': {'readonly': True},
11370    }
11371
11372    _attribute_map = {
11373        'vpn_site': {'key': 'vpnSite', 'type': 'str'},
11374    }
11375
11376    def __init__(
11377        self,
11378        **kwargs
11379    ):
11380        super(VpnSiteId, self).__init__(**kwargs)
11381        self.vpn_site = None
11382