1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for license information.
5# Code generated by Microsoft (R) AutoRest Code Generator.
6# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7# --------------------------------------------------------------------------
8
9import msrest.serialization
10
11
12class AddressSpace(msrest.serialization.Model):
13    """AddressSpace contains an array of IP address ranges that can be used by subnets of the virtual network.
14
15    :param address_prefixes: A list of address blocks reserved for this virtual network in CIDR
16     notation.
17    :type address_prefixes: list[str]
18    """
19
20    _attribute_map = {
21        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
22    }
23
24    def __init__(
25        self,
26        **kwargs
27    ):
28        super(AddressSpace, self).__init__(**kwargs)
29        self.address_prefixes = kwargs.get('address_prefixes', None)
30
31
32class Resource(msrest.serialization.Model):
33    """Common resource representation.
34
35    Variables are only populated by the server, and will be ignored when sending a request.
36
37    :param id: Resource ID.
38    :type id: str
39    :ivar name: Resource name.
40    :vartype name: str
41    :ivar type: Resource type.
42    :vartype type: str
43    :param location: Resource location.
44    :type location: str
45    :param tags: A set of tags. Resource tags.
46    :type tags: dict[str, str]
47    """
48
49    _validation = {
50        'name': {'readonly': True},
51        'type': {'readonly': True},
52    }
53
54    _attribute_map = {
55        'id': {'key': 'id', 'type': 'str'},
56        'name': {'key': 'name', 'type': 'str'},
57        'type': {'key': 'type', 'type': 'str'},
58        'location': {'key': 'location', 'type': 'str'},
59        'tags': {'key': 'tags', 'type': '{str}'},
60    }
61
62    def __init__(
63        self,
64        **kwargs
65    ):
66        super(Resource, self).__init__(**kwargs)
67        self.id = kwargs.get('id', None)
68        self.name = None
69        self.type = None
70        self.location = kwargs.get('location', None)
71        self.tags = kwargs.get('tags', None)
72
73
74class ApplicationGateway(Resource):
75    """Application gateway resource.
76
77    Variables are only populated by the server, and will be ignored when sending a request.
78
79    :param id: Resource ID.
80    :type id: str
81    :ivar name: Resource name.
82    :vartype name: str
83    :ivar type: Resource type.
84    :vartype type: str
85    :param location: Resource location.
86    :type location: str
87    :param tags: A set of tags. Resource tags.
88    :type tags: dict[str, str]
89    :param etag: A unique read-only string that changes whenever the resource is updated.
90    :type etag: str
91    :param sku: SKU of the application gateway resource.
92    :type sku: ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySku
93    :param ssl_policy: SSL policy of the application gateway resource.
94    :type ssl_policy: ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslPolicy
95    :ivar operational_state: Operational state of the application gateway resource. Possible values
96     include: "Stopped", "Starting", "Running", "Stopping".
97    :vartype operational_state: str or
98     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayOperationalState
99    :param gateway_ip_configurations: Subnets of application the gateway resource.
100    :type gateway_ip_configurations:
101     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayIPConfiguration]
102    :param authentication_certificates: Authentication certificates of the application gateway
103     resource.
104    :type authentication_certificates:
105     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayAuthenticationCertificate]
106    :param ssl_certificates: SSL certificates of the application gateway resource.
107    :type ssl_certificates:
108     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslCertificate]
109    :param frontend_ip_configurations: Frontend IP addresses of the application gateway resource.
110    :type frontend_ip_configurations:
111     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayFrontendIPConfiguration]
112    :param frontend_ports: Frontend ports of the application gateway resource.
113    :type frontend_ports:
114     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayFrontendPort]
115    :param probes: Probes of the application gateway resource.
116    :type probes: list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayProbe]
117    :param backend_address_pools: Backend address pool of the application gateway resource.
118    :type backend_address_pools:
119     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayBackendAddressPool]
120    :param backend_http_settings_collection: Backend http settings of the application gateway
121     resource.
122    :type backend_http_settings_collection:
123     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayBackendHttpSettings]
124    :param http_listeners: Http listeners of the application gateway resource.
125    :type http_listeners:
126     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayHttpListener]
127    :param url_path_maps: URL path map of the application gateway resource.
128    :type url_path_maps: list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayUrlPathMap]
129    :param request_routing_rules: Request routing rules of the application gateway resource.
130    :type request_routing_rules:
131     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayRequestRoutingRule]
132    :param redirect_configurations: Redirect configurations of the application gateway resource.
133    :type redirect_configurations:
134     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayRedirectConfiguration]
135    :param web_application_firewall_configuration: Web application firewall configuration.
136    :type web_application_firewall_configuration:
137     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayWebApplicationFirewallConfiguration
138    :param resource_guid: Resource GUID property of the application gateway resource.
139    :type resource_guid: str
140    :param provisioning_state: Provisioning state of the application gateway resource. Possible
141     values are: 'Updating', 'Deleting', and 'Failed'.
142    :type provisioning_state: str
143    """
144
145    _validation = {
146        'name': {'readonly': True},
147        'type': {'readonly': True},
148        'operational_state': {'readonly': True},
149    }
150
151    _attribute_map = {
152        'id': {'key': 'id', 'type': 'str'},
153        'name': {'key': 'name', 'type': 'str'},
154        'type': {'key': 'type', 'type': 'str'},
155        'location': {'key': 'location', 'type': 'str'},
156        'tags': {'key': 'tags', 'type': '{str}'},
157        'etag': {'key': 'etag', 'type': 'str'},
158        'sku': {'key': 'properties.sku', 'type': 'ApplicationGatewaySku'},
159        'ssl_policy': {'key': 'properties.sslPolicy', 'type': 'ApplicationGatewaySslPolicy'},
160        'operational_state': {'key': 'properties.operationalState', 'type': 'str'},
161        'gateway_ip_configurations': {'key': 'properties.gatewayIPConfigurations', 'type': '[ApplicationGatewayIPConfiguration]'},
162        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[ApplicationGatewayAuthenticationCertificate]'},
163        'ssl_certificates': {'key': 'properties.sslCertificates', 'type': '[ApplicationGatewaySslCertificate]'},
164        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[ApplicationGatewayFrontendIPConfiguration]'},
165        'frontend_ports': {'key': 'properties.frontendPorts', 'type': '[ApplicationGatewayFrontendPort]'},
166        'probes': {'key': 'properties.probes', 'type': '[ApplicationGatewayProbe]'},
167        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
168        'backend_http_settings_collection': {'key': 'properties.backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHttpSettings]'},
169        'http_listeners': {'key': 'properties.httpListeners', 'type': '[ApplicationGatewayHttpListener]'},
170        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[ApplicationGatewayUrlPathMap]'},
171        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[ApplicationGatewayRequestRoutingRule]'},
172        'redirect_configurations': {'key': 'properties.redirectConfigurations', 'type': '[ApplicationGatewayRedirectConfiguration]'},
173        'web_application_firewall_configuration': {'key': 'properties.webApplicationFirewallConfiguration', 'type': 'ApplicationGatewayWebApplicationFirewallConfiguration'},
174        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
175        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
176    }
177
178    def __init__(
179        self,
180        **kwargs
181    ):
182        super(ApplicationGateway, self).__init__(**kwargs)
183        self.etag = kwargs.get('etag', None)
184        self.sku = kwargs.get('sku', None)
185        self.ssl_policy = kwargs.get('ssl_policy', None)
186        self.operational_state = None
187        self.gateway_ip_configurations = kwargs.get('gateway_ip_configurations', None)
188        self.authentication_certificates = kwargs.get('authentication_certificates', None)
189        self.ssl_certificates = kwargs.get('ssl_certificates', None)
190        self.frontend_ip_configurations = kwargs.get('frontend_ip_configurations', None)
191        self.frontend_ports = kwargs.get('frontend_ports', None)
192        self.probes = kwargs.get('probes', None)
193        self.backend_address_pools = kwargs.get('backend_address_pools', None)
194        self.backend_http_settings_collection = kwargs.get('backend_http_settings_collection', None)
195        self.http_listeners = kwargs.get('http_listeners', None)
196        self.url_path_maps = kwargs.get('url_path_maps', None)
197        self.request_routing_rules = kwargs.get('request_routing_rules', None)
198        self.redirect_configurations = kwargs.get('redirect_configurations', None)
199        self.web_application_firewall_configuration = kwargs.get('web_application_firewall_configuration', None)
200        self.resource_guid = kwargs.get('resource_guid', None)
201        self.provisioning_state = kwargs.get('provisioning_state', None)
202
203
204class SubResource(msrest.serialization.Model):
205    """Reference to another subresource.
206
207    :param id: Resource ID.
208    :type id: str
209    """
210
211    _attribute_map = {
212        'id': {'key': 'id', 'type': 'str'},
213    }
214
215    def __init__(
216        self,
217        **kwargs
218    ):
219        super(SubResource, self).__init__(**kwargs)
220        self.id = kwargs.get('id', None)
221
222
223class ApplicationGatewayAuthenticationCertificate(SubResource):
224    """Authentication certificates of an application gateway.
225
226    :param id: Resource ID.
227    :type id: str
228    :param name: Name of the resource that is unique within a resource group. This name can be used
229     to access the resource.
230    :type name: str
231    :param etag: A unique read-only string that changes whenever the resource is updated.
232    :type etag: str
233    :param type: Type of the resource.
234    :type type: str
235    :param data: Certificate public data.
236    :type data: str
237    :param provisioning_state: Provisioning state of the authentication certificate resource.
238     Possible values are: 'Updating', 'Deleting', and 'Failed'.
239    :type provisioning_state: str
240    """
241
242    _attribute_map = {
243        'id': {'key': 'id', 'type': 'str'},
244        'name': {'key': 'name', 'type': 'str'},
245        'etag': {'key': 'etag', 'type': 'str'},
246        'type': {'key': 'type', 'type': 'str'},
247        'data': {'key': 'properties.data', 'type': 'str'},
248        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
249    }
250
251    def __init__(
252        self,
253        **kwargs
254    ):
255        super(ApplicationGatewayAuthenticationCertificate, self).__init__(**kwargs)
256        self.name = kwargs.get('name', None)
257        self.etag = kwargs.get('etag', None)
258        self.type = kwargs.get('type', None)
259        self.data = kwargs.get('data', None)
260        self.provisioning_state = kwargs.get('provisioning_state', None)
261
262
263class ApplicationGatewayAvailableSslOptions(Resource):
264    """Response for ApplicationGatewayAvailableSslOptions API service call.
265
266    Variables are only populated by the server, and will be ignored when sending a request.
267
268    :param id: Resource ID.
269    :type id: str
270    :ivar name: Resource name.
271    :vartype name: str
272    :ivar type: Resource type.
273    :vartype type: str
274    :param location: Resource location.
275    :type location: str
276    :param tags: A set of tags. Resource tags.
277    :type tags: dict[str, str]
278    :param predefined_policies: List of available Ssl predefined policy.
279    :type predefined_policies: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
280    :param default_policy: Name of the Ssl predefined policy applied by default to application
281     gateway. Possible values include: "AppGwSslPolicy20150501", "AppGwSslPolicy20170401",
282     "AppGwSslPolicy20170401S".
283    :type default_policy: str or
284     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslPolicyName
285    :param available_cipher_suites: List of available Ssl cipher suites.
286    :type available_cipher_suites: list[str or
287     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslCipherSuite]
288    :param available_protocols: List of available Ssl protocols.
289    :type available_protocols: list[str or
290     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslProtocol]
291    """
292
293    _validation = {
294        'name': {'readonly': True},
295        'type': {'readonly': True},
296    }
297
298    _attribute_map = {
299        'id': {'key': 'id', 'type': 'str'},
300        'name': {'key': 'name', 'type': 'str'},
301        'type': {'key': 'type', 'type': 'str'},
302        'location': {'key': 'location', 'type': 'str'},
303        'tags': {'key': 'tags', 'type': '{str}'},
304        'predefined_policies': {'key': 'properties.predefinedPolicies', 'type': '[SubResource]'},
305        'default_policy': {'key': 'properties.defaultPolicy', 'type': 'str'},
306        'available_cipher_suites': {'key': 'properties.availableCipherSuites', 'type': '[str]'},
307        'available_protocols': {'key': 'properties.availableProtocols', 'type': '[str]'},
308    }
309
310    def __init__(
311        self,
312        **kwargs
313    ):
314        super(ApplicationGatewayAvailableSslOptions, self).__init__(**kwargs)
315        self.predefined_policies = kwargs.get('predefined_policies', None)
316        self.default_policy = kwargs.get('default_policy', None)
317        self.available_cipher_suites = kwargs.get('available_cipher_suites', None)
318        self.available_protocols = kwargs.get('available_protocols', None)
319
320
321class ApplicationGatewayAvailableSslPredefinedPolicies(msrest.serialization.Model):
322    """Response for ApplicationGatewayAvailableSslOptions API service call.
323
324    :param value: List of available Ssl predefined policy.
325    :type value: list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslPredefinedPolicy]
326    :param next_link: URL to get the next set of results.
327    :type next_link: str
328    """
329
330    _attribute_map = {
331        'value': {'key': 'value', 'type': '[ApplicationGatewaySslPredefinedPolicy]'},
332        'next_link': {'key': 'nextLink', 'type': 'str'},
333    }
334
335    def __init__(
336        self,
337        **kwargs
338    ):
339        super(ApplicationGatewayAvailableSslPredefinedPolicies, self).__init__(**kwargs)
340        self.value = kwargs.get('value', None)
341        self.next_link = kwargs.get('next_link', None)
342
343
344class ApplicationGatewayAvailableWafRuleSetsResult(msrest.serialization.Model):
345    """Response for ApplicationGatewayAvailableWafRuleSets API service call.
346
347    :param value: The list of application gateway rule sets.
348    :type value: list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayFirewallRuleSet]
349    """
350
351    _attribute_map = {
352        'value': {'key': 'value', 'type': '[ApplicationGatewayFirewallRuleSet]'},
353    }
354
355    def __init__(
356        self,
357        **kwargs
358    ):
359        super(ApplicationGatewayAvailableWafRuleSetsResult, self).__init__(**kwargs)
360        self.value = kwargs.get('value', None)
361
362
363class ApplicationGatewayBackendAddress(msrest.serialization.Model):
364    """Backend address of an application gateway.
365
366    :param fqdn: Fully qualified domain name (FQDN).
367    :type fqdn: str
368    :param ip_address: IP address.
369    :type ip_address: str
370    """
371
372    _attribute_map = {
373        'fqdn': {'key': 'fqdn', 'type': 'str'},
374        'ip_address': {'key': 'ipAddress', 'type': 'str'},
375    }
376
377    def __init__(
378        self,
379        **kwargs
380    ):
381        super(ApplicationGatewayBackendAddress, self).__init__(**kwargs)
382        self.fqdn = kwargs.get('fqdn', None)
383        self.ip_address = kwargs.get('ip_address', None)
384
385
386class ApplicationGatewayBackendAddressPool(SubResource):
387    """Backend Address Pool of an application gateway.
388
389    :param id: Resource ID.
390    :type id: str
391    :param name: Resource that is unique within a resource group. This name can be used to access
392     the resource.
393    :type name: str
394    :param etag: A unique read-only string that changes whenever the resource is updated.
395    :type etag: str
396    :param type: Type of the resource.
397    :type type: str
398    :param backend_ip_configurations: Collection of references to IPs defined in network
399     interfaces.
400    :type backend_ip_configurations:
401     list[~azure.mgmt.network.v2017_08_01.models.NetworkInterfaceIPConfiguration]
402    :param backend_addresses: Backend addresses.
403    :type backend_addresses:
404     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayBackendAddress]
405    :param provisioning_state: Provisioning state of the backend address pool resource. Possible
406     values are: 'Updating', 'Deleting', and 'Failed'.
407    :type provisioning_state: str
408    """
409
410    _attribute_map = {
411        'id': {'key': 'id', 'type': 'str'},
412        'name': {'key': 'name', 'type': 'str'},
413        'etag': {'key': 'etag', 'type': 'str'},
414        'type': {'key': 'type', 'type': 'str'},
415        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
416        'backend_addresses': {'key': 'properties.backendAddresses', 'type': '[ApplicationGatewayBackendAddress]'},
417        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
418    }
419
420    def __init__(
421        self,
422        **kwargs
423    ):
424        super(ApplicationGatewayBackendAddressPool, self).__init__(**kwargs)
425        self.name = kwargs.get('name', None)
426        self.etag = kwargs.get('etag', None)
427        self.type = kwargs.get('type', None)
428        self.backend_ip_configurations = kwargs.get('backend_ip_configurations', None)
429        self.backend_addresses = kwargs.get('backend_addresses', None)
430        self.provisioning_state = kwargs.get('provisioning_state', None)
431
432
433class ApplicationGatewayBackendHealth(msrest.serialization.Model):
434    """List of ApplicationGatewayBackendHealthPool resources.
435
436    :param backend_address_pools:
437    :type backend_address_pools:
438     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayBackendHealthPool]
439    """
440
441    _attribute_map = {
442        'backend_address_pools': {'key': 'backendAddressPools', 'type': '[ApplicationGatewayBackendHealthPool]'},
443    }
444
445    def __init__(
446        self,
447        **kwargs
448    ):
449        super(ApplicationGatewayBackendHealth, self).__init__(**kwargs)
450        self.backend_address_pools = kwargs.get('backend_address_pools', None)
451
452
453class ApplicationGatewayBackendHealthHttpSettings(msrest.serialization.Model):
454    """Application gateway BackendHealthHttp settings.
455
456    :param backend_http_settings: Reference of an ApplicationGatewayBackendHttpSettings resource.
457    :type backend_http_settings:
458     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayBackendHttpSettings
459    :param servers: List of ApplicationGatewayBackendHealthServer resources.
460    :type servers:
461     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayBackendHealthServer]
462    """
463
464    _attribute_map = {
465        'backend_http_settings': {'key': 'backendHttpSettings', 'type': 'ApplicationGatewayBackendHttpSettings'},
466        'servers': {'key': 'servers', 'type': '[ApplicationGatewayBackendHealthServer]'},
467    }
468
469    def __init__(
470        self,
471        **kwargs
472    ):
473        super(ApplicationGatewayBackendHealthHttpSettings, self).__init__(**kwargs)
474        self.backend_http_settings = kwargs.get('backend_http_settings', None)
475        self.servers = kwargs.get('servers', None)
476
477
478class ApplicationGatewayBackendHealthPool(msrest.serialization.Model):
479    """Application gateway BackendHealth pool.
480
481    :param backend_address_pool: Reference of an ApplicationGatewayBackendAddressPool resource.
482    :type backend_address_pool:
483     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayBackendAddressPool
484    :param backend_http_settings_collection: List of ApplicationGatewayBackendHealthHttpSettings
485     resources.
486    :type backend_http_settings_collection:
487     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayBackendHealthHttpSettings]
488    """
489
490    _attribute_map = {
491        'backend_address_pool': {'key': 'backendAddressPool', 'type': 'ApplicationGatewayBackendAddressPool'},
492        'backend_http_settings_collection': {'key': 'backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHealthHttpSettings]'},
493    }
494
495    def __init__(
496        self,
497        **kwargs
498    ):
499        super(ApplicationGatewayBackendHealthPool, self).__init__(**kwargs)
500        self.backend_address_pool = kwargs.get('backend_address_pool', None)
501        self.backend_http_settings_collection = kwargs.get('backend_http_settings_collection', None)
502
503
504class ApplicationGatewayBackendHealthServer(msrest.serialization.Model):
505    """Application gateway backendhealth http settings.
506
507    :param address: IP address or FQDN of backend server.
508    :type address: str
509    :param ip_configuration: Reference of IP configuration of backend server.
510    :type ip_configuration: ~azure.mgmt.network.v2017_08_01.models.NetworkInterfaceIPConfiguration
511    :param health: Health of backend server. Possible values include: "Unknown", "Up", "Down",
512     "Partial", "Draining".
513    :type health: str or
514     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayBackendHealthServerHealth
515    """
516
517    _attribute_map = {
518        'address': {'key': 'address', 'type': 'str'},
519        'ip_configuration': {'key': 'ipConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
520        'health': {'key': 'health', 'type': 'str'},
521    }
522
523    def __init__(
524        self,
525        **kwargs
526    ):
527        super(ApplicationGatewayBackendHealthServer, self).__init__(**kwargs)
528        self.address = kwargs.get('address', None)
529        self.ip_configuration = kwargs.get('ip_configuration', None)
530        self.health = kwargs.get('health', None)
531
532
533class ApplicationGatewayBackendHttpSettings(SubResource):
534    """Backend address pool settings of an application gateway.
535
536    :param id: Resource ID.
537    :type id: str
538    :param name: Name of the resource that is unique within a resource group. This name can be used
539     to access the resource.
540    :type name: str
541    :param etag: A unique read-only string that changes whenever the resource is updated.
542    :type etag: str
543    :param type: Type of the resource.
544    :type type: str
545    :param port: Port.
546    :type port: int
547    :param protocol: Protocol. Possible values include: "Http", "Https".
548    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayProtocol
549    :param cookie_based_affinity: Cookie based affinity. Possible values include: "Enabled",
550     "Disabled".
551    :type cookie_based_affinity: str or
552     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayCookieBasedAffinity
553    :param request_timeout: Request timeout in seconds. Application Gateway will fail the request
554     if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400
555     seconds.
556    :type request_timeout: int
557    :param probe: Probe resource of an application gateway.
558    :type probe: ~azure.mgmt.network.v2017_08_01.models.SubResource
559    :param authentication_certificates: Array of references to application gateway authentication
560     certificates.
561    :type authentication_certificates: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
562    :param connection_draining: Connection draining of the backend http settings resource.
563    :type connection_draining:
564     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayConnectionDraining
565    :param host_name: Host header to be sent to the backend servers.
566    :type host_name: str
567    :param pick_host_name_from_backend_address: Whether to pick host header should be picked from
568     the host name of the backend server. Default value is false.
569    :type pick_host_name_from_backend_address: bool
570    :param affinity_cookie_name: Cookie name to use for the affinity cookie.
571    :type affinity_cookie_name: str
572    :param probe_enabled: Whether the probe is enabled. Default value is false.
573    :type probe_enabled: bool
574    :param path: Path which should be used as a prefix for all HTTP requests. Null means no path
575     will be prefixed. Default value is null.
576    :type path: str
577    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
578     values are: 'Updating', 'Deleting', and 'Failed'.
579    :type provisioning_state: str
580    """
581
582    _attribute_map = {
583        'id': {'key': 'id', 'type': 'str'},
584        'name': {'key': 'name', 'type': 'str'},
585        'etag': {'key': 'etag', 'type': 'str'},
586        'type': {'key': 'type', 'type': 'str'},
587        'port': {'key': 'properties.port', 'type': 'int'},
588        'protocol': {'key': 'properties.protocol', 'type': 'str'},
589        'cookie_based_affinity': {'key': 'properties.cookieBasedAffinity', 'type': 'str'},
590        'request_timeout': {'key': 'properties.requestTimeout', 'type': 'int'},
591        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
592        'authentication_certificates': {'key': 'properties.authenticationCertificates', 'type': '[SubResource]'},
593        'connection_draining': {'key': 'properties.connectionDraining', 'type': 'ApplicationGatewayConnectionDraining'},
594        'host_name': {'key': 'properties.hostName', 'type': 'str'},
595        'pick_host_name_from_backend_address': {'key': 'properties.pickHostNameFromBackendAddress', 'type': 'bool'},
596        'affinity_cookie_name': {'key': 'properties.affinityCookieName', 'type': 'str'},
597        'probe_enabled': {'key': 'properties.probeEnabled', 'type': 'bool'},
598        'path': {'key': 'properties.path', 'type': 'str'},
599        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
600    }
601
602    def __init__(
603        self,
604        **kwargs
605    ):
606        super(ApplicationGatewayBackendHttpSettings, self).__init__(**kwargs)
607        self.name = kwargs.get('name', None)
608        self.etag = kwargs.get('etag', None)
609        self.type = kwargs.get('type', None)
610        self.port = kwargs.get('port', None)
611        self.protocol = kwargs.get('protocol', None)
612        self.cookie_based_affinity = kwargs.get('cookie_based_affinity', None)
613        self.request_timeout = kwargs.get('request_timeout', None)
614        self.probe = kwargs.get('probe', None)
615        self.authentication_certificates = kwargs.get('authentication_certificates', None)
616        self.connection_draining = kwargs.get('connection_draining', None)
617        self.host_name = kwargs.get('host_name', None)
618        self.pick_host_name_from_backend_address = kwargs.get('pick_host_name_from_backend_address', None)
619        self.affinity_cookie_name = kwargs.get('affinity_cookie_name', None)
620        self.probe_enabled = kwargs.get('probe_enabled', None)
621        self.path = kwargs.get('path', None)
622        self.provisioning_state = kwargs.get('provisioning_state', None)
623
624
625class ApplicationGatewayConnectionDraining(msrest.serialization.Model):
626    """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.
627
628    All required parameters must be populated in order to send to Azure.
629
630    :param enabled: Required. Whether connection draining is enabled or not.
631    :type enabled: bool
632    :param drain_timeout_in_sec: Required. The number of seconds connection draining is active.
633     Acceptable values are from 1 second to 3600 seconds.
634    :type drain_timeout_in_sec: int
635    """
636
637    _validation = {
638        'enabled': {'required': True},
639        'drain_timeout_in_sec': {'required': True, 'maximum': 3600, 'minimum': 1},
640    }
641
642    _attribute_map = {
643        'enabled': {'key': 'enabled', 'type': 'bool'},
644        'drain_timeout_in_sec': {'key': 'drainTimeoutInSec', 'type': 'int'},
645    }
646
647    def __init__(
648        self,
649        **kwargs
650    ):
651        super(ApplicationGatewayConnectionDraining, self).__init__(**kwargs)
652        self.enabled = kwargs['enabled']
653        self.drain_timeout_in_sec = kwargs['drain_timeout_in_sec']
654
655
656class ApplicationGatewayFirewallDisabledRuleGroup(msrest.serialization.Model):
657    """Allows to disable rules within a rule group or an entire rule group.
658
659    All required parameters must be populated in order to send to Azure.
660
661    :param rule_group_name: Required. The name of the rule group that will be disabled.
662    :type rule_group_name: str
663    :param rules: The list of rules that will be disabled. If null, all rules of the rule group
664     will be disabled.
665    :type rules: list[int]
666    """
667
668    _validation = {
669        'rule_group_name': {'required': True},
670    }
671
672    _attribute_map = {
673        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
674        'rules': {'key': 'rules', 'type': '[int]'},
675    }
676
677    def __init__(
678        self,
679        **kwargs
680    ):
681        super(ApplicationGatewayFirewallDisabledRuleGroup, self).__init__(**kwargs)
682        self.rule_group_name = kwargs['rule_group_name']
683        self.rules = kwargs.get('rules', None)
684
685
686class ApplicationGatewayFirewallRule(msrest.serialization.Model):
687    """A web application firewall rule.
688
689    All required parameters must be populated in order to send to Azure.
690
691    :param rule_id: Required. The identifier of the web application firewall rule.
692    :type rule_id: int
693    :param description: The description of the web application firewall rule.
694    :type description: str
695    """
696
697    _validation = {
698        'rule_id': {'required': True},
699    }
700
701    _attribute_map = {
702        'rule_id': {'key': 'ruleId', 'type': 'int'},
703        'description': {'key': 'description', 'type': 'str'},
704    }
705
706    def __init__(
707        self,
708        **kwargs
709    ):
710        super(ApplicationGatewayFirewallRule, self).__init__(**kwargs)
711        self.rule_id = kwargs['rule_id']
712        self.description = kwargs.get('description', None)
713
714
715class ApplicationGatewayFirewallRuleGroup(msrest.serialization.Model):
716    """A web application firewall rule group.
717
718    All required parameters must be populated in order to send to Azure.
719
720    :param rule_group_name: Required. The name of the web application firewall rule group.
721    :type rule_group_name: str
722    :param description: The description of the web application firewall rule group.
723    :type description: str
724    :param rules: Required. The rules of the web application firewall rule group.
725    :type rules: list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayFirewallRule]
726    """
727
728    _validation = {
729        'rule_group_name': {'required': True},
730        'rules': {'required': True},
731    }
732
733    _attribute_map = {
734        'rule_group_name': {'key': 'ruleGroupName', 'type': 'str'},
735        'description': {'key': 'description', 'type': 'str'},
736        'rules': {'key': 'rules', 'type': '[ApplicationGatewayFirewallRule]'},
737    }
738
739    def __init__(
740        self,
741        **kwargs
742    ):
743        super(ApplicationGatewayFirewallRuleGroup, self).__init__(**kwargs)
744        self.rule_group_name = kwargs['rule_group_name']
745        self.description = kwargs.get('description', None)
746        self.rules = kwargs['rules']
747
748
749class ApplicationGatewayFirewallRuleSet(Resource):
750    """A web application firewall rule set.
751
752    Variables are only populated by the server, and will be ignored when sending a request.
753
754    :param id: Resource ID.
755    :type id: str
756    :ivar name: Resource name.
757    :vartype name: str
758    :ivar type: Resource type.
759    :vartype type: str
760    :param location: Resource location.
761    :type location: str
762    :param tags: A set of tags. Resource tags.
763    :type tags: dict[str, str]
764    :param provisioning_state: The provisioning state of the web application firewall rule set.
765    :type provisioning_state: str
766    :param rule_set_type: The type of the web application firewall rule set.
767    :type rule_set_type: str
768    :param rule_set_version: The version of the web application firewall rule set type.
769    :type rule_set_version: str
770    :param rule_groups: The rule groups of the web application firewall rule set.
771    :type rule_groups:
772     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayFirewallRuleGroup]
773    """
774
775    _validation = {
776        'name': {'readonly': True},
777        'type': {'readonly': True},
778    }
779
780    _attribute_map = {
781        'id': {'key': 'id', 'type': 'str'},
782        'name': {'key': 'name', 'type': 'str'},
783        'type': {'key': 'type', 'type': 'str'},
784        'location': {'key': 'location', 'type': 'str'},
785        'tags': {'key': 'tags', 'type': '{str}'},
786        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
787        'rule_set_type': {'key': 'properties.ruleSetType', 'type': 'str'},
788        'rule_set_version': {'key': 'properties.ruleSetVersion', 'type': 'str'},
789        'rule_groups': {'key': 'properties.ruleGroups', 'type': '[ApplicationGatewayFirewallRuleGroup]'},
790    }
791
792    def __init__(
793        self,
794        **kwargs
795    ):
796        super(ApplicationGatewayFirewallRuleSet, self).__init__(**kwargs)
797        self.provisioning_state = kwargs.get('provisioning_state', None)
798        self.rule_set_type = kwargs.get('rule_set_type', None)
799        self.rule_set_version = kwargs.get('rule_set_version', None)
800        self.rule_groups = kwargs.get('rule_groups', None)
801
802
803class ApplicationGatewayFrontendIPConfiguration(SubResource):
804    """Frontend IP configuration of an application gateway.
805
806    :param id: Resource ID.
807    :type id: str
808    :param name: Name of the resource that is unique within a resource group. This name can be used
809     to access the resource.
810    :type name: str
811    :param etag: A unique read-only string that changes whenever the resource is updated.
812    :type etag: str
813    :param type: Type of the resource.
814    :type type: str
815    :param private_ip_address: PrivateIPAddress of the network interface IP Configuration.
816    :type private_ip_address: str
817    :param private_ip_allocation_method: PrivateIP allocation method. Possible values include:
818     "Static", "Dynamic".
819    :type private_ip_allocation_method: str or
820     ~azure.mgmt.network.v2017_08_01.models.IPAllocationMethod
821    :param subnet: Reference of the subnet resource.
822    :type subnet: ~azure.mgmt.network.v2017_08_01.models.SubResource
823    :param public_ip_address: Reference of the PublicIP resource.
824    :type public_ip_address: ~azure.mgmt.network.v2017_08_01.models.SubResource
825    :param provisioning_state: Provisioning state of the public IP resource. Possible values are:
826     'Updating', 'Deleting', and 'Failed'.
827    :type provisioning_state: str
828    """
829
830    _attribute_map = {
831        'id': {'key': 'id', 'type': 'str'},
832        'name': {'key': 'name', 'type': 'str'},
833        'etag': {'key': 'etag', 'type': 'str'},
834        'type': {'key': 'type', 'type': 'str'},
835        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
836        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
837        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
838        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
839        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
840    }
841
842    def __init__(
843        self,
844        **kwargs
845    ):
846        super(ApplicationGatewayFrontendIPConfiguration, self).__init__(**kwargs)
847        self.name = kwargs.get('name', None)
848        self.etag = kwargs.get('etag', None)
849        self.type = kwargs.get('type', None)
850        self.private_ip_address = kwargs.get('private_ip_address', None)
851        self.private_ip_allocation_method = kwargs.get('private_ip_allocation_method', None)
852        self.subnet = kwargs.get('subnet', None)
853        self.public_ip_address = kwargs.get('public_ip_address', None)
854        self.provisioning_state = kwargs.get('provisioning_state', None)
855
856
857class ApplicationGatewayFrontendPort(SubResource):
858    """Frontend port of an application gateway.
859
860    :param id: Resource ID.
861    :type id: str
862    :param name: Name of the resource that is unique within a resource group. This name can be used
863     to access the resource.
864    :type name: str
865    :param etag: A unique read-only string that changes whenever the resource is updated.
866    :type etag: str
867    :param type: Type of the resource.
868    :type type: str
869    :param port: Frontend port.
870    :type port: int
871    :param provisioning_state: Provisioning state of the frontend port resource. Possible values
872     are: 'Updating', 'Deleting', and 'Failed'.
873    :type provisioning_state: str
874    """
875
876    _attribute_map = {
877        'id': {'key': 'id', 'type': 'str'},
878        'name': {'key': 'name', 'type': 'str'},
879        'etag': {'key': 'etag', 'type': 'str'},
880        'type': {'key': 'type', 'type': 'str'},
881        'port': {'key': 'properties.port', 'type': 'int'},
882        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
883    }
884
885    def __init__(
886        self,
887        **kwargs
888    ):
889        super(ApplicationGatewayFrontendPort, self).__init__(**kwargs)
890        self.name = kwargs.get('name', None)
891        self.etag = kwargs.get('etag', None)
892        self.type = kwargs.get('type', None)
893        self.port = kwargs.get('port', None)
894        self.provisioning_state = kwargs.get('provisioning_state', None)
895
896
897class ApplicationGatewayHttpListener(SubResource):
898    """Http listener of an application gateway.
899
900    :param id: Resource ID.
901    :type id: str
902    :param name: Name of the resource that is unique within a resource group. This name can be used
903     to access the resource.
904    :type name: str
905    :param etag: A unique read-only string that changes whenever the resource is updated.
906    :type etag: str
907    :param type: Type of the resource.
908    :type type: str
909    :param frontend_ip_configuration: Frontend IP configuration resource of an application gateway.
910    :type frontend_ip_configuration: ~azure.mgmt.network.v2017_08_01.models.SubResource
911    :param frontend_port: Frontend port resource of an application gateway.
912    :type frontend_port: ~azure.mgmt.network.v2017_08_01.models.SubResource
913    :param protocol: Protocol. Possible values include: "Http", "Https".
914    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayProtocol
915    :param host_name: Host name of HTTP listener.
916    :type host_name: str
917    :param ssl_certificate: SSL certificate resource of an application gateway.
918    :type ssl_certificate: ~azure.mgmt.network.v2017_08_01.models.SubResource
919    :param require_server_name_indication: Applicable only if protocol is https. Enables SNI for
920     multi-hosting.
921    :type require_server_name_indication: bool
922    :param provisioning_state: Provisioning state of the HTTP listener resource. Possible values
923     are: 'Updating', 'Deleting', and 'Failed'.
924    :type provisioning_state: str
925    """
926
927    _attribute_map = {
928        'id': {'key': 'id', 'type': 'str'},
929        'name': {'key': 'name', 'type': 'str'},
930        'etag': {'key': 'etag', 'type': 'str'},
931        'type': {'key': 'type', 'type': 'str'},
932        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
933        'frontend_port': {'key': 'properties.frontendPort', 'type': 'SubResource'},
934        'protocol': {'key': 'properties.protocol', 'type': 'str'},
935        'host_name': {'key': 'properties.hostName', 'type': 'str'},
936        'ssl_certificate': {'key': 'properties.sslCertificate', 'type': 'SubResource'},
937        'require_server_name_indication': {'key': 'properties.requireServerNameIndication', 'type': 'bool'},
938        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
939    }
940
941    def __init__(
942        self,
943        **kwargs
944    ):
945        super(ApplicationGatewayHttpListener, self).__init__(**kwargs)
946        self.name = kwargs.get('name', None)
947        self.etag = kwargs.get('etag', None)
948        self.type = kwargs.get('type', None)
949        self.frontend_ip_configuration = kwargs.get('frontend_ip_configuration', None)
950        self.frontend_port = kwargs.get('frontend_port', None)
951        self.protocol = kwargs.get('protocol', None)
952        self.host_name = kwargs.get('host_name', None)
953        self.ssl_certificate = kwargs.get('ssl_certificate', None)
954        self.require_server_name_indication = kwargs.get('require_server_name_indication', None)
955        self.provisioning_state = kwargs.get('provisioning_state', None)
956
957
958class ApplicationGatewayIPConfiguration(SubResource):
959    """IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.
960
961    :param id: Resource ID.
962    :type id: str
963    :param name: Name of the resource that is unique within a resource group. This name can be used
964     to access the resource.
965    :type name: str
966    :param etag: A unique read-only string that changes whenever the resource is updated.
967    :type etag: str
968    :param type: Type of the resource.
969    :type type: str
970    :param subnet: Reference of the subnet resource. A subnet from where application gateway gets
971     its private address.
972    :type subnet: ~azure.mgmt.network.v2017_08_01.models.SubResource
973    :param provisioning_state: Provisioning state of the application gateway subnet resource.
974     Possible values are: 'Updating', 'Deleting', and 'Failed'.
975    :type provisioning_state: str
976    """
977
978    _attribute_map = {
979        'id': {'key': 'id', 'type': 'str'},
980        'name': {'key': 'name', 'type': 'str'},
981        'etag': {'key': 'etag', 'type': 'str'},
982        'type': {'key': 'type', 'type': 'str'},
983        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
984        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
985    }
986
987    def __init__(
988        self,
989        **kwargs
990    ):
991        super(ApplicationGatewayIPConfiguration, self).__init__(**kwargs)
992        self.name = kwargs.get('name', None)
993        self.etag = kwargs.get('etag', None)
994        self.type = kwargs.get('type', None)
995        self.subnet = kwargs.get('subnet', None)
996        self.provisioning_state = kwargs.get('provisioning_state', None)
997
998
999class ApplicationGatewayListResult(msrest.serialization.Model):
1000    """Response for ListApplicationGateways API service call.
1001
1002    :param value: List of an application gateways in a resource group.
1003    :type value: list[~azure.mgmt.network.v2017_08_01.models.ApplicationGateway]
1004    :param next_link: URL to get the next set of results.
1005    :type next_link: str
1006    """
1007
1008    _attribute_map = {
1009        'value': {'key': 'value', 'type': '[ApplicationGateway]'},
1010        'next_link': {'key': 'nextLink', 'type': 'str'},
1011    }
1012
1013    def __init__(
1014        self,
1015        **kwargs
1016    ):
1017        super(ApplicationGatewayListResult, self).__init__(**kwargs)
1018        self.value = kwargs.get('value', None)
1019        self.next_link = kwargs.get('next_link', None)
1020
1021
1022class ApplicationGatewayPathRule(SubResource):
1023    """Path rule of URL path map of an application gateway.
1024
1025    :param id: Resource ID.
1026    :type id: str
1027    :param name: Name of the resource that is unique within a resource group. This name can be used
1028     to access the resource.
1029    :type name: str
1030    :param etag: A unique read-only string that changes whenever the resource is updated.
1031    :type etag: str
1032    :param type: Type of the resource.
1033    :type type: str
1034    :param paths: Path rules of URL path map.
1035    :type paths: list[str]
1036    :param backend_address_pool: Backend address pool resource of URL path map path rule.
1037    :type backend_address_pool: ~azure.mgmt.network.v2017_08_01.models.SubResource
1038    :param backend_http_settings: Backend http settings resource of URL path map path rule.
1039    :type backend_http_settings: ~azure.mgmt.network.v2017_08_01.models.SubResource
1040    :param redirect_configuration: Redirect configuration resource of URL path map path rule.
1041    :type redirect_configuration: ~azure.mgmt.network.v2017_08_01.models.SubResource
1042    :param provisioning_state: Path rule of URL path map resource. Possible values are: 'Updating',
1043     'Deleting', and 'Failed'.
1044    :type provisioning_state: str
1045    """
1046
1047    _attribute_map = {
1048        'id': {'key': 'id', 'type': 'str'},
1049        'name': {'key': 'name', 'type': 'str'},
1050        'etag': {'key': 'etag', 'type': 'str'},
1051        'type': {'key': 'type', 'type': 'str'},
1052        'paths': {'key': 'properties.paths', 'type': '[str]'},
1053        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1054        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1055        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1056        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1057    }
1058
1059    def __init__(
1060        self,
1061        **kwargs
1062    ):
1063        super(ApplicationGatewayPathRule, self).__init__(**kwargs)
1064        self.name = kwargs.get('name', None)
1065        self.etag = kwargs.get('etag', None)
1066        self.type = kwargs.get('type', None)
1067        self.paths = kwargs.get('paths', None)
1068        self.backend_address_pool = kwargs.get('backend_address_pool', None)
1069        self.backend_http_settings = kwargs.get('backend_http_settings', None)
1070        self.redirect_configuration = kwargs.get('redirect_configuration', None)
1071        self.provisioning_state = kwargs.get('provisioning_state', None)
1072
1073
1074class ApplicationGatewayProbe(SubResource):
1075    """Probe of the application gateway.
1076
1077    :param id: Resource ID.
1078    :type id: str
1079    :param name: Name of the resource that is unique within a resource group. This name can be used
1080     to access the resource.
1081    :type name: str
1082    :param etag: A unique read-only string that changes whenever the resource is updated.
1083    :type etag: str
1084    :param type: Type of the resource.
1085    :type type: str
1086    :param protocol: Protocol. Possible values include: "Http", "Https".
1087    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayProtocol
1088    :param host: Host name to send the probe to.
1089    :type host: str
1090    :param path: Relative path of probe. Valid path starts from '/'. Probe is sent to
1091     :code:`<Protocol>`://:code:`<host>`::code:`<port>`:code:`<path>`.
1092    :type path: str
1093    :param interval: The probing interval in seconds. This is the time interval between two
1094     consecutive probes. Acceptable values are from 1 second to 86400 seconds.
1095    :type interval: int
1096    :param timeout: the probe timeout in seconds. Probe marked as failed if valid response is not
1097     received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
1098    :type timeout: int
1099    :param unhealthy_threshold: The probe retry count. Backend server is marked down after
1100     consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second
1101     to 20.
1102    :type unhealthy_threshold: int
1103    :param pick_host_name_from_backend_http_settings: Whether the host header should be picked from
1104     the backend http settings. Default value is false.
1105    :type pick_host_name_from_backend_http_settings: bool
1106    :param min_servers: Minimum number of servers that are always marked healthy. Default value is
1107     0.
1108    :type min_servers: int
1109    :param match: Criterion for classifying a healthy probe response.
1110    :type match: ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayProbeHealthResponseMatch
1111    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
1112     values are: 'Updating', '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        'protocol': {'key': 'properties.protocol', 'type': 'str'},
1122        'host': {'key': 'properties.host', 'type': 'str'},
1123        'path': {'key': 'properties.path', 'type': 'str'},
1124        'interval': {'key': 'properties.interval', 'type': 'int'},
1125        'timeout': {'key': 'properties.timeout', 'type': 'int'},
1126        'unhealthy_threshold': {'key': 'properties.unhealthyThreshold', 'type': 'int'},
1127        'pick_host_name_from_backend_http_settings': {'key': 'properties.pickHostNameFromBackendHttpSettings', 'type': 'bool'},
1128        'min_servers': {'key': 'properties.minServers', 'type': 'int'},
1129        'match': {'key': 'properties.match', 'type': 'ApplicationGatewayProbeHealthResponseMatch'},
1130        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1131    }
1132
1133    def __init__(
1134        self,
1135        **kwargs
1136    ):
1137        super(ApplicationGatewayProbe, self).__init__(**kwargs)
1138        self.name = kwargs.get('name', None)
1139        self.etag = kwargs.get('etag', None)
1140        self.type = kwargs.get('type', None)
1141        self.protocol = kwargs.get('protocol', None)
1142        self.host = kwargs.get('host', None)
1143        self.path = kwargs.get('path', None)
1144        self.interval = kwargs.get('interval', None)
1145        self.timeout = kwargs.get('timeout', None)
1146        self.unhealthy_threshold = kwargs.get('unhealthy_threshold', None)
1147        self.pick_host_name_from_backend_http_settings = kwargs.get('pick_host_name_from_backend_http_settings', None)
1148        self.min_servers = kwargs.get('min_servers', None)
1149        self.match = kwargs.get('match', None)
1150        self.provisioning_state = kwargs.get('provisioning_state', None)
1151
1152
1153class ApplicationGatewayProbeHealthResponseMatch(msrest.serialization.Model):
1154    """Application gateway probe health response match.
1155
1156    :param body: Body that must be contained in the health response. Default value is empty.
1157    :type body: str
1158    :param status_codes: Allowed ranges of healthy status codes. Default range of healthy status
1159     codes is 200-399.
1160    :type status_codes: list[str]
1161    """
1162
1163    _attribute_map = {
1164        'body': {'key': 'body', 'type': 'str'},
1165        'status_codes': {'key': 'statusCodes', 'type': '[str]'},
1166    }
1167
1168    def __init__(
1169        self,
1170        **kwargs
1171    ):
1172        super(ApplicationGatewayProbeHealthResponseMatch, self).__init__(**kwargs)
1173        self.body = kwargs.get('body', None)
1174        self.status_codes = kwargs.get('status_codes', None)
1175
1176
1177class ApplicationGatewayRedirectConfiguration(SubResource):
1178    """Redirect configuration of an application gateway.
1179
1180    :param id: Resource ID.
1181    :type id: str
1182    :param name: Name of the resource that is unique within a resource group. This name can be used
1183     to access the resource.
1184    :type name: str
1185    :param etag: A unique read-only string that changes whenever the resource is updated.
1186    :type etag: str
1187    :param type: Type of the resource.
1188    :type type: str
1189    :param redirect_type: Supported http redirection types - Permanent, Temporary, Found, SeeOther.
1190     Possible values include: "Permanent", "Found", "SeeOther", "Temporary".
1191    :type redirect_type: str or
1192     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayRedirectType
1193    :param target_listener: Reference to a listener to redirect the request to.
1194    :type target_listener: ~azure.mgmt.network.v2017_08_01.models.SubResource
1195    :param target_url: Url to redirect the request to.
1196    :type target_url: str
1197    :param include_path: Include path in the redirected url.
1198    :type include_path: bool
1199    :param include_query_string: Include query string in the redirected url.
1200    :type include_query_string: bool
1201    :param request_routing_rules: Request routing specifying redirect configuration.
1202    :type request_routing_rules: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
1203    :param url_path_maps: Url path maps specifying default redirect configuration.
1204    :type url_path_maps: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
1205    :param path_rules: Path rules specifying redirect configuration.
1206    :type path_rules: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
1207    """
1208
1209    _attribute_map = {
1210        'id': {'key': 'id', 'type': 'str'},
1211        'name': {'key': 'name', 'type': 'str'},
1212        'etag': {'key': 'etag', 'type': 'str'},
1213        'type': {'key': 'type', 'type': 'str'},
1214        'redirect_type': {'key': 'properties.redirectType', 'type': 'str'},
1215        'target_listener': {'key': 'properties.targetListener', 'type': 'SubResource'},
1216        'target_url': {'key': 'properties.targetUrl', 'type': 'str'},
1217        'include_path': {'key': 'properties.includePath', 'type': 'bool'},
1218        'include_query_string': {'key': 'properties.includeQueryString', 'type': 'bool'},
1219        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[SubResource]'},
1220        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[SubResource]'},
1221        'path_rules': {'key': 'properties.pathRules', 'type': '[SubResource]'},
1222    }
1223
1224    def __init__(
1225        self,
1226        **kwargs
1227    ):
1228        super(ApplicationGatewayRedirectConfiguration, self).__init__(**kwargs)
1229        self.name = kwargs.get('name', None)
1230        self.etag = kwargs.get('etag', None)
1231        self.type = kwargs.get('type', None)
1232        self.redirect_type = kwargs.get('redirect_type', None)
1233        self.target_listener = kwargs.get('target_listener', None)
1234        self.target_url = kwargs.get('target_url', None)
1235        self.include_path = kwargs.get('include_path', None)
1236        self.include_query_string = kwargs.get('include_query_string', None)
1237        self.request_routing_rules = kwargs.get('request_routing_rules', None)
1238        self.url_path_maps = kwargs.get('url_path_maps', None)
1239        self.path_rules = kwargs.get('path_rules', None)
1240
1241
1242class ApplicationGatewayRequestRoutingRule(SubResource):
1243    """Request routing rule of an application gateway.
1244
1245    :param id: Resource ID.
1246    :type id: str
1247    :param name: Name of the resource that is unique within a resource group. This name can be used
1248     to access the resource.
1249    :type name: str
1250    :param etag: A unique read-only string that changes whenever the resource is updated.
1251    :type etag: str
1252    :param type: Type of the resource.
1253    :type type: str
1254    :param rule_type: Rule type. Possible values include: "Basic", "PathBasedRouting".
1255    :type rule_type: str or
1256     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayRequestRoutingRuleType
1257    :param backend_address_pool: Backend address pool resource of the application gateway.
1258    :type backend_address_pool: ~azure.mgmt.network.v2017_08_01.models.SubResource
1259    :param backend_http_settings: Frontend port resource of the application gateway.
1260    :type backend_http_settings: ~azure.mgmt.network.v2017_08_01.models.SubResource
1261    :param http_listener: Http listener resource of the application gateway.
1262    :type http_listener: ~azure.mgmt.network.v2017_08_01.models.SubResource
1263    :param url_path_map: URL path map resource of the application gateway.
1264    :type url_path_map: ~azure.mgmt.network.v2017_08_01.models.SubResource
1265    :param redirect_configuration: Redirect configuration resource of the application gateway.
1266    :type redirect_configuration: ~azure.mgmt.network.v2017_08_01.models.SubResource
1267    :param provisioning_state: Provisioning state of the request routing rule resource. Possible
1268     values are: 'Updating', 'Deleting', and 'Failed'.
1269    :type provisioning_state: str
1270    """
1271
1272    _attribute_map = {
1273        'id': {'key': 'id', 'type': 'str'},
1274        'name': {'key': 'name', 'type': 'str'},
1275        'etag': {'key': 'etag', 'type': 'str'},
1276        'type': {'key': 'type', 'type': 'str'},
1277        'rule_type': {'key': 'properties.ruleType', 'type': 'str'},
1278        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
1279        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
1280        'http_listener': {'key': 'properties.httpListener', 'type': 'SubResource'},
1281        'url_path_map': {'key': 'properties.urlPathMap', 'type': 'SubResource'},
1282        'redirect_configuration': {'key': 'properties.redirectConfiguration', 'type': 'SubResource'},
1283        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1284    }
1285
1286    def __init__(
1287        self,
1288        **kwargs
1289    ):
1290        super(ApplicationGatewayRequestRoutingRule, self).__init__(**kwargs)
1291        self.name = kwargs.get('name', None)
1292        self.etag = kwargs.get('etag', None)
1293        self.type = kwargs.get('type', None)
1294        self.rule_type = kwargs.get('rule_type', None)
1295        self.backend_address_pool = kwargs.get('backend_address_pool', None)
1296        self.backend_http_settings = kwargs.get('backend_http_settings', None)
1297        self.http_listener = kwargs.get('http_listener', None)
1298        self.url_path_map = kwargs.get('url_path_map', None)
1299        self.redirect_configuration = kwargs.get('redirect_configuration', None)
1300        self.provisioning_state = kwargs.get('provisioning_state', None)
1301
1302
1303class ApplicationGatewaySku(msrest.serialization.Model):
1304    """SKU of an application gateway.
1305
1306    :param name: Name of an application gateway SKU. Possible values include: "Standard_Small",
1307     "Standard_Medium", "Standard_Large", "WAF_Medium", "WAF_Large".
1308    :type name: str or ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySkuName
1309    :param tier: Tier of an application gateway. Possible values include: "Standard", "WAF".
1310    :type tier: str or ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayTier
1311    :param capacity: Capacity (instance count) of an application gateway.
1312    :type capacity: int
1313    """
1314
1315    _attribute_map = {
1316        'name': {'key': 'name', 'type': 'str'},
1317        'tier': {'key': 'tier', 'type': 'str'},
1318        'capacity': {'key': 'capacity', 'type': 'int'},
1319    }
1320
1321    def __init__(
1322        self,
1323        **kwargs
1324    ):
1325        super(ApplicationGatewaySku, self).__init__(**kwargs)
1326        self.name = kwargs.get('name', None)
1327        self.tier = kwargs.get('tier', None)
1328        self.capacity = kwargs.get('capacity', None)
1329
1330
1331class ApplicationGatewaySslCertificate(SubResource):
1332    """SSL certificates of an application gateway.
1333
1334    :param id: Resource ID.
1335    :type id: str
1336    :param name: Name of the resource that is unique within a resource group. This name can be used
1337     to access the resource.
1338    :type name: str
1339    :param etag: A unique read-only string that changes whenever the resource is updated.
1340    :type etag: str
1341    :param type: Type of the resource.
1342    :type type: str
1343    :param data: Base-64 encoded pfx certificate. Only applicable in PUT Request.
1344    :type data: str
1345    :param password: Password for the pfx file specified in data. Only applicable in PUT request.
1346    :type password: str
1347    :param public_cert_data: Base-64 encoded Public cert data corresponding to pfx specified in
1348     data. Only applicable in GET request.
1349    :type public_cert_data: str
1350    :param provisioning_state: Provisioning state of the SSL certificate resource Possible values
1351     are: 'Updating', 'Deleting', and 'Failed'.
1352    :type provisioning_state: str
1353    """
1354
1355    _attribute_map = {
1356        'id': {'key': 'id', 'type': 'str'},
1357        'name': {'key': 'name', 'type': 'str'},
1358        'etag': {'key': 'etag', 'type': 'str'},
1359        'type': {'key': 'type', 'type': 'str'},
1360        'data': {'key': 'properties.data', 'type': 'str'},
1361        'password': {'key': 'properties.password', 'type': 'str'},
1362        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
1363        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1364    }
1365
1366    def __init__(
1367        self,
1368        **kwargs
1369    ):
1370        super(ApplicationGatewaySslCertificate, self).__init__(**kwargs)
1371        self.name = kwargs.get('name', None)
1372        self.etag = kwargs.get('etag', None)
1373        self.type = kwargs.get('type', None)
1374        self.data = kwargs.get('data', None)
1375        self.password = kwargs.get('password', None)
1376        self.public_cert_data = kwargs.get('public_cert_data', None)
1377        self.provisioning_state = kwargs.get('provisioning_state', None)
1378
1379
1380class ApplicationGatewaySslPolicy(msrest.serialization.Model):
1381    """Application Gateway Ssl policy.
1382
1383    :param disabled_ssl_protocols: Ssl protocols to be disabled on application gateway.
1384    :type disabled_ssl_protocols: list[str or
1385     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslProtocol]
1386    :param policy_type: Type of Ssl Policy. Possible values include: "Predefined", "Custom".
1387    :type policy_type: str or
1388     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslPolicyType
1389    :param policy_name: Name of Ssl predefined policy. Possible values include:
1390     "AppGwSslPolicy20150501", "AppGwSslPolicy20170401", "AppGwSslPolicy20170401S".
1391    :type policy_name: str or
1392     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslPolicyName
1393    :param cipher_suites: Ssl cipher suites to be enabled in the specified order to application
1394     gateway.
1395    :type cipher_suites: list[str or
1396     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslCipherSuite]
1397    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
1398     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
1399    :type min_protocol_version: str or
1400     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslProtocol
1401    """
1402
1403    _attribute_map = {
1404        'disabled_ssl_protocols': {'key': 'disabledSslProtocols', 'type': '[str]'},
1405        'policy_type': {'key': 'policyType', 'type': 'str'},
1406        'policy_name': {'key': 'policyName', 'type': 'str'},
1407        'cipher_suites': {'key': 'cipherSuites', 'type': '[str]'},
1408        'min_protocol_version': {'key': 'minProtocolVersion', 'type': 'str'},
1409    }
1410
1411    def __init__(
1412        self,
1413        **kwargs
1414    ):
1415        super(ApplicationGatewaySslPolicy, self).__init__(**kwargs)
1416        self.disabled_ssl_protocols = kwargs.get('disabled_ssl_protocols', None)
1417        self.policy_type = kwargs.get('policy_type', None)
1418        self.policy_name = kwargs.get('policy_name', None)
1419        self.cipher_suites = kwargs.get('cipher_suites', None)
1420        self.min_protocol_version = kwargs.get('min_protocol_version', None)
1421
1422
1423class ApplicationGatewaySslPredefinedPolicy(SubResource):
1424    """An Ssl predefined policy.
1425
1426    :param id: Resource ID.
1427    :type id: str
1428    :param name: Name of Ssl predefined policy.
1429    :type name: str
1430    :param cipher_suites: Ssl cipher suites to be enabled in the specified order for application
1431     gateway.
1432    :type cipher_suites: list[str or
1433     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslCipherSuite]
1434    :param min_protocol_version: Minimum version of Ssl protocol to be supported on application
1435     gateway. Possible values include: "TLSv1_0", "TLSv1_1", "TLSv1_2".
1436    :type min_protocol_version: str or
1437     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewaySslProtocol
1438    """
1439
1440    _attribute_map = {
1441        'id': {'key': 'id', 'type': 'str'},
1442        'name': {'key': 'name', 'type': 'str'},
1443        'cipher_suites': {'key': 'properties.cipherSuites', 'type': '[str]'},
1444        'min_protocol_version': {'key': 'properties.minProtocolVersion', 'type': 'str'},
1445    }
1446
1447    def __init__(
1448        self,
1449        **kwargs
1450    ):
1451        super(ApplicationGatewaySslPredefinedPolicy, self).__init__(**kwargs)
1452        self.name = kwargs.get('name', None)
1453        self.cipher_suites = kwargs.get('cipher_suites', None)
1454        self.min_protocol_version = kwargs.get('min_protocol_version', None)
1455
1456
1457class ApplicationGatewayUrlPathMap(SubResource):
1458    """UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.
1459
1460    :param id: Resource ID.
1461    :type id: str
1462    :param name: Name of the resource that is unique within a resource group. This name can be used
1463     to access the resource.
1464    :type name: str
1465    :param etag: A unique read-only string that changes whenever the resource is updated.
1466    :type etag: str
1467    :param type: Type of the resource.
1468    :type type: str
1469    :param default_backend_address_pool: Default backend address pool resource of URL path map.
1470    :type default_backend_address_pool: ~azure.mgmt.network.v2017_08_01.models.SubResource
1471    :param default_backend_http_settings: Default backend http settings resource of URL path map.
1472    :type default_backend_http_settings: ~azure.mgmt.network.v2017_08_01.models.SubResource
1473    :param default_redirect_configuration: Default redirect configuration resource of URL path map.
1474    :type default_redirect_configuration: ~azure.mgmt.network.v2017_08_01.models.SubResource
1475    :param path_rules: Path rule of URL path map resource.
1476    :type path_rules: list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayPathRule]
1477    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
1478     values are: 'Updating', 'Deleting', and 'Failed'.
1479    :type provisioning_state: str
1480    """
1481
1482    _attribute_map = {
1483        'id': {'key': 'id', 'type': 'str'},
1484        'name': {'key': 'name', 'type': 'str'},
1485        'etag': {'key': 'etag', 'type': 'str'},
1486        'type': {'key': 'type', 'type': 'str'},
1487        'default_backend_address_pool': {'key': 'properties.defaultBackendAddressPool', 'type': 'SubResource'},
1488        'default_backend_http_settings': {'key': 'properties.defaultBackendHttpSettings', 'type': 'SubResource'},
1489        'default_redirect_configuration': {'key': 'properties.defaultRedirectConfiguration', 'type': 'SubResource'},
1490        'path_rules': {'key': 'properties.pathRules', 'type': '[ApplicationGatewayPathRule]'},
1491        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1492    }
1493
1494    def __init__(
1495        self,
1496        **kwargs
1497    ):
1498        super(ApplicationGatewayUrlPathMap, self).__init__(**kwargs)
1499        self.name = kwargs.get('name', None)
1500        self.etag = kwargs.get('etag', None)
1501        self.type = kwargs.get('type', None)
1502        self.default_backend_address_pool = kwargs.get('default_backend_address_pool', None)
1503        self.default_backend_http_settings = kwargs.get('default_backend_http_settings', None)
1504        self.default_redirect_configuration = kwargs.get('default_redirect_configuration', None)
1505        self.path_rules = kwargs.get('path_rules', None)
1506        self.provisioning_state = kwargs.get('provisioning_state', None)
1507
1508
1509class ApplicationGatewayWebApplicationFirewallConfiguration(msrest.serialization.Model):
1510    """Application gateway web application firewall configuration.
1511
1512    All required parameters must be populated in order to send to Azure.
1513
1514    :param enabled: Required. Whether the web application firewall is enabled or not.
1515    :type enabled: bool
1516    :param firewall_mode: Required. Web application firewall mode. Possible values include:
1517     "Detection", "Prevention".
1518    :type firewall_mode: str or
1519     ~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayFirewallMode
1520    :param rule_set_type: Required. The type of the web application firewall rule set. Possible
1521     values are: 'OWASP'.
1522    :type rule_set_type: str
1523    :param rule_set_version: Required. The version of the rule set type.
1524    :type rule_set_version: str
1525    :param disabled_rule_groups: The disabled rule groups.
1526    :type disabled_rule_groups:
1527     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayFirewallDisabledRuleGroup]
1528    """
1529
1530    _validation = {
1531        'enabled': {'required': True},
1532        'firewall_mode': {'required': True},
1533        'rule_set_type': {'required': True},
1534        'rule_set_version': {'required': True},
1535    }
1536
1537    _attribute_map = {
1538        'enabled': {'key': 'enabled', 'type': 'bool'},
1539        'firewall_mode': {'key': 'firewallMode', 'type': 'str'},
1540        'rule_set_type': {'key': 'ruleSetType', 'type': 'str'},
1541        'rule_set_version': {'key': 'ruleSetVersion', 'type': 'str'},
1542        'disabled_rule_groups': {'key': 'disabledRuleGroups', 'type': '[ApplicationGatewayFirewallDisabledRuleGroup]'},
1543    }
1544
1545    def __init__(
1546        self,
1547        **kwargs
1548    ):
1549        super(ApplicationGatewayWebApplicationFirewallConfiguration, self).__init__(**kwargs)
1550        self.enabled = kwargs['enabled']
1551        self.firewall_mode = kwargs['firewall_mode']
1552        self.rule_set_type = kwargs['rule_set_type']
1553        self.rule_set_version = kwargs['rule_set_version']
1554        self.disabled_rule_groups = kwargs.get('disabled_rule_groups', None)
1555
1556
1557class AuthorizationListResult(msrest.serialization.Model):
1558    """Response for ListAuthorizations API service call retrieves all authorizations that belongs to an ExpressRouteCircuit.
1559
1560    :param value: The authorizations in an ExpressRoute Circuit.
1561    :type value: list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitAuthorization]
1562    :param next_link: The URL to get the next set of results.
1563    :type next_link: str
1564    """
1565
1566    _attribute_map = {
1567        'value': {'key': 'value', 'type': '[ExpressRouteCircuitAuthorization]'},
1568        'next_link': {'key': 'nextLink', 'type': 'str'},
1569    }
1570
1571    def __init__(
1572        self,
1573        **kwargs
1574    ):
1575        super(AuthorizationListResult, self).__init__(**kwargs)
1576        self.value = kwargs.get('value', None)
1577        self.next_link = kwargs.get('next_link', None)
1578
1579
1580class AzureAsyncOperationResult(msrest.serialization.Model):
1581    """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.
1582
1583    :param status: Status of the Azure async operation. Possible values are: 'InProgress',
1584     'Succeeded', and 'Failed'. Possible values include: "InProgress", "Succeeded", "Failed".
1585    :type status: str or ~azure.mgmt.network.v2017_08_01.models.NetworkOperationStatus
1586    :param error:
1587    :type error: ~azure.mgmt.network.v2017_08_01.models.Error
1588    """
1589
1590    _attribute_map = {
1591        'status': {'key': 'status', 'type': 'str'},
1592        'error': {'key': 'error', 'type': 'Error'},
1593    }
1594
1595    def __init__(
1596        self,
1597        **kwargs
1598    ):
1599        super(AzureAsyncOperationResult, self).__init__(**kwargs)
1600        self.status = kwargs.get('status', None)
1601        self.error = kwargs.get('error', None)
1602
1603
1604class BackendAddressPool(SubResource):
1605    """Pool of backend IP addresses.
1606
1607    Variables are only populated by the server, and will be ignored when sending a request.
1608
1609    :param id: Resource ID.
1610    :type id: str
1611    :param name: Gets name of the resource that is unique within a resource group. This name can be
1612     used to access the resource.
1613    :type name: str
1614    :param etag: A unique read-only string that changes whenever the resource is updated.
1615    :type etag: str
1616    :ivar backend_ip_configurations: Gets collection of references to IP addresses defined in
1617     network interfaces.
1618    :vartype backend_ip_configurations:
1619     list[~azure.mgmt.network.v2017_08_01.models.NetworkInterfaceIPConfiguration]
1620    :ivar load_balancing_rules: Gets load balancing rules that use this backend address pool.
1621    :vartype load_balancing_rules: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
1622    :ivar outbound_nat_rule: Gets outbound rules that use this backend address pool.
1623    :vartype outbound_nat_rule: ~azure.mgmt.network.v2017_08_01.models.SubResource
1624    :param provisioning_state: Get provisioning state of the public IP resource. Possible values
1625     are: 'Updating', 'Deleting', and 'Failed'.
1626    :type provisioning_state: str
1627    """
1628
1629    _validation = {
1630        'backend_ip_configurations': {'readonly': True},
1631        'load_balancing_rules': {'readonly': True},
1632        'outbound_nat_rule': {'readonly': True},
1633    }
1634
1635    _attribute_map = {
1636        'id': {'key': 'id', 'type': 'str'},
1637        'name': {'key': 'name', 'type': 'str'},
1638        'etag': {'key': 'etag', 'type': 'str'},
1639        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
1640        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
1641        'outbound_nat_rule': {'key': 'properties.outboundNatRule', 'type': 'SubResource'},
1642        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1643    }
1644
1645    def __init__(
1646        self,
1647        **kwargs
1648    ):
1649        super(BackendAddressPool, self).__init__(**kwargs)
1650        self.name = kwargs.get('name', None)
1651        self.etag = kwargs.get('etag', None)
1652        self.backend_ip_configurations = None
1653        self.load_balancing_rules = None
1654        self.outbound_nat_rule = None
1655        self.provisioning_state = kwargs.get('provisioning_state', None)
1656
1657
1658class BGPCommunity(msrest.serialization.Model):
1659    """Contains bgp community information offered in Service Community resources.
1660
1661    :param service_supported_region: The region which the service support. e.g. For O365, region is
1662     Global.
1663    :type service_supported_region: str
1664    :param community_name: The name of the bgp community. e.g. Skype.
1665    :type community_name: str
1666    :param community_value: The value of the bgp community. For more information:
1667     https://docs.microsoft.com/en-us/azure/expressroute/expressroute-routing.
1668    :type community_value: str
1669    :param community_prefixes: The prefixes that the bgp community contains.
1670    :type community_prefixes: list[str]
1671    :param is_authorized_to_use: Customer is authorized to use bgp community or not.
1672    :type is_authorized_to_use: bool
1673    :param service_group: The service group of the bgp community contains.
1674    :type service_group: str
1675    """
1676
1677    _attribute_map = {
1678        'service_supported_region': {'key': 'serviceSupportedRegion', 'type': 'str'},
1679        'community_name': {'key': 'communityName', 'type': 'str'},
1680        'community_value': {'key': 'communityValue', 'type': 'str'},
1681        'community_prefixes': {'key': 'communityPrefixes', 'type': '[str]'},
1682        'is_authorized_to_use': {'key': 'isAuthorizedToUse', 'type': 'bool'},
1683        'service_group': {'key': 'serviceGroup', 'type': 'str'},
1684    }
1685
1686    def __init__(
1687        self,
1688        **kwargs
1689    ):
1690        super(BGPCommunity, self).__init__(**kwargs)
1691        self.service_supported_region = kwargs.get('service_supported_region', None)
1692        self.community_name = kwargs.get('community_name', None)
1693        self.community_value = kwargs.get('community_value', None)
1694        self.community_prefixes = kwargs.get('community_prefixes', None)
1695        self.is_authorized_to_use = kwargs.get('is_authorized_to_use', None)
1696        self.service_group = kwargs.get('service_group', None)
1697
1698
1699class BgpPeerStatus(msrest.serialization.Model):
1700    """BGP peer status details.
1701
1702    Variables are only populated by the server, and will be ignored when sending a request.
1703
1704    :ivar local_address: The virtual network gateway's local address.
1705    :vartype local_address: str
1706    :ivar neighbor: The remote BGP peer.
1707    :vartype neighbor: str
1708    :ivar asn: The autonomous system number of the remote BGP peer.
1709    :vartype asn: int
1710    :ivar state: The BGP peer state. Possible values include: "Unknown", "Stopped", "Idle",
1711     "Connecting", "Connected".
1712    :vartype state: str or ~azure.mgmt.network.v2017_08_01.models.BgpPeerState
1713    :ivar connected_duration: For how long the peering has been up.
1714    :vartype connected_duration: str
1715    :ivar routes_received: The number of routes learned from this peer.
1716    :vartype routes_received: long
1717    :ivar messages_sent: The number of BGP messages sent.
1718    :vartype messages_sent: long
1719    :ivar messages_received: The number of BGP messages received.
1720    :vartype messages_received: long
1721    """
1722
1723    _validation = {
1724        'local_address': {'readonly': True},
1725        'neighbor': {'readonly': True},
1726        'asn': {'readonly': True},
1727        'state': {'readonly': True},
1728        'connected_duration': {'readonly': True},
1729        'routes_received': {'readonly': True},
1730        'messages_sent': {'readonly': True},
1731        'messages_received': {'readonly': True},
1732    }
1733
1734    _attribute_map = {
1735        'local_address': {'key': 'localAddress', 'type': 'str'},
1736        'neighbor': {'key': 'neighbor', 'type': 'str'},
1737        'asn': {'key': 'asn', 'type': 'int'},
1738        'state': {'key': 'state', 'type': 'str'},
1739        'connected_duration': {'key': 'connectedDuration', 'type': 'str'},
1740        'routes_received': {'key': 'routesReceived', 'type': 'long'},
1741        'messages_sent': {'key': 'messagesSent', 'type': 'long'},
1742        'messages_received': {'key': 'messagesReceived', 'type': 'long'},
1743    }
1744
1745    def __init__(
1746        self,
1747        **kwargs
1748    ):
1749        super(BgpPeerStatus, self).__init__(**kwargs)
1750        self.local_address = None
1751        self.neighbor = None
1752        self.asn = None
1753        self.state = None
1754        self.connected_duration = None
1755        self.routes_received = None
1756        self.messages_sent = None
1757        self.messages_received = None
1758
1759
1760class BgpPeerStatusListResult(msrest.serialization.Model):
1761    """Response for list BGP peer status API service call.
1762
1763    :param value: List of BGP peers.
1764    :type value: list[~azure.mgmt.network.v2017_08_01.models.BgpPeerStatus]
1765    """
1766
1767    _attribute_map = {
1768        'value': {'key': 'value', 'type': '[BgpPeerStatus]'},
1769    }
1770
1771    def __init__(
1772        self,
1773        **kwargs
1774    ):
1775        super(BgpPeerStatusListResult, self).__init__(**kwargs)
1776        self.value = kwargs.get('value', None)
1777
1778
1779class BgpServiceCommunity(Resource):
1780    """Service Community Properties.
1781
1782    Variables are only populated by the server, and will be ignored when sending a request.
1783
1784    :param id: Resource ID.
1785    :type id: str
1786    :ivar name: Resource name.
1787    :vartype name: str
1788    :ivar type: Resource type.
1789    :vartype type: str
1790    :param location: Resource location.
1791    :type location: str
1792    :param tags: A set of tags. Resource tags.
1793    :type tags: dict[str, str]
1794    :param service_name: The name of the bgp community. e.g. Skype.
1795    :type service_name: str
1796    :param bgp_communities: Get a list of bgp communities.
1797    :type bgp_communities: list[~azure.mgmt.network.v2017_08_01.models.BGPCommunity]
1798    """
1799
1800    _validation = {
1801        'name': {'readonly': True},
1802        'type': {'readonly': True},
1803    }
1804
1805    _attribute_map = {
1806        'id': {'key': 'id', 'type': 'str'},
1807        'name': {'key': 'name', 'type': 'str'},
1808        'type': {'key': 'type', 'type': 'str'},
1809        'location': {'key': 'location', 'type': 'str'},
1810        'tags': {'key': 'tags', 'type': '{str}'},
1811        'service_name': {'key': 'properties.serviceName', 'type': 'str'},
1812        'bgp_communities': {'key': 'properties.bgpCommunities', 'type': '[BGPCommunity]'},
1813    }
1814
1815    def __init__(
1816        self,
1817        **kwargs
1818    ):
1819        super(BgpServiceCommunity, self).__init__(**kwargs)
1820        self.service_name = kwargs.get('service_name', None)
1821        self.bgp_communities = kwargs.get('bgp_communities', None)
1822
1823
1824class BgpServiceCommunityListResult(msrest.serialization.Model):
1825    """Response for the ListServiceCommunity API service call.
1826
1827    :param value: A list of service community resources.
1828    :type value: list[~azure.mgmt.network.v2017_08_01.models.BgpServiceCommunity]
1829    :param next_link: The URL to get the next set of results.
1830    :type next_link: str
1831    """
1832
1833    _attribute_map = {
1834        'value': {'key': 'value', 'type': '[BgpServiceCommunity]'},
1835        'next_link': {'key': 'nextLink', 'type': 'str'},
1836    }
1837
1838    def __init__(
1839        self,
1840        **kwargs
1841    ):
1842        super(BgpServiceCommunityListResult, self).__init__(**kwargs)
1843        self.value = kwargs.get('value', None)
1844        self.next_link = kwargs.get('next_link', None)
1845
1846
1847class BgpSettings(msrest.serialization.Model):
1848    """BGP settings details.
1849
1850    :param asn: The BGP speaker's ASN.
1851    :type asn: long
1852    :param bgp_peering_address: The BGP peering address and BGP identifier of this BGP speaker.
1853    :type bgp_peering_address: str
1854    :param peer_weight: The weight added to routes learned from this BGP speaker.
1855    :type peer_weight: int
1856    """
1857
1858    _attribute_map = {
1859        'asn': {'key': 'asn', 'type': 'long'},
1860        'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'},
1861        'peer_weight': {'key': 'peerWeight', 'type': 'int'},
1862    }
1863
1864    def __init__(
1865        self,
1866        **kwargs
1867    ):
1868        super(BgpSettings, self).__init__(**kwargs)
1869        self.asn = kwargs.get('asn', None)
1870        self.bgp_peering_address = kwargs.get('bgp_peering_address', None)
1871        self.peer_weight = kwargs.get('peer_weight', None)
1872
1873
1874class ConnectionResetSharedKey(msrest.serialization.Model):
1875    """The virtual network connection reset shared key.
1876
1877    All required parameters must be populated in order to send to Azure.
1878
1879    :param key_length: Required. The virtual network connection reset shared key length, should
1880     between 1 and 128.
1881    :type key_length: int
1882    """
1883
1884    _validation = {
1885        'key_length': {'required': True, 'maximum': 128, 'minimum': 1},
1886    }
1887
1888    _attribute_map = {
1889        'key_length': {'key': 'keyLength', 'type': 'int'},
1890    }
1891
1892    def __init__(
1893        self,
1894        **kwargs
1895    ):
1896        super(ConnectionResetSharedKey, self).__init__(**kwargs)
1897        self.key_length = kwargs['key_length']
1898
1899
1900class ConnectionSharedKey(msrest.serialization.Model):
1901    """Response for GetConnectionSharedKey API service call.
1902
1903    All required parameters must be populated in order to send to Azure.
1904
1905    :param value: Required. The virtual network connection shared key value.
1906    :type value: str
1907    """
1908
1909    _validation = {
1910        'value': {'required': True},
1911    }
1912
1913    _attribute_map = {
1914        'value': {'key': 'value', 'type': 'str'},
1915    }
1916
1917    def __init__(
1918        self,
1919        **kwargs
1920    ):
1921        super(ConnectionSharedKey, self).__init__(**kwargs)
1922        self.value = kwargs['value']
1923
1924
1925class ConnectivityDestination(msrest.serialization.Model):
1926    """Parameters that define destination of connection.
1927
1928    :param resource_id: The ID of the resource to which a connection attempt will be made.
1929    :type resource_id: str
1930    :param address: The IP address or URI the resource to which a connection attempt will be made.
1931    :type address: str
1932    :param port: Port on which check connectivity will be performed.
1933    :type port: int
1934    """
1935
1936    _attribute_map = {
1937        'resource_id': {'key': 'resourceId', 'type': 'str'},
1938        'address': {'key': 'address', 'type': 'str'},
1939        'port': {'key': 'port', 'type': 'int'},
1940    }
1941
1942    def __init__(
1943        self,
1944        **kwargs
1945    ):
1946        super(ConnectivityDestination, self).__init__(**kwargs)
1947        self.resource_id = kwargs.get('resource_id', None)
1948        self.address = kwargs.get('address', None)
1949        self.port = kwargs.get('port', None)
1950
1951
1952class ConnectivityHop(msrest.serialization.Model):
1953    """Information about a hop between the source and the destination.
1954
1955    Variables are only populated by the server, and will be ignored when sending a request.
1956
1957    :ivar type: The type of the hop.
1958    :vartype type: str
1959    :ivar id: The ID of the hop.
1960    :vartype id: str
1961    :ivar address: The IP address of the hop.
1962    :vartype address: str
1963    :ivar resource_id: The ID of the resource corresponding to this hop.
1964    :vartype resource_id: str
1965    :ivar next_hop_ids: List of next hop identifiers.
1966    :vartype next_hop_ids: list[str]
1967    :ivar issues: List of issues.
1968    :vartype issues: list[~azure.mgmt.network.v2017_08_01.models.ConnectivityIssue]
1969    """
1970
1971    _validation = {
1972        'type': {'readonly': True},
1973        'id': {'readonly': True},
1974        'address': {'readonly': True},
1975        'resource_id': {'readonly': True},
1976        'next_hop_ids': {'readonly': True},
1977        'issues': {'readonly': True},
1978    }
1979
1980    _attribute_map = {
1981        'type': {'key': 'type', 'type': 'str'},
1982        'id': {'key': 'id', 'type': 'str'},
1983        'address': {'key': 'address', 'type': 'str'},
1984        'resource_id': {'key': 'resourceId', 'type': 'str'},
1985        'next_hop_ids': {'key': 'nextHopIds', 'type': '[str]'},
1986        'issues': {'key': 'issues', 'type': '[ConnectivityIssue]'},
1987    }
1988
1989    def __init__(
1990        self,
1991        **kwargs
1992    ):
1993        super(ConnectivityHop, self).__init__(**kwargs)
1994        self.type = None
1995        self.id = None
1996        self.address = None
1997        self.resource_id = None
1998        self.next_hop_ids = None
1999        self.issues = None
2000
2001
2002class ConnectivityInformation(msrest.serialization.Model):
2003    """Information on the connectivity status.
2004
2005    Variables are only populated by the server, and will be ignored when sending a request.
2006
2007    :ivar hops: List of hops between the source and the destination.
2008    :vartype hops: list[~azure.mgmt.network.v2017_08_01.models.ConnectivityHop]
2009    :ivar connection_status: The connection status. Possible values include: "Unknown",
2010     "Connected", "Disconnected", "Degraded".
2011    :vartype connection_status: str or ~azure.mgmt.network.v2017_08_01.models.ConnectionStatus
2012    :ivar avg_latency_in_ms: Average latency in milliseconds.
2013    :vartype avg_latency_in_ms: int
2014    :ivar min_latency_in_ms: Minimum latency in milliseconds.
2015    :vartype min_latency_in_ms: int
2016    :ivar max_latency_in_ms: Maximum latency in milliseconds.
2017    :vartype max_latency_in_ms: int
2018    :ivar probes_sent: Total number of probes sent.
2019    :vartype probes_sent: int
2020    :ivar probes_failed: Number of failed probes.
2021    :vartype probes_failed: int
2022    """
2023
2024    _validation = {
2025        'hops': {'readonly': True},
2026        'connection_status': {'readonly': True},
2027        'avg_latency_in_ms': {'readonly': True},
2028        'min_latency_in_ms': {'readonly': True},
2029        'max_latency_in_ms': {'readonly': True},
2030        'probes_sent': {'readonly': True},
2031        'probes_failed': {'readonly': True},
2032    }
2033
2034    _attribute_map = {
2035        'hops': {'key': 'hops', 'type': '[ConnectivityHop]'},
2036        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
2037        'avg_latency_in_ms': {'key': 'avgLatencyInMs', 'type': 'int'},
2038        'min_latency_in_ms': {'key': 'minLatencyInMs', 'type': 'int'},
2039        'max_latency_in_ms': {'key': 'maxLatencyInMs', 'type': 'int'},
2040        'probes_sent': {'key': 'probesSent', 'type': 'int'},
2041        'probes_failed': {'key': 'probesFailed', 'type': 'int'},
2042    }
2043
2044    def __init__(
2045        self,
2046        **kwargs
2047    ):
2048        super(ConnectivityInformation, self).__init__(**kwargs)
2049        self.hops = None
2050        self.connection_status = None
2051        self.avg_latency_in_ms = None
2052        self.min_latency_in_ms = None
2053        self.max_latency_in_ms = None
2054        self.probes_sent = None
2055        self.probes_failed = None
2056
2057
2058class ConnectivityIssue(msrest.serialization.Model):
2059    """Information about an issue encountered in the process of checking for connectivity.
2060
2061    Variables are only populated by the server, and will be ignored when sending a request.
2062
2063    :ivar origin: The origin of the issue. Possible values include: "Local", "Inbound", "Outbound".
2064    :vartype origin: str or ~azure.mgmt.network.v2017_08_01.models.Origin
2065    :ivar severity: The severity of the issue. Possible values include: "Error", "Warning".
2066    :vartype severity: str or ~azure.mgmt.network.v2017_08_01.models.Severity
2067    :ivar type: The type of issue. Possible values include: "Unknown", "AgentStopped",
2068     "GuestFirewall", "DnsResolution", "SocketBind", "NetworkSecurityRule", "UserDefinedRoute",
2069     "PortThrottled", "Platform".
2070    :vartype type: str or ~azure.mgmt.network.v2017_08_01.models.IssueType
2071    :ivar context: Provides additional context on the issue.
2072    :vartype context: list[dict[str, str]]
2073    """
2074
2075    _validation = {
2076        'origin': {'readonly': True},
2077        'severity': {'readonly': True},
2078        'type': {'readonly': True},
2079        'context': {'readonly': True},
2080    }
2081
2082    _attribute_map = {
2083        'origin': {'key': 'origin', 'type': 'str'},
2084        'severity': {'key': 'severity', 'type': 'str'},
2085        'type': {'key': 'type', 'type': 'str'},
2086        'context': {'key': 'context', 'type': '[{str}]'},
2087    }
2088
2089    def __init__(
2090        self,
2091        **kwargs
2092    ):
2093        super(ConnectivityIssue, self).__init__(**kwargs)
2094        self.origin = None
2095        self.severity = None
2096        self.type = None
2097        self.context = None
2098
2099
2100class ConnectivityParameters(msrest.serialization.Model):
2101    """Parameters that determine how the connectivity check will be performed.
2102
2103    All required parameters must be populated in order to send to Azure.
2104
2105    :param source: Required. Parameters that define the source of the connection.
2106    :type source: ~azure.mgmt.network.v2017_08_01.models.ConnectivitySource
2107    :param destination: Required. Parameters that define destination of connection.
2108    :type destination: ~azure.mgmt.network.v2017_08_01.models.ConnectivityDestination
2109    """
2110
2111    _validation = {
2112        'source': {'required': True},
2113        'destination': {'required': True},
2114    }
2115
2116    _attribute_map = {
2117        'source': {'key': 'source', 'type': 'ConnectivitySource'},
2118        'destination': {'key': 'destination', 'type': 'ConnectivityDestination'},
2119    }
2120
2121    def __init__(
2122        self,
2123        **kwargs
2124    ):
2125        super(ConnectivityParameters, self).__init__(**kwargs)
2126        self.source = kwargs['source']
2127        self.destination = kwargs['destination']
2128
2129
2130class ConnectivitySource(msrest.serialization.Model):
2131    """Parameters that define the source of the connection.
2132
2133    All required parameters must be populated in order to send to Azure.
2134
2135    :param resource_id: Required. The ID of the resource from which a connectivity check will be
2136     initiated.
2137    :type resource_id: str
2138    :param port: The source port from which a connectivity check will be performed.
2139    :type port: int
2140    """
2141
2142    _validation = {
2143        'resource_id': {'required': True},
2144    }
2145
2146    _attribute_map = {
2147        'resource_id': {'key': 'resourceId', 'type': 'str'},
2148        'port': {'key': 'port', 'type': 'int'},
2149    }
2150
2151    def __init__(
2152        self,
2153        **kwargs
2154    ):
2155        super(ConnectivitySource, self).__init__(**kwargs)
2156        self.resource_id = kwargs['resource_id']
2157        self.port = kwargs.get('port', None)
2158
2159
2160class DhcpOptions(msrest.serialization.Model):
2161    """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.
2162
2163    :param dns_servers: The list of DNS servers IP addresses.
2164    :type dns_servers: list[str]
2165    """
2166
2167    _attribute_map = {
2168        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
2169    }
2170
2171    def __init__(
2172        self,
2173        **kwargs
2174    ):
2175        super(DhcpOptions, self).__init__(**kwargs)
2176        self.dns_servers = kwargs.get('dns_servers', None)
2177
2178
2179class DnsNameAvailabilityResult(msrest.serialization.Model):
2180    """Response for the CheckDnsNameAvailability API service call.
2181
2182    :param available: Domain availability (True/False).
2183    :type available: bool
2184    """
2185
2186    _attribute_map = {
2187        'available': {'key': 'available', 'type': 'bool'},
2188    }
2189
2190    def __init__(
2191        self,
2192        **kwargs
2193    ):
2194        super(DnsNameAvailabilityResult, self).__init__(**kwargs)
2195        self.available = kwargs.get('available', None)
2196
2197
2198class EffectiveNetworkSecurityGroup(msrest.serialization.Model):
2199    """Effective network security group.
2200
2201    :param network_security_group: The ID of network security group that is applied.
2202    :type network_security_group: ~azure.mgmt.network.v2017_08_01.models.SubResource
2203    :param association: Associated resources.
2204    :type association:
2205     ~azure.mgmt.network.v2017_08_01.models.EffectiveNetworkSecurityGroupAssociation
2206    :param effective_security_rules: A collection of effective security rules.
2207    :type effective_security_rules:
2208     list[~azure.mgmt.network.v2017_08_01.models.EffectiveNetworkSecurityRule]
2209    :param tag_map: Mapping of tags to list of IP Addresses included within the tag.
2210    :type tag_map: str
2211    """
2212
2213    _attribute_map = {
2214        'network_security_group': {'key': 'networkSecurityGroup', 'type': 'SubResource'},
2215        'association': {'key': 'association', 'type': 'EffectiveNetworkSecurityGroupAssociation'},
2216        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
2217        'tag_map': {'key': 'tagMap', 'type': 'str'},
2218    }
2219
2220    def __init__(
2221        self,
2222        **kwargs
2223    ):
2224        super(EffectiveNetworkSecurityGroup, self).__init__(**kwargs)
2225        self.network_security_group = kwargs.get('network_security_group', None)
2226        self.association = kwargs.get('association', None)
2227        self.effective_security_rules = kwargs.get('effective_security_rules', None)
2228        self.tag_map = kwargs.get('tag_map', None)
2229
2230
2231class EffectiveNetworkSecurityGroupAssociation(msrest.serialization.Model):
2232    """The effective network security group association.
2233
2234    :param subnet: The ID of the subnet if assigned.
2235    :type subnet: ~azure.mgmt.network.v2017_08_01.models.SubResource
2236    :param network_interface: The ID of the network interface if assigned.
2237    :type network_interface: ~azure.mgmt.network.v2017_08_01.models.SubResource
2238    """
2239
2240    _attribute_map = {
2241        'subnet': {'key': 'subnet', 'type': 'SubResource'},
2242        'network_interface': {'key': 'networkInterface', 'type': 'SubResource'},
2243    }
2244
2245    def __init__(
2246        self,
2247        **kwargs
2248    ):
2249        super(EffectiveNetworkSecurityGroupAssociation, self).__init__(**kwargs)
2250        self.subnet = kwargs.get('subnet', None)
2251        self.network_interface = kwargs.get('network_interface', None)
2252
2253
2254class EffectiveNetworkSecurityGroupListResult(msrest.serialization.Model):
2255    """Response for list effective network security groups API service call.
2256
2257    Variables are only populated by the server, and will be ignored when sending a request.
2258
2259    :param value: A list of effective network security groups.
2260    :type value: list[~azure.mgmt.network.v2017_08_01.models.EffectiveNetworkSecurityGroup]
2261    :ivar next_link: The URL to get the next set of results.
2262    :vartype next_link: str
2263    """
2264
2265    _validation = {
2266        'next_link': {'readonly': True},
2267    }
2268
2269    _attribute_map = {
2270        'value': {'key': 'value', 'type': '[EffectiveNetworkSecurityGroup]'},
2271        'next_link': {'key': 'nextLink', 'type': 'str'},
2272    }
2273
2274    def __init__(
2275        self,
2276        **kwargs
2277    ):
2278        super(EffectiveNetworkSecurityGroupListResult, self).__init__(**kwargs)
2279        self.value = kwargs.get('value', None)
2280        self.next_link = None
2281
2282
2283class EffectiveNetworkSecurityRule(msrest.serialization.Model):
2284    """Effective network security rules.
2285
2286    :param name: The name of the security rule specified by the user (if created by the user).
2287    :type name: str
2288    :param protocol: The network protocol this rule applies to. Possible values are: 'Tcp', 'Udp',
2289     and 'All'. Possible values include: "Tcp", "Udp", "All".
2290    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.EffectiveSecurityRuleProtocol
2291    :param source_port_range: The source port or range.
2292    :type source_port_range: str
2293    :param destination_port_range: The destination port or range.
2294    :type destination_port_range: str
2295    :param source_port_ranges: The source port ranges. Expected values include a single integer
2296     between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
2297    :type source_port_ranges: list[str]
2298    :param destination_port_ranges: The destination port ranges. Expected values include a single
2299     integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
2300    :type destination_port_ranges: list[str]
2301    :param source_address_prefix: The source address prefix.
2302    :type source_address_prefix: str
2303    :param destination_address_prefix: The destination address prefix.
2304    :type destination_address_prefix: str
2305    :param source_address_prefixes: The source address prefixes. Expected values include CIDR IP
2306     ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the
2307     asterisk (*).
2308    :type source_address_prefixes: list[str]
2309    :param destination_address_prefixes: The destination address prefixes. Expected values include
2310     CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and
2311     the asterisk (*).
2312    :type destination_address_prefixes: list[str]
2313    :param expanded_source_address_prefix: The expanded source address prefix.
2314    :type expanded_source_address_prefix: list[str]
2315    :param expanded_destination_address_prefix: Expanded destination address prefix.
2316    :type expanded_destination_address_prefix: list[str]
2317    :param access: Whether network traffic is allowed or denied. Possible values are: 'Allow' and
2318     'Deny'. Possible values include: "Allow", "Deny".
2319    :type access: str or ~azure.mgmt.network.v2017_08_01.models.SecurityRuleAccess
2320    :param priority: The priority of the rule.
2321    :type priority: int
2322    :param direction: The direction of the rule. Possible values are: 'Inbound and Outbound'.
2323     Possible values include: "Inbound", "Outbound".
2324    :type direction: str or ~azure.mgmt.network.v2017_08_01.models.SecurityRuleDirection
2325    """
2326
2327    _attribute_map = {
2328        'name': {'key': 'name', 'type': 'str'},
2329        'protocol': {'key': 'protocol', 'type': 'str'},
2330        'source_port_range': {'key': 'sourcePortRange', 'type': 'str'},
2331        'destination_port_range': {'key': 'destinationPortRange', 'type': 'str'},
2332        'source_port_ranges': {'key': 'sourcePortRanges', 'type': '[str]'},
2333        'destination_port_ranges': {'key': 'destinationPortRanges', 'type': '[str]'},
2334        'source_address_prefix': {'key': 'sourceAddressPrefix', 'type': 'str'},
2335        'destination_address_prefix': {'key': 'destinationAddressPrefix', 'type': 'str'},
2336        'source_address_prefixes': {'key': 'sourceAddressPrefixes', 'type': '[str]'},
2337        'destination_address_prefixes': {'key': 'destinationAddressPrefixes', 'type': '[str]'},
2338        'expanded_source_address_prefix': {'key': 'expandedSourceAddressPrefix', 'type': '[str]'},
2339        'expanded_destination_address_prefix': {'key': 'expandedDestinationAddressPrefix', 'type': '[str]'},
2340        'access': {'key': 'access', 'type': 'str'},
2341        'priority': {'key': 'priority', 'type': 'int'},
2342        'direction': {'key': 'direction', 'type': 'str'},
2343    }
2344
2345    def __init__(
2346        self,
2347        **kwargs
2348    ):
2349        super(EffectiveNetworkSecurityRule, self).__init__(**kwargs)
2350        self.name = kwargs.get('name', None)
2351        self.protocol = kwargs.get('protocol', None)
2352        self.source_port_range = kwargs.get('source_port_range', None)
2353        self.destination_port_range = kwargs.get('destination_port_range', None)
2354        self.source_port_ranges = kwargs.get('source_port_ranges', None)
2355        self.destination_port_ranges = kwargs.get('destination_port_ranges', None)
2356        self.source_address_prefix = kwargs.get('source_address_prefix', None)
2357        self.destination_address_prefix = kwargs.get('destination_address_prefix', None)
2358        self.source_address_prefixes = kwargs.get('source_address_prefixes', None)
2359        self.destination_address_prefixes = kwargs.get('destination_address_prefixes', None)
2360        self.expanded_source_address_prefix = kwargs.get('expanded_source_address_prefix', None)
2361        self.expanded_destination_address_prefix = kwargs.get('expanded_destination_address_prefix', None)
2362        self.access = kwargs.get('access', None)
2363        self.priority = kwargs.get('priority', None)
2364        self.direction = kwargs.get('direction', None)
2365
2366
2367class EffectiveRoute(msrest.serialization.Model):
2368    """Effective Route.
2369
2370    :param name: The name of the user defined route. This is optional.
2371    :type name: str
2372    :param source: Who created the route. Possible values are: 'Unknown', 'User',
2373     'VirtualNetworkGateway', and 'Default'. Possible values include: "Unknown", "User",
2374     "VirtualNetworkGateway", "Default".
2375    :type source: str or ~azure.mgmt.network.v2017_08_01.models.EffectiveRouteSource
2376    :param state: The value of effective route. Possible values are: 'Active' and 'Invalid'.
2377     Possible values include: "Active", "Invalid".
2378    :type state: str or ~azure.mgmt.network.v2017_08_01.models.EffectiveRouteState
2379    :param address_prefix: The address prefixes of the effective routes in CIDR notation.
2380    :type address_prefix: list[str]
2381    :param next_hop_ip_address: The IP address of the next hop of the effective route.
2382    :type next_hop_ip_address: list[str]
2383    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values are:
2384     'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', and 'None'. Possible
2385     values include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
2386    :type next_hop_type: str or ~azure.mgmt.network.v2017_08_01.models.RouteNextHopType
2387    """
2388
2389    _attribute_map = {
2390        'name': {'key': 'name', 'type': 'str'},
2391        'source': {'key': 'source', 'type': 'str'},
2392        'state': {'key': 'state', 'type': 'str'},
2393        'address_prefix': {'key': 'addressPrefix', 'type': '[str]'},
2394        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': '[str]'},
2395        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
2396    }
2397
2398    def __init__(
2399        self,
2400        **kwargs
2401    ):
2402        super(EffectiveRoute, self).__init__(**kwargs)
2403        self.name = kwargs.get('name', None)
2404        self.source = kwargs.get('source', None)
2405        self.state = kwargs.get('state', None)
2406        self.address_prefix = kwargs.get('address_prefix', None)
2407        self.next_hop_ip_address = kwargs.get('next_hop_ip_address', None)
2408        self.next_hop_type = kwargs.get('next_hop_type', None)
2409
2410
2411class EffectiveRouteListResult(msrest.serialization.Model):
2412    """Response for list effective route API service call.
2413
2414    Variables are only populated by the server, and will be ignored when sending a request.
2415
2416    :param value: A list of effective routes.
2417    :type value: list[~azure.mgmt.network.v2017_08_01.models.EffectiveRoute]
2418    :ivar next_link: The URL to get the next set of results.
2419    :vartype next_link: str
2420    """
2421
2422    _validation = {
2423        'next_link': {'readonly': True},
2424    }
2425
2426    _attribute_map = {
2427        'value': {'key': 'value', 'type': '[EffectiveRoute]'},
2428        'next_link': {'key': 'nextLink', 'type': 'str'},
2429    }
2430
2431    def __init__(
2432        self,
2433        **kwargs
2434    ):
2435        super(EffectiveRouteListResult, self).__init__(**kwargs)
2436        self.value = kwargs.get('value', None)
2437        self.next_link = None
2438
2439
2440class EndpointServiceResult(SubResource):
2441    """Endpoint service.
2442
2443    Variables are only populated by the server, and will be ignored when sending a request.
2444
2445    :param id: Resource ID.
2446    :type id: str
2447    :ivar name: Name of the endpoint service.
2448    :vartype name: str
2449    :ivar type: Type of the endpoint service.
2450    :vartype type: str
2451    """
2452
2453    _validation = {
2454        'name': {'readonly': True},
2455        'type': {'readonly': True},
2456    }
2457
2458    _attribute_map = {
2459        'id': {'key': 'id', 'type': 'str'},
2460        'name': {'key': 'name', 'type': 'str'},
2461        'type': {'key': 'type', 'type': 'str'},
2462    }
2463
2464    def __init__(
2465        self,
2466        **kwargs
2467    ):
2468        super(EndpointServiceResult, self).__init__(**kwargs)
2469        self.name = None
2470        self.type = None
2471
2472
2473class EndpointServicesListResult(msrest.serialization.Model):
2474    """Response for the ListAvailableEndpointServices API service call.
2475
2476    :param value: List of available endpoint services in a region.
2477    :type value: list[~azure.mgmt.network.v2017_08_01.models.EndpointServiceResult]
2478    :param next_link: The URL to get the next set of results.
2479    :type next_link: str
2480    """
2481
2482    _attribute_map = {
2483        'value': {'key': 'value', 'type': '[EndpointServiceResult]'},
2484        'next_link': {'key': 'nextLink', 'type': 'str'},
2485    }
2486
2487    def __init__(
2488        self,
2489        **kwargs
2490    ):
2491        super(EndpointServicesListResult, self).__init__(**kwargs)
2492        self.value = kwargs.get('value', None)
2493        self.next_link = kwargs.get('next_link', None)
2494
2495
2496class Error(msrest.serialization.Model):
2497    """Error.
2498
2499    :param code:
2500    :type code: str
2501    :param message:
2502    :type message: str
2503    :param target:
2504    :type target: str
2505    :param details:
2506    :type details: list[~azure.mgmt.network.v2017_08_01.models.ErrorDetails]
2507    :param inner_error:
2508    :type inner_error: str
2509    """
2510
2511    _attribute_map = {
2512        'code': {'key': 'code', 'type': 'str'},
2513        'message': {'key': 'message', 'type': 'str'},
2514        'target': {'key': 'target', 'type': 'str'},
2515        'details': {'key': 'details', 'type': '[ErrorDetails]'},
2516        'inner_error': {'key': 'innerError', 'type': 'str'},
2517    }
2518
2519    def __init__(
2520        self,
2521        **kwargs
2522    ):
2523        super(Error, self).__init__(**kwargs)
2524        self.code = kwargs.get('code', None)
2525        self.message = kwargs.get('message', None)
2526        self.target = kwargs.get('target', None)
2527        self.details = kwargs.get('details', None)
2528        self.inner_error = kwargs.get('inner_error', None)
2529
2530
2531class ErrorDetails(msrest.serialization.Model):
2532    """ErrorDetails.
2533
2534    :param code:
2535    :type code: str
2536    :param target:
2537    :type target: str
2538    :param message:
2539    :type message: str
2540    """
2541
2542    _attribute_map = {
2543        'code': {'key': 'code', 'type': 'str'},
2544        'target': {'key': 'target', 'type': 'str'},
2545        'message': {'key': 'message', 'type': 'str'},
2546    }
2547
2548    def __init__(
2549        self,
2550        **kwargs
2551    ):
2552        super(ErrorDetails, self).__init__(**kwargs)
2553        self.code = kwargs.get('code', None)
2554        self.target = kwargs.get('target', None)
2555        self.message = kwargs.get('message', None)
2556
2557
2558class ExpressRouteCircuit(Resource):
2559    """ExpressRouteCircuit resource.
2560
2561    Variables are only populated by the server, and will be ignored when sending a request.
2562
2563    :param id: Resource ID.
2564    :type id: str
2565    :ivar name: Resource name.
2566    :vartype name: str
2567    :ivar type: Resource type.
2568    :vartype type: str
2569    :param location: Resource location.
2570    :type location: str
2571    :param tags: A set of tags. Resource tags.
2572    :type tags: dict[str, str]
2573    :param sku: The SKU.
2574    :type sku: ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitSku
2575    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
2576    :vartype etag: str
2577    :param allow_classic_operations: Allow classic operations.
2578    :type allow_classic_operations: bool
2579    :param circuit_provisioning_state: The CircuitProvisioningState state of the resource.
2580    :type circuit_provisioning_state: str
2581    :param service_provider_provisioning_state: The ServiceProviderProvisioningState state of the
2582     resource. Possible values are 'NotProvisioned', 'Provisioning', 'Provisioned', and
2583     'Deprovisioning'. Possible values include: "NotProvisioned", "Provisioning", "Provisioned",
2584     "Deprovisioning".
2585    :type service_provider_provisioning_state: str or
2586     ~azure.mgmt.network.v2017_08_01.models.ServiceProviderProvisioningState
2587    :param authorizations: The list of authorizations.
2588    :type authorizations:
2589     list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitAuthorization]
2590    :param peerings: The list of peerings.
2591    :type peerings: list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitPeering]
2592    :param service_key: The ServiceKey.
2593    :type service_key: str
2594    :param service_provider_notes: The ServiceProviderNotes.
2595    :type service_provider_notes: str
2596    :param service_provider_properties: The ServiceProviderProperties.
2597    :type service_provider_properties:
2598     ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitServiceProviderProperties
2599    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
2600     values are: 'Updating', 'Deleting', and 'Failed'.
2601    :type provisioning_state: str
2602    :param gateway_manager_etag: The GatewayManager Etag.
2603    :type gateway_manager_etag: str
2604    """
2605
2606    _validation = {
2607        'name': {'readonly': True},
2608        'type': {'readonly': True},
2609        'etag': {'readonly': True},
2610    }
2611
2612    _attribute_map = {
2613        'id': {'key': 'id', 'type': 'str'},
2614        'name': {'key': 'name', 'type': 'str'},
2615        'type': {'key': 'type', 'type': 'str'},
2616        'location': {'key': 'location', 'type': 'str'},
2617        'tags': {'key': 'tags', 'type': '{str}'},
2618        'sku': {'key': 'sku', 'type': 'ExpressRouteCircuitSku'},
2619        'etag': {'key': 'etag', 'type': 'str'},
2620        'allow_classic_operations': {'key': 'properties.allowClassicOperations', 'type': 'bool'},
2621        'circuit_provisioning_state': {'key': 'properties.circuitProvisioningState', 'type': 'str'},
2622        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
2623        'authorizations': {'key': 'properties.authorizations', 'type': '[ExpressRouteCircuitAuthorization]'},
2624        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
2625        'service_key': {'key': 'properties.serviceKey', 'type': 'str'},
2626        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
2627        'service_provider_properties': {'key': 'properties.serviceProviderProperties', 'type': 'ExpressRouteCircuitServiceProviderProperties'},
2628        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2629        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
2630    }
2631
2632    def __init__(
2633        self,
2634        **kwargs
2635    ):
2636        super(ExpressRouteCircuit, self).__init__(**kwargs)
2637        self.sku = kwargs.get('sku', None)
2638        self.etag = None
2639        self.allow_classic_operations = kwargs.get('allow_classic_operations', None)
2640        self.circuit_provisioning_state = kwargs.get('circuit_provisioning_state', None)
2641        self.service_provider_provisioning_state = kwargs.get('service_provider_provisioning_state', None)
2642        self.authorizations = kwargs.get('authorizations', None)
2643        self.peerings = kwargs.get('peerings', None)
2644        self.service_key = kwargs.get('service_key', None)
2645        self.service_provider_notes = kwargs.get('service_provider_notes', None)
2646        self.service_provider_properties = kwargs.get('service_provider_properties', None)
2647        self.provisioning_state = kwargs.get('provisioning_state', None)
2648        self.gateway_manager_etag = kwargs.get('gateway_manager_etag', None)
2649
2650
2651class ExpressRouteCircuitArpTable(msrest.serialization.Model):
2652    """The ARP table associated with the ExpressRouteCircuit.
2653
2654    :param age: Age.
2655    :type age: int
2656    :param interface: Interface.
2657    :type interface: str
2658    :param ip_address: The IP address.
2659    :type ip_address: str
2660    :param mac_address: The MAC address.
2661    :type mac_address: str
2662    """
2663
2664    _attribute_map = {
2665        'age': {'key': 'age', 'type': 'int'},
2666        'interface': {'key': 'interface', 'type': 'str'},
2667        'ip_address': {'key': 'ipAddress', 'type': 'str'},
2668        'mac_address': {'key': 'macAddress', 'type': 'str'},
2669    }
2670
2671    def __init__(
2672        self,
2673        **kwargs
2674    ):
2675        super(ExpressRouteCircuitArpTable, self).__init__(**kwargs)
2676        self.age = kwargs.get('age', None)
2677        self.interface = kwargs.get('interface', None)
2678        self.ip_address = kwargs.get('ip_address', None)
2679        self.mac_address = kwargs.get('mac_address', None)
2680
2681
2682class ExpressRouteCircuitAuthorization(SubResource):
2683    """Authorization in an ExpressRouteCircuit resource.
2684
2685    Variables are only populated by the server, and will be ignored when sending a request.
2686
2687    :param id: Resource ID.
2688    :type id: str
2689    :param name: Gets name of the resource that is unique within a resource group. This name can be
2690     used to access the resource.
2691    :type name: str
2692    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2693    :vartype etag: str
2694    :param authorization_key: The authorization key.
2695    :type authorization_key: str
2696    :param authorization_use_status: AuthorizationUseStatus. Possible values are: 'Available' and
2697     'InUse'. Possible values include: "Available", "InUse".
2698    :type authorization_use_status: str or
2699     ~azure.mgmt.network.v2017_08_01.models.AuthorizationUseStatus
2700    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
2701     values are: 'Updating', 'Deleting', and 'Failed'.
2702    :type provisioning_state: str
2703    """
2704
2705    _validation = {
2706        'etag': {'readonly': True},
2707    }
2708
2709    _attribute_map = {
2710        'id': {'key': 'id', 'type': 'str'},
2711        'name': {'key': 'name', 'type': 'str'},
2712        'etag': {'key': 'etag', 'type': 'str'},
2713        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
2714        'authorization_use_status': {'key': 'properties.authorizationUseStatus', 'type': 'str'},
2715        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2716    }
2717
2718    def __init__(
2719        self,
2720        **kwargs
2721    ):
2722        super(ExpressRouteCircuitAuthorization, self).__init__(**kwargs)
2723        self.name = kwargs.get('name', None)
2724        self.etag = None
2725        self.authorization_key = kwargs.get('authorization_key', None)
2726        self.authorization_use_status = kwargs.get('authorization_use_status', None)
2727        self.provisioning_state = kwargs.get('provisioning_state', None)
2728
2729
2730class ExpressRouteCircuitListResult(msrest.serialization.Model):
2731    """Response for ListExpressRouteCircuit API service call.
2732
2733    :param value: A list of ExpressRouteCircuits in a resource group.
2734    :type value: list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuit]
2735    :param next_link: The URL to get the next set of results.
2736    :type next_link: str
2737    """
2738
2739    _attribute_map = {
2740        'value': {'key': 'value', 'type': '[ExpressRouteCircuit]'},
2741        'next_link': {'key': 'nextLink', 'type': 'str'},
2742    }
2743
2744    def __init__(
2745        self,
2746        **kwargs
2747    ):
2748        super(ExpressRouteCircuitListResult, self).__init__(**kwargs)
2749        self.value = kwargs.get('value', None)
2750        self.next_link = kwargs.get('next_link', None)
2751
2752
2753class ExpressRouteCircuitPeering(SubResource):
2754    """Peering in an ExpressRouteCircuit resource.
2755
2756    Variables are only populated by the server, and will be ignored when sending a request.
2757
2758    :param id: Resource ID.
2759    :type id: str
2760    :param name: Gets name of the resource that is unique within a resource group. This name can be
2761     used to access the resource.
2762    :type name: str
2763    :ivar etag: A unique read-only string that changes whenever the resource is updated.
2764    :vartype etag: str
2765    :param peering_type: The PeeringType. Possible values are: 'AzurePublicPeering',
2766     'AzurePrivatePeering', and 'MicrosoftPeering'. Possible values include: "AzurePublicPeering",
2767     "AzurePrivatePeering", "MicrosoftPeering".
2768    :type peering_type: str or
2769     ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitPeeringType
2770    :param state: The state of peering. Possible values are: 'Disabled' and 'Enabled'. Possible
2771     values include: "Disabled", "Enabled".
2772    :type state: str or ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitPeeringState
2773    :param azure_asn: The Azure ASN.
2774    :type azure_asn: int
2775    :param peer_asn: The peer ASN.
2776    :type peer_asn: int
2777    :param primary_peer_address_prefix: The primary address prefix.
2778    :type primary_peer_address_prefix: str
2779    :param secondary_peer_address_prefix: The secondary address prefix.
2780    :type secondary_peer_address_prefix: str
2781    :param primary_azure_port: The primary port.
2782    :type primary_azure_port: str
2783    :param secondary_azure_port: The secondary port.
2784    :type secondary_azure_port: str
2785    :param shared_key: The shared key.
2786    :type shared_key: str
2787    :param vlan_id: The VLAN ID.
2788    :type vlan_id: int
2789    :param microsoft_peering_config: The Microsoft peering configuration.
2790    :type microsoft_peering_config:
2791     ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitPeeringConfig
2792    :param stats: Gets peering stats.
2793    :type stats: ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitStats
2794    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
2795     values are: 'Updating', 'Deleting', and 'Failed'.
2796    :type provisioning_state: str
2797    :param gateway_manager_etag: The GatewayManager Etag.
2798    :type gateway_manager_etag: str
2799    :param last_modified_by: Gets whether the provider or the customer last modified the peering.
2800    :type last_modified_by: str
2801    :param route_filter: The reference of the RouteFilter resource.
2802    :type route_filter: ~azure.mgmt.network.v2017_08_01.models.RouteFilter
2803    :param ipv6_peering_config: The IPv6 peering configuration.
2804    :type ipv6_peering_config:
2805     ~azure.mgmt.network.v2017_08_01.models.Ipv6ExpressRouteCircuitPeeringConfig
2806    """
2807
2808    _validation = {
2809        'etag': {'readonly': True},
2810    }
2811
2812    _attribute_map = {
2813        'id': {'key': 'id', 'type': 'str'},
2814        'name': {'key': 'name', 'type': 'str'},
2815        'etag': {'key': 'etag', 'type': 'str'},
2816        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
2817        'state': {'key': 'properties.state', 'type': 'str'},
2818        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
2819        'peer_asn': {'key': 'properties.peerASN', 'type': 'int'},
2820        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
2821        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
2822        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
2823        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
2824        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
2825        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
2826        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
2827        'stats': {'key': 'properties.stats', 'type': 'ExpressRouteCircuitStats'},
2828        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2829        'gateway_manager_etag': {'key': 'properties.gatewayManagerEtag', 'type': 'str'},
2830        'last_modified_by': {'key': 'properties.lastModifiedBy', 'type': 'str'},
2831        'route_filter': {'key': 'properties.routeFilter', 'type': 'RouteFilter'},
2832        'ipv6_peering_config': {'key': 'properties.ipv6PeeringConfig', 'type': 'Ipv6ExpressRouteCircuitPeeringConfig'},
2833    }
2834
2835    def __init__(
2836        self,
2837        **kwargs
2838    ):
2839        super(ExpressRouteCircuitPeering, self).__init__(**kwargs)
2840        self.name = kwargs.get('name', None)
2841        self.etag = None
2842        self.peering_type = kwargs.get('peering_type', None)
2843        self.state = kwargs.get('state', None)
2844        self.azure_asn = kwargs.get('azure_asn', None)
2845        self.peer_asn = kwargs.get('peer_asn', None)
2846        self.primary_peer_address_prefix = kwargs.get('primary_peer_address_prefix', None)
2847        self.secondary_peer_address_prefix = kwargs.get('secondary_peer_address_prefix', None)
2848        self.primary_azure_port = kwargs.get('primary_azure_port', None)
2849        self.secondary_azure_port = kwargs.get('secondary_azure_port', None)
2850        self.shared_key = kwargs.get('shared_key', None)
2851        self.vlan_id = kwargs.get('vlan_id', None)
2852        self.microsoft_peering_config = kwargs.get('microsoft_peering_config', None)
2853        self.stats = kwargs.get('stats', None)
2854        self.provisioning_state = kwargs.get('provisioning_state', None)
2855        self.gateway_manager_etag = kwargs.get('gateway_manager_etag', None)
2856        self.last_modified_by = kwargs.get('last_modified_by', None)
2857        self.route_filter = kwargs.get('route_filter', None)
2858        self.ipv6_peering_config = kwargs.get('ipv6_peering_config', None)
2859
2860
2861class ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
2862    """Specifies the peering configuration.
2863
2864    :param advertised_public_prefixes: The reference of AdvertisedPublicPrefixes.
2865    :type advertised_public_prefixes: list[str]
2866    :param advertised_communities: The communities of bgp peering. Specified for microsoft peering.
2867    :type advertised_communities: list[str]
2868    :param advertised_public_prefixes_state: AdvertisedPublicPrefixState of the Peering resource.
2869     Possible values are 'NotConfigured', 'Configuring', 'Configured', and 'ValidationNeeded'.
2870     Possible values include: "NotConfigured", "Configuring", "Configured", "ValidationNeeded".
2871    :type advertised_public_prefixes_state: str or
2872     ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitPeeringAdvertisedPublicPrefixState
2873    :param legacy_mode: The legacy mode of the peering.
2874    :type legacy_mode: int
2875    :param customer_asn: The CustomerASN of the peering.
2876    :type customer_asn: int
2877    :param routing_registry_name: The RoutingRegistryName of the configuration.
2878    :type routing_registry_name: str
2879    """
2880
2881    _attribute_map = {
2882        'advertised_public_prefixes': {'key': 'advertisedPublicPrefixes', 'type': '[str]'},
2883        'advertised_communities': {'key': 'advertisedCommunities', 'type': '[str]'},
2884        'advertised_public_prefixes_state': {'key': 'advertisedPublicPrefixesState', 'type': 'str'},
2885        'legacy_mode': {'key': 'legacyMode', 'type': 'int'},
2886        'customer_asn': {'key': 'customerASN', 'type': 'int'},
2887        'routing_registry_name': {'key': 'routingRegistryName', 'type': 'str'},
2888    }
2889
2890    def __init__(
2891        self,
2892        **kwargs
2893    ):
2894        super(ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
2895        self.advertised_public_prefixes = kwargs.get('advertised_public_prefixes', None)
2896        self.advertised_communities = kwargs.get('advertised_communities', None)
2897        self.advertised_public_prefixes_state = kwargs.get('advertised_public_prefixes_state', None)
2898        self.legacy_mode = kwargs.get('legacy_mode', None)
2899        self.customer_asn = kwargs.get('customer_asn', None)
2900        self.routing_registry_name = kwargs.get('routing_registry_name', None)
2901
2902
2903class ExpressRouteCircuitPeeringListResult(msrest.serialization.Model):
2904    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCircuit.
2905
2906    :param value: The peerings in an express route circuit.
2907    :type value: list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitPeering]
2908    :param next_link: The URL to get the next set of results.
2909    :type next_link: str
2910    """
2911
2912    _attribute_map = {
2913        'value': {'key': 'value', 'type': '[ExpressRouteCircuitPeering]'},
2914        'next_link': {'key': 'nextLink', 'type': 'str'},
2915    }
2916
2917    def __init__(
2918        self,
2919        **kwargs
2920    ):
2921        super(ExpressRouteCircuitPeeringListResult, self).__init__(**kwargs)
2922        self.value = kwargs.get('value', None)
2923        self.next_link = kwargs.get('next_link', None)
2924
2925
2926class ExpressRouteCircuitRoutesTable(msrest.serialization.Model):
2927    """The routes table associated with the ExpressRouteCircuit.
2928
2929    :param network: network.
2930    :type network: str
2931    :param next_hop: nextHop.
2932    :type next_hop: str
2933    :param loc_prf: locPrf.
2934    :type loc_prf: str
2935    :param weight: weight.
2936    :type weight: int
2937    :param path: path.
2938    :type path: str
2939    """
2940
2941    _attribute_map = {
2942        'network': {'key': 'network', 'type': 'str'},
2943        'next_hop': {'key': 'nextHop', 'type': 'str'},
2944        'loc_prf': {'key': 'locPrf', 'type': 'str'},
2945        'weight': {'key': 'weight', 'type': 'int'},
2946        'path': {'key': 'path', 'type': 'str'},
2947    }
2948
2949    def __init__(
2950        self,
2951        **kwargs
2952    ):
2953        super(ExpressRouteCircuitRoutesTable, self).__init__(**kwargs)
2954        self.network = kwargs.get('network', None)
2955        self.next_hop = kwargs.get('next_hop', None)
2956        self.loc_prf = kwargs.get('loc_prf', None)
2957        self.weight = kwargs.get('weight', None)
2958        self.path = kwargs.get('path', None)
2959
2960
2961class ExpressRouteCircuitRoutesTableSummary(msrest.serialization.Model):
2962    """The routes table associated with the ExpressRouteCircuit.
2963
2964    :param neighbor: Neighbor.
2965    :type neighbor: str
2966    :param v: BGP version number spoken to the neighbor.
2967    :type v: int
2968    :param as_property: Autonomous system number.
2969    :type as_property: int
2970    :param up_down: The length of time that the BGP session has been in the Established state, or
2971     the current status if not in the Established state.
2972    :type up_down: str
2973    :param state_pfx_rcd: Current state of the BGP session, and the number of prefixes that have
2974     been received from a neighbor or peer group.
2975    :type state_pfx_rcd: str
2976    """
2977
2978    _attribute_map = {
2979        'neighbor': {'key': 'neighbor', 'type': 'str'},
2980        'v': {'key': 'v', 'type': 'int'},
2981        'as_property': {'key': 'as', 'type': 'int'},
2982        'up_down': {'key': 'upDown', 'type': 'str'},
2983        'state_pfx_rcd': {'key': 'statePfxRcd', 'type': 'str'},
2984    }
2985
2986    def __init__(
2987        self,
2988        **kwargs
2989    ):
2990        super(ExpressRouteCircuitRoutesTableSummary, self).__init__(**kwargs)
2991        self.neighbor = kwargs.get('neighbor', None)
2992        self.v = kwargs.get('v', None)
2993        self.as_property = kwargs.get('as_property', None)
2994        self.up_down = kwargs.get('up_down', None)
2995        self.state_pfx_rcd = kwargs.get('state_pfx_rcd', None)
2996
2997
2998class ExpressRouteCircuitsArpTableListResult(msrest.serialization.Model):
2999    """Response for ListArpTable associated with the Express Route Circuits API.
3000
3001    :param value: Gets list of the ARP table.
3002    :type value: list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitArpTable]
3003    :param next_link: The URL to get the next set of results.
3004    :type next_link: str
3005    """
3006
3007    _attribute_map = {
3008        'value': {'key': 'value', 'type': '[ExpressRouteCircuitArpTable]'},
3009        'next_link': {'key': 'nextLink', 'type': 'str'},
3010    }
3011
3012    def __init__(
3013        self,
3014        **kwargs
3015    ):
3016        super(ExpressRouteCircuitsArpTableListResult, self).__init__(**kwargs)
3017        self.value = kwargs.get('value', None)
3018        self.next_link = kwargs.get('next_link', None)
3019
3020
3021class ExpressRouteCircuitServiceProviderProperties(msrest.serialization.Model):
3022    """Contains ServiceProviderProperties in an ExpressRouteCircuit.
3023
3024    :param service_provider_name: The serviceProviderName.
3025    :type service_provider_name: str
3026    :param peering_location: The peering location.
3027    :type peering_location: str
3028    :param bandwidth_in_mbps: The BandwidthInMbps.
3029    :type bandwidth_in_mbps: int
3030    """
3031
3032    _attribute_map = {
3033        'service_provider_name': {'key': 'serviceProviderName', 'type': 'str'},
3034        'peering_location': {'key': 'peeringLocation', 'type': 'str'},
3035        'bandwidth_in_mbps': {'key': 'bandwidthInMbps', 'type': 'int'},
3036    }
3037
3038    def __init__(
3039        self,
3040        **kwargs
3041    ):
3042        super(ExpressRouteCircuitServiceProviderProperties, self).__init__(**kwargs)
3043        self.service_provider_name = kwargs.get('service_provider_name', None)
3044        self.peering_location = kwargs.get('peering_location', None)
3045        self.bandwidth_in_mbps = kwargs.get('bandwidth_in_mbps', None)
3046
3047
3048class ExpressRouteCircuitSku(msrest.serialization.Model):
3049    """Contains SKU in an ExpressRouteCircuit.
3050
3051    :param name: The name of the SKU.
3052    :type name: str
3053    :param tier: The tier of the SKU. Possible values are 'Standard' and 'Premium'. Possible values
3054     include: "Standard", "Premium".
3055    :type tier: str or ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitSkuTier
3056    :param family: The family of the SKU. Possible values are: 'UnlimitedData' and 'MeteredData'.
3057     Possible values include: "UnlimitedData", "MeteredData".
3058    :type family: str or ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitSkuFamily
3059    """
3060
3061    _attribute_map = {
3062        'name': {'key': 'name', 'type': 'str'},
3063        'tier': {'key': 'tier', 'type': 'str'},
3064        'family': {'key': 'family', 'type': 'str'},
3065    }
3066
3067    def __init__(
3068        self,
3069        **kwargs
3070    ):
3071        super(ExpressRouteCircuitSku, self).__init__(**kwargs)
3072        self.name = kwargs.get('name', None)
3073        self.tier = kwargs.get('tier', None)
3074        self.family = kwargs.get('family', None)
3075
3076
3077class ExpressRouteCircuitsRoutesTableListResult(msrest.serialization.Model):
3078    """Response for ListRoutesTable associated with the Express Route Circuits API.
3079
3080    :param value: The list of routes table.
3081    :type value: list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitRoutesTable]
3082    :param next_link: The URL to get the next set of results.
3083    :type next_link: str
3084    """
3085
3086    _attribute_map = {
3087        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTable]'},
3088        'next_link': {'key': 'nextLink', 'type': 'str'},
3089    }
3090
3091    def __init__(
3092        self,
3093        **kwargs
3094    ):
3095        super(ExpressRouteCircuitsRoutesTableListResult, self).__init__(**kwargs)
3096        self.value = kwargs.get('value', None)
3097        self.next_link = kwargs.get('next_link', None)
3098
3099
3100class ExpressRouteCircuitsRoutesTableSummaryListResult(msrest.serialization.Model):
3101    """Response for ListRoutesTable associated with the Express Route Circuits API.
3102
3103    :param value: A list of the routes table.
3104    :type value: list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitRoutesTableSummary]
3105    :param next_link: The URL to get the next set of results.
3106    :type next_link: str
3107    """
3108
3109    _attribute_map = {
3110        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTableSummary]'},
3111        'next_link': {'key': 'nextLink', 'type': 'str'},
3112    }
3113
3114    def __init__(
3115        self,
3116        **kwargs
3117    ):
3118        super(ExpressRouteCircuitsRoutesTableSummaryListResult, self).__init__(**kwargs)
3119        self.value = kwargs.get('value', None)
3120        self.next_link = kwargs.get('next_link', None)
3121
3122
3123class ExpressRouteCircuitStats(msrest.serialization.Model):
3124    """Contains stats associated with the peering.
3125
3126    :param primarybytes_in: Gets BytesIn of the peering.
3127    :type primarybytes_in: long
3128    :param primarybytes_out: Gets BytesOut of the peering.
3129    :type primarybytes_out: long
3130    :param secondarybytes_in: Gets BytesIn of the peering.
3131    :type secondarybytes_in: long
3132    :param secondarybytes_out: Gets BytesOut of the peering.
3133    :type secondarybytes_out: long
3134    """
3135
3136    _attribute_map = {
3137        'primarybytes_in': {'key': 'primarybytesIn', 'type': 'long'},
3138        'primarybytes_out': {'key': 'primarybytesOut', 'type': 'long'},
3139        'secondarybytes_in': {'key': 'secondarybytesIn', 'type': 'long'},
3140        'secondarybytes_out': {'key': 'secondarybytesOut', 'type': 'long'},
3141    }
3142
3143    def __init__(
3144        self,
3145        **kwargs
3146    ):
3147        super(ExpressRouteCircuitStats, self).__init__(**kwargs)
3148        self.primarybytes_in = kwargs.get('primarybytes_in', None)
3149        self.primarybytes_out = kwargs.get('primarybytes_out', None)
3150        self.secondarybytes_in = kwargs.get('secondarybytes_in', None)
3151        self.secondarybytes_out = kwargs.get('secondarybytes_out', None)
3152
3153
3154class ExpressRouteServiceProvider(Resource):
3155    """A ExpressRouteResourceProvider object.
3156
3157    Variables are only populated by the server, and will be ignored when sending a request.
3158
3159    :param id: Resource ID.
3160    :type id: str
3161    :ivar name: Resource name.
3162    :vartype name: str
3163    :ivar type: Resource type.
3164    :vartype type: str
3165    :param location: Resource location.
3166    :type location: str
3167    :param tags: A set of tags. Resource tags.
3168    :type tags: dict[str, str]
3169    :param peering_locations: Get a list of peering locations.
3170    :type peering_locations: list[str]
3171    :param bandwidths_offered: Gets bandwidths offered.
3172    :type bandwidths_offered:
3173     list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteServiceProviderBandwidthsOffered]
3174    :param provisioning_state: Gets the provisioning state of the resource.
3175    :type provisioning_state: str
3176    """
3177
3178    _validation = {
3179        'name': {'readonly': True},
3180        'type': {'readonly': True},
3181    }
3182
3183    _attribute_map = {
3184        'id': {'key': 'id', 'type': 'str'},
3185        'name': {'key': 'name', 'type': 'str'},
3186        'type': {'key': 'type', 'type': 'str'},
3187        'location': {'key': 'location', 'type': 'str'},
3188        'tags': {'key': 'tags', 'type': '{str}'},
3189        'peering_locations': {'key': 'properties.peeringLocations', 'type': '[str]'},
3190        'bandwidths_offered': {'key': 'properties.bandwidthsOffered', 'type': '[ExpressRouteServiceProviderBandwidthsOffered]'},
3191        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3192    }
3193
3194    def __init__(
3195        self,
3196        **kwargs
3197    ):
3198        super(ExpressRouteServiceProvider, self).__init__(**kwargs)
3199        self.peering_locations = kwargs.get('peering_locations', None)
3200        self.bandwidths_offered = kwargs.get('bandwidths_offered', None)
3201        self.provisioning_state = kwargs.get('provisioning_state', None)
3202
3203
3204class ExpressRouteServiceProviderBandwidthsOffered(msrest.serialization.Model):
3205    """Contains bandwidths offered in ExpressRouteServiceProvider resources.
3206
3207    :param offer_name: The OfferName.
3208    :type offer_name: str
3209    :param value_in_mbps: The ValueInMbps.
3210    :type value_in_mbps: int
3211    """
3212
3213    _attribute_map = {
3214        'offer_name': {'key': 'offerName', 'type': 'str'},
3215        'value_in_mbps': {'key': 'valueInMbps', 'type': 'int'},
3216    }
3217
3218    def __init__(
3219        self,
3220        **kwargs
3221    ):
3222        super(ExpressRouteServiceProviderBandwidthsOffered, self).__init__(**kwargs)
3223        self.offer_name = kwargs.get('offer_name', None)
3224        self.value_in_mbps = kwargs.get('value_in_mbps', None)
3225
3226
3227class ExpressRouteServiceProviderListResult(msrest.serialization.Model):
3228    """Response for the ListExpressRouteServiceProvider API service call.
3229
3230    :param value: A list of ExpressRouteResourceProvider resources.
3231    :type value: list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteServiceProvider]
3232    :param next_link: The URL to get the next set of results.
3233    :type next_link: str
3234    """
3235
3236    _attribute_map = {
3237        'value': {'key': 'value', 'type': '[ExpressRouteServiceProvider]'},
3238        'next_link': {'key': 'nextLink', 'type': 'str'},
3239    }
3240
3241    def __init__(
3242        self,
3243        **kwargs
3244    ):
3245        super(ExpressRouteServiceProviderListResult, self).__init__(**kwargs)
3246        self.value = kwargs.get('value', None)
3247        self.next_link = kwargs.get('next_link', None)
3248
3249
3250class FlowLogInformation(msrest.serialization.Model):
3251    """Information on the configuration of flow log.
3252
3253    All required parameters must be populated in order to send to Azure.
3254
3255    :param target_resource_id: Required. The ID of the resource to configure for flow logging.
3256    :type target_resource_id: str
3257    :param storage_id: Required. ID of the storage account which is used to store the flow log.
3258    :type storage_id: str
3259    :param enabled: Required. Flag to enable/disable flow logging.
3260    :type enabled: bool
3261    :param retention_policy: Parameters that define the retention policy for flow log.
3262    :type retention_policy: ~azure.mgmt.network.v2017_08_01.models.RetentionPolicyParameters
3263    """
3264
3265    _validation = {
3266        'target_resource_id': {'required': True},
3267        'storage_id': {'required': True},
3268        'enabled': {'required': True},
3269    }
3270
3271    _attribute_map = {
3272        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
3273        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
3274        'enabled': {'key': 'properties.enabled', 'type': 'bool'},
3275        'retention_policy': {'key': 'properties.retentionPolicy', 'type': 'RetentionPolicyParameters'},
3276    }
3277
3278    def __init__(
3279        self,
3280        **kwargs
3281    ):
3282        super(FlowLogInformation, self).__init__(**kwargs)
3283        self.target_resource_id = kwargs['target_resource_id']
3284        self.storage_id = kwargs['storage_id']
3285        self.enabled = kwargs['enabled']
3286        self.retention_policy = kwargs.get('retention_policy', None)
3287
3288
3289class FlowLogStatusParameters(msrest.serialization.Model):
3290    """Parameters that define a resource to query flow log status.
3291
3292    All required parameters must be populated in order to send to Azure.
3293
3294    :param target_resource_id: Required. The target resource where getting the flow logging status.
3295    :type target_resource_id: str
3296    """
3297
3298    _validation = {
3299        'target_resource_id': {'required': True},
3300    }
3301
3302    _attribute_map = {
3303        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
3304    }
3305
3306    def __init__(
3307        self,
3308        **kwargs
3309    ):
3310        super(FlowLogStatusParameters, self).__init__(**kwargs)
3311        self.target_resource_id = kwargs['target_resource_id']
3312
3313
3314class FrontendIPConfiguration(SubResource):
3315    """Frontend IP address of the load balancer.
3316
3317    Variables are only populated by the server, and will be ignored when sending a request.
3318
3319    :param id: Resource ID.
3320    :type id: str
3321    :param name: The name of the resource that is unique within a resource group. This name can be
3322     used to access the resource.
3323    :type name: str
3324    :param etag: A unique read-only string that changes whenever the resource is updated.
3325    :type etag: str
3326    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
3327     come from.
3328    :type zones: list[str]
3329    :ivar inbound_nat_rules: Read only. Inbound rules URIs that use this frontend IP.
3330    :vartype inbound_nat_rules: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
3331    :ivar inbound_nat_pools: Read only. Inbound pools URIs that use this frontend IP.
3332    :vartype inbound_nat_pools: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
3333    :ivar outbound_nat_rules: Read only. Outbound rules URIs that use this frontend IP.
3334    :vartype outbound_nat_rules: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
3335    :ivar load_balancing_rules: Gets load balancing rules URIs that use this frontend IP.
3336    :vartype load_balancing_rules: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
3337    :param private_ip_address: The private IP address of the IP configuration.
3338    :type private_ip_address: str
3339    :param private_ip_allocation_method: The Private IP allocation method. Possible values are:
3340     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
3341    :type private_ip_allocation_method: str or
3342     ~azure.mgmt.network.v2017_08_01.models.IPAllocationMethod
3343    :param subnet: The reference of the subnet resource.
3344    :type subnet: ~azure.mgmt.network.v2017_08_01.models.Subnet
3345    :param public_ip_address: The reference of the Public IP resource.
3346    :type public_ip_address: ~azure.mgmt.network.v2017_08_01.models.PublicIPAddress
3347    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
3348     values are: 'Updating', 'Deleting', and 'Failed'.
3349    :type provisioning_state: str
3350    """
3351
3352    _validation = {
3353        'inbound_nat_rules': {'readonly': True},
3354        'inbound_nat_pools': {'readonly': True},
3355        'outbound_nat_rules': {'readonly': True},
3356        'load_balancing_rules': {'readonly': True},
3357    }
3358
3359    _attribute_map = {
3360        'id': {'key': 'id', 'type': 'str'},
3361        'name': {'key': 'name', 'type': 'str'},
3362        'etag': {'key': 'etag', 'type': 'str'},
3363        'zones': {'key': 'zones', 'type': '[str]'},
3364        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[SubResource]'},
3365        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[SubResource]'},
3366        'outbound_nat_rules': {'key': 'properties.outboundNatRules', 'type': '[SubResource]'},
3367        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
3368        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
3369        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
3370        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
3371        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
3372        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3373    }
3374
3375    def __init__(
3376        self,
3377        **kwargs
3378    ):
3379        super(FrontendIPConfiguration, self).__init__(**kwargs)
3380        self.name = kwargs.get('name', None)
3381        self.etag = kwargs.get('etag', None)
3382        self.zones = kwargs.get('zones', None)
3383        self.inbound_nat_rules = None
3384        self.inbound_nat_pools = None
3385        self.outbound_nat_rules = None
3386        self.load_balancing_rules = None
3387        self.private_ip_address = kwargs.get('private_ip_address', None)
3388        self.private_ip_allocation_method = kwargs.get('private_ip_allocation_method', None)
3389        self.subnet = kwargs.get('subnet', None)
3390        self.public_ip_address = kwargs.get('public_ip_address', None)
3391        self.provisioning_state = kwargs.get('provisioning_state', None)
3392
3393
3394class GatewayRoute(msrest.serialization.Model):
3395    """Gateway routing details.
3396
3397    Variables are only populated by the server, and will be ignored when sending a request.
3398
3399    :ivar local_address: The gateway's local address.
3400    :vartype local_address: str
3401    :ivar network: The route's network prefix.
3402    :vartype network: str
3403    :ivar next_hop: The route's next hop.
3404    :vartype next_hop: str
3405    :ivar source_peer: The peer this route was learned from.
3406    :vartype source_peer: str
3407    :ivar origin: The source this route was learned from.
3408    :vartype origin: str
3409    :ivar as_path: The route's AS path sequence.
3410    :vartype as_path: str
3411    :ivar weight: The route's weight.
3412    :vartype weight: int
3413    """
3414
3415    _validation = {
3416        'local_address': {'readonly': True},
3417        'network': {'readonly': True},
3418        'next_hop': {'readonly': True},
3419        'source_peer': {'readonly': True},
3420        'origin': {'readonly': True},
3421        'as_path': {'readonly': True},
3422        'weight': {'readonly': True},
3423    }
3424
3425    _attribute_map = {
3426        'local_address': {'key': 'localAddress', 'type': 'str'},
3427        'network': {'key': 'network', 'type': 'str'},
3428        'next_hop': {'key': 'nextHop', 'type': 'str'},
3429        'source_peer': {'key': 'sourcePeer', 'type': 'str'},
3430        'origin': {'key': 'origin', 'type': 'str'},
3431        'as_path': {'key': 'asPath', 'type': 'str'},
3432        'weight': {'key': 'weight', 'type': 'int'},
3433    }
3434
3435    def __init__(
3436        self,
3437        **kwargs
3438    ):
3439        super(GatewayRoute, self).__init__(**kwargs)
3440        self.local_address = None
3441        self.network = None
3442        self.next_hop = None
3443        self.source_peer = None
3444        self.origin = None
3445        self.as_path = None
3446        self.weight = None
3447
3448
3449class GatewayRouteListResult(msrest.serialization.Model):
3450    """List of virtual network gateway routes.
3451
3452    :param value: List of gateway routes.
3453    :type value: list[~azure.mgmt.network.v2017_08_01.models.GatewayRoute]
3454    """
3455
3456    _attribute_map = {
3457        'value': {'key': 'value', 'type': '[GatewayRoute]'},
3458    }
3459
3460    def __init__(
3461        self,
3462        **kwargs
3463    ):
3464        super(GatewayRouteListResult, self).__init__(**kwargs)
3465        self.value = kwargs.get('value', None)
3466
3467
3468class InboundNatPool(SubResource):
3469    """Inbound NAT pool of the load balancer.
3470
3471    :param id: Resource ID.
3472    :type id: str
3473    :param name: The name of the resource that is unique within a resource group. This name can be
3474     used to access the resource.
3475    :type name: str
3476    :param etag: A unique read-only string that changes whenever the resource is updated.
3477    :type etag: str
3478    :param frontend_ip_configuration: A reference to frontend IP addresses.
3479    :type frontend_ip_configuration: ~azure.mgmt.network.v2017_08_01.models.SubResource
3480    :param protocol: The transport protocol for the endpoint. Possible values are: 'Udp' or 'Tcp'.
3481     Possible values include: "Udp", "Tcp".
3482    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.TransportProtocol
3483    :param frontend_port_range_start: The first port number in the range of external ports that
3484     will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values
3485     range between 1 and 65534.
3486    :type frontend_port_range_start: int
3487    :param frontend_port_range_end: The last port number in the range of external ports that will
3488     be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range
3489     between 1 and 65535.
3490    :type frontend_port_range_end: int
3491    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
3492     are between 1 and 65535.
3493    :type backend_port: int
3494    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
3495     values are: 'Updating', 'Deleting', and 'Failed'.
3496    :type provisioning_state: str
3497    """
3498
3499    _attribute_map = {
3500        'id': {'key': 'id', 'type': 'str'},
3501        'name': {'key': 'name', 'type': 'str'},
3502        'etag': {'key': 'etag', 'type': 'str'},
3503        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
3504        'protocol': {'key': 'properties.protocol', 'type': 'str'},
3505        'frontend_port_range_start': {'key': 'properties.frontendPortRangeStart', 'type': 'int'},
3506        'frontend_port_range_end': {'key': 'properties.frontendPortRangeEnd', 'type': 'int'},
3507        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
3508        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3509    }
3510
3511    def __init__(
3512        self,
3513        **kwargs
3514    ):
3515        super(InboundNatPool, self).__init__(**kwargs)
3516        self.name = kwargs.get('name', None)
3517        self.etag = kwargs.get('etag', None)
3518        self.frontend_ip_configuration = kwargs.get('frontend_ip_configuration', None)
3519        self.protocol = kwargs.get('protocol', None)
3520        self.frontend_port_range_start = kwargs.get('frontend_port_range_start', None)
3521        self.frontend_port_range_end = kwargs.get('frontend_port_range_end', None)
3522        self.backend_port = kwargs.get('backend_port', None)
3523        self.provisioning_state = kwargs.get('provisioning_state', None)
3524
3525
3526class InboundNatRule(SubResource):
3527    """Inbound NAT rule of the load balancer.
3528
3529    Variables are only populated by the server, and will be ignored when sending a request.
3530
3531    :param id: Resource ID.
3532    :type id: str
3533    :param name: Gets name of the resource that is unique within a resource group. This name can be
3534     used to access the resource.
3535    :type name: str
3536    :param etag: A unique read-only string that changes whenever the resource is updated.
3537    :type etag: str
3538    :param frontend_ip_configuration: A reference to frontend IP addresses.
3539    :type frontend_ip_configuration: ~azure.mgmt.network.v2017_08_01.models.SubResource
3540    :ivar backend_ip_configuration: A reference to a private IP address defined on a network
3541     interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations
3542     is forwarded to the backend IP.
3543    :vartype backend_ip_configuration:
3544     ~azure.mgmt.network.v2017_08_01.models.NetworkInterfaceIPConfiguration
3545    :param protocol: The transport protocol for the endpoint. Possible values are: 'Udp' or 'Tcp'.
3546     Possible values include: "Udp", "Tcp".
3547    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.TransportProtocol
3548    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
3549     unique within the Load Balancer. Acceptable values range from 1 to 65534.
3550    :type frontend_port: int
3551    :param backend_port: The port used for the internal endpoint. Acceptable values range from 1 to
3552     65535.
3553    :type backend_port: int
3554    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
3555     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
3556     protocol is set to TCP.
3557    :type idle_timeout_in_minutes: int
3558    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
3559     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
3560     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
3561     after you create the endpoint.
3562    :type enable_floating_ip: bool
3563    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
3564     values are: 'Updating', 'Deleting', and 'Failed'.
3565    :type provisioning_state: str
3566    """
3567
3568    _validation = {
3569        'backend_ip_configuration': {'readonly': True},
3570    }
3571
3572    _attribute_map = {
3573        'id': {'key': 'id', 'type': 'str'},
3574        'name': {'key': 'name', 'type': 'str'},
3575        'etag': {'key': 'etag', 'type': 'str'},
3576        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
3577        'backend_ip_configuration': {'key': 'properties.backendIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
3578        'protocol': {'key': 'properties.protocol', 'type': 'str'},
3579        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
3580        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
3581        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
3582        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
3583        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3584    }
3585
3586    def __init__(
3587        self,
3588        **kwargs
3589    ):
3590        super(InboundNatRule, self).__init__(**kwargs)
3591        self.name = kwargs.get('name', None)
3592        self.etag = kwargs.get('etag', None)
3593        self.frontend_ip_configuration = kwargs.get('frontend_ip_configuration', None)
3594        self.backend_ip_configuration = None
3595        self.protocol = kwargs.get('protocol', None)
3596        self.frontend_port = kwargs.get('frontend_port', None)
3597        self.backend_port = kwargs.get('backend_port', None)
3598        self.idle_timeout_in_minutes = kwargs.get('idle_timeout_in_minutes', None)
3599        self.enable_floating_ip = kwargs.get('enable_floating_ip', None)
3600        self.provisioning_state = kwargs.get('provisioning_state', None)
3601
3602
3603class InboundNatRuleListResult(msrest.serialization.Model):
3604    """Response for ListInboundNatRule API service call.
3605
3606    Variables are only populated by the server, and will be ignored when sending a request.
3607
3608    :param value: A list of inbound nat rules in a load balancer.
3609    :type value: list[~azure.mgmt.network.v2017_08_01.models.InboundNatRule]
3610    :ivar next_link: The URL to get the next set of results.
3611    :vartype next_link: str
3612    """
3613
3614    _validation = {
3615        'next_link': {'readonly': True},
3616    }
3617
3618    _attribute_map = {
3619        'value': {'key': 'value', 'type': '[InboundNatRule]'},
3620        'next_link': {'key': 'nextLink', 'type': 'str'},
3621    }
3622
3623    def __init__(
3624        self,
3625        **kwargs
3626    ):
3627        super(InboundNatRuleListResult, self).__init__(**kwargs)
3628        self.value = kwargs.get('value', None)
3629        self.next_link = None
3630
3631
3632class IPAddressAvailabilityResult(msrest.serialization.Model):
3633    """Response for CheckIPAddressAvailability API service call.
3634
3635    :param available: Private IP address availability.
3636    :type available: bool
3637    :param available_ip_addresses: Contains other available private IP addresses if the asked for
3638     address is taken.
3639    :type available_ip_addresses: list[str]
3640    """
3641
3642    _attribute_map = {
3643        'available': {'key': 'available', 'type': 'bool'},
3644        'available_ip_addresses': {'key': 'availableIPAddresses', 'type': '[str]'},
3645    }
3646
3647    def __init__(
3648        self,
3649        **kwargs
3650    ):
3651        super(IPAddressAvailabilityResult, self).__init__(**kwargs)
3652        self.available = kwargs.get('available', None)
3653        self.available_ip_addresses = kwargs.get('available_ip_addresses', None)
3654
3655
3656class IPConfiguration(SubResource):
3657    """IP configuration.
3658
3659    :param id: Resource ID.
3660    :type id: str
3661    :param name: The name of the resource that is unique within a resource group. This name can be
3662     used to access the resource.
3663    :type name: str
3664    :param etag: A unique read-only string that changes whenever the resource is updated.
3665    :type etag: str
3666    :param private_ip_address: The private IP address of the IP configuration.
3667    :type private_ip_address: str
3668    :param private_ip_allocation_method: The private IP allocation method. Possible values are
3669     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
3670    :type private_ip_allocation_method: str or
3671     ~azure.mgmt.network.v2017_08_01.models.IPAllocationMethod
3672    :param subnet: The reference of the subnet resource.
3673    :type subnet: ~azure.mgmt.network.v2017_08_01.models.Subnet
3674    :param public_ip_address: The reference of the public IP resource.
3675    :type public_ip_address: ~azure.mgmt.network.v2017_08_01.models.PublicIPAddress
3676    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
3677     values are: 'Updating', 'Deleting', and 'Failed'.
3678    :type provisioning_state: str
3679    """
3680
3681    _attribute_map = {
3682        'id': {'key': 'id', 'type': 'str'},
3683        'name': {'key': 'name', 'type': 'str'},
3684        'etag': {'key': 'etag', 'type': 'str'},
3685        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
3686        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
3687        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
3688        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
3689        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3690    }
3691
3692    def __init__(
3693        self,
3694        **kwargs
3695    ):
3696        super(IPConfiguration, self).__init__(**kwargs)
3697        self.name = kwargs.get('name', None)
3698        self.etag = kwargs.get('etag', None)
3699        self.private_ip_address = kwargs.get('private_ip_address', None)
3700        self.private_ip_allocation_method = kwargs.get('private_ip_allocation_method', None)
3701        self.subnet = kwargs.get('subnet', None)
3702        self.public_ip_address = kwargs.get('public_ip_address', None)
3703        self.provisioning_state = kwargs.get('provisioning_state', None)
3704
3705
3706class IpsecPolicy(msrest.serialization.Model):
3707    """An IPSec Policy configuration for a virtual network gateway connection.
3708
3709    All required parameters must be populated in order to send to Azure.
3710
3711    :param sa_life_time_seconds: Required. The IPSec Security Association (also called Quick Mode
3712     or Phase 2 SA) lifetime in seconds for a site to site VPN tunnel.
3713    :type sa_life_time_seconds: int
3714    :param sa_data_size_kilobytes: Required. The IPSec Security Association (also called Quick Mode
3715     or Phase 2 SA) payload size in KB for a site to site VPN tunnel.
3716    :type sa_data_size_kilobytes: int
3717    :param ipsec_encryption: Required. The IPSec encryption algorithm (IKE phase 1). Possible
3718     values include: "None", "DES", "DES3", "AES128", "AES192", "AES256", "GCMAES128", "GCMAES192",
3719     "GCMAES256".
3720    :type ipsec_encryption: str or ~azure.mgmt.network.v2017_08_01.models.IpsecEncryption
3721    :param ipsec_integrity: Required. The IPSec integrity algorithm (IKE phase 1). Possible values
3722     include: "MD5", "SHA1", "SHA256", "GCMAES128", "GCMAES192", "GCMAES256".
3723    :type ipsec_integrity: str or ~azure.mgmt.network.v2017_08_01.models.IpsecIntegrity
3724    :param ike_encryption: Required. The IKE encryption algorithm (IKE phase 2). Possible values
3725     include: "DES", "DES3", "AES128", "AES192", "AES256".
3726    :type ike_encryption: str or ~azure.mgmt.network.v2017_08_01.models.IkeEncryption
3727    :param ike_integrity: Required. The IKE integrity algorithm (IKE phase 2). Possible values
3728     include: "MD5", "SHA1", "SHA256", "SHA384".
3729    :type ike_integrity: str or ~azure.mgmt.network.v2017_08_01.models.IkeIntegrity
3730    :param dh_group: Required. The DH Groups used in IKE Phase 1 for initial SA. Possible values
3731     include: "None", "DHGroup1", "DHGroup2", "DHGroup14", "DHGroup2048", "ECP256", "ECP384",
3732     "DHGroup24".
3733    :type dh_group: str or ~azure.mgmt.network.v2017_08_01.models.DhGroup
3734    :param pfs_group: Required. The DH Groups used in IKE Phase 2 for new child SA. Possible values
3735     include: "None", "PFS1", "PFS2", "PFS2048", "ECP256", "ECP384", "PFS24".
3736    :type pfs_group: str or ~azure.mgmt.network.v2017_08_01.models.PfsGroup
3737    """
3738
3739    _validation = {
3740        'sa_life_time_seconds': {'required': True},
3741        'sa_data_size_kilobytes': {'required': True},
3742        'ipsec_encryption': {'required': True},
3743        'ipsec_integrity': {'required': True},
3744        'ike_encryption': {'required': True},
3745        'ike_integrity': {'required': True},
3746        'dh_group': {'required': True},
3747        'pfs_group': {'required': True},
3748    }
3749
3750    _attribute_map = {
3751        'sa_life_time_seconds': {'key': 'saLifeTimeSeconds', 'type': 'int'},
3752        'sa_data_size_kilobytes': {'key': 'saDataSizeKilobytes', 'type': 'int'},
3753        'ipsec_encryption': {'key': 'ipsecEncryption', 'type': 'str'},
3754        'ipsec_integrity': {'key': 'ipsecIntegrity', 'type': 'str'},
3755        'ike_encryption': {'key': 'ikeEncryption', 'type': 'str'},
3756        'ike_integrity': {'key': 'ikeIntegrity', 'type': 'str'},
3757        'dh_group': {'key': 'dhGroup', 'type': 'str'},
3758        'pfs_group': {'key': 'pfsGroup', 'type': 'str'},
3759    }
3760
3761    def __init__(
3762        self,
3763        **kwargs
3764    ):
3765        super(IpsecPolicy, self).__init__(**kwargs)
3766        self.sa_life_time_seconds = kwargs['sa_life_time_seconds']
3767        self.sa_data_size_kilobytes = kwargs['sa_data_size_kilobytes']
3768        self.ipsec_encryption = kwargs['ipsec_encryption']
3769        self.ipsec_integrity = kwargs['ipsec_integrity']
3770        self.ike_encryption = kwargs['ike_encryption']
3771        self.ike_integrity = kwargs['ike_integrity']
3772        self.dh_group = kwargs['dh_group']
3773        self.pfs_group = kwargs['pfs_group']
3774
3775
3776class Ipv6ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
3777    """Contains IPv6 peering config.
3778
3779    :param primary_peer_address_prefix: The primary address prefix.
3780    :type primary_peer_address_prefix: str
3781    :param secondary_peer_address_prefix: The secondary address prefix.
3782    :type secondary_peer_address_prefix: str
3783    :param microsoft_peering_config: The Microsoft peering configuration.
3784    :type microsoft_peering_config:
3785     ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitPeeringConfig
3786    :param route_filter: The reference of the RouteFilter resource.
3787    :type route_filter: ~azure.mgmt.network.v2017_08_01.models.RouteFilter
3788    :param state: The state of peering. Possible values are: 'Disabled' and 'Enabled'. Possible
3789     values include: "Disabled", "Enabled".
3790    :type state: str or ~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitPeeringState
3791    """
3792
3793    _attribute_map = {
3794        'primary_peer_address_prefix': {'key': 'primaryPeerAddressPrefix', 'type': 'str'},
3795        'secondary_peer_address_prefix': {'key': 'secondaryPeerAddressPrefix', 'type': 'str'},
3796        'microsoft_peering_config': {'key': 'microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
3797        'route_filter': {'key': 'routeFilter', 'type': 'RouteFilter'},
3798        'state': {'key': 'state', 'type': 'str'},
3799    }
3800
3801    def __init__(
3802        self,
3803        **kwargs
3804    ):
3805        super(Ipv6ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
3806        self.primary_peer_address_prefix = kwargs.get('primary_peer_address_prefix', None)
3807        self.secondary_peer_address_prefix = kwargs.get('secondary_peer_address_prefix', None)
3808        self.microsoft_peering_config = kwargs.get('microsoft_peering_config', None)
3809        self.route_filter = kwargs.get('route_filter', None)
3810        self.state = kwargs.get('state', None)
3811
3812
3813class LoadBalancer(Resource):
3814    """LoadBalancer resource.
3815
3816    Variables are only populated by the server, and will be ignored when sending a request.
3817
3818    :param id: Resource ID.
3819    :type id: str
3820    :ivar name: Resource name.
3821    :vartype name: str
3822    :ivar type: Resource type.
3823    :vartype type: str
3824    :param location: Resource location.
3825    :type location: str
3826    :param tags: A set of tags. Resource tags.
3827    :type tags: dict[str, str]
3828    :param sku: The load balancer SKU.
3829    :type sku: ~azure.mgmt.network.v2017_08_01.models.LoadBalancerSku
3830    :param etag: A unique read-only string that changes whenever the resource is updated.
3831    :type etag: str
3832    :param frontend_ip_configurations: Object representing the frontend IPs to be used for the load
3833     balancer.
3834    :type frontend_ip_configurations:
3835     list[~azure.mgmt.network.v2017_08_01.models.FrontendIPConfiguration]
3836    :param backend_address_pools: Collection of backend address pools used by a load balancer.
3837    :type backend_address_pools: list[~azure.mgmt.network.v2017_08_01.models.BackendAddressPool]
3838    :param load_balancing_rules: Object collection representing the load balancing rules Gets the
3839     provisioning.
3840    :type load_balancing_rules: list[~azure.mgmt.network.v2017_08_01.models.LoadBalancingRule]
3841    :param probes: Collection of probe objects used in the load balancer.
3842    :type probes: list[~azure.mgmt.network.v2017_08_01.models.Probe]
3843    :param inbound_nat_rules: Collection of inbound NAT Rules used by a load balancer. Defining
3844     inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT
3845     pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are
3846     associated with individual virtual machines cannot reference an Inbound NAT pool. They have to
3847     reference individual inbound NAT rules.
3848    :type inbound_nat_rules: list[~azure.mgmt.network.v2017_08_01.models.InboundNatRule]
3849    :param inbound_nat_pools: Defines an external port range for inbound NAT to a single backend
3850     port on NICs associated with a load balancer. Inbound NAT rules are created automatically for
3851     each NIC associated with the Load Balancer using an external port from this range. Defining an
3852     Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules.
3853     Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with
3854     individual virtual machines cannot reference an inbound NAT pool. They have to reference
3855     individual inbound NAT rules.
3856    :type inbound_nat_pools: list[~azure.mgmt.network.v2017_08_01.models.InboundNatPool]
3857    :param outbound_nat_rules: The outbound NAT rules.
3858    :type outbound_nat_rules: list[~azure.mgmt.network.v2017_08_01.models.OutboundNatRule]
3859    :param resource_guid: The resource GUID property of the load balancer resource.
3860    :type resource_guid: str
3861    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
3862     values are: 'Updating', 'Deleting', and 'Failed'.
3863    :type provisioning_state: str
3864    """
3865
3866    _validation = {
3867        'name': {'readonly': True},
3868        'type': {'readonly': True},
3869    }
3870
3871    _attribute_map = {
3872        'id': {'key': 'id', 'type': 'str'},
3873        'name': {'key': 'name', 'type': 'str'},
3874        'type': {'key': 'type', 'type': 'str'},
3875        'location': {'key': 'location', 'type': 'str'},
3876        'tags': {'key': 'tags', 'type': '{str}'},
3877        'sku': {'key': 'sku', 'type': 'LoadBalancerSku'},
3878        'etag': {'key': 'etag', 'type': 'str'},
3879        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[FrontendIPConfiguration]'},
3880        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[BackendAddressPool]'},
3881        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[LoadBalancingRule]'},
3882        'probes': {'key': 'properties.probes', 'type': '[Probe]'},
3883        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[InboundNatRule]'},
3884        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[InboundNatPool]'},
3885        'outbound_nat_rules': {'key': 'properties.outboundNatRules', 'type': '[OutboundNatRule]'},
3886        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
3887        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3888    }
3889
3890    def __init__(
3891        self,
3892        **kwargs
3893    ):
3894        super(LoadBalancer, self).__init__(**kwargs)
3895        self.sku = kwargs.get('sku', None)
3896        self.etag = kwargs.get('etag', None)
3897        self.frontend_ip_configurations = kwargs.get('frontend_ip_configurations', None)
3898        self.backend_address_pools = kwargs.get('backend_address_pools', None)
3899        self.load_balancing_rules = kwargs.get('load_balancing_rules', None)
3900        self.probes = kwargs.get('probes', None)
3901        self.inbound_nat_rules = kwargs.get('inbound_nat_rules', None)
3902        self.inbound_nat_pools = kwargs.get('inbound_nat_pools', None)
3903        self.outbound_nat_rules = kwargs.get('outbound_nat_rules', None)
3904        self.resource_guid = kwargs.get('resource_guid', None)
3905        self.provisioning_state = kwargs.get('provisioning_state', None)
3906
3907
3908class LoadBalancerBackendAddressPoolListResult(msrest.serialization.Model):
3909    """Response for ListBackendAddressPool API service call.
3910
3911    Variables are only populated by the server, and will be ignored when sending a request.
3912
3913    :param value: A list of backend address pools in a load balancer.
3914    :type value: list[~azure.mgmt.network.v2017_08_01.models.BackendAddressPool]
3915    :ivar next_link: The URL to get the next set of results.
3916    :vartype next_link: str
3917    """
3918
3919    _validation = {
3920        'next_link': {'readonly': True},
3921    }
3922
3923    _attribute_map = {
3924        'value': {'key': 'value', 'type': '[BackendAddressPool]'},
3925        'next_link': {'key': 'nextLink', 'type': 'str'},
3926    }
3927
3928    def __init__(
3929        self,
3930        **kwargs
3931    ):
3932        super(LoadBalancerBackendAddressPoolListResult, self).__init__(**kwargs)
3933        self.value = kwargs.get('value', None)
3934        self.next_link = None
3935
3936
3937class LoadBalancerFrontendIPConfigurationListResult(msrest.serialization.Model):
3938    """Response for ListFrontendIPConfiguration API service call.
3939
3940    Variables are only populated by the server, and will be ignored when sending a request.
3941
3942    :param value: A list of frontend IP configurations in a load balancer.
3943    :type value: list[~azure.mgmt.network.v2017_08_01.models.FrontendIPConfiguration]
3944    :ivar next_link: The URL to get the next set of results.
3945    :vartype next_link: str
3946    """
3947
3948    _validation = {
3949        'next_link': {'readonly': True},
3950    }
3951
3952    _attribute_map = {
3953        'value': {'key': 'value', 'type': '[FrontendIPConfiguration]'},
3954        'next_link': {'key': 'nextLink', 'type': 'str'},
3955    }
3956
3957    def __init__(
3958        self,
3959        **kwargs
3960    ):
3961        super(LoadBalancerFrontendIPConfigurationListResult, self).__init__(**kwargs)
3962        self.value = kwargs.get('value', None)
3963        self.next_link = None
3964
3965
3966class LoadBalancerListResult(msrest.serialization.Model):
3967    """Response for ListLoadBalancers API service call.
3968
3969    Variables are only populated by the server, and will be ignored when sending a request.
3970
3971    :param value: A list of load balancers in a resource group.
3972    :type value: list[~azure.mgmt.network.v2017_08_01.models.LoadBalancer]
3973    :ivar next_link: The URL to get the next set of results.
3974    :vartype next_link: str
3975    """
3976
3977    _validation = {
3978        'next_link': {'readonly': True},
3979    }
3980
3981    _attribute_map = {
3982        'value': {'key': 'value', 'type': '[LoadBalancer]'},
3983        'next_link': {'key': 'nextLink', 'type': 'str'},
3984    }
3985
3986    def __init__(
3987        self,
3988        **kwargs
3989    ):
3990        super(LoadBalancerListResult, self).__init__(**kwargs)
3991        self.value = kwargs.get('value', None)
3992        self.next_link = None
3993
3994
3995class LoadBalancerLoadBalancingRuleListResult(msrest.serialization.Model):
3996    """Response for ListLoadBalancingRule API service call.
3997
3998    Variables are only populated by the server, and will be ignored when sending a request.
3999
4000    :param value: A list of load balancing rules in a load balancer.
4001    :type value: list[~azure.mgmt.network.v2017_08_01.models.LoadBalancingRule]
4002    :ivar next_link: The URL to get the next set of results.
4003    :vartype next_link: str
4004    """
4005
4006    _validation = {
4007        'next_link': {'readonly': True},
4008    }
4009
4010    _attribute_map = {
4011        'value': {'key': 'value', 'type': '[LoadBalancingRule]'},
4012        'next_link': {'key': 'nextLink', 'type': 'str'},
4013    }
4014
4015    def __init__(
4016        self,
4017        **kwargs
4018    ):
4019        super(LoadBalancerLoadBalancingRuleListResult, self).__init__(**kwargs)
4020        self.value = kwargs.get('value', None)
4021        self.next_link = None
4022
4023
4024class LoadBalancerProbeListResult(msrest.serialization.Model):
4025    """Response for ListProbe API service call.
4026
4027    Variables are only populated by the server, and will be ignored when sending a request.
4028
4029    :param value: A list of probes in a load balancer.
4030    :type value: list[~azure.mgmt.network.v2017_08_01.models.Probe]
4031    :ivar next_link: The URL to get the next set of results.
4032    :vartype next_link: str
4033    """
4034
4035    _validation = {
4036        'next_link': {'readonly': True},
4037    }
4038
4039    _attribute_map = {
4040        'value': {'key': 'value', 'type': '[Probe]'},
4041        'next_link': {'key': 'nextLink', 'type': 'str'},
4042    }
4043
4044    def __init__(
4045        self,
4046        **kwargs
4047    ):
4048        super(LoadBalancerProbeListResult, self).__init__(**kwargs)
4049        self.value = kwargs.get('value', None)
4050        self.next_link = None
4051
4052
4053class LoadBalancerSku(msrest.serialization.Model):
4054    """SKU of a load balancer.
4055
4056    :param name: Name of a load balancer SKU. Possible values include: "Basic", "Standard".
4057    :type name: str or ~azure.mgmt.network.v2017_08_01.models.LoadBalancerSkuName
4058    """
4059
4060    _attribute_map = {
4061        'name': {'key': 'name', 'type': 'str'},
4062    }
4063
4064    def __init__(
4065        self,
4066        **kwargs
4067    ):
4068        super(LoadBalancerSku, self).__init__(**kwargs)
4069        self.name = kwargs.get('name', None)
4070
4071
4072class LoadBalancingRule(SubResource):
4073    """A load balancing rule for a load balancer.
4074
4075    :param id: Resource ID.
4076    :type id: str
4077    :param name: The name of the resource that is unique within a resource group. This name can be
4078     used to access the resource.
4079    :type name: str
4080    :param etag: A unique read-only string that changes whenever the resource is updated.
4081    :type etag: str
4082    :param frontend_ip_configuration: A reference to frontend IP addresses.
4083    :type frontend_ip_configuration: ~azure.mgmt.network.v2017_08_01.models.SubResource
4084    :param backend_address_pool: A reference to a pool of DIPs. Inbound traffic is randomly load
4085     balanced across IPs in the backend IPs.
4086    :type backend_address_pool: ~azure.mgmt.network.v2017_08_01.models.SubResource
4087    :param probe: The reference of the load balancer probe used by the load balancing rule.
4088    :type probe: ~azure.mgmt.network.v2017_08_01.models.SubResource
4089    :param protocol: The transport protocol for the external endpoint. Possible values are 'Udp' or
4090     'Tcp'. Possible values include: "Udp", "Tcp".
4091    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.TransportProtocol
4092    :param load_distribution: The load distribution policy for this rule. Possible values are
4093     'Default', 'SourceIP', and 'SourceIPProtocol'. Possible values include: "Default", "SourceIP",
4094     "SourceIPProtocol".
4095    :type load_distribution: str or ~azure.mgmt.network.v2017_08_01.models.LoadDistribution
4096    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
4097     unique within the Load Balancer. Acceptable values are between 1 and 65534.
4098    :type frontend_port: int
4099    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
4100     are between 1 and 65535.
4101    :type backend_port: int
4102    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
4103     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
4104     protocol is set to TCP.
4105    :type idle_timeout_in_minutes: int
4106    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
4107     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
4108     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
4109     after you create the endpoint.
4110    :type enable_floating_ip: bool
4111    :param disable_outbound_snat: Configures SNAT for the VMs in the backend pool to use the
4112     publicIP address specified in the frontend of the load balancing rule.
4113    :type disable_outbound_snat: bool
4114    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
4115     values are: 'Updating', 'Deleting', and 'Failed'.
4116    :type provisioning_state: str
4117    """
4118
4119    _attribute_map = {
4120        'id': {'key': 'id', 'type': 'str'},
4121        'name': {'key': 'name', 'type': 'str'},
4122        'etag': {'key': 'etag', 'type': 'str'},
4123        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
4124        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
4125        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
4126        'protocol': {'key': 'properties.protocol', 'type': 'str'},
4127        'load_distribution': {'key': 'properties.loadDistribution', 'type': 'str'},
4128        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
4129        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
4130        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
4131        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
4132        'disable_outbound_snat': {'key': 'properties.disableOutboundSnat', 'type': 'bool'},
4133        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4134    }
4135
4136    def __init__(
4137        self,
4138        **kwargs
4139    ):
4140        super(LoadBalancingRule, self).__init__(**kwargs)
4141        self.name = kwargs.get('name', None)
4142        self.etag = kwargs.get('etag', None)
4143        self.frontend_ip_configuration = kwargs.get('frontend_ip_configuration', None)
4144        self.backend_address_pool = kwargs.get('backend_address_pool', None)
4145        self.probe = kwargs.get('probe', None)
4146        self.protocol = kwargs.get('protocol', None)
4147        self.load_distribution = kwargs.get('load_distribution', None)
4148        self.frontend_port = kwargs.get('frontend_port', None)
4149        self.backend_port = kwargs.get('backend_port', None)
4150        self.idle_timeout_in_minutes = kwargs.get('idle_timeout_in_minutes', None)
4151        self.enable_floating_ip = kwargs.get('enable_floating_ip', None)
4152        self.disable_outbound_snat = kwargs.get('disable_outbound_snat', None)
4153        self.provisioning_state = kwargs.get('provisioning_state', None)
4154
4155
4156class LocalNetworkGateway(Resource):
4157    """A common class for general resource information.
4158
4159    Variables are only populated by the server, and will be ignored when sending a request.
4160
4161    :param id: Resource ID.
4162    :type id: str
4163    :ivar name: Resource name.
4164    :vartype name: str
4165    :ivar type: Resource type.
4166    :vartype type: str
4167    :param location: Resource location.
4168    :type location: str
4169    :param tags: A set of tags. Resource tags.
4170    :type tags: dict[str, str]
4171    :param etag: A unique read-only string that changes whenever the resource is updated.
4172    :type etag: str
4173    :param local_network_address_space: Local network site address space.
4174    :type local_network_address_space: ~azure.mgmt.network.v2017_08_01.models.AddressSpace
4175    :param gateway_ip_address: IP address of local network gateway.
4176    :type gateway_ip_address: str
4177    :param bgp_settings: Local network gateway's BGP speaker settings.
4178    :type bgp_settings: ~azure.mgmt.network.v2017_08_01.models.BgpSettings
4179    :param resource_guid: The resource GUID property of the LocalNetworkGateway resource.
4180    :type resource_guid: str
4181    :ivar provisioning_state: The provisioning state of the LocalNetworkGateway resource. Possible
4182     values are: 'Updating', 'Deleting', and 'Failed'.
4183    :vartype provisioning_state: str
4184    """
4185
4186    _validation = {
4187        'name': {'readonly': True},
4188        'type': {'readonly': True},
4189        'provisioning_state': {'readonly': True},
4190    }
4191
4192    _attribute_map = {
4193        'id': {'key': 'id', 'type': 'str'},
4194        'name': {'key': 'name', 'type': 'str'},
4195        'type': {'key': 'type', 'type': 'str'},
4196        'location': {'key': 'location', 'type': 'str'},
4197        'tags': {'key': 'tags', 'type': '{str}'},
4198        'etag': {'key': 'etag', 'type': 'str'},
4199        'local_network_address_space': {'key': 'properties.localNetworkAddressSpace', 'type': 'AddressSpace'},
4200        'gateway_ip_address': {'key': 'properties.gatewayIpAddress', 'type': 'str'},
4201        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
4202        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
4203        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4204    }
4205
4206    def __init__(
4207        self,
4208        **kwargs
4209    ):
4210        super(LocalNetworkGateway, self).__init__(**kwargs)
4211        self.etag = kwargs.get('etag', None)
4212        self.local_network_address_space = kwargs.get('local_network_address_space', None)
4213        self.gateway_ip_address = kwargs.get('gateway_ip_address', None)
4214        self.bgp_settings = kwargs.get('bgp_settings', None)
4215        self.resource_guid = kwargs.get('resource_guid', None)
4216        self.provisioning_state = None
4217
4218
4219class LocalNetworkGatewayListResult(msrest.serialization.Model):
4220    """Response for ListLocalNetworkGateways API service call.
4221
4222    Variables are only populated by the server, and will be ignored when sending a request.
4223
4224    :param value: A list of local network gateways that exists in a resource group.
4225    :type value: list[~azure.mgmt.network.v2017_08_01.models.LocalNetworkGateway]
4226    :ivar next_link: The URL to get the next set of results.
4227    :vartype next_link: str
4228    """
4229
4230    _validation = {
4231        'next_link': {'readonly': True},
4232    }
4233
4234    _attribute_map = {
4235        'value': {'key': 'value', 'type': '[LocalNetworkGateway]'},
4236        'next_link': {'key': 'nextLink', 'type': 'str'},
4237    }
4238
4239    def __init__(
4240        self,
4241        **kwargs
4242    ):
4243        super(LocalNetworkGatewayListResult, self).__init__(**kwargs)
4244        self.value = kwargs.get('value', None)
4245        self.next_link = None
4246
4247
4248class NetworkInterface(Resource):
4249    """A network interface in a resource group.
4250
4251    Variables are only populated by the server, and will be ignored when sending a request.
4252
4253    :param id: Resource ID.
4254    :type id: str
4255    :ivar name: Resource name.
4256    :vartype name: str
4257    :ivar type: Resource type.
4258    :vartype type: str
4259    :param location: Resource location.
4260    :type location: str
4261    :param tags: A set of tags. Resource tags.
4262    :type tags: dict[str, str]
4263    :param etag: A unique read-only string that changes whenever the resource is updated.
4264    :type etag: str
4265    :param virtual_machine: The reference of a virtual machine.
4266    :type virtual_machine: ~azure.mgmt.network.v2017_08_01.models.SubResource
4267    :param network_security_group: The reference of the NetworkSecurityGroup resource.
4268    :type network_security_group: ~azure.mgmt.network.v2017_08_01.models.NetworkSecurityGroup
4269    :param ip_configurations: A list of IPConfigurations of the network interface.
4270    :type ip_configurations:
4271     list[~azure.mgmt.network.v2017_08_01.models.NetworkInterfaceIPConfiguration]
4272    :param dns_settings: The DNS settings in network interface.
4273    :type dns_settings: ~azure.mgmt.network.v2017_08_01.models.NetworkInterfaceDnsSettings
4274    :param mac_address: The MAC address of the network interface.
4275    :type mac_address: str
4276    :param primary: Gets whether this is a primary network interface on a virtual machine.
4277    :type primary: bool
4278    :param enable_accelerated_networking: If the network interface is accelerated networking
4279     enabled.
4280    :type enable_accelerated_networking: bool
4281    :param enable_ip_forwarding: Indicates whether IP forwarding is enabled on this network
4282     interface.
4283    :type enable_ip_forwarding: bool
4284    :param resource_guid: The resource GUID property of the network interface resource.
4285    :type resource_guid: str
4286    :param provisioning_state: The provisioning state of the public IP resource. Possible values
4287     are: 'Updating', 'Deleting', and 'Failed'.
4288    :type provisioning_state: str
4289    """
4290
4291    _validation = {
4292        'name': {'readonly': True},
4293        'type': {'readonly': True},
4294    }
4295
4296    _attribute_map = {
4297        'id': {'key': 'id', 'type': 'str'},
4298        'name': {'key': 'name', 'type': 'str'},
4299        'type': {'key': 'type', 'type': 'str'},
4300        'location': {'key': 'location', 'type': 'str'},
4301        'tags': {'key': 'tags', 'type': '{str}'},
4302        'etag': {'key': 'etag', 'type': 'str'},
4303        'virtual_machine': {'key': 'properties.virtualMachine', 'type': 'SubResource'},
4304        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
4305        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
4306        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'NetworkInterfaceDnsSettings'},
4307        'mac_address': {'key': 'properties.macAddress', 'type': 'str'},
4308        'primary': {'key': 'properties.primary', 'type': 'bool'},
4309        'enable_accelerated_networking': {'key': 'properties.enableAcceleratedNetworking', 'type': 'bool'},
4310        'enable_ip_forwarding': {'key': 'properties.enableIPForwarding', 'type': 'bool'},
4311        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
4312        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4313    }
4314
4315    def __init__(
4316        self,
4317        **kwargs
4318    ):
4319        super(NetworkInterface, self).__init__(**kwargs)
4320        self.etag = kwargs.get('etag', None)
4321        self.virtual_machine = kwargs.get('virtual_machine', None)
4322        self.network_security_group = kwargs.get('network_security_group', None)
4323        self.ip_configurations = kwargs.get('ip_configurations', None)
4324        self.dns_settings = kwargs.get('dns_settings', None)
4325        self.mac_address = kwargs.get('mac_address', None)
4326        self.primary = kwargs.get('primary', None)
4327        self.enable_accelerated_networking = kwargs.get('enable_accelerated_networking', None)
4328        self.enable_ip_forwarding = kwargs.get('enable_ip_forwarding', None)
4329        self.resource_guid = kwargs.get('resource_guid', None)
4330        self.provisioning_state = kwargs.get('provisioning_state', None)
4331
4332
4333class NetworkInterfaceAssociation(msrest.serialization.Model):
4334    """Network interface and its custom security rules.
4335
4336    Variables are only populated by the server, and will be ignored when sending a request.
4337
4338    :ivar id: Network interface ID.
4339    :vartype id: str
4340    :param security_rules: Collection of custom security rules.
4341    :type security_rules: list[~azure.mgmt.network.v2017_08_01.models.SecurityRule]
4342    """
4343
4344    _validation = {
4345        'id': {'readonly': True},
4346    }
4347
4348    _attribute_map = {
4349        'id': {'key': 'id', 'type': 'str'},
4350        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
4351    }
4352
4353    def __init__(
4354        self,
4355        **kwargs
4356    ):
4357        super(NetworkInterfaceAssociation, self).__init__(**kwargs)
4358        self.id = None
4359        self.security_rules = kwargs.get('security_rules', None)
4360
4361
4362class NetworkInterfaceDnsSettings(msrest.serialization.Model):
4363    """DNS settings of a network interface.
4364
4365    :param dns_servers: List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure
4366     provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it must be
4367     the only value in dnsServers collection.
4368    :type dns_servers: list[str]
4369    :param applied_dns_servers: If the VM that uses this NIC is part of an Availability Set, then
4370     this list will have the union of all DNS servers from all NICs that are part of the
4371     Availability Set. This property is what is configured on each of those VMs.
4372    :type applied_dns_servers: list[str]
4373    :param internal_dns_name_label: Relative DNS name for this NIC used for internal communications
4374     between VMs in the same virtual network.
4375    :type internal_dns_name_label: str
4376    :param internal_fqdn: Fully qualified DNS name supporting internal communications between VMs
4377     in the same virtual network.
4378    :type internal_fqdn: str
4379    :param internal_domain_name_suffix: Even if internalDnsNameLabel is not specified, a DNS entry
4380     is created for the primary NIC of the VM. This DNS name can be constructed by concatenating the
4381     VM name with the value of internalDomainNameSuffix.
4382    :type internal_domain_name_suffix: str
4383    """
4384
4385    _attribute_map = {
4386        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
4387        'applied_dns_servers': {'key': 'appliedDnsServers', 'type': '[str]'},
4388        'internal_dns_name_label': {'key': 'internalDnsNameLabel', 'type': 'str'},
4389        'internal_fqdn': {'key': 'internalFqdn', 'type': 'str'},
4390        'internal_domain_name_suffix': {'key': 'internalDomainNameSuffix', 'type': 'str'},
4391    }
4392
4393    def __init__(
4394        self,
4395        **kwargs
4396    ):
4397        super(NetworkInterfaceDnsSettings, self).__init__(**kwargs)
4398        self.dns_servers = kwargs.get('dns_servers', None)
4399        self.applied_dns_servers = kwargs.get('applied_dns_servers', None)
4400        self.internal_dns_name_label = kwargs.get('internal_dns_name_label', None)
4401        self.internal_fqdn = kwargs.get('internal_fqdn', None)
4402        self.internal_domain_name_suffix = kwargs.get('internal_domain_name_suffix', None)
4403
4404
4405class NetworkInterfaceIPConfiguration(SubResource):
4406    """IPConfiguration in a network interface.
4407
4408    :param id: Resource ID.
4409    :type id: str
4410    :param name: The name of the resource that is unique within a resource group. This name can be
4411     used to access the resource.
4412    :type name: str
4413    :param etag: A unique read-only string that changes whenever the resource is updated.
4414    :type etag: str
4415    :param application_gateway_backend_address_pools: The reference of
4416     ApplicationGatewayBackendAddressPool resource.
4417    :type application_gateway_backend_address_pools:
4418     list[~azure.mgmt.network.v2017_08_01.models.ApplicationGatewayBackendAddressPool]
4419    :param load_balancer_backend_address_pools: The reference of LoadBalancerBackendAddressPool
4420     resource.
4421    :type load_balancer_backend_address_pools:
4422     list[~azure.mgmt.network.v2017_08_01.models.BackendAddressPool]
4423    :param load_balancer_inbound_nat_rules: A list of references of LoadBalancerInboundNatRules.
4424    :type load_balancer_inbound_nat_rules:
4425     list[~azure.mgmt.network.v2017_08_01.models.InboundNatRule]
4426    :param private_ip_address: Private IP address of the IP configuration.
4427    :type private_ip_address: str
4428    :param private_ip_allocation_method: Defines how a private IP address is assigned. Possible
4429     values are: 'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
4430    :type private_ip_allocation_method: str or
4431     ~azure.mgmt.network.v2017_08_01.models.IPAllocationMethod
4432    :param private_ip_address_version: Available from Api-Version 2016-03-30 onwards, it represents
4433     whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4.  Possible
4434     values are: 'IPv4' and 'IPv6'. Possible values include: "IPv4", "IPv6".
4435    :type private_ip_address_version: str or ~azure.mgmt.network.v2017_08_01.models.IPVersion
4436    :param subnet: Subnet bound to the IP configuration.
4437    :type subnet: ~azure.mgmt.network.v2017_08_01.models.Subnet
4438    :param primary: Gets whether this is a primary customer address on the network interface.
4439    :type primary: bool
4440    :param public_ip_address: Public IP address bound to the IP configuration.
4441    :type public_ip_address: ~azure.mgmt.network.v2017_08_01.models.PublicIPAddress
4442    :param provisioning_state: The provisioning state of the network interface IP configuration.
4443     Possible values are: 'Updating', 'Deleting', and 'Failed'.
4444    :type provisioning_state: str
4445    """
4446
4447    _attribute_map = {
4448        'id': {'key': 'id', 'type': 'str'},
4449        'name': {'key': 'name', 'type': 'str'},
4450        'etag': {'key': 'etag', 'type': 'str'},
4451        'application_gateway_backend_address_pools': {'key': 'properties.applicationGatewayBackendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
4452        'load_balancer_backend_address_pools': {'key': 'properties.loadBalancerBackendAddressPools', 'type': '[BackendAddressPool]'},
4453        'load_balancer_inbound_nat_rules': {'key': 'properties.loadBalancerInboundNatRules', 'type': '[InboundNatRule]'},
4454        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
4455        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
4456        'private_ip_address_version': {'key': 'properties.privateIPAddressVersion', 'type': 'str'},
4457        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
4458        'primary': {'key': 'properties.primary', 'type': 'bool'},
4459        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
4460        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4461    }
4462
4463    def __init__(
4464        self,
4465        **kwargs
4466    ):
4467        super(NetworkInterfaceIPConfiguration, self).__init__(**kwargs)
4468        self.name = kwargs.get('name', None)
4469        self.etag = kwargs.get('etag', None)
4470        self.application_gateway_backend_address_pools = kwargs.get('application_gateway_backend_address_pools', None)
4471        self.load_balancer_backend_address_pools = kwargs.get('load_balancer_backend_address_pools', None)
4472        self.load_balancer_inbound_nat_rules = kwargs.get('load_balancer_inbound_nat_rules', None)
4473        self.private_ip_address = kwargs.get('private_ip_address', None)
4474        self.private_ip_allocation_method = kwargs.get('private_ip_allocation_method', None)
4475        self.private_ip_address_version = kwargs.get('private_ip_address_version', None)
4476        self.subnet = kwargs.get('subnet', None)
4477        self.primary = kwargs.get('primary', None)
4478        self.public_ip_address = kwargs.get('public_ip_address', None)
4479        self.provisioning_state = kwargs.get('provisioning_state', None)
4480
4481
4482class NetworkInterfaceIPConfigurationListResult(msrest.serialization.Model):
4483    """Response for list ip configurations API service call.
4484
4485    Variables are only populated by the server, and will be ignored when sending a request.
4486
4487    :param value: A list of ip configurations.
4488    :type value: list[~azure.mgmt.network.v2017_08_01.models.NetworkInterfaceIPConfiguration]
4489    :ivar next_link: The URL to get the next set of results.
4490    :vartype next_link: str
4491    """
4492
4493    _validation = {
4494        'next_link': {'readonly': True},
4495    }
4496
4497    _attribute_map = {
4498        'value': {'key': 'value', 'type': '[NetworkInterfaceIPConfiguration]'},
4499        'next_link': {'key': 'nextLink', 'type': 'str'},
4500    }
4501
4502    def __init__(
4503        self,
4504        **kwargs
4505    ):
4506        super(NetworkInterfaceIPConfigurationListResult, self).__init__(**kwargs)
4507        self.value = kwargs.get('value', None)
4508        self.next_link = None
4509
4510
4511class NetworkInterfaceListResult(msrest.serialization.Model):
4512    """Response for the ListNetworkInterface API service call.
4513
4514    Variables are only populated by the server, and will be ignored when sending a request.
4515
4516    :param value: A list of network interfaces in a resource group.
4517    :type value: list[~azure.mgmt.network.v2017_08_01.models.NetworkInterface]
4518    :ivar next_link: The URL to get the next set of results.
4519    :vartype next_link: str
4520    """
4521
4522    _validation = {
4523        'next_link': {'readonly': True},
4524    }
4525
4526    _attribute_map = {
4527        'value': {'key': 'value', 'type': '[NetworkInterface]'},
4528        'next_link': {'key': 'nextLink', 'type': 'str'},
4529    }
4530
4531    def __init__(
4532        self,
4533        **kwargs
4534    ):
4535        super(NetworkInterfaceListResult, self).__init__(**kwargs)
4536        self.value = kwargs.get('value', None)
4537        self.next_link = None
4538
4539
4540class NetworkInterfaceLoadBalancerListResult(msrest.serialization.Model):
4541    """Response for list ip configurations API service call.
4542
4543    Variables are only populated by the server, and will be ignored when sending a request.
4544
4545    :param value: A list of load balancers.
4546    :type value: list[~azure.mgmt.network.v2017_08_01.models.LoadBalancer]
4547    :ivar next_link: The URL to get the next set of results.
4548    :vartype next_link: str
4549    """
4550
4551    _validation = {
4552        'next_link': {'readonly': True},
4553    }
4554
4555    _attribute_map = {
4556        'value': {'key': 'value', 'type': '[LoadBalancer]'},
4557        'next_link': {'key': 'nextLink', 'type': 'str'},
4558    }
4559
4560    def __init__(
4561        self,
4562        **kwargs
4563    ):
4564        super(NetworkInterfaceLoadBalancerListResult, self).__init__(**kwargs)
4565        self.value = kwargs.get('value', None)
4566        self.next_link = None
4567
4568
4569class NetworkSecurityGroup(Resource):
4570    """NetworkSecurityGroup resource.
4571
4572    Variables are only populated by the server, and will be ignored when sending a request.
4573
4574    :param id: Resource ID.
4575    :type id: str
4576    :ivar name: Resource name.
4577    :vartype name: str
4578    :ivar type: Resource type.
4579    :vartype type: str
4580    :param location: Resource location.
4581    :type location: str
4582    :param tags: A set of tags. Resource tags.
4583    :type tags: dict[str, str]
4584    :param etag: A unique read-only string that changes whenever the resource is updated.
4585    :type etag: str
4586    :param security_rules: A collection of security rules of the network security group.
4587    :type security_rules: list[~azure.mgmt.network.v2017_08_01.models.SecurityRule]
4588    :param default_security_rules: The default security rules of network security group.
4589    :type default_security_rules: list[~azure.mgmt.network.v2017_08_01.models.SecurityRule]
4590    :ivar network_interfaces: A collection of references to network interfaces.
4591    :vartype network_interfaces: list[~azure.mgmt.network.v2017_08_01.models.NetworkInterface]
4592    :ivar subnets: A collection of references to subnets.
4593    :vartype subnets: list[~azure.mgmt.network.v2017_08_01.models.Subnet]
4594    :param resource_guid: The resource GUID property of the network security group resource.
4595    :type resource_guid: str
4596    :param provisioning_state: The provisioning state of the public IP resource. Possible values
4597     are: 'Updating', 'Deleting', and 'Failed'.
4598    :type provisioning_state: str
4599    """
4600
4601    _validation = {
4602        'name': {'readonly': True},
4603        'type': {'readonly': True},
4604        'network_interfaces': {'readonly': True},
4605        'subnets': {'readonly': True},
4606    }
4607
4608    _attribute_map = {
4609        'id': {'key': 'id', 'type': 'str'},
4610        'name': {'key': 'name', 'type': 'str'},
4611        'type': {'key': 'type', 'type': 'str'},
4612        'location': {'key': 'location', 'type': 'str'},
4613        'tags': {'key': 'tags', 'type': '{str}'},
4614        'etag': {'key': 'etag', 'type': 'str'},
4615        'security_rules': {'key': 'properties.securityRules', 'type': '[SecurityRule]'},
4616        'default_security_rules': {'key': 'properties.defaultSecurityRules', 'type': '[SecurityRule]'},
4617        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
4618        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
4619        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
4620        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4621    }
4622
4623    def __init__(
4624        self,
4625        **kwargs
4626    ):
4627        super(NetworkSecurityGroup, self).__init__(**kwargs)
4628        self.etag = kwargs.get('etag', None)
4629        self.security_rules = kwargs.get('security_rules', None)
4630        self.default_security_rules = kwargs.get('default_security_rules', None)
4631        self.network_interfaces = None
4632        self.subnets = None
4633        self.resource_guid = kwargs.get('resource_guid', None)
4634        self.provisioning_state = kwargs.get('provisioning_state', None)
4635
4636
4637class NetworkSecurityGroupListResult(msrest.serialization.Model):
4638    """Response for ListNetworkSecurityGroups API service call.
4639
4640    :param value: A list of NetworkSecurityGroup resources.
4641    :type value: list[~azure.mgmt.network.v2017_08_01.models.NetworkSecurityGroup]
4642    :param next_link: The URL to get the next set of results.
4643    :type next_link: str
4644    """
4645
4646    _attribute_map = {
4647        'value': {'key': 'value', 'type': '[NetworkSecurityGroup]'},
4648        'next_link': {'key': 'nextLink', 'type': 'str'},
4649    }
4650
4651    def __init__(
4652        self,
4653        **kwargs
4654    ):
4655        super(NetworkSecurityGroupListResult, self).__init__(**kwargs)
4656        self.value = kwargs.get('value', None)
4657        self.next_link = kwargs.get('next_link', None)
4658
4659
4660class NetworkWatcher(Resource):
4661    """Network watcher in a resource group.
4662
4663    Variables are only populated by the server, and will be ignored when sending a request.
4664
4665    :param id: Resource ID.
4666    :type id: str
4667    :ivar name: Resource name.
4668    :vartype name: str
4669    :ivar type: Resource type.
4670    :vartype type: str
4671    :param location: Resource location.
4672    :type location: str
4673    :param tags: A set of tags. Resource tags.
4674    :type tags: dict[str, str]
4675    :param etag: A unique read-only string that changes whenever the resource is updated.
4676    :type etag: str
4677    :ivar provisioning_state: The provisioning state of the resource. Possible values include:
4678     "Succeeded", "Updating", "Deleting", "Failed".
4679    :vartype provisioning_state: str or ~azure.mgmt.network.v2017_08_01.models.ProvisioningState
4680    """
4681
4682    _validation = {
4683        'name': {'readonly': True},
4684        'type': {'readonly': True},
4685        'provisioning_state': {'readonly': True},
4686    }
4687
4688    _attribute_map = {
4689        'id': {'key': 'id', 'type': 'str'},
4690        'name': {'key': 'name', 'type': 'str'},
4691        'type': {'key': 'type', 'type': 'str'},
4692        'location': {'key': 'location', 'type': 'str'},
4693        'tags': {'key': 'tags', 'type': '{str}'},
4694        'etag': {'key': 'etag', 'type': 'str'},
4695        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4696    }
4697
4698    def __init__(
4699        self,
4700        **kwargs
4701    ):
4702        super(NetworkWatcher, self).__init__(**kwargs)
4703        self.etag = kwargs.get('etag', None)
4704        self.provisioning_state = None
4705
4706
4707class NetworkWatcherListResult(msrest.serialization.Model):
4708    """List of network watcher resources.
4709
4710    :param value:
4711    :type value: list[~azure.mgmt.network.v2017_08_01.models.NetworkWatcher]
4712    """
4713
4714    _attribute_map = {
4715        'value': {'key': 'value', 'type': '[NetworkWatcher]'},
4716    }
4717
4718    def __init__(
4719        self,
4720        **kwargs
4721    ):
4722        super(NetworkWatcherListResult, self).__init__(**kwargs)
4723        self.value = kwargs.get('value', None)
4724
4725
4726class NextHopParameters(msrest.serialization.Model):
4727    """Parameters that define the source and destination endpoint.
4728
4729    All required parameters must be populated in order to send to Azure.
4730
4731    :param target_resource_id: Required. The resource identifier of the target resource against
4732     which the action is to be performed.
4733    :type target_resource_id: str
4734    :param source_ip_address: Required. The source IP address.
4735    :type source_ip_address: str
4736    :param destination_ip_address: Required. The destination IP address.
4737    :type destination_ip_address: str
4738    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
4739     enabled on any of the nics, then this parameter must be specified. Otherwise optional).
4740    :type target_nic_resource_id: str
4741    """
4742
4743    _validation = {
4744        'target_resource_id': {'required': True},
4745        'source_ip_address': {'required': True},
4746        'destination_ip_address': {'required': True},
4747    }
4748
4749    _attribute_map = {
4750        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
4751        'source_ip_address': {'key': 'sourceIPAddress', 'type': 'str'},
4752        'destination_ip_address': {'key': 'destinationIPAddress', 'type': 'str'},
4753        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
4754    }
4755
4756    def __init__(
4757        self,
4758        **kwargs
4759    ):
4760        super(NextHopParameters, self).__init__(**kwargs)
4761        self.target_resource_id = kwargs['target_resource_id']
4762        self.source_ip_address = kwargs['source_ip_address']
4763        self.destination_ip_address = kwargs['destination_ip_address']
4764        self.target_nic_resource_id = kwargs.get('target_nic_resource_id', None)
4765
4766
4767class NextHopResult(msrest.serialization.Model):
4768    """The information about next hop from the specified VM.
4769
4770    :param next_hop_type: Next hop type. Possible values include: "Internet", "VirtualAppliance",
4771     "VirtualNetworkGateway", "VnetLocal", "HyperNetGateway", "None".
4772    :type next_hop_type: str or ~azure.mgmt.network.v2017_08_01.models.NextHopType
4773    :param next_hop_ip_address: Next hop IP Address.
4774    :type next_hop_ip_address: str
4775    :param route_table_id: The resource identifier for the route table associated with the route
4776     being returned. If the route being returned does not correspond to any user created routes then
4777     this field will be the string 'System Route'.
4778    :type route_table_id: str
4779    """
4780
4781    _attribute_map = {
4782        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
4783        'next_hop_ip_address': {'key': 'nextHopIpAddress', 'type': 'str'},
4784        'route_table_id': {'key': 'routeTableId', 'type': 'str'},
4785    }
4786
4787    def __init__(
4788        self,
4789        **kwargs
4790    ):
4791        super(NextHopResult, self).__init__(**kwargs)
4792        self.next_hop_type = kwargs.get('next_hop_type', None)
4793        self.next_hop_ip_address = kwargs.get('next_hop_ip_address', None)
4794        self.route_table_id = kwargs.get('route_table_id', None)
4795
4796
4797class OutboundNatRule(SubResource):
4798    """Outbound NAT pool of the load balancer.
4799
4800    :param id: Resource ID.
4801    :type id: str
4802    :param name: The name of the resource that is unique within a resource group. This name can be
4803     used to access the resource.
4804    :type name: str
4805    :param etag: A unique read-only string that changes whenever the resource is updated.
4806    :type etag: str
4807    :param allocated_outbound_ports: The number of outbound ports to be used for NAT.
4808    :type allocated_outbound_ports: int
4809    :param frontend_ip_configurations: The Frontend IP addresses of the load balancer.
4810    :type frontend_ip_configurations: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
4811    :param backend_address_pool: A reference to a pool of DIPs. Outbound traffic is randomly load
4812     balanced across IPs in the backend IPs.
4813    :type backend_address_pool: ~azure.mgmt.network.v2017_08_01.models.SubResource
4814    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
4815     values are: 'Updating', 'Deleting', and 'Failed'.
4816    :type provisioning_state: str
4817    """
4818
4819    _attribute_map = {
4820        'id': {'key': 'id', 'type': 'str'},
4821        'name': {'key': 'name', 'type': 'str'},
4822        'etag': {'key': 'etag', 'type': 'str'},
4823        'allocated_outbound_ports': {'key': 'properties.allocatedOutboundPorts', 'type': 'int'},
4824        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[SubResource]'},
4825        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
4826        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4827    }
4828
4829    def __init__(
4830        self,
4831        **kwargs
4832    ):
4833        super(OutboundNatRule, self).__init__(**kwargs)
4834        self.name = kwargs.get('name', None)
4835        self.etag = kwargs.get('etag', None)
4836        self.allocated_outbound_ports = kwargs.get('allocated_outbound_ports', None)
4837        self.frontend_ip_configurations = kwargs.get('frontend_ip_configurations', None)
4838        self.backend_address_pool = kwargs.get('backend_address_pool', None)
4839        self.provisioning_state = kwargs.get('provisioning_state', None)
4840
4841
4842class PacketCapture(msrest.serialization.Model):
4843    """Parameters that define the create packet capture operation.
4844
4845    All required parameters must be populated in order to send to Azure.
4846
4847    :param target: Required. The ID of the targeted resource, only VM is currently supported.
4848    :type target: str
4849    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
4850     are truncated.
4851    :type bytes_to_capture_per_packet: int
4852    :param total_bytes_per_session: Maximum size of the capture output.
4853    :type total_bytes_per_session: int
4854    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
4855    :type time_limit_in_seconds: int
4856    :param storage_location: Required. Describes the storage location for a packet capture session.
4857    :type storage_location: ~azure.mgmt.network.v2017_08_01.models.PacketCaptureStorageLocation
4858    :param filters:
4859    :type filters: list[~azure.mgmt.network.v2017_08_01.models.PacketCaptureFilter]
4860    """
4861
4862    _validation = {
4863        'target': {'required': True},
4864        'storage_location': {'required': True},
4865    }
4866
4867    _attribute_map = {
4868        'target': {'key': 'properties.target', 'type': 'str'},
4869        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
4870        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
4871        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
4872        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
4873        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
4874    }
4875
4876    def __init__(
4877        self,
4878        **kwargs
4879    ):
4880        super(PacketCapture, self).__init__(**kwargs)
4881        self.target = kwargs['target']
4882        self.bytes_to_capture_per_packet = kwargs.get('bytes_to_capture_per_packet', 0)
4883        self.total_bytes_per_session = kwargs.get('total_bytes_per_session', 1073741824)
4884        self.time_limit_in_seconds = kwargs.get('time_limit_in_seconds', 18000)
4885        self.storage_location = kwargs['storage_location']
4886        self.filters = kwargs.get('filters', None)
4887
4888
4889class PacketCaptureFilter(msrest.serialization.Model):
4890    """Filter that is applied to packet capture request. Multiple filters can be applied.
4891
4892    :param protocol: Protocol to be filtered on. Possible values include: "TCP", "UDP", "Any".
4893     Default value: "Any".
4894    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.PcProtocol
4895    :param local_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
4896     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple entries.
4897     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
4898     supported. Default = null.
4899    :type local_ip_address: str
4900    :param remote_ip_address: Local IP Address to be filtered on. Notation: "127.0.0.1" for single
4901     address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple entries.
4902     Multiple ranges not currently supported. Mixing ranges with multiple entries not currently
4903     supported. Default = null.
4904    :type remote_ip_address: str
4905    :param local_port: Local port to be filtered on. Notation: "80" for single port entry."80-85"
4906     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
4907     ranges with multiple entries not currently supported. Default = null.
4908    :type local_port: str
4909    :param remote_port: Remote port to be filtered on. Notation: "80" for single port entry."80-85"
4910     for range. "80;443;" for multiple entries. Multiple ranges not currently supported. Mixing
4911     ranges with multiple entries not currently supported. Default = null.
4912    :type remote_port: str
4913    """
4914
4915    _attribute_map = {
4916        'protocol': {'key': 'protocol', 'type': 'str'},
4917        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
4918        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
4919        'local_port': {'key': 'localPort', 'type': 'str'},
4920        'remote_port': {'key': 'remotePort', 'type': 'str'},
4921    }
4922
4923    def __init__(
4924        self,
4925        **kwargs
4926    ):
4927        super(PacketCaptureFilter, self).__init__(**kwargs)
4928        self.protocol = kwargs.get('protocol', "Any")
4929        self.local_ip_address = kwargs.get('local_ip_address', None)
4930        self.remote_ip_address = kwargs.get('remote_ip_address', None)
4931        self.local_port = kwargs.get('local_port', None)
4932        self.remote_port = kwargs.get('remote_port', None)
4933
4934
4935class PacketCaptureListResult(msrest.serialization.Model):
4936    """List of packet capture sessions.
4937
4938    :param value: Information about packet capture sessions.
4939    :type value: list[~azure.mgmt.network.v2017_08_01.models.PacketCaptureResult]
4940    """
4941
4942    _attribute_map = {
4943        'value': {'key': 'value', 'type': '[PacketCaptureResult]'},
4944    }
4945
4946    def __init__(
4947        self,
4948        **kwargs
4949    ):
4950        super(PacketCaptureListResult, self).__init__(**kwargs)
4951        self.value = kwargs.get('value', None)
4952
4953
4954class PacketCaptureParameters(msrest.serialization.Model):
4955    """Parameters that define the create packet capture operation.
4956
4957    All required parameters must be populated in order to send to Azure.
4958
4959    :param target: Required. The ID of the targeted resource, only VM is currently supported.
4960    :type target: str
4961    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
4962     are truncated.
4963    :type bytes_to_capture_per_packet: int
4964    :param total_bytes_per_session: Maximum size of the capture output.
4965    :type total_bytes_per_session: int
4966    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
4967    :type time_limit_in_seconds: int
4968    :param storage_location: Required. Describes the storage location for a packet capture session.
4969    :type storage_location: ~azure.mgmt.network.v2017_08_01.models.PacketCaptureStorageLocation
4970    :param filters:
4971    :type filters: list[~azure.mgmt.network.v2017_08_01.models.PacketCaptureFilter]
4972    """
4973
4974    _validation = {
4975        'target': {'required': True},
4976        'storage_location': {'required': True},
4977    }
4978
4979    _attribute_map = {
4980        'target': {'key': 'target', 'type': 'str'},
4981        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
4982        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
4983        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
4984        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
4985        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
4986    }
4987
4988    def __init__(
4989        self,
4990        **kwargs
4991    ):
4992        super(PacketCaptureParameters, self).__init__(**kwargs)
4993        self.target = kwargs['target']
4994        self.bytes_to_capture_per_packet = kwargs.get('bytes_to_capture_per_packet', 0)
4995        self.total_bytes_per_session = kwargs.get('total_bytes_per_session', 1073741824)
4996        self.time_limit_in_seconds = kwargs.get('time_limit_in_seconds', 18000)
4997        self.storage_location = kwargs['storage_location']
4998        self.filters = kwargs.get('filters', None)
4999
5000
5001class PacketCaptureQueryStatusResult(msrest.serialization.Model):
5002    """Status of packet capture session.
5003
5004    :param name: The name of the packet capture resource.
5005    :type name: str
5006    :param id: The ID of the packet capture resource.
5007    :type id: str
5008    :param capture_start_time: The start time of the packet capture session.
5009    :type capture_start_time: ~datetime.datetime
5010    :param packet_capture_status: The status of the packet capture session. Possible values
5011     include: "NotStarted", "Running", "Stopped", "Error", "Unknown".
5012    :type packet_capture_status: str or ~azure.mgmt.network.v2017_08_01.models.PcStatus
5013    :param stop_reason: The reason the current packet capture session was stopped.
5014    :type stop_reason: str
5015    :param packet_capture_error: List of errors of packet capture session.
5016    :type packet_capture_error: list[str or ~azure.mgmt.network.v2017_08_01.models.PcError]
5017    """
5018
5019    _attribute_map = {
5020        'name': {'key': 'name', 'type': 'str'},
5021        'id': {'key': 'id', 'type': 'str'},
5022        'capture_start_time': {'key': 'captureStartTime', 'type': 'iso-8601'},
5023        'packet_capture_status': {'key': 'packetCaptureStatus', 'type': 'str'},
5024        'stop_reason': {'key': 'stopReason', 'type': 'str'},
5025        'packet_capture_error': {'key': 'packetCaptureError', 'type': '[str]'},
5026    }
5027
5028    def __init__(
5029        self,
5030        **kwargs
5031    ):
5032        super(PacketCaptureQueryStatusResult, self).__init__(**kwargs)
5033        self.name = kwargs.get('name', None)
5034        self.id = kwargs.get('id', None)
5035        self.capture_start_time = kwargs.get('capture_start_time', None)
5036        self.packet_capture_status = kwargs.get('packet_capture_status', None)
5037        self.stop_reason = kwargs.get('stop_reason', None)
5038        self.packet_capture_error = kwargs.get('packet_capture_error', None)
5039
5040
5041class PacketCaptureResult(msrest.serialization.Model):
5042    """Information about packet capture session.
5043
5044    Variables are only populated by the server, and will be ignored when sending a request.
5045
5046    :ivar name: Name of the packet capture session.
5047    :vartype name: str
5048    :ivar id: ID of the packet capture operation.
5049    :vartype id: str
5050    :param etag:
5051    :type etag: str
5052    :param target: The ID of the targeted resource, only VM is currently supported.
5053    :type target: str
5054    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
5055     are truncated.
5056    :type bytes_to_capture_per_packet: int
5057    :param total_bytes_per_session: Maximum size of the capture output.
5058    :type total_bytes_per_session: int
5059    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
5060    :type time_limit_in_seconds: int
5061    :param storage_location: Describes the storage location for a packet capture session.
5062    :type storage_location: ~azure.mgmt.network.v2017_08_01.models.PacketCaptureStorageLocation
5063    :param filters:
5064    :type filters: list[~azure.mgmt.network.v2017_08_01.models.PacketCaptureFilter]
5065    :param provisioning_state: The provisioning state of the packet capture session. Possible
5066     values include: "Succeeded", "Updating", "Deleting", "Failed".
5067    :type provisioning_state: str or ~azure.mgmt.network.v2017_08_01.models.ProvisioningState
5068    """
5069
5070    _validation = {
5071        'name': {'readonly': True},
5072        'id': {'readonly': True},
5073    }
5074
5075    _attribute_map = {
5076        'name': {'key': 'name', 'type': 'str'},
5077        'id': {'key': 'id', 'type': 'str'},
5078        'etag': {'key': 'etag', 'type': 'str'},
5079        'target': {'key': 'properties.target', 'type': 'str'},
5080        'bytes_to_capture_per_packet': {'key': 'properties.bytesToCapturePerPacket', 'type': 'int'},
5081        'total_bytes_per_session': {'key': 'properties.totalBytesPerSession', 'type': 'int'},
5082        'time_limit_in_seconds': {'key': 'properties.timeLimitInSeconds', 'type': 'int'},
5083        'storage_location': {'key': 'properties.storageLocation', 'type': 'PacketCaptureStorageLocation'},
5084        'filters': {'key': 'properties.filters', 'type': '[PacketCaptureFilter]'},
5085        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5086    }
5087
5088    def __init__(
5089        self,
5090        **kwargs
5091    ):
5092        super(PacketCaptureResult, self).__init__(**kwargs)
5093        self.name = None
5094        self.id = None
5095        self.etag = kwargs.get('etag', "A unique read-only string that changes whenever the resource is updated.")
5096        self.target = kwargs.get('target', None)
5097        self.bytes_to_capture_per_packet = kwargs.get('bytes_to_capture_per_packet', 0)
5098        self.total_bytes_per_session = kwargs.get('total_bytes_per_session', 1073741824)
5099        self.time_limit_in_seconds = kwargs.get('time_limit_in_seconds', 18000)
5100        self.storage_location = kwargs.get('storage_location', None)
5101        self.filters = kwargs.get('filters', None)
5102        self.provisioning_state = kwargs.get('provisioning_state', None)
5103
5104
5105class PacketCaptureResultProperties(PacketCaptureParameters):
5106    """Describes the properties of a packet capture session.
5107
5108    All required parameters must be populated in order to send to Azure.
5109
5110    :param target: Required. The ID of the targeted resource, only VM is currently supported.
5111    :type target: str
5112    :param bytes_to_capture_per_packet: Number of bytes captured per packet, the remaining bytes
5113     are truncated.
5114    :type bytes_to_capture_per_packet: int
5115    :param total_bytes_per_session: Maximum size of the capture output.
5116    :type total_bytes_per_session: int
5117    :param time_limit_in_seconds: Maximum duration of the capture session in seconds.
5118    :type time_limit_in_seconds: int
5119    :param storage_location: Required. Describes the storage location for a packet capture session.
5120    :type storage_location: ~azure.mgmt.network.v2017_08_01.models.PacketCaptureStorageLocation
5121    :param filters:
5122    :type filters: list[~azure.mgmt.network.v2017_08_01.models.PacketCaptureFilter]
5123    :param provisioning_state: The provisioning state of the packet capture session. Possible
5124     values include: "Succeeded", "Updating", "Deleting", "Failed".
5125    :type provisioning_state: str or ~azure.mgmt.network.v2017_08_01.models.ProvisioningState
5126    """
5127
5128    _validation = {
5129        'target': {'required': True},
5130        'storage_location': {'required': True},
5131    }
5132
5133    _attribute_map = {
5134        'target': {'key': 'target', 'type': 'str'},
5135        'bytes_to_capture_per_packet': {'key': 'bytesToCapturePerPacket', 'type': 'int'},
5136        'total_bytes_per_session': {'key': 'totalBytesPerSession', 'type': 'int'},
5137        'time_limit_in_seconds': {'key': 'timeLimitInSeconds', 'type': 'int'},
5138        'storage_location': {'key': 'storageLocation', 'type': 'PacketCaptureStorageLocation'},
5139        'filters': {'key': 'filters', 'type': '[PacketCaptureFilter]'},
5140        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
5141    }
5142
5143    def __init__(
5144        self,
5145        **kwargs
5146    ):
5147        super(PacketCaptureResultProperties, self).__init__(**kwargs)
5148        self.provisioning_state = kwargs.get('provisioning_state', None)
5149
5150
5151class PacketCaptureStorageLocation(msrest.serialization.Model):
5152    """Describes the storage location for a packet capture session.
5153
5154    :param storage_id: The ID of the storage account to save the packet capture session. Required
5155     if no local file path is provided.
5156    :type storage_id: str
5157    :param storage_path: The URI of the storage path to save the packet capture. Must be a
5158     well-formed URI describing the location to save the packet capture.
5159    :type storage_path: str
5160    :param file_path: A valid local path on the targeting VM. Must include the name of the capture
5161     file (*.cap). For linux virtual machine it must start with /var/captures. Required if no
5162     storage ID is provided, otherwise optional.
5163    :type file_path: str
5164    """
5165
5166    _attribute_map = {
5167        'storage_id': {'key': 'storageId', 'type': 'str'},
5168        'storage_path': {'key': 'storagePath', 'type': 'str'},
5169        'file_path': {'key': 'filePath', 'type': 'str'},
5170    }
5171
5172    def __init__(
5173        self,
5174        **kwargs
5175    ):
5176        super(PacketCaptureStorageLocation, self).__init__(**kwargs)
5177        self.storage_id = kwargs.get('storage_id', None)
5178        self.storage_path = kwargs.get('storage_path', None)
5179        self.file_path = kwargs.get('file_path', None)
5180
5181
5182class PatchRouteFilter(SubResource):
5183    """Route Filter Resource.
5184
5185    Variables are only populated by the server, and will be ignored when sending a request.
5186
5187    :param id: Resource ID.
5188    :type id: str
5189    :ivar name: The name of the resource that is unique within a resource group. This name can be
5190     used to access the resource.
5191    :vartype name: str
5192    :ivar etag: A unique read-only string that changes whenever the resource is updated.
5193    :vartype etag: str
5194    :ivar type: Resource type.
5195    :vartype type: str
5196    :param tags: A set of tags. Resource tags.
5197    :type tags: dict[str, str]
5198    :param rules: Collection of RouteFilterRules contained within a route filter.
5199    :type rules: list[~azure.mgmt.network.v2017_08_01.models.RouteFilterRule]
5200    :param peerings: A collection of references to express route circuit peerings.
5201    :type peerings: list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitPeering]
5202    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
5203     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
5204    :vartype provisioning_state: str
5205    """
5206
5207    _validation = {
5208        'name': {'readonly': True},
5209        'etag': {'readonly': True},
5210        'type': {'readonly': True},
5211        'provisioning_state': {'readonly': True},
5212    }
5213
5214    _attribute_map = {
5215        'id': {'key': 'id', 'type': 'str'},
5216        'name': {'key': 'name', 'type': 'str'},
5217        'etag': {'key': 'etag', 'type': 'str'},
5218        'type': {'key': 'type', 'type': 'str'},
5219        'tags': {'key': 'tags', 'type': '{str}'},
5220        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
5221        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
5222        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5223    }
5224
5225    def __init__(
5226        self,
5227        **kwargs
5228    ):
5229        super(PatchRouteFilter, self).__init__(**kwargs)
5230        self.name = None
5231        self.etag = None
5232        self.type = None
5233        self.tags = kwargs.get('tags', None)
5234        self.rules = kwargs.get('rules', None)
5235        self.peerings = kwargs.get('peerings', None)
5236        self.provisioning_state = None
5237
5238
5239class PatchRouteFilterRule(SubResource):
5240    """Route Filter Rule Resource.
5241
5242    Variables are only populated by the server, and will be ignored when sending a request.
5243
5244    :param id: Resource ID.
5245    :type id: str
5246    :ivar name: The name of the resource that is unique within a resource group. This name can be
5247     used to access the resource.
5248    :vartype name: str
5249    :ivar etag: A unique read-only string that changes whenever the resource is updated.
5250    :vartype etag: str
5251    :param tags: A set of tags. Resource tags.
5252    :type tags: dict[str, str]
5253    :param access: The access type of the rule. Valid values are: 'Allow', 'Deny'. Possible values
5254     include: "Allow", "Deny".
5255    :type access: str or ~azure.mgmt.network.v2017_08_01.models.Access
5256    :param route_filter_rule_type: The rule type of the rule. Valid value is: 'Community'. Possible
5257     values include: "Community".
5258    :type route_filter_rule_type: str or ~azure.mgmt.network.v2017_08_01.models.RouteFilterRuleType
5259    :param communities: The collection for bgp community values to filter on. e.g.
5260     ['12076:5010','12076:5020'].
5261    :type communities: list[str]
5262    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
5263     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
5264    :vartype provisioning_state: str
5265    """
5266
5267    _validation = {
5268        'name': {'readonly': True},
5269        'etag': {'readonly': True},
5270        'provisioning_state': {'readonly': True},
5271    }
5272
5273    _attribute_map = {
5274        'id': {'key': 'id', 'type': 'str'},
5275        'name': {'key': 'name', 'type': 'str'},
5276        'etag': {'key': 'etag', 'type': 'str'},
5277        'tags': {'key': 'tags', 'type': '{str}'},
5278        'access': {'key': 'properties.access', 'type': 'str'},
5279        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
5280        'communities': {'key': 'properties.communities', 'type': '[str]'},
5281        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5282    }
5283
5284    def __init__(
5285        self,
5286        **kwargs
5287    ):
5288        super(PatchRouteFilterRule, self).__init__(**kwargs)
5289        self.name = None
5290        self.etag = None
5291        self.tags = kwargs.get('tags', None)
5292        self.access = kwargs.get('access', None)
5293        self.route_filter_rule_type = kwargs.get('route_filter_rule_type', None)
5294        self.communities = kwargs.get('communities', None)
5295        self.provisioning_state = None
5296
5297
5298class Probe(SubResource):
5299    """A load balancer probe.
5300
5301    Variables are only populated by the server, and will be ignored when sending a request.
5302
5303    :param id: Resource ID.
5304    :type id: str
5305    :param name: Gets name of the resource that is unique within a resource group. This name can be
5306     used to access the resource.
5307    :type name: str
5308    :param etag: A unique read-only string that changes whenever the resource is updated.
5309    :type etag: str
5310    :ivar load_balancing_rules: The load balancer rules that use this probe.
5311    :vartype load_balancing_rules: list[~azure.mgmt.network.v2017_08_01.models.SubResource]
5312    :param protocol: The protocol of the end point. Possible values are: 'Http' or 'Tcp'. If 'Tcp'
5313     is specified, a received ACK is required for the probe to be successful. If 'Http' is
5314     specified, a 200 OK response from the specifies URI is required for the probe to be successful.
5315     Possible values include: "Http", "Tcp".
5316    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.ProbeProtocol
5317    :param port: The port for communicating the probe. Possible values range from 1 to 65535,
5318     inclusive.
5319    :type port: int
5320    :param interval_in_seconds: The interval, in seconds, for how frequently to probe the endpoint
5321     for health status. Typically, the interval is slightly less than half the allocated timeout
5322     period (in seconds) which allows two full probes before taking the instance out of rotation.
5323     The default value is 15, the minimum value is 5.
5324    :type interval_in_seconds: int
5325    :param number_of_probes: The number of probes where if no response, will result in stopping
5326     further traffic from being delivered to the endpoint. This values allows endpoints to be taken
5327     out of rotation faster or slower than the typical times used in Azure.
5328    :type number_of_probes: int
5329    :param request_path: The URI used for requesting health status from the VM. Path is required if
5330     a protocol is set to http. Otherwise, it is not allowed. There is no default value.
5331    :type request_path: str
5332    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
5333     values are: 'Updating', 'Deleting', and 'Failed'.
5334    :type provisioning_state: str
5335    """
5336
5337    _validation = {
5338        'load_balancing_rules': {'readonly': True},
5339    }
5340
5341    _attribute_map = {
5342        'id': {'key': 'id', 'type': 'str'},
5343        'name': {'key': 'name', 'type': 'str'},
5344        'etag': {'key': 'etag', 'type': 'str'},
5345        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
5346        'protocol': {'key': 'properties.protocol', 'type': 'str'},
5347        'port': {'key': 'properties.port', 'type': 'int'},
5348        'interval_in_seconds': {'key': 'properties.intervalInSeconds', 'type': 'int'},
5349        'number_of_probes': {'key': 'properties.numberOfProbes', 'type': 'int'},
5350        'request_path': {'key': 'properties.requestPath', 'type': 'str'},
5351        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5352    }
5353
5354    def __init__(
5355        self,
5356        **kwargs
5357    ):
5358        super(Probe, self).__init__(**kwargs)
5359        self.name = kwargs.get('name', None)
5360        self.etag = kwargs.get('etag', None)
5361        self.load_balancing_rules = None
5362        self.protocol = kwargs.get('protocol', None)
5363        self.port = kwargs.get('port', None)
5364        self.interval_in_seconds = kwargs.get('interval_in_seconds', None)
5365        self.number_of_probes = kwargs.get('number_of_probes', None)
5366        self.request_path = kwargs.get('request_path', None)
5367        self.provisioning_state = kwargs.get('provisioning_state', None)
5368
5369
5370class PublicIPAddress(Resource):
5371    """Public IP address resource.
5372
5373    Variables are only populated by the server, and will be ignored when sending a request.
5374
5375    :param id: Resource ID.
5376    :type id: str
5377    :ivar name: Resource name.
5378    :vartype name: str
5379    :ivar type: Resource type.
5380    :vartype type: str
5381    :param location: Resource location.
5382    :type location: str
5383    :param tags: A set of tags. Resource tags.
5384    :type tags: dict[str, str]
5385    :param sku: The public IP address SKU.
5386    :type sku: ~azure.mgmt.network.v2017_08_01.models.PublicIPAddressSku
5387    :param etag: A unique read-only string that changes whenever the resource is updated.
5388    :type etag: str
5389    :param zones: A list of availability zones denoting the IP allocated for the resource needs to
5390     come from.
5391    :type zones: list[str]
5392    :param public_ip_allocation_method: The public IP allocation method. Possible values are:
5393     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
5394    :type public_ip_allocation_method: str or
5395     ~azure.mgmt.network.v2017_08_01.models.IPAllocationMethod
5396    :param public_ip_address_version: The public IP address version. Possible values are: 'IPv4'
5397     and 'IPv6'. Possible values include: "IPv4", "IPv6".
5398    :type public_ip_address_version: str or ~azure.mgmt.network.v2017_08_01.models.IPVersion
5399    :ivar ip_configuration: The IP configuration associated with the public IP address.
5400    :vartype ip_configuration: ~azure.mgmt.network.v2017_08_01.models.IPConfiguration
5401    :param dns_settings: The FQDN of the DNS record associated with the public IP address.
5402    :type dns_settings: ~azure.mgmt.network.v2017_08_01.models.PublicIPAddressDnsSettings
5403    :param ip_address: The IP address associated with the public IP address resource.
5404    :type ip_address: str
5405    :param idle_timeout_in_minutes: The idle timeout of the public IP address.
5406    :type idle_timeout_in_minutes: int
5407    :param resource_guid: The resource GUID property of the public IP resource.
5408    :type resource_guid: str
5409    :param provisioning_state: The provisioning state of the PublicIP resource. Possible values
5410     are: 'Updating', 'Deleting', and 'Failed'.
5411    :type provisioning_state: str
5412    """
5413
5414    _validation = {
5415        'name': {'readonly': True},
5416        'type': {'readonly': True},
5417        'ip_configuration': {'readonly': True},
5418    }
5419
5420    _attribute_map = {
5421        'id': {'key': 'id', 'type': 'str'},
5422        'name': {'key': 'name', 'type': 'str'},
5423        'type': {'key': 'type', 'type': 'str'},
5424        'location': {'key': 'location', 'type': 'str'},
5425        'tags': {'key': 'tags', 'type': '{str}'},
5426        'sku': {'key': 'sku', 'type': 'PublicIPAddressSku'},
5427        'etag': {'key': 'etag', 'type': 'str'},
5428        'zones': {'key': 'zones', 'type': '[str]'},
5429        'public_ip_allocation_method': {'key': 'properties.publicIPAllocationMethod', 'type': 'str'},
5430        'public_ip_address_version': {'key': 'properties.publicIPAddressVersion', 'type': 'str'},
5431        'ip_configuration': {'key': 'properties.ipConfiguration', 'type': 'IPConfiguration'},
5432        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'PublicIPAddressDnsSettings'},
5433        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
5434        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
5435        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
5436        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5437    }
5438
5439    def __init__(
5440        self,
5441        **kwargs
5442    ):
5443        super(PublicIPAddress, self).__init__(**kwargs)
5444        self.sku = kwargs.get('sku', None)
5445        self.etag = kwargs.get('etag', None)
5446        self.zones = kwargs.get('zones', None)
5447        self.public_ip_allocation_method = kwargs.get('public_ip_allocation_method', None)
5448        self.public_ip_address_version = kwargs.get('public_ip_address_version', None)
5449        self.ip_configuration = None
5450        self.dns_settings = kwargs.get('dns_settings', None)
5451        self.ip_address = kwargs.get('ip_address', None)
5452        self.idle_timeout_in_minutes = kwargs.get('idle_timeout_in_minutes', None)
5453        self.resource_guid = kwargs.get('resource_guid', None)
5454        self.provisioning_state = kwargs.get('provisioning_state', None)
5455
5456
5457class PublicIPAddressDnsSettings(msrest.serialization.Model):
5458    """Contains FQDN of the DNS record associated with the public IP address.
5459
5460    :param domain_name_label: Gets or sets the Domain name label.The concatenation of the domain
5461     name label and the regionalized DNS zone make up the fully qualified domain name associated
5462     with the public IP address. If a domain name label is specified, an A DNS record is created for
5463     the public IP in the Microsoft Azure DNS system.
5464    :type domain_name_label: str
5465    :param fqdn: Gets the FQDN, Fully qualified domain name of the A DNS record associated with the
5466     public IP. This is the concatenation of the domainNameLabel and the regionalized DNS zone.
5467    :type fqdn: str
5468    :param reverse_fqdn: Gets or Sets the Reverse FQDN. A user-visible, fully qualified domain name
5469     that resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record
5470     is created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN.
5471    :type reverse_fqdn: str
5472    """
5473
5474    _attribute_map = {
5475        'domain_name_label': {'key': 'domainNameLabel', 'type': 'str'},
5476        'fqdn': {'key': 'fqdn', 'type': 'str'},
5477        'reverse_fqdn': {'key': 'reverseFqdn', 'type': 'str'},
5478    }
5479
5480    def __init__(
5481        self,
5482        **kwargs
5483    ):
5484        super(PublicIPAddressDnsSettings, self).__init__(**kwargs)
5485        self.domain_name_label = kwargs.get('domain_name_label', None)
5486        self.fqdn = kwargs.get('fqdn', None)
5487        self.reverse_fqdn = kwargs.get('reverse_fqdn', None)
5488
5489
5490class PublicIPAddressListResult(msrest.serialization.Model):
5491    """Response for ListPublicIpAddresses API service call.
5492
5493    :param value: A list of public IP addresses that exists in a resource group.
5494    :type value: list[~azure.mgmt.network.v2017_08_01.models.PublicIPAddress]
5495    :param next_link: The URL to get the next set of results.
5496    :type next_link: str
5497    """
5498
5499    _attribute_map = {
5500        'value': {'key': 'value', 'type': '[PublicIPAddress]'},
5501        'next_link': {'key': 'nextLink', 'type': 'str'},
5502    }
5503
5504    def __init__(
5505        self,
5506        **kwargs
5507    ):
5508        super(PublicIPAddressListResult, self).__init__(**kwargs)
5509        self.value = kwargs.get('value', None)
5510        self.next_link = kwargs.get('next_link', None)
5511
5512
5513class PublicIPAddressSku(msrest.serialization.Model):
5514    """SKU of a public IP address.
5515
5516    :param name: Name of a public IP address SKU. Possible values include: "Basic", "Standard".
5517    :type name: str or ~azure.mgmt.network.v2017_08_01.models.PublicIPAddressSkuName
5518    """
5519
5520    _attribute_map = {
5521        'name': {'key': 'name', 'type': 'str'},
5522    }
5523
5524    def __init__(
5525        self,
5526        **kwargs
5527    ):
5528        super(PublicIPAddressSku, self).__init__(**kwargs)
5529        self.name = kwargs.get('name', None)
5530
5531
5532class QueryTroubleshootingParameters(msrest.serialization.Model):
5533    """Parameters that define the resource to query the troubleshooting result.
5534
5535    All required parameters must be populated in order to send to Azure.
5536
5537    :param target_resource_id: Required. The target resource ID to query the troubleshooting
5538     result.
5539    :type target_resource_id: str
5540    """
5541
5542    _validation = {
5543        'target_resource_id': {'required': True},
5544    }
5545
5546    _attribute_map = {
5547        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
5548    }
5549
5550    def __init__(
5551        self,
5552        **kwargs
5553    ):
5554        super(QueryTroubleshootingParameters, self).__init__(**kwargs)
5555        self.target_resource_id = kwargs['target_resource_id']
5556
5557
5558class ResourceNavigationLink(SubResource):
5559    """ResourceNavigationLink resource.
5560
5561    Variables are only populated by the server, and will be ignored when sending a request.
5562
5563    :param id: Resource ID.
5564    :type id: str
5565    :param name: Name of the resource that is unique within a resource group. This name can be used
5566     to access the resource.
5567    :type name: str
5568    :ivar etag: A unique read-only string that changes whenever the resource is updated.
5569    :vartype etag: str
5570    :param linked_resource_type: Resource type of the linked resource.
5571    :type linked_resource_type: str
5572    :param link: Link to the external resource.
5573    :type link: str
5574    :ivar provisioning_state: Provisioning state of the ResourceNavigationLink resource.
5575    :vartype provisioning_state: str
5576    """
5577
5578    _validation = {
5579        'etag': {'readonly': True},
5580        'provisioning_state': {'readonly': True},
5581    }
5582
5583    _attribute_map = {
5584        'id': {'key': 'id', 'type': 'str'},
5585        'name': {'key': 'name', 'type': 'str'},
5586        'etag': {'key': 'etag', 'type': 'str'},
5587        'linked_resource_type': {'key': 'properties.linkedResourceType', 'type': 'str'},
5588        'link': {'key': 'properties.link', 'type': 'str'},
5589        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5590    }
5591
5592    def __init__(
5593        self,
5594        **kwargs
5595    ):
5596        super(ResourceNavigationLink, self).__init__(**kwargs)
5597        self.name = kwargs.get('name', None)
5598        self.etag = None
5599        self.linked_resource_type = kwargs.get('linked_resource_type', None)
5600        self.link = kwargs.get('link', None)
5601        self.provisioning_state = None
5602
5603
5604class RetentionPolicyParameters(msrest.serialization.Model):
5605    """Parameters that define the retention policy for flow log.
5606
5607    :param days: Number of days to retain flow log records.
5608    :type days: int
5609    :param enabled: Flag to enable/disable retention.
5610    :type enabled: bool
5611    """
5612
5613    _attribute_map = {
5614        'days': {'key': 'days', 'type': 'int'},
5615        'enabled': {'key': 'enabled', 'type': 'bool'},
5616    }
5617
5618    def __init__(
5619        self,
5620        **kwargs
5621    ):
5622        super(RetentionPolicyParameters, self).__init__(**kwargs)
5623        self.days = kwargs.get('days', 0)
5624        self.enabled = kwargs.get('enabled', False)
5625
5626
5627class Route(SubResource):
5628    """Route resource.
5629
5630    :param id: Resource ID.
5631    :type id: str
5632    :param name: The name of the resource that is unique within a resource group. This name can be
5633     used to access the resource.
5634    :type name: str
5635    :param etag: A unique read-only string that changes whenever the resource is updated.
5636    :type etag: str
5637    :param address_prefix: The destination CIDR to which the route applies.
5638    :type address_prefix: str
5639    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values are:
5640     'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', and 'None'. Possible
5641     values include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
5642    :type next_hop_type: str or ~azure.mgmt.network.v2017_08_01.models.RouteNextHopType
5643    :param next_hop_ip_address: The IP address packets should be forwarded to. Next hop values are
5644     only allowed in routes where the next hop type is VirtualAppliance.
5645    :type next_hop_ip_address: str
5646    :param provisioning_state: The provisioning state of the resource. Possible values are:
5647     'Updating', 'Deleting', and 'Failed'.
5648    :type provisioning_state: str
5649    """
5650
5651    _attribute_map = {
5652        'id': {'key': 'id', 'type': 'str'},
5653        'name': {'key': 'name', 'type': 'str'},
5654        'etag': {'key': 'etag', 'type': 'str'},
5655        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
5656        'next_hop_type': {'key': 'properties.nextHopType', 'type': 'str'},
5657        'next_hop_ip_address': {'key': 'properties.nextHopIpAddress', 'type': 'str'},
5658        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5659    }
5660
5661    def __init__(
5662        self,
5663        **kwargs
5664    ):
5665        super(Route, self).__init__(**kwargs)
5666        self.name = kwargs.get('name', None)
5667        self.etag = kwargs.get('etag', None)
5668        self.address_prefix = kwargs.get('address_prefix', None)
5669        self.next_hop_type = kwargs.get('next_hop_type', None)
5670        self.next_hop_ip_address = kwargs.get('next_hop_ip_address', None)
5671        self.provisioning_state = kwargs.get('provisioning_state', None)
5672
5673
5674class RouteFilter(Resource):
5675    """Route Filter Resource.
5676
5677    Variables are only populated by the server, and will be ignored when sending a request.
5678
5679    :param id: Resource ID.
5680    :type id: str
5681    :ivar name: Resource name.
5682    :vartype name: str
5683    :ivar type: Resource type.
5684    :vartype type: str
5685    :param location: Resource location.
5686    :type location: str
5687    :param tags: A set of tags. Resource tags.
5688    :type tags: dict[str, str]
5689    :ivar etag: Gets a unique read-only string that changes whenever the resource is updated.
5690    :vartype etag: str
5691    :param rules: Collection of RouteFilterRules contained within a route filter.
5692    :type rules: list[~azure.mgmt.network.v2017_08_01.models.RouteFilterRule]
5693    :param peerings: A collection of references to express route circuit peerings.
5694    :type peerings: list[~azure.mgmt.network.v2017_08_01.models.ExpressRouteCircuitPeering]
5695    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
5696     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
5697    :vartype provisioning_state: str
5698    """
5699
5700    _validation = {
5701        'name': {'readonly': True},
5702        'type': {'readonly': True},
5703        'etag': {'readonly': True},
5704        'provisioning_state': {'readonly': True},
5705    }
5706
5707    _attribute_map = {
5708        'id': {'key': 'id', 'type': 'str'},
5709        'name': {'key': 'name', 'type': 'str'},
5710        'type': {'key': 'type', 'type': 'str'},
5711        'location': {'key': 'location', 'type': 'str'},
5712        'tags': {'key': 'tags', 'type': '{str}'},
5713        'etag': {'key': 'etag', 'type': 'str'},
5714        'rules': {'key': 'properties.rules', 'type': '[RouteFilterRule]'},
5715        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
5716        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5717    }
5718
5719    def __init__(
5720        self,
5721        **kwargs
5722    ):
5723        super(RouteFilter, self).__init__(**kwargs)
5724        self.etag = None
5725        self.rules = kwargs.get('rules', None)
5726        self.peerings = kwargs.get('peerings', None)
5727        self.provisioning_state = None
5728
5729
5730class RouteFilterListResult(msrest.serialization.Model):
5731    """Response for the ListRouteFilters API service call.
5732
5733    :param value: Gets a list of route filters in a resource group.
5734    :type value: list[~azure.mgmt.network.v2017_08_01.models.RouteFilter]
5735    :param next_link: The URL to get the next set of results.
5736    :type next_link: str
5737    """
5738
5739    _attribute_map = {
5740        'value': {'key': 'value', 'type': '[RouteFilter]'},
5741        'next_link': {'key': 'nextLink', 'type': 'str'},
5742    }
5743
5744    def __init__(
5745        self,
5746        **kwargs
5747    ):
5748        super(RouteFilterListResult, self).__init__(**kwargs)
5749        self.value = kwargs.get('value', None)
5750        self.next_link = kwargs.get('next_link', None)
5751
5752
5753class RouteFilterRule(SubResource):
5754    """Route Filter Rule Resource.
5755
5756    Variables are only populated by the server, and will be ignored when sending a request.
5757
5758    :param id: Resource ID.
5759    :type id: str
5760    :param name: The name of the resource that is unique within a resource group. This name can be
5761     used to access the resource.
5762    :type name: str
5763    :param location: Resource location.
5764    :type location: str
5765    :ivar etag: A unique read-only string that changes whenever the resource is updated.
5766    :vartype etag: str
5767    :param tags: A set of tags. Resource tags.
5768    :type tags: dict[str, str]
5769    :param access: The access type of the rule. Valid values are: 'Allow', 'Deny'. Possible values
5770     include: "Allow", "Deny".
5771    :type access: str or ~azure.mgmt.network.v2017_08_01.models.Access
5772    :param route_filter_rule_type: The rule type of the rule. Valid value is: 'Community'. Possible
5773     values include: "Community".
5774    :type route_filter_rule_type: str or ~azure.mgmt.network.v2017_08_01.models.RouteFilterRuleType
5775    :param communities: The collection for bgp community values to filter on. e.g.
5776     ['12076:5010','12076:5020'].
5777    :type communities: list[str]
5778    :ivar provisioning_state: The provisioning state of the resource. Possible values are:
5779     'Updating', 'Deleting', 'Succeeded' and 'Failed'.
5780    :vartype provisioning_state: str
5781    """
5782
5783    _validation = {
5784        'etag': {'readonly': True},
5785        'provisioning_state': {'readonly': True},
5786    }
5787
5788    _attribute_map = {
5789        'id': {'key': 'id', 'type': 'str'},
5790        'name': {'key': 'name', 'type': 'str'},
5791        'location': {'key': 'location', 'type': 'str'},
5792        'etag': {'key': 'etag', 'type': 'str'},
5793        'tags': {'key': 'tags', 'type': '{str}'},
5794        'access': {'key': 'properties.access', 'type': 'str'},
5795        'route_filter_rule_type': {'key': 'properties.routeFilterRuleType', 'type': 'str'},
5796        'communities': {'key': 'properties.communities', 'type': '[str]'},
5797        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5798    }
5799
5800    def __init__(
5801        self,
5802        **kwargs
5803    ):
5804        super(RouteFilterRule, self).__init__(**kwargs)
5805        self.name = kwargs.get('name', None)
5806        self.location = kwargs.get('location', None)
5807        self.etag = None
5808        self.tags = kwargs.get('tags', None)
5809        self.access = kwargs.get('access', None)
5810        self.route_filter_rule_type = kwargs.get('route_filter_rule_type', None)
5811        self.communities = kwargs.get('communities', None)
5812        self.provisioning_state = None
5813
5814
5815class RouteFilterRuleListResult(msrest.serialization.Model):
5816    """Response for the ListRouteFilterRules API service call.
5817
5818    :param value: Gets a list of RouteFilterRules in a resource group.
5819    :type value: list[~azure.mgmt.network.v2017_08_01.models.RouteFilterRule]
5820    :param next_link: The URL to get the next set of results.
5821    :type next_link: str
5822    """
5823
5824    _attribute_map = {
5825        'value': {'key': 'value', 'type': '[RouteFilterRule]'},
5826        'next_link': {'key': 'nextLink', 'type': 'str'},
5827    }
5828
5829    def __init__(
5830        self,
5831        **kwargs
5832    ):
5833        super(RouteFilterRuleListResult, self).__init__(**kwargs)
5834        self.value = kwargs.get('value', None)
5835        self.next_link = kwargs.get('next_link', None)
5836
5837
5838class RouteListResult(msrest.serialization.Model):
5839    """Response for the ListRoute API service call.
5840
5841    :param value: Gets a list of routes in a resource group.
5842    :type value: list[~azure.mgmt.network.v2017_08_01.models.Route]
5843    :param next_link: The URL to get the next set of results.
5844    :type next_link: str
5845    """
5846
5847    _attribute_map = {
5848        'value': {'key': 'value', 'type': '[Route]'},
5849        'next_link': {'key': 'nextLink', 'type': 'str'},
5850    }
5851
5852    def __init__(
5853        self,
5854        **kwargs
5855    ):
5856        super(RouteListResult, self).__init__(**kwargs)
5857        self.value = kwargs.get('value', None)
5858        self.next_link = kwargs.get('next_link', None)
5859
5860
5861class RouteTable(Resource):
5862    """Route table resource.
5863
5864    Variables are only populated by the server, and will be ignored when sending a request.
5865
5866    :param id: Resource ID.
5867    :type id: str
5868    :ivar name: Resource name.
5869    :vartype name: str
5870    :ivar type: Resource type.
5871    :vartype type: str
5872    :param location: Resource location.
5873    :type location: str
5874    :param tags: A set of tags. Resource tags.
5875    :type tags: dict[str, str]
5876    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
5877    :type etag: str
5878    :param routes: Collection of routes contained within a route table.
5879    :type routes: list[~azure.mgmt.network.v2017_08_01.models.Route]
5880    :ivar subnets: A collection of references to subnets.
5881    :vartype subnets: list[~azure.mgmt.network.v2017_08_01.models.Subnet]
5882    :param provisioning_state: The provisioning state of the resource. Possible values are:
5883     'Updating', 'Deleting', and 'Failed'.
5884    :type provisioning_state: str
5885    """
5886
5887    _validation = {
5888        'name': {'readonly': True},
5889        'type': {'readonly': True},
5890        'subnets': {'readonly': True},
5891    }
5892
5893    _attribute_map = {
5894        'id': {'key': 'id', 'type': 'str'},
5895        'name': {'key': 'name', 'type': 'str'},
5896        'type': {'key': 'type', 'type': 'str'},
5897        'location': {'key': 'location', 'type': 'str'},
5898        'tags': {'key': 'tags', 'type': '{str}'},
5899        'etag': {'key': 'etag', 'type': 'str'},
5900        'routes': {'key': 'properties.routes', 'type': '[Route]'},
5901        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
5902        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
5903    }
5904
5905    def __init__(
5906        self,
5907        **kwargs
5908    ):
5909        super(RouteTable, self).__init__(**kwargs)
5910        self.etag = kwargs.get('etag', None)
5911        self.routes = kwargs.get('routes', None)
5912        self.subnets = None
5913        self.provisioning_state = kwargs.get('provisioning_state', None)
5914
5915
5916class RouteTableListResult(msrest.serialization.Model):
5917    """Response for the ListRouteTable API service call.
5918
5919    :param value: Gets a list of route tables in a resource group.
5920    :type value: list[~azure.mgmt.network.v2017_08_01.models.RouteTable]
5921    :param next_link: The URL to get the next set of results.
5922    :type next_link: str
5923    """
5924
5925    _attribute_map = {
5926        'value': {'key': 'value', 'type': '[RouteTable]'},
5927        'next_link': {'key': 'nextLink', 'type': 'str'},
5928    }
5929
5930    def __init__(
5931        self,
5932        **kwargs
5933    ):
5934        super(RouteTableListResult, self).__init__(**kwargs)
5935        self.value = kwargs.get('value', None)
5936        self.next_link = kwargs.get('next_link', None)
5937
5938
5939class SecurityGroupNetworkInterface(msrest.serialization.Model):
5940    """Network interface and all its associated security rules.
5941
5942    :param id: ID of the network interface.
5943    :type id: str
5944    :param security_rule_associations: All security rules associated with the network interface.
5945    :type security_rule_associations:
5946     ~azure.mgmt.network.v2017_08_01.models.SecurityRuleAssociations
5947    """
5948
5949    _attribute_map = {
5950        'id': {'key': 'id', 'type': 'str'},
5951        'security_rule_associations': {'key': 'securityRuleAssociations', 'type': 'SecurityRuleAssociations'},
5952    }
5953
5954    def __init__(
5955        self,
5956        **kwargs
5957    ):
5958        super(SecurityGroupNetworkInterface, self).__init__(**kwargs)
5959        self.id = kwargs.get('id', None)
5960        self.security_rule_associations = kwargs.get('security_rule_associations', None)
5961
5962
5963class SecurityGroupViewParameters(msrest.serialization.Model):
5964    """Parameters that define the VM to check security groups for.
5965
5966    All required parameters must be populated in order to send to Azure.
5967
5968    :param target_resource_id: Required. ID of the target VM.
5969    :type target_resource_id: str
5970    """
5971
5972    _validation = {
5973        'target_resource_id': {'required': True},
5974    }
5975
5976    _attribute_map = {
5977        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
5978    }
5979
5980    def __init__(
5981        self,
5982        **kwargs
5983    ):
5984        super(SecurityGroupViewParameters, self).__init__(**kwargs)
5985        self.target_resource_id = kwargs['target_resource_id']
5986
5987
5988class SecurityGroupViewResult(msrest.serialization.Model):
5989    """The information about security rules applied to the specified VM.
5990
5991    :param network_interfaces: List of network interfaces on the specified VM.
5992    :type network_interfaces:
5993     list[~azure.mgmt.network.v2017_08_01.models.SecurityGroupNetworkInterface]
5994    """
5995
5996    _attribute_map = {
5997        'network_interfaces': {'key': 'networkInterfaces', 'type': '[SecurityGroupNetworkInterface]'},
5998    }
5999
6000    def __init__(
6001        self,
6002        **kwargs
6003    ):
6004        super(SecurityGroupViewResult, self).__init__(**kwargs)
6005        self.network_interfaces = kwargs.get('network_interfaces', None)
6006
6007
6008class SecurityRule(SubResource):
6009    """Network security rule.
6010
6011    :param id: Resource ID.
6012    :type id: str
6013    :param name: The name of the resource that is unique within a resource group. This name can be
6014     used to access the resource.
6015    :type name: str
6016    :param etag: A unique read-only string that changes whenever the resource is updated.
6017    :type etag: str
6018    :param description: A description for this rule. Restricted to 140 chars.
6019    :type description: str
6020    :param protocol: Network protocol this rule applies to. Possible values are 'Tcp', 'Udp', and
6021     '*'. Possible values include: "Tcp", "Udp", "*".
6022    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.SecurityRuleProtocol
6023    :param source_port_range: The source port or range. Integer or range between 0 and 65535.
6024     Asterisk '*' can also be used to match all ports.
6025    :type source_port_range: str
6026    :param destination_port_range: The destination port or range. Integer or range between 0 and
6027     65535. Asterisk '*' can also be used to match all ports.
6028    :type destination_port_range: str
6029    :param source_address_prefix: The CIDR or source IP range. Asterisk '*' can also be used to
6030     match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet'
6031     can also be used. If this is an ingress rule, specifies where network traffic originates from.
6032    :type source_address_prefix: str
6033    :param source_address_prefixes: The CIDR or source IP ranges.
6034    :type source_address_prefixes: list[str]
6035    :param destination_address_prefix: The destination address prefix. CIDR or destination IP
6036     range. Asterisk '*' can also be used to match all source IPs. Default tags such as
6037     'VirtualNetwork', 'AzureLoadBalancer' and 'Internet' can also be used.
6038    :type destination_address_prefix: str
6039    :param destination_address_prefixes: The destination address prefixes. CIDR or destination IP
6040     ranges.
6041    :type destination_address_prefixes: list[str]
6042    :param source_port_ranges: The source port ranges.
6043    :type source_port_ranges: list[str]
6044    :param destination_port_ranges: The destination port ranges.
6045    :type destination_port_ranges: list[str]
6046    :param access: The network traffic is allowed or denied. Possible values are: 'Allow' and
6047     'Deny'. Possible values include: "Allow", "Deny".
6048    :type access: str or ~azure.mgmt.network.v2017_08_01.models.SecurityRuleAccess
6049    :param priority: The priority of the rule. The value can be between 100 and 4096. The priority
6050     number must be unique for each rule in the collection. The lower the priority number, the
6051     higher the priority of the rule.
6052    :type priority: int
6053    :param direction: The direction of the rule. The direction specifies if rule will be evaluated
6054     on incoming or outgoing traffic. Possible values are: 'Inbound' and 'Outbound'. Possible values
6055     include: "Inbound", "Outbound".
6056    :type direction: str or ~azure.mgmt.network.v2017_08_01.models.SecurityRuleDirection
6057    :param provisioning_state: The provisioning state of the public IP resource. Possible values
6058     are: 'Updating', 'Deleting', and 'Failed'.
6059    :type provisioning_state: str
6060    """
6061
6062    _attribute_map = {
6063        'id': {'key': 'id', 'type': 'str'},
6064        'name': {'key': 'name', 'type': 'str'},
6065        'etag': {'key': 'etag', 'type': 'str'},
6066        'description': {'key': 'properties.description', 'type': 'str'},
6067        'protocol': {'key': 'properties.protocol', 'type': 'str'},
6068        'source_port_range': {'key': 'properties.sourcePortRange', 'type': 'str'},
6069        'destination_port_range': {'key': 'properties.destinationPortRange', 'type': 'str'},
6070        'source_address_prefix': {'key': 'properties.sourceAddressPrefix', 'type': 'str'},
6071        'source_address_prefixes': {'key': 'properties.sourceAddressPrefixes', 'type': '[str]'},
6072        'destination_address_prefix': {'key': 'properties.destinationAddressPrefix', 'type': 'str'},
6073        'destination_address_prefixes': {'key': 'properties.destinationAddressPrefixes', 'type': '[str]'},
6074        'source_port_ranges': {'key': 'properties.sourcePortRanges', 'type': '[str]'},
6075        'destination_port_ranges': {'key': 'properties.destinationPortRanges', 'type': '[str]'},
6076        'access': {'key': 'properties.access', 'type': 'str'},
6077        'priority': {'key': 'properties.priority', 'type': 'int'},
6078        'direction': {'key': 'properties.direction', 'type': 'str'},
6079        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6080    }
6081
6082    def __init__(
6083        self,
6084        **kwargs
6085    ):
6086        super(SecurityRule, self).__init__(**kwargs)
6087        self.name = kwargs.get('name', None)
6088        self.etag = kwargs.get('etag', None)
6089        self.description = kwargs.get('description', None)
6090        self.protocol = kwargs.get('protocol', None)
6091        self.source_port_range = kwargs.get('source_port_range', None)
6092        self.destination_port_range = kwargs.get('destination_port_range', None)
6093        self.source_address_prefix = kwargs.get('source_address_prefix', None)
6094        self.source_address_prefixes = kwargs.get('source_address_prefixes', None)
6095        self.destination_address_prefix = kwargs.get('destination_address_prefix', None)
6096        self.destination_address_prefixes = kwargs.get('destination_address_prefixes', None)
6097        self.source_port_ranges = kwargs.get('source_port_ranges', None)
6098        self.destination_port_ranges = kwargs.get('destination_port_ranges', None)
6099        self.access = kwargs.get('access', None)
6100        self.priority = kwargs.get('priority', None)
6101        self.direction = kwargs.get('direction', None)
6102        self.provisioning_state = kwargs.get('provisioning_state', None)
6103
6104
6105class SecurityRuleAssociations(msrest.serialization.Model):
6106    """All security rules associated with the network interface.
6107
6108    :param network_interface_association: Network interface and its custom security rules.
6109    :type network_interface_association:
6110     ~azure.mgmt.network.v2017_08_01.models.NetworkInterfaceAssociation
6111    :param subnet_association: Network interface and its custom security rules.
6112    :type subnet_association: ~azure.mgmt.network.v2017_08_01.models.SubnetAssociation
6113    :param default_security_rules: Collection of default security rules of the network security
6114     group.
6115    :type default_security_rules: list[~azure.mgmt.network.v2017_08_01.models.SecurityRule]
6116    :param effective_security_rules: Collection of effective security rules.
6117    :type effective_security_rules:
6118     list[~azure.mgmt.network.v2017_08_01.models.EffectiveNetworkSecurityRule]
6119    """
6120
6121    _attribute_map = {
6122        'network_interface_association': {'key': 'networkInterfaceAssociation', 'type': 'NetworkInterfaceAssociation'},
6123        'subnet_association': {'key': 'subnetAssociation', 'type': 'SubnetAssociation'},
6124        'default_security_rules': {'key': 'defaultSecurityRules', 'type': '[SecurityRule]'},
6125        'effective_security_rules': {'key': 'effectiveSecurityRules', 'type': '[EffectiveNetworkSecurityRule]'},
6126    }
6127
6128    def __init__(
6129        self,
6130        **kwargs
6131    ):
6132        super(SecurityRuleAssociations, self).__init__(**kwargs)
6133        self.network_interface_association = kwargs.get('network_interface_association', None)
6134        self.subnet_association = kwargs.get('subnet_association', None)
6135        self.default_security_rules = kwargs.get('default_security_rules', None)
6136        self.effective_security_rules = kwargs.get('effective_security_rules', None)
6137
6138
6139class SecurityRuleListResult(msrest.serialization.Model):
6140    """Response for ListSecurityRule API service call. Retrieves all security rules that belongs to a network security group.
6141
6142    :param value: The security rules in a network security group.
6143    :type value: list[~azure.mgmt.network.v2017_08_01.models.SecurityRule]
6144    :param next_link: The URL to get the next set of results.
6145    :type next_link: str
6146    """
6147
6148    _attribute_map = {
6149        'value': {'key': 'value', 'type': '[SecurityRule]'},
6150        'next_link': {'key': 'nextLink', 'type': 'str'},
6151    }
6152
6153    def __init__(
6154        self,
6155        **kwargs
6156    ):
6157        super(SecurityRuleListResult, self).__init__(**kwargs)
6158        self.value = kwargs.get('value', None)
6159        self.next_link = kwargs.get('next_link', None)
6160
6161
6162class ServiceEndpointPropertiesFormat(msrest.serialization.Model):
6163    """The service endpoint properties.
6164
6165    :param service: The type of the endpoint service.
6166    :type service: str
6167    :param locations: A list of locations.
6168    :type locations: list[str]
6169    :param provisioning_state: The provisioning state of the resource.
6170    :type provisioning_state: str
6171    """
6172
6173    _attribute_map = {
6174        'service': {'key': 'service', 'type': 'str'},
6175        'locations': {'key': 'locations', 'type': '[str]'},
6176        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
6177    }
6178
6179    def __init__(
6180        self,
6181        **kwargs
6182    ):
6183        super(ServiceEndpointPropertiesFormat, self).__init__(**kwargs)
6184        self.service = kwargs.get('service', None)
6185        self.locations = kwargs.get('locations', None)
6186        self.provisioning_state = kwargs.get('provisioning_state', None)
6187
6188
6189class Subnet(SubResource):
6190    """Subnet in a virtual network resource.
6191
6192    Variables are only populated by the server, and will be ignored when sending a request.
6193
6194    :param id: Resource ID.
6195    :type id: str
6196    :param name: The name of the resource that is unique within a resource group. This name can be
6197     used to access the resource.
6198    :type name: str
6199    :param etag: A unique read-only string that changes whenever the resource is updated.
6200    :type etag: str
6201    :param address_prefix: The address prefix for the subnet.
6202    :type address_prefix: str
6203    :param network_security_group: The reference of the NetworkSecurityGroup resource.
6204    :type network_security_group: ~azure.mgmt.network.v2017_08_01.models.NetworkSecurityGroup
6205    :param route_table: The reference of the RouteTable resource.
6206    :type route_table: ~azure.mgmt.network.v2017_08_01.models.RouteTable
6207    :param service_endpoints: An array of service endpoints.
6208    :type service_endpoints:
6209     list[~azure.mgmt.network.v2017_08_01.models.ServiceEndpointPropertiesFormat]
6210    :ivar ip_configurations: Gets an array of references to the network interface IP configurations
6211     using subnet.
6212    :vartype ip_configurations: list[~azure.mgmt.network.v2017_08_01.models.IPConfiguration]
6213    :param resource_navigation_links: Gets an array of references to the external resources using
6214     subnet.
6215    :type resource_navigation_links:
6216     list[~azure.mgmt.network.v2017_08_01.models.ResourceNavigationLink]
6217    :param provisioning_state: The provisioning state of the resource.
6218    :type provisioning_state: str
6219    """
6220
6221    _validation = {
6222        'ip_configurations': {'readonly': True},
6223    }
6224
6225    _attribute_map = {
6226        'id': {'key': 'id', 'type': 'str'},
6227        'name': {'key': 'name', 'type': 'str'},
6228        'etag': {'key': 'etag', 'type': 'str'},
6229        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
6230        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
6231        'route_table': {'key': 'properties.routeTable', 'type': 'RouteTable'},
6232        'service_endpoints': {'key': 'properties.serviceEndpoints', 'type': '[ServiceEndpointPropertiesFormat]'},
6233        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfiguration]'},
6234        'resource_navigation_links': {'key': 'properties.resourceNavigationLinks', 'type': '[ResourceNavigationLink]'},
6235        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6236    }
6237
6238    def __init__(
6239        self,
6240        **kwargs
6241    ):
6242        super(Subnet, self).__init__(**kwargs)
6243        self.name = kwargs.get('name', None)
6244        self.etag = kwargs.get('etag', None)
6245        self.address_prefix = kwargs.get('address_prefix', None)
6246        self.network_security_group = kwargs.get('network_security_group', None)
6247        self.route_table = kwargs.get('route_table', None)
6248        self.service_endpoints = kwargs.get('service_endpoints', None)
6249        self.ip_configurations = None
6250        self.resource_navigation_links = kwargs.get('resource_navigation_links', None)
6251        self.provisioning_state = kwargs.get('provisioning_state', None)
6252
6253
6254class SubnetAssociation(msrest.serialization.Model):
6255    """Network interface and its custom security rules.
6256
6257    Variables are only populated by the server, and will be ignored when sending a request.
6258
6259    :ivar id: Subnet ID.
6260    :vartype id: str
6261    :param security_rules: Collection of custom security rules.
6262    :type security_rules: list[~azure.mgmt.network.v2017_08_01.models.SecurityRule]
6263    """
6264
6265    _validation = {
6266        'id': {'readonly': True},
6267    }
6268
6269    _attribute_map = {
6270        'id': {'key': 'id', 'type': 'str'},
6271        'security_rules': {'key': 'securityRules', 'type': '[SecurityRule]'},
6272    }
6273
6274    def __init__(
6275        self,
6276        **kwargs
6277    ):
6278        super(SubnetAssociation, self).__init__(**kwargs)
6279        self.id = None
6280        self.security_rules = kwargs.get('security_rules', None)
6281
6282
6283class SubnetListResult(msrest.serialization.Model):
6284    """Response for ListSubnets API service callRetrieves all subnet that belongs to a virtual network.
6285
6286    :param value: The subnets in a virtual network.
6287    :type value: list[~azure.mgmt.network.v2017_08_01.models.Subnet]
6288    :param next_link: The URL to get the next set of results.
6289    :type next_link: str
6290    """
6291
6292    _attribute_map = {
6293        'value': {'key': 'value', 'type': '[Subnet]'},
6294        'next_link': {'key': 'nextLink', 'type': 'str'},
6295    }
6296
6297    def __init__(
6298        self,
6299        **kwargs
6300    ):
6301        super(SubnetListResult, self).__init__(**kwargs)
6302        self.value = kwargs.get('value', None)
6303        self.next_link = kwargs.get('next_link', None)
6304
6305
6306class Topology(msrest.serialization.Model):
6307    """Topology of the specified resource group.
6308
6309    Variables are only populated by the server, and will be ignored when sending a request.
6310
6311    :ivar id: GUID representing the operation id.
6312    :vartype id: str
6313    :ivar created_date_time: The datetime when the topology was initially created for the resource
6314     group.
6315    :vartype created_date_time: ~datetime.datetime
6316    :ivar last_modified: The datetime when the topology was last modified.
6317    :vartype last_modified: ~datetime.datetime
6318    :param resources:
6319    :type resources: list[~azure.mgmt.network.v2017_08_01.models.TopologyResource]
6320    """
6321
6322    _validation = {
6323        'id': {'readonly': True},
6324        'created_date_time': {'readonly': True},
6325        'last_modified': {'readonly': True},
6326    }
6327
6328    _attribute_map = {
6329        'id': {'key': 'id', 'type': 'str'},
6330        'created_date_time': {'key': 'createdDateTime', 'type': 'iso-8601'},
6331        'last_modified': {'key': 'lastModified', 'type': 'iso-8601'},
6332        'resources': {'key': 'resources', 'type': '[TopologyResource]'},
6333    }
6334
6335    def __init__(
6336        self,
6337        **kwargs
6338    ):
6339        super(Topology, self).__init__(**kwargs)
6340        self.id = None
6341        self.created_date_time = None
6342        self.last_modified = None
6343        self.resources = kwargs.get('resources', None)
6344
6345
6346class TopologyAssociation(msrest.serialization.Model):
6347    """Resources that have an association with the parent resource.
6348
6349    :param name: The name of the resource that is associated with the parent resource.
6350    :type name: str
6351    :param resource_id: The ID of the resource that is associated with the parent resource.
6352    :type resource_id: str
6353    :param association_type: The association type of the child resource to the parent resource.
6354     Possible values include: "Associated", "Contains".
6355    :type association_type: str or ~azure.mgmt.network.v2017_08_01.models.AssociationType
6356    """
6357
6358    _attribute_map = {
6359        'name': {'key': 'name', 'type': 'str'},
6360        'resource_id': {'key': 'resourceId', 'type': 'str'},
6361        'association_type': {'key': 'associationType', 'type': 'str'},
6362    }
6363
6364    def __init__(
6365        self,
6366        **kwargs
6367    ):
6368        super(TopologyAssociation, self).__init__(**kwargs)
6369        self.name = kwargs.get('name', None)
6370        self.resource_id = kwargs.get('resource_id', None)
6371        self.association_type = kwargs.get('association_type', None)
6372
6373
6374class TopologyParameters(msrest.serialization.Model):
6375    """Parameters that define the representation of topology.
6376
6377    All required parameters must be populated in order to send to Azure.
6378
6379    :param target_resource_group_name: Required. The name of the target resource group to perform
6380     topology on.
6381    :type target_resource_group_name: str
6382    """
6383
6384    _validation = {
6385        'target_resource_group_name': {'required': True},
6386    }
6387
6388    _attribute_map = {
6389        'target_resource_group_name': {'key': 'targetResourceGroupName', 'type': 'str'},
6390    }
6391
6392    def __init__(
6393        self,
6394        **kwargs
6395    ):
6396        super(TopologyParameters, self).__init__(**kwargs)
6397        self.target_resource_group_name = kwargs['target_resource_group_name']
6398
6399
6400class TopologyResource(msrest.serialization.Model):
6401    """The network resource topology information for the given resource group.
6402
6403    :param name: Name of the resource.
6404    :type name: str
6405    :param id: ID of the resource.
6406    :type id: str
6407    :param location: Resource location.
6408    :type location: str
6409    :param associations: Holds the associations the resource has with other resources in the
6410     resource group.
6411    :type associations: list[~azure.mgmt.network.v2017_08_01.models.TopologyAssociation]
6412    """
6413
6414    _attribute_map = {
6415        'name': {'key': 'name', 'type': 'str'},
6416        'id': {'key': 'id', 'type': 'str'},
6417        'location': {'key': 'location', 'type': 'str'},
6418        'associations': {'key': 'associations', 'type': '[TopologyAssociation]'},
6419    }
6420
6421    def __init__(
6422        self,
6423        **kwargs
6424    ):
6425        super(TopologyResource, self).__init__(**kwargs)
6426        self.name = kwargs.get('name', None)
6427        self.id = kwargs.get('id', None)
6428        self.location = kwargs.get('location', None)
6429        self.associations = kwargs.get('associations', None)
6430
6431
6432class TroubleshootingDetails(msrest.serialization.Model):
6433    """Information gained from troubleshooting of specified resource.
6434
6435    :param id: The id of the get troubleshoot operation.
6436    :type id: str
6437    :param reason_type: Reason type of failure.
6438    :type reason_type: str
6439    :param summary: A summary of troubleshooting.
6440    :type summary: str
6441    :param detail: Details on troubleshooting results.
6442    :type detail: str
6443    :param recommended_actions: List of recommended actions.
6444    :type recommended_actions:
6445     list[~azure.mgmt.network.v2017_08_01.models.TroubleshootingRecommendedActions]
6446    """
6447
6448    _attribute_map = {
6449        'id': {'key': 'id', 'type': 'str'},
6450        'reason_type': {'key': 'reasonType', 'type': 'str'},
6451        'summary': {'key': 'summary', 'type': 'str'},
6452        'detail': {'key': 'detail', 'type': 'str'},
6453        'recommended_actions': {'key': 'recommendedActions', 'type': '[TroubleshootingRecommendedActions]'},
6454    }
6455
6456    def __init__(
6457        self,
6458        **kwargs
6459    ):
6460        super(TroubleshootingDetails, self).__init__(**kwargs)
6461        self.id = kwargs.get('id', None)
6462        self.reason_type = kwargs.get('reason_type', None)
6463        self.summary = kwargs.get('summary', None)
6464        self.detail = kwargs.get('detail', None)
6465        self.recommended_actions = kwargs.get('recommended_actions', None)
6466
6467
6468class TroubleshootingParameters(msrest.serialization.Model):
6469    """Parameters that define the resource to troubleshoot.
6470
6471    All required parameters must be populated in order to send to Azure.
6472
6473    :param target_resource_id: Required. The target resource to troubleshoot.
6474    :type target_resource_id: str
6475    :param storage_id: Required. The ID for the storage account to save the troubleshoot result.
6476    :type storage_id: str
6477    :param storage_path: Required. The path to the blob to save the troubleshoot result in.
6478    :type storage_path: str
6479    """
6480
6481    _validation = {
6482        'target_resource_id': {'required': True},
6483        'storage_id': {'required': True},
6484        'storage_path': {'required': True},
6485    }
6486
6487    _attribute_map = {
6488        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
6489        'storage_id': {'key': 'properties.storageId', 'type': 'str'},
6490        'storage_path': {'key': 'properties.storagePath', 'type': 'str'},
6491    }
6492
6493    def __init__(
6494        self,
6495        **kwargs
6496    ):
6497        super(TroubleshootingParameters, self).__init__(**kwargs)
6498        self.target_resource_id = kwargs['target_resource_id']
6499        self.storage_id = kwargs['storage_id']
6500        self.storage_path = kwargs['storage_path']
6501
6502
6503class TroubleshootingRecommendedActions(msrest.serialization.Model):
6504    """Recommended actions based on discovered issues.
6505
6506    :param action_id: ID of the recommended action.
6507    :type action_id: str
6508    :param action_text: Description of recommended actions.
6509    :type action_text: str
6510    :param action_uri: The uri linking to a documentation for the recommended troubleshooting
6511     actions.
6512    :type action_uri: str
6513    :param action_uri_text: The information from the URI for the recommended troubleshooting
6514     actions.
6515    :type action_uri_text: str
6516    """
6517
6518    _attribute_map = {
6519        'action_id': {'key': 'actionId', 'type': 'str'},
6520        'action_text': {'key': 'actionText', 'type': 'str'},
6521        'action_uri': {'key': 'actionUri', 'type': 'str'},
6522        'action_uri_text': {'key': 'actionUriText', 'type': 'str'},
6523    }
6524
6525    def __init__(
6526        self,
6527        **kwargs
6528    ):
6529        super(TroubleshootingRecommendedActions, self).__init__(**kwargs)
6530        self.action_id = kwargs.get('action_id', None)
6531        self.action_text = kwargs.get('action_text', None)
6532        self.action_uri = kwargs.get('action_uri', None)
6533        self.action_uri_text = kwargs.get('action_uri_text', None)
6534
6535
6536class TroubleshootingResult(msrest.serialization.Model):
6537    """Troubleshooting information gained from specified resource.
6538
6539    :param start_time: The start time of the troubleshooting.
6540    :type start_time: ~datetime.datetime
6541    :param end_time: The end time of the troubleshooting.
6542    :type end_time: ~datetime.datetime
6543    :param code: The result code of the troubleshooting.
6544    :type code: str
6545    :param results: Information from troubleshooting.
6546    :type results: list[~azure.mgmt.network.v2017_08_01.models.TroubleshootingDetails]
6547    """
6548
6549    _attribute_map = {
6550        'start_time': {'key': 'startTime', 'type': 'iso-8601'},
6551        'end_time': {'key': 'endTime', 'type': 'iso-8601'},
6552        'code': {'key': 'code', 'type': 'str'},
6553        'results': {'key': 'results', 'type': '[TroubleshootingDetails]'},
6554    }
6555
6556    def __init__(
6557        self,
6558        **kwargs
6559    ):
6560        super(TroubleshootingResult, self).__init__(**kwargs)
6561        self.start_time = kwargs.get('start_time', None)
6562        self.end_time = kwargs.get('end_time', None)
6563        self.code = kwargs.get('code', None)
6564        self.results = kwargs.get('results', None)
6565
6566
6567class TunnelConnectionHealth(msrest.serialization.Model):
6568    """VirtualNetworkGatewayConnection properties.
6569
6570    Variables are only populated by the server, and will be ignored when sending a request.
6571
6572    :ivar tunnel: Tunnel name.
6573    :vartype tunnel: str
6574    :ivar connection_status: Virtual network Gateway connection status. Possible values include:
6575     "Unknown", "Connecting", "Connected", "NotConnected".
6576    :vartype connection_status: str or
6577     ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewayConnectionStatus
6578    :ivar ingress_bytes_transferred: The Ingress Bytes Transferred in this connection.
6579    :vartype ingress_bytes_transferred: long
6580    :ivar egress_bytes_transferred: The Egress Bytes Transferred in this connection.
6581    :vartype egress_bytes_transferred: long
6582    :ivar last_connection_established_utc_time: The time at which connection was established in Utc
6583     format.
6584    :vartype last_connection_established_utc_time: str
6585    """
6586
6587    _validation = {
6588        'tunnel': {'readonly': True},
6589        'connection_status': {'readonly': True},
6590        'ingress_bytes_transferred': {'readonly': True},
6591        'egress_bytes_transferred': {'readonly': True},
6592        'last_connection_established_utc_time': {'readonly': True},
6593    }
6594
6595    _attribute_map = {
6596        'tunnel': {'key': 'tunnel', 'type': 'str'},
6597        'connection_status': {'key': 'connectionStatus', 'type': 'str'},
6598        'ingress_bytes_transferred': {'key': 'ingressBytesTransferred', 'type': 'long'},
6599        'egress_bytes_transferred': {'key': 'egressBytesTransferred', 'type': 'long'},
6600        'last_connection_established_utc_time': {'key': 'lastConnectionEstablishedUtcTime', 'type': 'str'},
6601    }
6602
6603    def __init__(
6604        self,
6605        **kwargs
6606    ):
6607        super(TunnelConnectionHealth, self).__init__(**kwargs)
6608        self.tunnel = None
6609        self.connection_status = None
6610        self.ingress_bytes_transferred = None
6611        self.egress_bytes_transferred = None
6612        self.last_connection_established_utc_time = None
6613
6614
6615class Usage(msrest.serialization.Model):
6616    """Describes network resource usage.
6617
6618    Variables are only populated by the server, and will be ignored when sending a request.
6619
6620    All required parameters must be populated in order to send to Azure.
6621
6622    :ivar id: Resource identifier.
6623    :vartype id: str
6624    :param unit: Required. An enum describing the unit of measurement. Possible values include:
6625     "Count".
6626    :type unit: str or ~azure.mgmt.network.v2017_08_01.models.UsageUnit
6627    :param current_value: Required. The current value of the usage.
6628    :type current_value: long
6629    :param limit: Required. The limit of usage.
6630    :type limit: long
6631    :param name: Required. The name of the type of usage.
6632    :type name: ~azure.mgmt.network.v2017_08_01.models.UsageName
6633    """
6634
6635    _validation = {
6636        'id': {'readonly': True},
6637        'unit': {'required': True},
6638        'current_value': {'required': True},
6639        'limit': {'required': True},
6640        'name': {'required': True},
6641    }
6642
6643    _attribute_map = {
6644        'id': {'key': 'id', 'type': 'str'},
6645        'unit': {'key': 'unit', 'type': 'str'},
6646        'current_value': {'key': 'currentValue', 'type': 'long'},
6647        'limit': {'key': 'limit', 'type': 'long'},
6648        'name': {'key': 'name', 'type': 'UsageName'},
6649    }
6650
6651    def __init__(
6652        self,
6653        **kwargs
6654    ):
6655        super(Usage, self).__init__(**kwargs)
6656        self.id = None
6657        self.unit = kwargs['unit']
6658        self.current_value = kwargs['current_value']
6659        self.limit = kwargs['limit']
6660        self.name = kwargs['name']
6661
6662
6663class UsageName(msrest.serialization.Model):
6664    """The usage names.
6665
6666    :param value: A string describing the resource name.
6667    :type value: str
6668    :param localized_value: A localized string describing the resource name.
6669    :type localized_value: str
6670    """
6671
6672    _attribute_map = {
6673        'value': {'key': 'value', 'type': 'str'},
6674        'localized_value': {'key': 'localizedValue', 'type': 'str'},
6675    }
6676
6677    def __init__(
6678        self,
6679        **kwargs
6680    ):
6681        super(UsageName, self).__init__(**kwargs)
6682        self.value = kwargs.get('value', None)
6683        self.localized_value = kwargs.get('localized_value', None)
6684
6685
6686class UsagesListResult(msrest.serialization.Model):
6687    """The list usages operation response.
6688
6689    :param value: The list network resource usages.
6690    :type value: list[~azure.mgmt.network.v2017_08_01.models.Usage]
6691    :param next_link: URL to get the next set of results.
6692    :type next_link: str
6693    """
6694
6695    _attribute_map = {
6696        'value': {'key': 'value', 'type': '[Usage]'},
6697        'next_link': {'key': 'nextLink', 'type': 'str'},
6698    }
6699
6700    def __init__(
6701        self,
6702        **kwargs
6703    ):
6704        super(UsagesListResult, self).__init__(**kwargs)
6705        self.value = kwargs.get('value', None)
6706        self.next_link = kwargs.get('next_link', None)
6707
6708
6709class VerificationIPFlowParameters(msrest.serialization.Model):
6710    """Parameters that define the IP flow to be verified.
6711
6712    All required parameters must be populated in order to send to Azure.
6713
6714    :param target_resource_id: Required. The ID of the target resource to perform next-hop on.
6715    :type target_resource_id: str
6716    :param direction: Required. The direction of the packet represented as a 5-tuple. Possible
6717     values include: "Inbound", "Outbound".
6718    :type direction: str or ~azure.mgmt.network.v2017_08_01.models.Direction
6719    :param protocol: Required. Protocol to be verified on. Possible values include: "TCP", "UDP".
6720    :type protocol: str or ~azure.mgmt.network.v2017_08_01.models.Protocol
6721    :param local_port: Required. The local port. Acceptable values are a single integer in the
6722     range (0-65535). Support for * for the source port, which depends on the direction.
6723    :type local_port: str
6724    :param remote_port: Required. The remote port. Acceptable values are a single integer in the
6725     range (0-65535). Support for * for the source port, which depends on the direction.
6726    :type remote_port: str
6727    :param local_ip_address: Required. The local IP address. Acceptable values are valid IPv4
6728     addresses.
6729    :type local_ip_address: str
6730    :param remote_ip_address: Required. The remote IP address. Acceptable values are valid IPv4
6731     addresses.
6732    :type remote_ip_address: str
6733    :param target_nic_resource_id: The NIC ID. (If VM has multiple NICs and IP forwarding is
6734     enabled on any of them, then this parameter must be specified. Otherwise optional).
6735    :type target_nic_resource_id: str
6736    """
6737
6738    _validation = {
6739        'target_resource_id': {'required': True},
6740        'direction': {'required': True},
6741        'protocol': {'required': True},
6742        'local_port': {'required': True},
6743        'remote_port': {'required': True},
6744        'local_ip_address': {'required': True},
6745        'remote_ip_address': {'required': True},
6746    }
6747
6748    _attribute_map = {
6749        'target_resource_id': {'key': 'targetResourceId', 'type': 'str'},
6750        'direction': {'key': 'direction', 'type': 'str'},
6751        'protocol': {'key': 'protocol', 'type': 'str'},
6752        'local_port': {'key': 'localPort', 'type': 'str'},
6753        'remote_port': {'key': 'remotePort', 'type': 'str'},
6754        'local_ip_address': {'key': 'localIPAddress', 'type': 'str'},
6755        'remote_ip_address': {'key': 'remoteIPAddress', 'type': 'str'},
6756        'target_nic_resource_id': {'key': 'targetNicResourceId', 'type': 'str'},
6757    }
6758
6759    def __init__(
6760        self,
6761        **kwargs
6762    ):
6763        super(VerificationIPFlowParameters, self).__init__(**kwargs)
6764        self.target_resource_id = kwargs['target_resource_id']
6765        self.direction = kwargs['direction']
6766        self.protocol = kwargs['protocol']
6767        self.local_port = kwargs['local_port']
6768        self.remote_port = kwargs['remote_port']
6769        self.local_ip_address = kwargs['local_ip_address']
6770        self.remote_ip_address = kwargs['remote_ip_address']
6771        self.target_nic_resource_id = kwargs.get('target_nic_resource_id', None)
6772
6773
6774class VerificationIPFlowResult(msrest.serialization.Model):
6775    """Results of IP flow verification on the target resource.
6776
6777    :param access: Indicates whether the traffic is allowed or denied. Possible values include:
6778     "Allow", "Deny".
6779    :type access: str or ~azure.mgmt.network.v2017_08_01.models.Access
6780    :param rule_name: Name of the rule. If input is not matched against any security rule, it is
6781     not displayed.
6782    :type rule_name: str
6783    """
6784
6785    _attribute_map = {
6786        'access': {'key': 'access', 'type': 'str'},
6787        'rule_name': {'key': 'ruleName', 'type': 'str'},
6788    }
6789
6790    def __init__(
6791        self,
6792        **kwargs
6793    ):
6794        super(VerificationIPFlowResult, self).__init__(**kwargs)
6795        self.access = kwargs.get('access', None)
6796        self.rule_name = kwargs.get('rule_name', None)
6797
6798
6799class VirtualNetwork(Resource):
6800    """Virtual Network resource.
6801
6802    Variables are only populated by the server, and will be ignored when sending a request.
6803
6804    :param id: Resource ID.
6805    :type id: str
6806    :ivar name: Resource name.
6807    :vartype name: str
6808    :ivar type: Resource type.
6809    :vartype type: str
6810    :param location: Resource location.
6811    :type location: str
6812    :param tags: A set of tags. Resource tags.
6813    :type tags: dict[str, str]
6814    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
6815    :type etag: str
6816    :param address_space: The AddressSpace that contains an array of IP address ranges that can be
6817     used by subnets.
6818    :type address_space: ~azure.mgmt.network.v2017_08_01.models.AddressSpace
6819    :param dhcp_options: The dhcpOptions that contains an array of DNS servers available to VMs
6820     deployed in the virtual network.
6821    :type dhcp_options: ~azure.mgmt.network.v2017_08_01.models.DhcpOptions
6822    :param subnets: A list of subnets in a Virtual Network.
6823    :type subnets: list[~azure.mgmt.network.v2017_08_01.models.Subnet]
6824    :param virtual_network_peerings: A list of peerings in a Virtual Network.
6825    :type virtual_network_peerings:
6826     list[~azure.mgmt.network.v2017_08_01.models.VirtualNetworkPeering]
6827    :param resource_guid: The resourceGuid property of the Virtual Network resource.
6828    :type resource_guid: str
6829    :param provisioning_state: The provisioning state of the PublicIP resource. Possible values
6830     are: 'Updating', 'Deleting', and 'Failed'.
6831    :type provisioning_state: str
6832    """
6833
6834    _validation = {
6835        'name': {'readonly': True},
6836        'type': {'readonly': True},
6837    }
6838
6839    _attribute_map = {
6840        'id': {'key': 'id', 'type': 'str'},
6841        'name': {'key': 'name', 'type': 'str'},
6842        'type': {'key': 'type', 'type': 'str'},
6843        'location': {'key': 'location', 'type': 'str'},
6844        'tags': {'key': 'tags', 'type': '{str}'},
6845        'etag': {'key': 'etag', 'type': 'str'},
6846        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
6847        'dhcp_options': {'key': 'properties.dhcpOptions', 'type': 'DhcpOptions'},
6848        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
6849        'virtual_network_peerings': {'key': 'properties.virtualNetworkPeerings', 'type': '[VirtualNetworkPeering]'},
6850        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6851        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6852    }
6853
6854    def __init__(
6855        self,
6856        **kwargs
6857    ):
6858        super(VirtualNetwork, self).__init__(**kwargs)
6859        self.etag = kwargs.get('etag', None)
6860        self.address_space = kwargs.get('address_space', None)
6861        self.dhcp_options = kwargs.get('dhcp_options', None)
6862        self.subnets = kwargs.get('subnets', None)
6863        self.virtual_network_peerings = kwargs.get('virtual_network_peerings', None)
6864        self.resource_guid = kwargs.get('resource_guid', None)
6865        self.provisioning_state = kwargs.get('provisioning_state', None)
6866
6867
6868class VirtualNetworkConnectionGatewayReference(msrest.serialization.Model):
6869    """A reference to VirtualNetworkGateway or LocalNetworkGateway resource.
6870
6871    All required parameters must be populated in order to send to Azure.
6872
6873    :param id: Required. The ID of VirtualNetworkGateway or LocalNetworkGateway resource.
6874    :type id: str
6875    """
6876
6877    _validation = {
6878        'id': {'required': True},
6879    }
6880
6881    _attribute_map = {
6882        'id': {'key': 'id', 'type': 'str'},
6883    }
6884
6885    def __init__(
6886        self,
6887        **kwargs
6888    ):
6889        super(VirtualNetworkConnectionGatewayReference, self).__init__(**kwargs)
6890        self.id = kwargs['id']
6891
6892
6893class VirtualNetworkGateway(Resource):
6894    """A common class for general resource information.
6895
6896    Variables are only populated by the server, and will be ignored when sending a request.
6897
6898    :param id: Resource ID.
6899    :type id: str
6900    :ivar name: Resource name.
6901    :vartype name: str
6902    :ivar type: Resource type.
6903    :vartype type: str
6904    :param location: Resource location.
6905    :type location: str
6906    :param tags: A set of tags. Resource tags.
6907    :type tags: dict[str, str]
6908    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
6909    :type etag: str
6910    :param ip_configurations: IP configurations for virtual network gateway.
6911    :type ip_configurations:
6912     list[~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewayIPConfiguration]
6913    :param gateway_type: The type of this virtual network gateway. Possible values are: 'Vpn' and
6914     'ExpressRoute'. Possible values include: "Vpn", "ExpressRoute".
6915    :type gateway_type: str or ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewayType
6916    :param vpn_type: The type of this virtual network gateway. Possible values are: 'PolicyBased'
6917     and 'RouteBased'. Possible values include: "PolicyBased", "RouteBased".
6918    :type vpn_type: str or ~azure.mgmt.network.v2017_08_01.models.VpnType
6919    :param enable_bgp: Whether BGP is enabled for this virtual network gateway or not.
6920    :type enable_bgp: bool
6921    :param active: ActiveActive flag.
6922    :type active: bool
6923    :param gateway_default_site: The reference of the LocalNetworkGateway resource which represents
6924     local network site having default routes. Assign Null value in case of removing existing
6925     default site setting.
6926    :type gateway_default_site: ~azure.mgmt.network.v2017_08_01.models.SubResource
6927    :param sku: The reference of the VirtualNetworkGatewaySku resource which represents the SKU
6928     selected for Virtual network gateway.
6929    :type sku: ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewaySku
6930    :param vpn_client_configuration: The reference of the VpnClientConfiguration resource which
6931     represents the P2S VpnClient configurations.
6932    :type vpn_client_configuration: ~azure.mgmt.network.v2017_08_01.models.VpnClientConfiguration
6933    :param bgp_settings: Virtual network gateway's BGP speaker settings.
6934    :type bgp_settings: ~azure.mgmt.network.v2017_08_01.models.BgpSettings
6935    :param resource_guid: The resource GUID property of the VirtualNetworkGateway resource.
6936    :type resource_guid: str
6937    :ivar provisioning_state: The provisioning state of the VirtualNetworkGateway resource.
6938     Possible values are: 'Updating', 'Deleting', and 'Failed'.
6939    :vartype provisioning_state: str
6940    """
6941
6942    _validation = {
6943        'name': {'readonly': True},
6944        'type': {'readonly': True},
6945        'provisioning_state': {'readonly': True},
6946    }
6947
6948    _attribute_map = {
6949        'id': {'key': 'id', 'type': 'str'},
6950        'name': {'key': 'name', 'type': 'str'},
6951        'type': {'key': 'type', 'type': 'str'},
6952        'location': {'key': 'location', 'type': 'str'},
6953        'tags': {'key': 'tags', 'type': '{str}'},
6954        'etag': {'key': 'etag', 'type': 'str'},
6955        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[VirtualNetworkGatewayIPConfiguration]'},
6956        'gateway_type': {'key': 'properties.gatewayType', 'type': 'str'},
6957        'vpn_type': {'key': 'properties.vpnType', 'type': 'str'},
6958        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
6959        'active': {'key': 'properties.activeActive', 'type': 'bool'},
6960        'gateway_default_site': {'key': 'properties.gatewayDefaultSite', 'type': 'SubResource'},
6961        'sku': {'key': 'properties.sku', 'type': 'VirtualNetworkGatewaySku'},
6962        'vpn_client_configuration': {'key': 'properties.vpnClientConfiguration', 'type': 'VpnClientConfiguration'},
6963        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
6964        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
6965        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
6966    }
6967
6968    def __init__(
6969        self,
6970        **kwargs
6971    ):
6972        super(VirtualNetworkGateway, self).__init__(**kwargs)
6973        self.etag = kwargs.get('etag', None)
6974        self.ip_configurations = kwargs.get('ip_configurations', None)
6975        self.gateway_type = kwargs.get('gateway_type', None)
6976        self.vpn_type = kwargs.get('vpn_type', None)
6977        self.enable_bgp = kwargs.get('enable_bgp', None)
6978        self.active = kwargs.get('active', None)
6979        self.gateway_default_site = kwargs.get('gateway_default_site', None)
6980        self.sku = kwargs.get('sku', None)
6981        self.vpn_client_configuration = kwargs.get('vpn_client_configuration', None)
6982        self.bgp_settings = kwargs.get('bgp_settings', None)
6983        self.resource_guid = kwargs.get('resource_guid', None)
6984        self.provisioning_state = None
6985
6986
6987class VirtualNetworkGatewayConnection(Resource):
6988    """A common class for general resource information.
6989
6990    Variables are only populated by the server, and will be ignored when sending a request.
6991
6992    All required parameters must be populated in order to send to Azure.
6993
6994    :param id: Resource ID.
6995    :type id: str
6996    :ivar name: Resource name.
6997    :vartype name: str
6998    :ivar type: Resource type.
6999    :vartype type: str
7000    :param location: Resource location.
7001    :type location: str
7002    :param tags: A set of tags. Resource tags.
7003    :type tags: dict[str, str]
7004    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
7005    :type etag: str
7006    :param authorization_key: The authorizationKey.
7007    :type authorization_key: str
7008    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
7009    :type virtual_network_gateway1: ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGateway
7010    :param virtual_network_gateway2: The reference to virtual network gateway resource.
7011    :type virtual_network_gateway2: ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGateway
7012    :param local_network_gateway2: The reference to local network gateway resource.
7013    :type local_network_gateway2: ~azure.mgmt.network.v2017_08_01.models.LocalNetworkGateway
7014    :param connection_type: Required. Gateway connection type. Possible values are:
7015     'IPsec','Vnet2Vnet','ExpressRoute', and 'VPNClient. Possible values include: "IPsec",
7016     "Vnet2Vnet", "ExpressRoute", "VPNClient".
7017    :type connection_type: str or
7018     ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewayConnectionType
7019    :param routing_weight: The routing weight.
7020    :type routing_weight: int
7021    :param shared_key: The IPSec shared key.
7022    :type shared_key: str
7023    :ivar connection_status: Virtual network Gateway connection status. Possible values are
7024     'Unknown', 'Connecting', 'Connected' and 'NotConnected'. Possible values include: "Unknown",
7025     "Connecting", "Connected", "NotConnected".
7026    :vartype connection_status: str or
7027     ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewayConnectionStatus
7028    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
7029    :vartype tunnel_connection_status:
7030     list[~azure.mgmt.network.v2017_08_01.models.TunnelConnectionHealth]
7031    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
7032    :vartype egress_bytes_transferred: long
7033    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
7034    :vartype ingress_bytes_transferred: long
7035    :param peer: The reference to peerings resource.
7036    :type peer: ~azure.mgmt.network.v2017_08_01.models.SubResource
7037    :param enable_bgp: EnableBgp flag.
7038    :type enable_bgp: bool
7039    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
7040    :type use_policy_based_traffic_selectors: bool
7041    :param ipsec_policies: The IPSec Policies to be considered by this connection.
7042    :type ipsec_policies: list[~azure.mgmt.network.v2017_08_01.models.IpsecPolicy]
7043    :param resource_guid: The resource GUID property of the VirtualNetworkGatewayConnection
7044     resource.
7045    :type resource_guid: str
7046    :ivar provisioning_state: The provisioning state of the VirtualNetworkGatewayConnection
7047     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
7048    :vartype provisioning_state: str
7049    """
7050
7051    _validation = {
7052        'name': {'readonly': True},
7053        'type': {'readonly': True},
7054        'virtual_network_gateway1': {'required': True},
7055        'connection_type': {'required': True},
7056        'connection_status': {'readonly': True},
7057        'tunnel_connection_status': {'readonly': True},
7058        'egress_bytes_transferred': {'readonly': True},
7059        'ingress_bytes_transferred': {'readonly': True},
7060        'provisioning_state': {'readonly': True},
7061    }
7062
7063    _attribute_map = {
7064        'id': {'key': 'id', 'type': 'str'},
7065        'name': {'key': 'name', 'type': 'str'},
7066        'type': {'key': 'type', 'type': 'str'},
7067        'location': {'key': 'location', 'type': 'str'},
7068        'tags': {'key': 'tags', 'type': '{str}'},
7069        'etag': {'key': 'etag', 'type': 'str'},
7070        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
7071        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkGateway'},
7072        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkGateway'},
7073        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'LocalNetworkGateway'},
7074        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
7075        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
7076        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
7077        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
7078        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
7079        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
7080        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
7081        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
7082        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
7083        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
7084        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
7085        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
7086        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7087    }
7088
7089    def __init__(
7090        self,
7091        **kwargs
7092    ):
7093        super(VirtualNetworkGatewayConnection, self).__init__(**kwargs)
7094        self.etag = kwargs.get('etag', None)
7095        self.authorization_key = kwargs.get('authorization_key', None)
7096        self.virtual_network_gateway1 = kwargs['virtual_network_gateway1']
7097        self.virtual_network_gateway2 = kwargs.get('virtual_network_gateway2', None)
7098        self.local_network_gateway2 = kwargs.get('local_network_gateway2', None)
7099        self.connection_type = kwargs['connection_type']
7100        self.routing_weight = kwargs.get('routing_weight', None)
7101        self.shared_key = kwargs.get('shared_key', None)
7102        self.connection_status = None
7103        self.tunnel_connection_status = None
7104        self.egress_bytes_transferred = None
7105        self.ingress_bytes_transferred = None
7106        self.peer = kwargs.get('peer', None)
7107        self.enable_bgp = kwargs.get('enable_bgp', None)
7108        self.use_policy_based_traffic_selectors = kwargs.get('use_policy_based_traffic_selectors', None)
7109        self.ipsec_policies = kwargs.get('ipsec_policies', None)
7110        self.resource_guid = kwargs.get('resource_guid', None)
7111        self.provisioning_state = None
7112
7113
7114class VirtualNetworkGatewayConnectionListEntity(Resource):
7115    """A common class for general resource information.
7116
7117    Variables are only populated by the server, and will be ignored when sending a request.
7118
7119    All required parameters must be populated in order to send to Azure.
7120
7121    :param id: Resource ID.
7122    :type id: str
7123    :ivar name: Resource name.
7124    :vartype name: str
7125    :ivar type: Resource type.
7126    :vartype type: str
7127    :param location: Resource location.
7128    :type location: str
7129    :param tags: A set of tags. Resource tags.
7130    :type tags: dict[str, str]
7131    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
7132    :type etag: str
7133    :param authorization_key: The authorizationKey.
7134    :type authorization_key: str
7135    :param virtual_network_gateway1: Required. The reference to virtual network gateway resource.
7136    :type virtual_network_gateway1:
7137     ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkConnectionGatewayReference
7138    :param virtual_network_gateway2: The reference to virtual network gateway resource.
7139    :type virtual_network_gateway2:
7140     ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkConnectionGatewayReference
7141    :param local_network_gateway2: The reference to local network gateway resource.
7142    :type local_network_gateway2:
7143     ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkConnectionGatewayReference
7144    :param connection_type: Required. Gateway connection type. Possible values are:
7145     'IPsec','Vnet2Vnet','ExpressRoute', and 'VPNClient. Possible values include: "IPsec",
7146     "Vnet2Vnet", "ExpressRoute", "VPNClient".
7147    :type connection_type: str or
7148     ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewayConnectionType
7149    :param routing_weight: The routing weight.
7150    :type routing_weight: int
7151    :param shared_key: The IPSec shared key.
7152    :type shared_key: str
7153    :ivar connection_status: Virtual network Gateway connection status. Possible values are
7154     'Unknown', 'Connecting', 'Connected' and 'NotConnected'. Possible values include: "Unknown",
7155     "Connecting", "Connected", "NotConnected".
7156    :vartype connection_status: str or
7157     ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewayConnectionStatus
7158    :ivar tunnel_connection_status: Collection of all tunnels' connection health status.
7159    :vartype tunnel_connection_status:
7160     list[~azure.mgmt.network.v2017_08_01.models.TunnelConnectionHealth]
7161    :ivar egress_bytes_transferred: The egress bytes transferred in this connection.
7162    :vartype egress_bytes_transferred: long
7163    :ivar ingress_bytes_transferred: The ingress bytes transferred in this connection.
7164    :vartype ingress_bytes_transferred: long
7165    :param peer: The reference to peerings resource.
7166    :type peer: ~azure.mgmt.network.v2017_08_01.models.SubResource
7167    :param enable_bgp: EnableBgp flag.
7168    :type enable_bgp: bool
7169    :param use_policy_based_traffic_selectors: Enable policy-based traffic selectors.
7170    :type use_policy_based_traffic_selectors: bool
7171    :param ipsec_policies: The IPSec Policies to be considered by this connection.
7172    :type ipsec_policies: list[~azure.mgmt.network.v2017_08_01.models.IpsecPolicy]
7173    :param resource_guid: The resource GUID property of the VirtualNetworkGatewayConnection
7174     resource.
7175    :type resource_guid: str
7176    :ivar provisioning_state: The provisioning state of the VirtualNetworkGatewayConnection
7177     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
7178    :vartype provisioning_state: str
7179    """
7180
7181    _validation = {
7182        'name': {'readonly': True},
7183        'type': {'readonly': True},
7184        'virtual_network_gateway1': {'required': True},
7185        'connection_type': {'required': True},
7186        'connection_status': {'readonly': True},
7187        'tunnel_connection_status': {'readonly': True},
7188        'egress_bytes_transferred': {'readonly': True},
7189        'ingress_bytes_transferred': {'readonly': True},
7190        'provisioning_state': {'readonly': True},
7191    }
7192
7193    _attribute_map = {
7194        'id': {'key': 'id', 'type': 'str'},
7195        'name': {'key': 'name', 'type': 'str'},
7196        'type': {'key': 'type', 'type': 'str'},
7197        'location': {'key': 'location', 'type': 'str'},
7198        'tags': {'key': 'tags', 'type': '{str}'},
7199        'etag': {'key': 'etag', 'type': 'str'},
7200        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
7201        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkConnectionGatewayReference'},
7202        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
7203        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'VirtualNetworkConnectionGatewayReference'},
7204        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
7205        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
7206        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
7207        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
7208        'tunnel_connection_status': {'key': 'properties.tunnelConnectionStatus', 'type': '[TunnelConnectionHealth]'},
7209        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
7210        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
7211        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
7212        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
7213        'use_policy_based_traffic_selectors': {'key': 'properties.usePolicyBasedTrafficSelectors', 'type': 'bool'},
7214        'ipsec_policies': {'key': 'properties.ipsecPolicies', 'type': '[IpsecPolicy]'},
7215        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
7216        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7217    }
7218
7219    def __init__(
7220        self,
7221        **kwargs
7222    ):
7223        super(VirtualNetworkGatewayConnectionListEntity, self).__init__(**kwargs)
7224        self.etag = kwargs.get('etag', None)
7225        self.authorization_key = kwargs.get('authorization_key', None)
7226        self.virtual_network_gateway1 = kwargs['virtual_network_gateway1']
7227        self.virtual_network_gateway2 = kwargs.get('virtual_network_gateway2', None)
7228        self.local_network_gateway2 = kwargs.get('local_network_gateway2', None)
7229        self.connection_type = kwargs['connection_type']
7230        self.routing_weight = kwargs.get('routing_weight', None)
7231        self.shared_key = kwargs.get('shared_key', None)
7232        self.connection_status = None
7233        self.tunnel_connection_status = None
7234        self.egress_bytes_transferred = None
7235        self.ingress_bytes_transferred = None
7236        self.peer = kwargs.get('peer', None)
7237        self.enable_bgp = kwargs.get('enable_bgp', None)
7238        self.use_policy_based_traffic_selectors = kwargs.get('use_policy_based_traffic_selectors', None)
7239        self.ipsec_policies = kwargs.get('ipsec_policies', None)
7240        self.resource_guid = kwargs.get('resource_guid', None)
7241        self.provisioning_state = None
7242
7243
7244class VirtualNetworkGatewayConnectionListResult(msrest.serialization.Model):
7245    """Response for the ListVirtualNetworkGatewayConnections API service call.
7246
7247    Variables are only populated by the server, and will be ignored when sending a request.
7248
7249    :param value: Gets a list of VirtualNetworkGatewayConnection resources that exists in a
7250     resource group.
7251    :type value: list[~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewayConnection]
7252    :ivar next_link: The URL to get the next set of results.
7253    :vartype next_link: str
7254    """
7255
7256    _validation = {
7257        'next_link': {'readonly': True},
7258    }
7259
7260    _attribute_map = {
7261        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnection]'},
7262        'next_link': {'key': 'nextLink', 'type': 'str'},
7263    }
7264
7265    def __init__(
7266        self,
7267        **kwargs
7268    ):
7269        super(VirtualNetworkGatewayConnectionListResult, self).__init__(**kwargs)
7270        self.value = kwargs.get('value', None)
7271        self.next_link = None
7272
7273
7274class VirtualNetworkGatewayIPConfiguration(SubResource):
7275    """IP configuration for virtual network gateway.
7276
7277    Variables are only populated by the server, and will be ignored when sending a request.
7278
7279    :param id: Resource ID.
7280    :type id: str
7281    :param name: The name of the resource that is unique within a resource group. This name can be
7282     used to access the resource.
7283    :type name: str
7284    :param etag: A unique read-only string that changes whenever the resource is updated.
7285    :type etag: str
7286    :param private_ip_allocation_method: The private IP allocation method. Possible values are:
7287     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
7288    :type private_ip_allocation_method: str or
7289     ~azure.mgmt.network.v2017_08_01.models.IPAllocationMethod
7290    :param subnet: The reference of the subnet resource.
7291    :type subnet: ~azure.mgmt.network.v2017_08_01.models.SubResource
7292    :param public_ip_address: The reference of the public IP resource.
7293    :type public_ip_address: ~azure.mgmt.network.v2017_08_01.models.SubResource
7294    :ivar provisioning_state: The provisioning state of the public IP resource. Possible values
7295     are: 'Updating', 'Deleting', and 'Failed'.
7296    :vartype provisioning_state: str
7297    """
7298
7299    _validation = {
7300        'provisioning_state': {'readonly': True},
7301    }
7302
7303    _attribute_map = {
7304        'id': {'key': 'id', 'type': 'str'},
7305        'name': {'key': 'name', 'type': 'str'},
7306        'etag': {'key': 'etag', 'type': 'str'},
7307        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
7308        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
7309        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
7310        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7311    }
7312
7313    def __init__(
7314        self,
7315        **kwargs
7316    ):
7317        super(VirtualNetworkGatewayIPConfiguration, self).__init__(**kwargs)
7318        self.name = kwargs.get('name', None)
7319        self.etag = kwargs.get('etag', None)
7320        self.private_ip_allocation_method = kwargs.get('private_ip_allocation_method', None)
7321        self.subnet = kwargs.get('subnet', None)
7322        self.public_ip_address = kwargs.get('public_ip_address', None)
7323        self.provisioning_state = None
7324
7325
7326class VirtualNetworkGatewayListConnectionsResult(msrest.serialization.Model):
7327    """Response for the VirtualNetworkGatewayListConnections API service call.
7328
7329    Variables are only populated by the server, and will be ignored when sending a request.
7330
7331    :param value: Gets a list of VirtualNetworkGatewayConnection resources that exists in a
7332     resource group.
7333    :type value:
7334     list[~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewayConnectionListEntity]
7335    :ivar next_link: The URL to get the next set of results.
7336    :vartype next_link: str
7337    """
7338
7339    _validation = {
7340        'next_link': {'readonly': True},
7341    }
7342
7343    _attribute_map = {
7344        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnectionListEntity]'},
7345        'next_link': {'key': 'nextLink', 'type': 'str'},
7346    }
7347
7348    def __init__(
7349        self,
7350        **kwargs
7351    ):
7352        super(VirtualNetworkGatewayListConnectionsResult, self).__init__(**kwargs)
7353        self.value = kwargs.get('value', None)
7354        self.next_link = None
7355
7356
7357class VirtualNetworkGatewayListResult(msrest.serialization.Model):
7358    """Response for the ListVirtualNetworkGateways API service call.
7359
7360    Variables are only populated by the server, and will be ignored when sending a request.
7361
7362    :param value: Gets a list of VirtualNetworkGateway resources that exists in a resource group.
7363    :type value: list[~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGateway]
7364    :ivar next_link: The URL to get the next set of results.
7365    :vartype next_link: str
7366    """
7367
7368    _validation = {
7369        'next_link': {'readonly': True},
7370    }
7371
7372    _attribute_map = {
7373        'value': {'key': 'value', 'type': '[VirtualNetworkGateway]'},
7374        'next_link': {'key': 'nextLink', 'type': 'str'},
7375    }
7376
7377    def __init__(
7378        self,
7379        **kwargs
7380    ):
7381        super(VirtualNetworkGatewayListResult, self).__init__(**kwargs)
7382        self.value = kwargs.get('value', None)
7383        self.next_link = None
7384
7385
7386class VirtualNetworkGatewaySku(msrest.serialization.Model):
7387    """VirtualNetworkGatewaySku details.
7388
7389    :param name: Gateway SKU name. Possible values include: "Basic", "HighPerformance", "Standard",
7390     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3".
7391    :type name: str or ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewaySkuName
7392    :param tier: Gateway SKU tier. Possible values include: "Basic", "HighPerformance", "Standard",
7393     "UltraPerformance", "VpnGw1", "VpnGw2", "VpnGw3".
7394    :type tier: str or ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkGatewaySkuTier
7395    :param capacity: The capacity.
7396    :type capacity: int
7397    """
7398
7399    _attribute_map = {
7400        'name': {'key': 'name', 'type': 'str'},
7401        'tier': {'key': 'tier', 'type': 'str'},
7402        'capacity': {'key': 'capacity', 'type': 'int'},
7403    }
7404
7405    def __init__(
7406        self,
7407        **kwargs
7408    ):
7409        super(VirtualNetworkGatewaySku, self).__init__(**kwargs)
7410        self.name = kwargs.get('name', None)
7411        self.tier = kwargs.get('tier', None)
7412        self.capacity = kwargs.get('capacity', None)
7413
7414
7415class VirtualNetworkListResult(msrest.serialization.Model):
7416    """Response for the ListVirtualNetworks API service call.
7417
7418    :param value: Gets a list of VirtualNetwork resources in a resource group.
7419    :type value: list[~azure.mgmt.network.v2017_08_01.models.VirtualNetwork]
7420    :param next_link: The URL to get the next set of results.
7421    :type next_link: str
7422    """
7423
7424    _attribute_map = {
7425        'value': {'key': 'value', 'type': '[VirtualNetwork]'},
7426        'next_link': {'key': 'nextLink', 'type': 'str'},
7427    }
7428
7429    def __init__(
7430        self,
7431        **kwargs
7432    ):
7433        super(VirtualNetworkListResult, self).__init__(**kwargs)
7434        self.value = kwargs.get('value', None)
7435        self.next_link = kwargs.get('next_link', None)
7436
7437
7438class VirtualNetworkListUsageResult(msrest.serialization.Model):
7439    """Response for the virtual networks GetUsage API service call.
7440
7441    Variables are only populated by the server, and will be ignored when sending a request.
7442
7443    :ivar value: VirtualNetwork usage stats.
7444    :vartype value: list[~azure.mgmt.network.v2017_08_01.models.VirtualNetworkUsage]
7445    :param next_link: The URL to get the next set of results.
7446    :type next_link: str
7447    """
7448
7449    _validation = {
7450        'value': {'readonly': True},
7451    }
7452
7453    _attribute_map = {
7454        'value': {'key': 'value', 'type': '[VirtualNetworkUsage]'},
7455        'next_link': {'key': 'nextLink', 'type': 'str'},
7456    }
7457
7458    def __init__(
7459        self,
7460        **kwargs
7461    ):
7462        super(VirtualNetworkListUsageResult, self).__init__(**kwargs)
7463        self.value = None
7464        self.next_link = kwargs.get('next_link', None)
7465
7466
7467class VirtualNetworkPeering(SubResource):
7468    """Peerings in a virtual network resource.
7469
7470    :param id: Resource ID.
7471    :type id: str
7472    :param name: The name of the resource that is unique within a resource group. This name can be
7473     used to access the resource.
7474    :type name: str
7475    :param etag: A unique read-only string that changes whenever the resource is updated.
7476    :type etag: str
7477    :param allow_virtual_network_access: Whether the VMs in the linked virtual network space would
7478     be able to access all the VMs in local Virtual network space.
7479    :type allow_virtual_network_access: bool
7480    :param allow_forwarded_traffic: Whether the forwarded traffic from the VMs in the remote
7481     virtual network will be allowed/disallowed.
7482    :type allow_forwarded_traffic: bool
7483    :param allow_gateway_transit: If gateway links can be used in remote virtual networking to link
7484     to this virtual network.
7485    :type allow_gateway_transit: bool
7486    :param use_remote_gateways: If remote gateways can be used on this virtual network. If the flag
7487     is set to true, and allowGatewayTransit on remote peering is also true, virtual network will
7488     use gateways of remote virtual network for transit. Only one peering can have this flag set to
7489     true. This flag cannot be set if virtual network already has a gateway.
7490    :type use_remote_gateways: bool
7491    :param remote_virtual_network: The reference of the remote virtual network.
7492    :type remote_virtual_network: ~azure.mgmt.network.v2017_08_01.models.SubResource
7493    :param peering_state: The status of the virtual network peering. Possible values are
7494     'Initiated', 'Connected', and 'Disconnected'. Possible values include: "Initiated",
7495     "Connected", "Disconnected".
7496    :type peering_state: str or ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkPeeringState
7497    :param provisioning_state: The provisioning state of the resource.
7498    :type provisioning_state: str
7499    """
7500
7501    _attribute_map = {
7502        'id': {'key': 'id', 'type': 'str'},
7503        'name': {'key': 'name', 'type': 'str'},
7504        'etag': {'key': 'etag', 'type': 'str'},
7505        'allow_virtual_network_access': {'key': 'properties.allowVirtualNetworkAccess', 'type': 'bool'},
7506        'allow_forwarded_traffic': {'key': 'properties.allowForwardedTraffic', 'type': 'bool'},
7507        'allow_gateway_transit': {'key': 'properties.allowGatewayTransit', 'type': 'bool'},
7508        'use_remote_gateways': {'key': 'properties.useRemoteGateways', 'type': 'bool'},
7509        'remote_virtual_network': {'key': 'properties.remoteVirtualNetwork', 'type': 'SubResource'},
7510        'peering_state': {'key': 'properties.peeringState', 'type': 'str'},
7511        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7512    }
7513
7514    def __init__(
7515        self,
7516        **kwargs
7517    ):
7518        super(VirtualNetworkPeering, self).__init__(**kwargs)
7519        self.name = kwargs.get('name', None)
7520        self.etag = kwargs.get('etag', None)
7521        self.allow_virtual_network_access = kwargs.get('allow_virtual_network_access', None)
7522        self.allow_forwarded_traffic = kwargs.get('allow_forwarded_traffic', None)
7523        self.allow_gateway_transit = kwargs.get('allow_gateway_transit', None)
7524        self.use_remote_gateways = kwargs.get('use_remote_gateways', None)
7525        self.remote_virtual_network = kwargs.get('remote_virtual_network', None)
7526        self.peering_state = kwargs.get('peering_state', None)
7527        self.provisioning_state = kwargs.get('provisioning_state', None)
7528
7529
7530class VirtualNetworkPeeringListResult(msrest.serialization.Model):
7531    """Response for ListSubnets API service call. Retrieves all subnets that belong to a virtual network.
7532
7533    :param value: The peerings in a virtual network.
7534    :type value: list[~azure.mgmt.network.v2017_08_01.models.VirtualNetworkPeering]
7535    :param next_link: The URL to get the next set of results.
7536    :type next_link: str
7537    """
7538
7539    _attribute_map = {
7540        'value': {'key': 'value', 'type': '[VirtualNetworkPeering]'},
7541        'next_link': {'key': 'nextLink', 'type': 'str'},
7542    }
7543
7544    def __init__(
7545        self,
7546        **kwargs
7547    ):
7548        super(VirtualNetworkPeeringListResult, self).__init__(**kwargs)
7549        self.value = kwargs.get('value', None)
7550        self.next_link = kwargs.get('next_link', None)
7551
7552
7553class VirtualNetworkUsage(msrest.serialization.Model):
7554    """Usage details for subnet.
7555
7556    Variables are only populated by the server, and will be ignored when sending a request.
7557
7558    :ivar current_value: Indicates number of IPs used from the Subnet.
7559    :vartype current_value: float
7560    :ivar id: Subnet identifier.
7561    :vartype id: str
7562    :ivar limit: Indicates the size of the subnet.
7563    :vartype limit: float
7564    :ivar name: The name containing common and localized value for usage.
7565    :vartype name: ~azure.mgmt.network.v2017_08_01.models.VirtualNetworkUsageName
7566    :ivar unit: Usage units. Returns 'Count'.
7567    :vartype unit: str
7568    """
7569
7570    _validation = {
7571        'current_value': {'readonly': True},
7572        'id': {'readonly': True},
7573        'limit': {'readonly': True},
7574        'name': {'readonly': True},
7575        'unit': {'readonly': True},
7576    }
7577
7578    _attribute_map = {
7579        'current_value': {'key': 'currentValue', 'type': 'float'},
7580        'id': {'key': 'id', 'type': 'str'},
7581        'limit': {'key': 'limit', 'type': 'float'},
7582        'name': {'key': 'name', 'type': 'VirtualNetworkUsageName'},
7583        'unit': {'key': 'unit', 'type': 'str'},
7584    }
7585
7586    def __init__(
7587        self,
7588        **kwargs
7589    ):
7590        super(VirtualNetworkUsage, self).__init__(**kwargs)
7591        self.current_value = None
7592        self.id = None
7593        self.limit = None
7594        self.name = None
7595        self.unit = None
7596
7597
7598class VirtualNetworkUsageName(msrest.serialization.Model):
7599    """Usage strings container.
7600
7601    Variables are only populated by the server, and will be ignored when sending a request.
7602
7603    :ivar localized_value: Localized subnet size and usage string.
7604    :vartype localized_value: str
7605    :ivar value: Subnet size and usage string.
7606    :vartype value: str
7607    """
7608
7609    _validation = {
7610        'localized_value': {'readonly': True},
7611        'value': {'readonly': True},
7612    }
7613
7614    _attribute_map = {
7615        'localized_value': {'key': 'localizedValue', 'type': 'str'},
7616        'value': {'key': 'value', 'type': 'str'},
7617    }
7618
7619    def __init__(
7620        self,
7621        **kwargs
7622    ):
7623        super(VirtualNetworkUsageName, self).__init__(**kwargs)
7624        self.localized_value = None
7625        self.value = None
7626
7627
7628class VpnClientConfiguration(msrest.serialization.Model):
7629    """VpnClientConfiguration for P2S client.
7630
7631    :param vpn_client_address_pool: The reference of the address space resource which represents
7632     Address space for P2S VpnClient.
7633    :type vpn_client_address_pool: ~azure.mgmt.network.v2017_08_01.models.AddressSpace
7634    :param vpn_client_root_certificates: VpnClientRootCertificate for virtual network gateway.
7635    :type vpn_client_root_certificates:
7636     list[~azure.mgmt.network.v2017_08_01.models.VpnClientRootCertificate]
7637    :param vpn_client_revoked_certificates: VpnClientRevokedCertificate for Virtual network
7638     gateway.
7639    :type vpn_client_revoked_certificates:
7640     list[~azure.mgmt.network.v2017_08_01.models.VpnClientRevokedCertificate]
7641    :param vpn_client_protocols: VpnClientProtocols for Virtual network gateway.
7642    :type vpn_client_protocols: list[str or
7643     ~azure.mgmt.network.v2017_08_01.models.VpnClientProtocol]
7644    :param radius_server_address: The radius server address property of the VirtualNetworkGateway
7645     resource for vpn client connection.
7646    :type radius_server_address: str
7647    :param radius_server_secret: The radius secret property of the VirtualNetworkGateway resource
7648     for vpn client connection.
7649    :type radius_server_secret: str
7650    """
7651
7652    _attribute_map = {
7653        'vpn_client_address_pool': {'key': 'vpnClientAddressPool', 'type': 'AddressSpace'},
7654        'vpn_client_root_certificates': {'key': 'vpnClientRootCertificates', 'type': '[VpnClientRootCertificate]'},
7655        'vpn_client_revoked_certificates': {'key': 'vpnClientRevokedCertificates', 'type': '[VpnClientRevokedCertificate]'},
7656        'vpn_client_protocols': {'key': 'vpnClientProtocols', 'type': '[str]'},
7657        'radius_server_address': {'key': 'radiusServerAddress', 'type': 'str'},
7658        'radius_server_secret': {'key': 'radiusServerSecret', 'type': 'str'},
7659    }
7660
7661    def __init__(
7662        self,
7663        **kwargs
7664    ):
7665        super(VpnClientConfiguration, self).__init__(**kwargs)
7666        self.vpn_client_address_pool = kwargs.get('vpn_client_address_pool', None)
7667        self.vpn_client_root_certificates = kwargs.get('vpn_client_root_certificates', None)
7668        self.vpn_client_revoked_certificates = kwargs.get('vpn_client_revoked_certificates', None)
7669        self.vpn_client_protocols = kwargs.get('vpn_client_protocols', None)
7670        self.radius_server_address = kwargs.get('radius_server_address', None)
7671        self.radius_server_secret = kwargs.get('radius_server_secret', None)
7672
7673
7674class VpnClientParameters(msrest.serialization.Model):
7675    """Vpn Client Parameters for package generation.
7676
7677    :param processor_architecture: VPN client Processor Architecture. Possible values are: 'AMD64'
7678     and 'X86'. Possible values include: "Amd64", "X86".
7679    :type processor_architecture: str or
7680     ~azure.mgmt.network.v2017_08_01.models.ProcessorArchitecture
7681    :param authentication_method: VPN client Authentication Method. Possible values are: 'EAPTLS'
7682     and 'EAPMSCHAPv2'. Possible values include: "EAPTLS", "EAPMSCHAPv2".
7683    :type authentication_method: str or ~azure.mgmt.network.v2017_08_01.models.AuthenticationMethod
7684    :param radius_server_auth_certificate: The public certificate data for the radius server
7685     authentication certificate as a Base-64 encoded string. Required only if external radius
7686     authentication has been configured with EAPTLS authentication.
7687    :type radius_server_auth_certificate: str
7688    :param client_root_certificates: A list of client root certificates public certificate data
7689     encoded as Base-64 strings. Optional parameter for external radius based authentication with
7690     EAPTLS.
7691    :type client_root_certificates: list[str]
7692    """
7693
7694    _attribute_map = {
7695        'processor_architecture': {'key': 'processorArchitecture', 'type': 'str'},
7696        'authentication_method': {'key': 'authenticationMethod', 'type': 'str'},
7697        'radius_server_auth_certificate': {'key': 'radiusServerAuthCertificate', 'type': 'str'},
7698        'client_root_certificates': {'key': 'clientRootCertificates', 'type': '[str]'},
7699    }
7700
7701    def __init__(
7702        self,
7703        **kwargs
7704    ):
7705        super(VpnClientParameters, self).__init__(**kwargs)
7706        self.processor_architecture = kwargs.get('processor_architecture', None)
7707        self.authentication_method = kwargs.get('authentication_method', None)
7708        self.radius_server_auth_certificate = kwargs.get('radius_server_auth_certificate', None)
7709        self.client_root_certificates = kwargs.get('client_root_certificates', None)
7710
7711
7712class VpnClientRevokedCertificate(SubResource):
7713    """VPN client revoked certificate of virtual network gateway.
7714
7715    Variables are only populated by the server, and will be ignored when sending a request.
7716
7717    :param id: Resource ID.
7718    :type id: str
7719    :param name: The name of the resource that is unique within a resource group. This name can be
7720     used to access the resource.
7721    :type name: str
7722    :param etag: A unique read-only string that changes whenever the resource is updated.
7723    :type etag: str
7724    :param thumbprint: The revoked VPN client certificate thumbprint.
7725    :type thumbprint: str
7726    :ivar provisioning_state: The provisioning state of the VPN client revoked certificate
7727     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
7728    :vartype provisioning_state: str
7729    """
7730
7731    _validation = {
7732        'provisioning_state': {'readonly': True},
7733    }
7734
7735    _attribute_map = {
7736        'id': {'key': 'id', 'type': 'str'},
7737        'name': {'key': 'name', 'type': 'str'},
7738        'etag': {'key': 'etag', 'type': 'str'},
7739        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
7740        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7741    }
7742
7743    def __init__(
7744        self,
7745        **kwargs
7746    ):
7747        super(VpnClientRevokedCertificate, self).__init__(**kwargs)
7748        self.name = kwargs.get('name', None)
7749        self.etag = kwargs.get('etag', None)
7750        self.thumbprint = kwargs.get('thumbprint', None)
7751        self.provisioning_state = None
7752
7753
7754class VpnClientRootCertificate(SubResource):
7755    """VPN client root certificate of virtual network gateway.
7756
7757    Variables are only populated by the server, and will be ignored when sending a request.
7758
7759    All required parameters must be populated in order to send to Azure.
7760
7761    :param id: Resource ID.
7762    :type id: str
7763    :param name: The name of the resource that is unique within a resource group. This name can be
7764     used to access the resource.
7765    :type name: str
7766    :param etag: A unique read-only string that changes whenever the resource is updated.
7767    :type etag: str
7768    :param public_cert_data: Required. The certificate public data.
7769    :type public_cert_data: str
7770    :ivar provisioning_state: The provisioning state of the VPN client root certificate resource.
7771     Possible values are: 'Updating', 'Deleting', and 'Failed'.
7772    :vartype provisioning_state: str
7773    """
7774
7775    _validation = {
7776        'public_cert_data': {'required': True},
7777        'provisioning_state': {'readonly': True},
7778    }
7779
7780    _attribute_map = {
7781        'id': {'key': 'id', 'type': 'str'},
7782        'name': {'key': 'name', 'type': 'str'},
7783        'etag': {'key': 'etag', 'type': 'str'},
7784        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
7785        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
7786    }
7787
7788    def __init__(
7789        self,
7790        **kwargs
7791    ):
7792        super(VpnClientRootCertificate, self).__init__(**kwargs)
7793        self.name = kwargs.get('name', None)
7794        self.etag = kwargs.get('etag', None)
7795        self.public_cert_data = kwargs['public_cert_data']
7796        self.provisioning_state = None
7797