1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for license information.
5# Code generated by Microsoft (R) AutoRest Code Generator.
6# Changes may cause incorrect behavior and will be lost if the code is regenerated.
7# --------------------------------------------------------------------------
8
9from typing import Dict, List, Optional, Union
10
11import msrest.serialization
12
13from ._network_management_client_enums import *
14
15
16class AddressSpace(msrest.serialization.Model):
17    """AddressSpace contains an array of IP address ranges that can be used by subnets of the virtual network.
18
19    :param address_prefixes: A list of address blocks reserved for this virtual network in CIDR
20     notation.
21    :type address_prefixes: list[str]
22    """
23
24    _attribute_map = {
25        'address_prefixes': {'key': 'addressPrefixes', 'type': '[str]'},
26    }
27
28    def __init__(
29        self,
30        *,
31        address_prefixes: Optional[List[str]] = None,
32        **kwargs
33    ):
34        super(AddressSpace, self).__init__(**kwargs)
35        self.address_prefixes = address_prefixes
36
37
38class Resource(msrest.serialization.Model):
39    """Azure resource manager resource properties.
40
41    Variables are only populated by the server, and will be ignored when sending a request.
42
43    :param id: Resource Identifier.
44    :type id: str
45    :ivar name: Resource name.
46    :vartype name: str
47    :ivar type: Resource type.
48    :vartype type: str
49    :param location: Resource location.
50    :type location: str
51    :param tags: A set of tags. Resource tags.
52    :type tags: dict[str, str]
53    """
54
55    _validation = {
56        'name': {'readonly': True},
57        'type': {'readonly': True},
58    }
59
60    _attribute_map = {
61        'id': {'key': 'id', 'type': 'str'},
62        'name': {'key': 'name', 'type': 'str'},
63        'type': {'key': 'type', 'type': 'str'},
64        'location': {'key': 'location', 'type': 'str'},
65        'tags': {'key': 'tags', 'type': '{str}'},
66    }
67
68    def __init__(
69        self,
70        *,
71        id: Optional[str] = None,
72        location: Optional[str] = None,
73        tags: Optional[Dict[str, str]] = None,
74        **kwargs
75    ):
76        super(Resource, self).__init__(**kwargs)
77        self.id = id
78        self.name = None
79        self.type = None
80        self.location = location
81        self.tags = tags
82
83
84class ApplicationGateway(Resource):
85    """Application gateway resource.
86
87    Variables are only populated by the server, and will be ignored when sending a request.
88
89    :param id: Resource Identifier.
90    :type id: str
91    :ivar name: Resource name.
92    :vartype name: str
93    :ivar type: Resource type.
94    :vartype type: str
95    :param location: Resource location.
96    :type location: str
97    :param tags: A set of tags. Resource tags.
98    :type tags: dict[str, str]
99    :param etag: A unique read-only string that changes whenever the resource is updated.
100    :type etag: str
101    :param sku: SKU of the application gateway resource.
102    :type sku: ~azure.mgmt.network.v2015_06_15.models.ApplicationGatewaySku
103    :ivar operational_state: Operational state of the application gateway resource. Possible values
104     are: 'Stopped', 'Started', 'Running', and 'Stopping'. Possible values include: "Stopped",
105     "Starting", "Running", "Stopping".
106    :vartype operational_state: str or
107     ~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayOperationalState
108    :param gateway_ip_configurations: Gets or sets subnets of application gateway resource.
109    :type gateway_ip_configurations:
110     list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayIPConfiguration]
111    :param ssl_certificates: SSL certificates of the application gateway resource.
112    :type ssl_certificates:
113     list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewaySslCertificate]
114    :param frontend_ip_configurations: Frontend IP addresses of the application gateway resource.
115    :type frontend_ip_configurations:
116     list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayFrontendIPConfiguration]
117    :param frontend_ports: Frontend ports of the application gateway resource.
118    :type frontend_ports:
119     list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayFrontendPort]
120    :param probes: Probes of the application gateway resource.
121    :type probes: list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayProbe]
122    :param backend_address_pools: Backend address pool of the application gateway resource.
123    :type backend_address_pools:
124     list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayBackendAddressPool]
125    :param backend_http_settings_collection: Backend http settings of the application gateway
126     resource.
127    :type backend_http_settings_collection:
128     list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayBackendHttpSettings]
129    :param http_listeners: Http listeners of the application gateway resource.
130    :type http_listeners:
131     list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayHttpListener]
132    :param url_path_maps: URL path map of the application gateway resource.
133    :type url_path_maps: list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayUrlPathMap]
134    :param request_routing_rules: Request routing rules of the application gateway resource.
135    :type request_routing_rules:
136     list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayRequestRoutingRule]
137    :param resource_guid: Resource GUID property of the application gateway resource.
138    :type resource_guid: str
139    :param provisioning_state: Provisioning state of the application gateway resource. Possible
140     values are: 'Updating', 'Deleting', and 'Failed'.
141    :type provisioning_state: str
142    """
143
144    _validation = {
145        'name': {'readonly': True},
146        'type': {'readonly': True},
147        'operational_state': {'readonly': True},
148    }
149
150    _attribute_map = {
151        'id': {'key': 'id', 'type': 'str'},
152        'name': {'key': 'name', 'type': 'str'},
153        'type': {'key': 'type', 'type': 'str'},
154        'location': {'key': 'location', 'type': 'str'},
155        'tags': {'key': 'tags', 'type': '{str}'},
156        'etag': {'key': 'etag', 'type': 'str'},
157        'sku': {'key': 'properties.sku', 'type': 'ApplicationGatewaySku'},
158        'operational_state': {'key': 'properties.operationalState', 'type': 'str'},
159        'gateway_ip_configurations': {'key': 'properties.gatewayIPConfigurations', 'type': '[ApplicationGatewayIPConfiguration]'},
160        'ssl_certificates': {'key': 'properties.sslCertificates', 'type': '[ApplicationGatewaySslCertificate]'},
161        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[ApplicationGatewayFrontendIPConfiguration]'},
162        'frontend_ports': {'key': 'properties.frontendPorts', 'type': '[ApplicationGatewayFrontendPort]'},
163        'probes': {'key': 'properties.probes', 'type': '[ApplicationGatewayProbe]'},
164        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[ApplicationGatewayBackendAddressPool]'},
165        'backend_http_settings_collection': {'key': 'properties.backendHttpSettingsCollection', 'type': '[ApplicationGatewayBackendHttpSettings]'},
166        'http_listeners': {'key': 'properties.httpListeners', 'type': '[ApplicationGatewayHttpListener]'},
167        'url_path_maps': {'key': 'properties.urlPathMaps', 'type': '[ApplicationGatewayUrlPathMap]'},
168        'request_routing_rules': {'key': 'properties.requestRoutingRules', 'type': '[ApplicationGatewayRequestRoutingRule]'},
169        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
170        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
171    }
172
173    def __init__(
174        self,
175        *,
176        id: Optional[str] = None,
177        location: Optional[str] = None,
178        tags: Optional[Dict[str, str]] = None,
179        etag: Optional[str] = None,
180        sku: Optional["ApplicationGatewaySku"] = None,
181        gateway_ip_configurations: Optional[List["ApplicationGatewayIPConfiguration"]] = None,
182        ssl_certificates: Optional[List["ApplicationGatewaySslCertificate"]] = None,
183        frontend_ip_configurations: Optional[List["ApplicationGatewayFrontendIPConfiguration"]] = None,
184        frontend_ports: Optional[List["ApplicationGatewayFrontendPort"]] = None,
185        probes: Optional[List["ApplicationGatewayProbe"]] = None,
186        backend_address_pools: Optional[List["ApplicationGatewayBackendAddressPool"]] = None,
187        backend_http_settings_collection: Optional[List["ApplicationGatewayBackendHttpSettings"]] = None,
188        http_listeners: Optional[List["ApplicationGatewayHttpListener"]] = None,
189        url_path_maps: Optional[List["ApplicationGatewayUrlPathMap"]] = None,
190        request_routing_rules: Optional[List["ApplicationGatewayRequestRoutingRule"]] = None,
191        resource_guid: Optional[str] = None,
192        provisioning_state: Optional[str] = None,
193        **kwargs
194    ):
195        super(ApplicationGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
196        self.etag = etag
197        self.sku = sku
198        self.operational_state = None
199        self.gateway_ip_configurations = gateway_ip_configurations
200        self.ssl_certificates = ssl_certificates
201        self.frontend_ip_configurations = frontend_ip_configurations
202        self.frontend_ports = frontend_ports
203        self.probes = probes
204        self.backend_address_pools = backend_address_pools
205        self.backend_http_settings_collection = backend_http_settings_collection
206        self.http_listeners = http_listeners
207        self.url_path_maps = url_path_maps
208        self.request_routing_rules = request_routing_rules
209        self.resource_guid = resource_guid
210        self.provisioning_state = provisioning_state
211
212
213class ApplicationGatewayBackendAddress(msrest.serialization.Model):
214    """Backend address of an application gateway.
215
216    :param fqdn: Fully qualified domain name (FQDN).
217    :type fqdn: str
218    :param ip_address: IP address.
219    :type ip_address: str
220    """
221
222    _attribute_map = {
223        'fqdn': {'key': 'fqdn', 'type': 'str'},
224        'ip_address': {'key': 'ipAddress', 'type': 'str'},
225    }
226
227    def __init__(
228        self,
229        *,
230        fqdn: Optional[str] = None,
231        ip_address: Optional[str] = None,
232        **kwargs
233    ):
234        super(ApplicationGatewayBackendAddress, self).__init__(**kwargs)
235        self.fqdn = fqdn
236        self.ip_address = ip_address
237
238
239class SubResource(msrest.serialization.Model):
240    """Azure resource manager sub resource properties.
241
242    :param id: Resource Identifier.
243    :type id: str
244    """
245
246    _attribute_map = {
247        'id': {'key': 'id', 'type': 'str'},
248    }
249
250    def __init__(
251        self,
252        *,
253        id: Optional[str] = None,
254        **kwargs
255    ):
256        super(SubResource, self).__init__(**kwargs)
257        self.id = id
258
259
260class ApplicationGatewayBackendAddressPool(SubResource):
261    """Backend Address Pool of an application gateway.
262
263    :param id: Resource Identifier.
264    :type id: str
265    :param name: Resource that is unique within a resource group. This name can be used to access
266     the resource.
267    :type name: str
268    :param etag: A unique read-only string that changes whenever the resource is updated.
269    :type etag: str
270    :param backend_ip_configurations: Collection of references to IPs defined in network
271     interfaces.
272    :type backend_ip_configurations:
273     list[~azure.mgmt.network.v2015_06_15.models.NetworkInterfaceIPConfiguration]
274    :param backend_addresses: Backend addresses.
275    :type backend_addresses:
276     list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayBackendAddress]
277    :param provisioning_state: Provisioning state of the backend address pool resource. Possible
278     values are: 'Updating', 'Deleting', and 'Failed'.
279    :type provisioning_state: str
280    """
281
282    _attribute_map = {
283        'id': {'key': 'id', 'type': 'str'},
284        'name': {'key': 'name', 'type': 'str'},
285        'etag': {'key': 'etag', 'type': 'str'},
286        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
287        'backend_addresses': {'key': 'properties.backendAddresses', 'type': '[ApplicationGatewayBackendAddress]'},
288        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
289    }
290
291    def __init__(
292        self,
293        *,
294        id: Optional[str] = None,
295        name: Optional[str] = None,
296        etag: Optional[str] = None,
297        backend_ip_configurations: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
298        backend_addresses: Optional[List["ApplicationGatewayBackendAddress"]] = None,
299        provisioning_state: Optional[str] = None,
300        **kwargs
301    ):
302        super(ApplicationGatewayBackendAddressPool, self).__init__(id=id, **kwargs)
303        self.name = name
304        self.etag = etag
305        self.backend_ip_configurations = backend_ip_configurations
306        self.backend_addresses = backend_addresses
307        self.provisioning_state = provisioning_state
308
309
310class ApplicationGatewayBackendHttpSettings(SubResource):
311    """Backend address pool settings of an application gateway.
312
313    :param id: Resource Identifier.
314    :type id: str
315    :param name: Name of the resource that is unique within a resource group. This name can be used
316     to access the resource.
317    :type name: str
318    :param etag: A unique read-only string that changes whenever the resource is updated.
319    :type etag: str
320    :param port: Port.
321    :type port: int
322    :param protocol: Protocol. Possible values are: 'Http' and 'Https'. Possible values include:
323     "Http", "Https".
324    :type protocol: str or ~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayProtocol
325    :param cookie_based_affinity: Cookie based affinity. Possible values are: 'Enabled' and
326     'Disabled'. Possible values include: "Enabled", "Disabled".
327    :type cookie_based_affinity: str or
328     ~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayCookieBasedAffinity
329    :param request_timeout: Request timeout in seconds. Application Gateway will fail the request
330     if response is not received within RequestTimeout. Acceptable values are from 1 second to 86400
331     seconds.
332    :type request_timeout: int
333    :param probe: Probe resource of an application gateway.
334    :type probe: ~azure.mgmt.network.v2015_06_15.models.SubResource
335    :param provisioning_state: Gets or sets Provisioning state of the backend http settings
336     resource Updating/Deleting/Failed.
337    :type provisioning_state: str
338    """
339
340    _attribute_map = {
341        'id': {'key': 'id', 'type': 'str'},
342        'name': {'key': 'name', 'type': 'str'},
343        'etag': {'key': 'etag', 'type': 'str'},
344        'port': {'key': 'properties.port', 'type': 'int'},
345        'protocol': {'key': 'properties.protocol', 'type': 'str'},
346        'cookie_based_affinity': {'key': 'properties.cookieBasedAffinity', 'type': 'str'},
347        'request_timeout': {'key': 'properties.requestTimeout', 'type': 'int'},
348        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
349        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
350    }
351
352    def __init__(
353        self,
354        *,
355        id: Optional[str] = None,
356        name: Optional[str] = None,
357        etag: Optional[str] = None,
358        port: Optional[int] = None,
359        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
360        cookie_based_affinity: Optional[Union[str, "ApplicationGatewayCookieBasedAffinity"]] = None,
361        request_timeout: Optional[int] = None,
362        probe: Optional["SubResource"] = None,
363        provisioning_state: Optional[str] = None,
364        **kwargs
365    ):
366        super(ApplicationGatewayBackendHttpSettings, self).__init__(id=id, **kwargs)
367        self.name = name
368        self.etag = etag
369        self.port = port
370        self.protocol = protocol
371        self.cookie_based_affinity = cookie_based_affinity
372        self.request_timeout = request_timeout
373        self.probe = probe
374        self.provisioning_state = provisioning_state
375
376
377class ApplicationGatewayFrontendIPConfiguration(SubResource):
378    """Frontend IP configuration of an application gateway.
379
380    :param id: Resource Identifier.
381    :type id: str
382    :param name: Name of the resource that is unique within a resource group. This name can be used
383     to access the resource.
384    :type name: str
385    :param etag: A unique read-only string that changes whenever the resource is updated.
386    :type etag: str
387    :param private_ip_address: PrivateIPAddress of the network interface IP Configuration.
388    :type private_ip_address: str
389    :param private_ip_allocation_method: PrivateIP allocation method. Possible values are: 'Static'
390     and 'Dynamic'. Possible values include: "Static", "Dynamic".
391    :type private_ip_allocation_method: str or
392     ~azure.mgmt.network.v2015_06_15.models.IPAllocationMethod
393    :param subnet: Reference of the subnet resource.
394    :type subnet: ~azure.mgmt.network.v2015_06_15.models.SubResource
395    :param public_ip_address: Reference of the PublicIP resource.
396    :type public_ip_address: ~azure.mgmt.network.v2015_06_15.models.SubResource
397    :param provisioning_state: Provisioning state of the public IP resource. Possible values are:
398     'Updating', 'Deleting', and 'Failed'.
399    :type provisioning_state: str
400    """
401
402    _attribute_map = {
403        'id': {'key': 'id', 'type': 'str'},
404        'name': {'key': 'name', 'type': 'str'},
405        'etag': {'key': 'etag', 'type': 'str'},
406        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
407        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
408        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
409        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
410        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
411    }
412
413    def __init__(
414        self,
415        *,
416        id: Optional[str] = None,
417        name: Optional[str] = None,
418        etag: Optional[str] = None,
419        private_ip_address: Optional[str] = None,
420        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
421        subnet: Optional["SubResource"] = None,
422        public_ip_address: Optional["SubResource"] = None,
423        provisioning_state: Optional[str] = None,
424        **kwargs
425    ):
426        super(ApplicationGatewayFrontendIPConfiguration, self).__init__(id=id, **kwargs)
427        self.name = name
428        self.etag = etag
429        self.private_ip_address = private_ip_address
430        self.private_ip_allocation_method = private_ip_allocation_method
431        self.subnet = subnet
432        self.public_ip_address = public_ip_address
433        self.provisioning_state = provisioning_state
434
435
436class ApplicationGatewayFrontendPort(SubResource):
437    """Frontend port of an application gateway.
438
439    :param id: Resource Identifier.
440    :type id: str
441    :param name: Name of the resource that is unique within a resource group. This name can be used
442     to access the resource.
443    :type name: str
444    :param etag: A unique read-only string that changes whenever the resource is updated.
445    :type etag: str
446    :param port: Frontend port.
447    :type port: int
448    :param provisioning_state: Provisioning state of the frontend port resource. Possible values
449     are: 'Updating', 'Deleting', and 'Failed'.
450    :type provisioning_state: str
451    """
452
453    _attribute_map = {
454        'id': {'key': 'id', 'type': 'str'},
455        'name': {'key': 'name', 'type': 'str'},
456        'etag': {'key': 'etag', 'type': 'str'},
457        'port': {'key': 'properties.port', 'type': 'int'},
458        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
459    }
460
461    def __init__(
462        self,
463        *,
464        id: Optional[str] = None,
465        name: Optional[str] = None,
466        etag: Optional[str] = None,
467        port: Optional[int] = None,
468        provisioning_state: Optional[str] = None,
469        **kwargs
470    ):
471        super(ApplicationGatewayFrontendPort, self).__init__(id=id, **kwargs)
472        self.name = name
473        self.etag = etag
474        self.port = port
475        self.provisioning_state = provisioning_state
476
477
478class ApplicationGatewayHttpListener(SubResource):
479    """Http listener of an application gateway.
480
481    :param id: Resource Identifier.
482    :type id: str
483    :param name: Name of the resource that is unique within a resource group. This name can be used
484     to access the resource.
485    :type name: str
486    :param etag: A unique read-only string that changes whenever the resource is updated.
487    :type etag: str
488    :param frontend_ip_configuration: Frontend IP configuration resource of an application gateway.
489    :type frontend_ip_configuration: ~azure.mgmt.network.v2015_06_15.models.SubResource
490    :param frontend_port: Frontend port resource of an application gateway.
491    :type frontend_port: ~azure.mgmt.network.v2015_06_15.models.SubResource
492    :param protocol: Protocol. Possible values are: 'Http' and 'Https'. Possible values include:
493     "Http", "Https".
494    :type protocol: str or ~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayProtocol
495    :param host_name: Host name of HTTP listener.
496    :type host_name: str
497    :param ssl_certificate: SSL certificate resource of an application gateway.
498    :type ssl_certificate: ~azure.mgmt.network.v2015_06_15.models.SubResource
499    :param require_server_name_indication: Applicable only if protocol is https. Enables SNI for
500     multi-hosting.
501    :type require_server_name_indication: bool
502    :param provisioning_state: Provisioning state of the HTTP listener resource. Possible values
503     are: 'Updating', 'Deleting', and 'Failed'.
504    :type provisioning_state: str
505    """
506
507    _attribute_map = {
508        'id': {'key': 'id', 'type': 'str'},
509        'name': {'key': 'name', 'type': 'str'},
510        'etag': {'key': 'etag', 'type': 'str'},
511        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
512        'frontend_port': {'key': 'properties.frontendPort', 'type': 'SubResource'},
513        'protocol': {'key': 'properties.protocol', 'type': 'str'},
514        'host_name': {'key': 'properties.hostName', 'type': 'str'},
515        'ssl_certificate': {'key': 'properties.sslCertificate', 'type': 'SubResource'},
516        'require_server_name_indication': {'key': 'properties.requireServerNameIndication', 'type': 'bool'},
517        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
518    }
519
520    def __init__(
521        self,
522        *,
523        id: Optional[str] = None,
524        name: Optional[str] = None,
525        etag: Optional[str] = None,
526        frontend_ip_configuration: Optional["SubResource"] = None,
527        frontend_port: Optional["SubResource"] = None,
528        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
529        host_name: Optional[str] = None,
530        ssl_certificate: Optional["SubResource"] = None,
531        require_server_name_indication: Optional[bool] = None,
532        provisioning_state: Optional[str] = None,
533        **kwargs
534    ):
535        super(ApplicationGatewayHttpListener, self).__init__(id=id, **kwargs)
536        self.name = name
537        self.etag = etag
538        self.frontend_ip_configuration = frontend_ip_configuration
539        self.frontend_port = frontend_port
540        self.protocol = protocol
541        self.host_name = host_name
542        self.ssl_certificate = ssl_certificate
543        self.require_server_name_indication = require_server_name_indication
544        self.provisioning_state = provisioning_state
545
546
547class ApplicationGatewayIPConfiguration(SubResource):
548    """IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.
549
550    :param id: Resource Identifier.
551    :type id: str
552    :param name: Name of the resource that is unique within a resource group. This name can be used
553     to access the resource.
554    :type name: str
555    :param etag: A unique read-only string that changes whenever the resource is updated.
556    :type etag: str
557    :param subnet: Reference of the subnet resource. A subnet from where application gateway gets
558     its private address.
559    :type subnet: ~azure.mgmt.network.v2015_06_15.models.SubResource
560    :param provisioning_state: Provisioning state of the application gateway subnet resource.
561     Possible values are: 'Updating', 'Deleting', and 'Failed'.
562    :type provisioning_state: str
563    """
564
565    _attribute_map = {
566        'id': {'key': 'id', 'type': 'str'},
567        'name': {'key': 'name', 'type': 'str'},
568        'etag': {'key': 'etag', 'type': 'str'},
569        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
570        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
571    }
572
573    def __init__(
574        self,
575        *,
576        id: Optional[str] = None,
577        name: Optional[str] = None,
578        etag: Optional[str] = None,
579        subnet: Optional["SubResource"] = None,
580        provisioning_state: Optional[str] = None,
581        **kwargs
582    ):
583        super(ApplicationGatewayIPConfiguration, self).__init__(id=id, **kwargs)
584        self.name = name
585        self.etag = etag
586        self.subnet = subnet
587        self.provisioning_state = provisioning_state
588
589
590class ApplicationGatewayListResult(msrest.serialization.Model):
591    """Response for ListApplicationGateways API service call.
592
593    :param value: List of an application gateways in a resource group.
594    :type value: list[~azure.mgmt.network.v2015_06_15.models.ApplicationGateway]
595    :param next_link: URL to get the next set of results.
596    :type next_link: str
597    """
598
599    _attribute_map = {
600        'value': {'key': 'value', 'type': '[ApplicationGateway]'},
601        'next_link': {'key': 'nextLink', 'type': 'str'},
602    }
603
604    def __init__(
605        self,
606        *,
607        value: Optional[List["ApplicationGateway"]] = None,
608        next_link: Optional[str] = None,
609        **kwargs
610    ):
611        super(ApplicationGatewayListResult, self).__init__(**kwargs)
612        self.value = value
613        self.next_link = next_link
614
615
616class ApplicationGatewayPathRule(SubResource):
617    """Path rule of URL path map of an application gateway.
618
619    :param id: Resource Identifier.
620    :type id: str
621    :param name: Name of the resource that is unique within a resource group. This name can be used
622     to access the resource.
623    :type name: str
624    :param etag: A unique read-only string that changes whenever the resource is updated.
625    :type etag: str
626    :param paths: Path rules of URL path map.
627    :type paths: list[str]
628    :param backend_address_pool: Backend address pool resource of URL path map.
629    :type backend_address_pool: ~azure.mgmt.network.v2015_06_15.models.SubResource
630    :param backend_http_settings: Backend http settings resource of URL path map.
631    :type backend_http_settings: ~azure.mgmt.network.v2015_06_15.models.SubResource
632    :param provisioning_state: Path rule of URL path map resource. Possible values are: 'Updating',
633     'Deleting', and 'Failed'.
634    :type provisioning_state: str
635    """
636
637    _attribute_map = {
638        'id': {'key': 'id', 'type': 'str'},
639        'name': {'key': 'name', 'type': 'str'},
640        'etag': {'key': 'etag', 'type': 'str'},
641        'paths': {'key': 'properties.paths', 'type': '[str]'},
642        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
643        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
644        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
645    }
646
647    def __init__(
648        self,
649        *,
650        id: Optional[str] = None,
651        name: Optional[str] = None,
652        etag: Optional[str] = None,
653        paths: Optional[List[str]] = None,
654        backend_address_pool: Optional["SubResource"] = None,
655        backend_http_settings: Optional["SubResource"] = None,
656        provisioning_state: Optional[str] = None,
657        **kwargs
658    ):
659        super(ApplicationGatewayPathRule, self).__init__(id=id, **kwargs)
660        self.name = name
661        self.etag = etag
662        self.paths = paths
663        self.backend_address_pool = backend_address_pool
664        self.backend_http_settings = backend_http_settings
665        self.provisioning_state = provisioning_state
666
667
668class ApplicationGatewayProbe(SubResource):
669    """Probe of the application gateway.
670
671    :param id: Resource Identifier.
672    :type id: str
673    :param name: Name of the resource that is unique within a resource group. This name can be used
674     to access the resource.
675    :type name: str
676    :param etag: A unique read-only string that changes whenever the resource is updated.
677    :type etag: str
678    :param protocol: Protocol. Possible values are: 'Http' and 'Https'. Possible values include:
679     "Http", "Https".
680    :type protocol: str or ~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayProtocol
681    :param host: Host name to send the probe to.
682    :type host: str
683    :param path: Relative path of probe. Valid path starts from '/'. Probe is sent to
684     :code:`<Protocol>`://:code:`<host>`::code:`<port>`:code:`<path>`.
685    :type path: str
686    :param interval: The probing interval in seconds. This is the time interval between two
687     consecutive probes. Acceptable values are from 1 second to 86400 seconds.
688    :type interval: int
689    :param timeout: the probe timeout in seconds. Probe marked as failed if valid response is not
690     received with this timeout period. Acceptable values are from 1 second to 86400 seconds.
691    :type timeout: int
692    :param unhealthy_threshold: The probe retry count. Backend server is marked down after
693     consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second
694     to 20.
695    :type unhealthy_threshold: int
696    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
697     values are: 'Updating', 'Deleting', and 'Failed'.
698    :type provisioning_state: str
699    """
700
701    _attribute_map = {
702        'id': {'key': 'id', 'type': 'str'},
703        'name': {'key': 'name', 'type': 'str'},
704        'etag': {'key': 'etag', 'type': 'str'},
705        'protocol': {'key': 'properties.protocol', 'type': 'str'},
706        'host': {'key': 'properties.host', 'type': 'str'},
707        'path': {'key': 'properties.path', 'type': 'str'},
708        'interval': {'key': 'properties.interval', 'type': 'int'},
709        'timeout': {'key': 'properties.timeout', 'type': 'int'},
710        'unhealthy_threshold': {'key': 'properties.unhealthyThreshold', 'type': 'int'},
711        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
712    }
713
714    def __init__(
715        self,
716        *,
717        id: Optional[str] = None,
718        name: Optional[str] = None,
719        etag: Optional[str] = None,
720        protocol: Optional[Union[str, "ApplicationGatewayProtocol"]] = None,
721        host: Optional[str] = None,
722        path: Optional[str] = None,
723        interval: Optional[int] = None,
724        timeout: Optional[int] = None,
725        unhealthy_threshold: Optional[int] = None,
726        provisioning_state: Optional[str] = None,
727        **kwargs
728    ):
729        super(ApplicationGatewayProbe, self).__init__(id=id, **kwargs)
730        self.name = name
731        self.etag = etag
732        self.protocol = protocol
733        self.host = host
734        self.path = path
735        self.interval = interval
736        self.timeout = timeout
737        self.unhealthy_threshold = unhealthy_threshold
738        self.provisioning_state = provisioning_state
739
740
741class ApplicationGatewayRequestRoutingRule(SubResource):
742    """Request routing rule of an application gateway.
743
744    :param id: Resource Identifier.
745    :type id: str
746    :param name: Name of the resource that is unique within a resource group. This name can be used
747     to access the resource.
748    :type name: str
749    :param etag: A unique read-only string that changes whenever the resource is updated.
750    :type etag: str
751    :param rule_type: Rule type. Possible values are: 'Basic' and 'PathBasedRouting'. Possible
752     values include: "Basic", "PathBasedRouting".
753    :type rule_type: str or
754     ~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayRequestRoutingRuleType
755    :param backend_address_pool: Backend address pool resource of the application gateway.
756    :type backend_address_pool: ~azure.mgmt.network.v2015_06_15.models.SubResource
757    :param backend_http_settings: Frontend port resource of the application gateway.
758    :type backend_http_settings: ~azure.mgmt.network.v2015_06_15.models.SubResource
759    :param http_listener: Http listener resource of the application gateway.
760    :type http_listener: ~azure.mgmt.network.v2015_06_15.models.SubResource
761    :param url_path_map: URL path map resource of the application gateway.
762    :type url_path_map: ~azure.mgmt.network.v2015_06_15.models.SubResource
763    :param provisioning_state: Provisioning state of the request routing rule resource. Possible
764     values are: 'Updating', 'Deleting', and 'Failed'.
765    :type provisioning_state: str
766    """
767
768    _attribute_map = {
769        'id': {'key': 'id', 'type': 'str'},
770        'name': {'key': 'name', 'type': 'str'},
771        'etag': {'key': 'etag', 'type': 'str'},
772        'rule_type': {'key': 'properties.ruleType', 'type': 'str'},
773        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
774        'backend_http_settings': {'key': 'properties.backendHttpSettings', 'type': 'SubResource'},
775        'http_listener': {'key': 'properties.httpListener', 'type': 'SubResource'},
776        'url_path_map': {'key': 'properties.urlPathMap', 'type': 'SubResource'},
777        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
778    }
779
780    def __init__(
781        self,
782        *,
783        id: Optional[str] = None,
784        name: Optional[str] = None,
785        etag: Optional[str] = None,
786        rule_type: Optional[Union[str, "ApplicationGatewayRequestRoutingRuleType"]] = None,
787        backend_address_pool: Optional["SubResource"] = None,
788        backend_http_settings: Optional["SubResource"] = None,
789        http_listener: Optional["SubResource"] = None,
790        url_path_map: Optional["SubResource"] = None,
791        provisioning_state: Optional[str] = None,
792        **kwargs
793    ):
794        super(ApplicationGatewayRequestRoutingRule, self).__init__(id=id, **kwargs)
795        self.name = name
796        self.etag = etag
797        self.rule_type = rule_type
798        self.backend_address_pool = backend_address_pool
799        self.backend_http_settings = backend_http_settings
800        self.http_listener = http_listener
801        self.url_path_map = url_path_map
802        self.provisioning_state = provisioning_state
803
804
805class ApplicationGatewaySku(msrest.serialization.Model):
806    """SKU of application gateway.
807
808    :param name: Name of an application gateway SKU. Possible values are: 'Standard_Small',
809     'Standard_Medium', 'Standard_Large', 'WAF_Medium', and 'WAF_Large'. Possible values include:
810     "Standard_Small", "Standard_Medium", "Standard_Large".
811    :type name: str or ~azure.mgmt.network.v2015_06_15.models.ApplicationGatewaySkuName
812    :param tier: Tier of an application gateway. Possible values include: "Standard".
813    :type tier: str or ~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayTier
814    :param capacity: Capacity (instance count) of an application gateway.
815    :type capacity: int
816    """
817
818    _attribute_map = {
819        'name': {'key': 'name', 'type': 'str'},
820        'tier': {'key': 'tier', 'type': 'str'},
821        'capacity': {'key': 'capacity', 'type': 'int'},
822    }
823
824    def __init__(
825        self,
826        *,
827        name: Optional[Union[str, "ApplicationGatewaySkuName"]] = None,
828        tier: Optional[Union[str, "ApplicationGatewayTier"]] = None,
829        capacity: Optional[int] = None,
830        **kwargs
831    ):
832        super(ApplicationGatewaySku, self).__init__(**kwargs)
833        self.name = name
834        self.tier = tier
835        self.capacity = capacity
836
837
838class ApplicationGatewaySslCertificate(SubResource):
839    """SSL certificates of an application gateway.
840
841    :param id: Resource Identifier.
842    :type id: str
843    :param name: Name of the resource that is unique within a resource group. This name can be used
844     to access the resource.
845    :type name: str
846    :param etag: A unique read-only string that changes whenever the resource is updated.
847    :type etag: str
848    :param data: Base-64 encoded pfx certificate. Only applicable in PUT Request.
849    :type data: str
850    :param password: Password for the pfx file specified in data. Only applicable in PUT request.
851    :type password: str
852    :param public_cert_data: Base-64 encoded Public cert data corresponding to pfx specified in
853     data. Only applicable in GET request.
854    :type public_cert_data: str
855    :param provisioning_state: Provisioning state of the SSL certificate resource Possible values
856     are: 'Updating', 'Deleting', and 'Failed'.
857    :type provisioning_state: str
858    """
859
860    _attribute_map = {
861        'id': {'key': 'id', 'type': 'str'},
862        'name': {'key': 'name', 'type': 'str'},
863        'etag': {'key': 'etag', 'type': 'str'},
864        'data': {'key': 'properties.data', 'type': 'str'},
865        'password': {'key': 'properties.password', 'type': 'str'},
866        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
867        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
868    }
869
870    def __init__(
871        self,
872        *,
873        id: Optional[str] = None,
874        name: Optional[str] = None,
875        etag: Optional[str] = None,
876        data: Optional[str] = None,
877        password: Optional[str] = None,
878        public_cert_data: Optional[str] = None,
879        provisioning_state: Optional[str] = None,
880        **kwargs
881    ):
882        super(ApplicationGatewaySslCertificate, self).__init__(id=id, **kwargs)
883        self.name = name
884        self.etag = etag
885        self.data = data
886        self.password = password
887        self.public_cert_data = public_cert_data
888        self.provisioning_state = provisioning_state
889
890
891class ApplicationGatewayUrlPathMap(SubResource):
892    """UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.
893
894    :param id: Resource Identifier.
895    :type id: str
896    :param name: Name of the resource that is unique within a resource group. This name can be used
897     to access the resource.
898    :type name: str
899    :param etag: A unique read-only string that changes whenever the resource is updated.
900    :type etag: str
901    :param default_backend_address_pool: Default backend address pool resource of URL path map.
902    :type default_backend_address_pool: ~azure.mgmt.network.v2015_06_15.models.SubResource
903    :param default_backend_http_settings: Default backend http settings resource of URL path map.
904    :type default_backend_http_settings: ~azure.mgmt.network.v2015_06_15.models.SubResource
905    :param path_rules: Path rule of URL path map resource.
906    :type path_rules: list[~azure.mgmt.network.v2015_06_15.models.ApplicationGatewayPathRule]
907    :param provisioning_state: Provisioning state of the backend http settings resource. Possible
908     values are: 'Updating', 'Deleting', and 'Failed'.
909    :type provisioning_state: str
910    """
911
912    _attribute_map = {
913        'id': {'key': 'id', 'type': 'str'},
914        'name': {'key': 'name', 'type': 'str'},
915        'etag': {'key': 'etag', 'type': 'str'},
916        'default_backend_address_pool': {'key': 'properties.defaultBackendAddressPool', 'type': 'SubResource'},
917        'default_backend_http_settings': {'key': 'properties.defaultBackendHttpSettings', 'type': 'SubResource'},
918        'path_rules': {'key': 'properties.pathRules', 'type': '[ApplicationGatewayPathRule]'},
919        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
920    }
921
922    def __init__(
923        self,
924        *,
925        id: Optional[str] = None,
926        name: Optional[str] = None,
927        etag: Optional[str] = None,
928        default_backend_address_pool: Optional["SubResource"] = None,
929        default_backend_http_settings: Optional["SubResource"] = None,
930        path_rules: Optional[List["ApplicationGatewayPathRule"]] = None,
931        provisioning_state: Optional[str] = None,
932        **kwargs
933    ):
934        super(ApplicationGatewayUrlPathMap, self).__init__(id=id, **kwargs)
935        self.name = name
936        self.etag = etag
937        self.default_backend_address_pool = default_backend_address_pool
938        self.default_backend_http_settings = default_backend_http_settings
939        self.path_rules = path_rules
940        self.provisioning_state = provisioning_state
941
942
943class AuthorizationListResult(msrest.serialization.Model):
944    """Response for ListAuthorizations API service call retrieves all authorizations that belongs to an ExpressRouteCircuit.
945
946    :param value: The authorizations in an ExpressRoute Circuit.
947    :type value: list[~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitAuthorization]
948    :param next_link: The URL to get the next set of results.
949    :type next_link: str
950    """
951
952    _attribute_map = {
953        'value': {'key': 'value', 'type': '[ExpressRouteCircuitAuthorization]'},
954        'next_link': {'key': 'nextLink', 'type': 'str'},
955    }
956
957    def __init__(
958        self,
959        *,
960        value: Optional[List["ExpressRouteCircuitAuthorization"]] = None,
961        next_link: Optional[str] = None,
962        **kwargs
963    ):
964        super(AuthorizationListResult, self).__init__(**kwargs)
965        self.value = value
966        self.next_link = next_link
967
968
969class AzureAsyncOperationResult(msrest.serialization.Model):
970    """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.
971
972    :param status: Status of the Azure async operation. Possible values are: 'InProgress',
973     'Succeeded', and 'Failed'. Possible values include: "InProgress", "Succeeded", "Failed".
974    :type status: str or ~azure.mgmt.network.v2015_06_15.models.NetworkOperationStatus
975    :param error: Error object properties.
976    :type error: ~azure.mgmt.network.v2015_06_15.models.Error
977    """
978
979    _attribute_map = {
980        'status': {'key': 'status', 'type': 'str'},
981        'error': {'key': 'error', 'type': 'Error'},
982    }
983
984    def __init__(
985        self,
986        *,
987        status: Optional[Union[str, "NetworkOperationStatus"]] = None,
988        error: Optional["Error"] = None,
989        **kwargs
990    ):
991        super(AzureAsyncOperationResult, self).__init__(**kwargs)
992        self.status = status
993        self.error = error
994
995
996class BackendAddressPool(SubResource):
997    """Pool of backend IP addresses.
998
999    Variables are only populated by the server, and will be ignored when sending a request.
1000
1001    :param id: Resource Identifier.
1002    :type id: str
1003    :param name: Gets name of the resource that is unique within a resource group. This name can be
1004     used to access the resource.
1005    :type name: str
1006    :param etag: A unique read-only string that changes whenever the resource is updated.
1007    :type etag: str
1008    :param backend_ip_configurations: Gets collection of references to IP addresses defined in
1009     network interfaces.
1010    :type backend_ip_configurations:
1011     list[~azure.mgmt.network.v2015_06_15.models.NetworkInterfaceIPConfiguration]
1012    :ivar load_balancing_rules: Gets load balancing rules that use this backend address pool.
1013    :vartype load_balancing_rules: list[~azure.mgmt.network.v2015_06_15.models.SubResource]
1014    :param outbound_nat_rule: Gets outbound rules that use this backend address pool.
1015    :type outbound_nat_rule: ~azure.mgmt.network.v2015_06_15.models.SubResource
1016    :param provisioning_state: Get provisioning state of the public IP resource. Possible values
1017     are: 'Updating', 'Deleting', and 'Failed'.
1018    :type provisioning_state: str
1019    """
1020
1021    _validation = {
1022        'load_balancing_rules': {'readonly': True},
1023    }
1024
1025    _attribute_map = {
1026        'id': {'key': 'id', 'type': 'str'},
1027        'name': {'key': 'name', 'type': 'str'},
1028        'etag': {'key': 'etag', 'type': 'str'},
1029        'backend_ip_configurations': {'key': 'properties.backendIPConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
1030        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
1031        'outbound_nat_rule': {'key': 'properties.outboundNatRule', 'type': 'SubResource'},
1032        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1033    }
1034
1035    def __init__(
1036        self,
1037        *,
1038        id: Optional[str] = None,
1039        name: Optional[str] = None,
1040        etag: Optional[str] = None,
1041        backend_ip_configurations: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
1042        outbound_nat_rule: Optional["SubResource"] = None,
1043        provisioning_state: Optional[str] = None,
1044        **kwargs
1045    ):
1046        super(BackendAddressPool, self).__init__(id=id, **kwargs)
1047        self.name = name
1048        self.etag = etag
1049        self.backend_ip_configurations = backend_ip_configurations
1050        self.load_balancing_rules = None
1051        self.outbound_nat_rule = outbound_nat_rule
1052        self.provisioning_state = provisioning_state
1053
1054
1055class BgpSettings(msrest.serialization.Model):
1056    """BgpSettings.
1057
1058    :param asn: Gets or sets this BGP speaker's ASN.
1059    :type asn: long
1060    :param bgp_peering_address: Gets or sets the BGP peering address and BGP identifier of this BGP
1061     speaker.
1062    :type bgp_peering_address: str
1063    :param peer_weight: Gets or sets the weight added to routes learned from this BGP speaker.
1064    :type peer_weight: int
1065    """
1066
1067    _attribute_map = {
1068        'asn': {'key': 'asn', 'type': 'long'},
1069        'bgp_peering_address': {'key': 'bgpPeeringAddress', 'type': 'str'},
1070        'peer_weight': {'key': 'peerWeight', 'type': 'int'},
1071    }
1072
1073    def __init__(
1074        self,
1075        *,
1076        asn: Optional[int] = None,
1077        bgp_peering_address: Optional[str] = None,
1078        peer_weight: Optional[int] = None,
1079        **kwargs
1080    ):
1081        super(BgpSettings, self).__init__(**kwargs)
1082        self.asn = asn
1083        self.bgp_peering_address = bgp_peering_address
1084        self.peer_weight = peer_weight
1085
1086
1087class ConnectionResetSharedKey(msrest.serialization.Model):
1088    """ConnectionResetSharedKey.
1089
1090    :param key_length: The virtual network connection reset shared key length.
1091    :type key_length: long
1092    """
1093
1094    _attribute_map = {
1095        'key_length': {'key': 'keyLength', 'type': 'long'},
1096    }
1097
1098    def __init__(
1099        self,
1100        *,
1101        key_length: Optional[int] = None,
1102        **kwargs
1103    ):
1104        super(ConnectionResetSharedKey, self).__init__(**kwargs)
1105        self.key_length = key_length
1106
1107
1108class ConnectionSharedKey(msrest.serialization.Model):
1109    """Response for GetConnectionSharedKey API service call.
1110
1111    :param value: The virtual network connection shared key value.
1112    :type value: str
1113    """
1114
1115    _attribute_map = {
1116        'value': {'key': 'value', 'type': 'str'},
1117    }
1118
1119    def __init__(
1120        self,
1121        *,
1122        value: Optional[str] = None,
1123        **kwargs
1124    ):
1125        super(ConnectionSharedKey, self).__init__(**kwargs)
1126        self.value = value
1127
1128
1129class ConnectionSharedKeyResult(msrest.serialization.Model):
1130    """Response for CheckConnectionSharedKey API service call.
1131
1132    :param value: The virtual network connection shared key value.
1133    :type value: str
1134    """
1135
1136    _attribute_map = {
1137        'value': {'key': 'value', 'type': 'str'},
1138    }
1139
1140    def __init__(
1141        self,
1142        *,
1143        value: Optional[str] = None,
1144        **kwargs
1145    ):
1146        super(ConnectionSharedKeyResult, self).__init__(**kwargs)
1147        self.value = value
1148
1149
1150class DhcpOptions(msrest.serialization.Model):
1151    """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.
1152
1153    :param dns_servers: The list of DNS servers IP addresses.
1154    :type dns_servers: list[str]
1155    """
1156
1157    _attribute_map = {
1158        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
1159    }
1160
1161    def __init__(
1162        self,
1163        *,
1164        dns_servers: Optional[List[str]] = None,
1165        **kwargs
1166    ):
1167        super(DhcpOptions, self).__init__(**kwargs)
1168        self.dns_servers = dns_servers
1169
1170
1171class DnsNameAvailabilityResult(msrest.serialization.Model):
1172    """Response for the CheckDnsNameAvailability API service call.
1173
1174    :param available: Domain availability (True/False).
1175    :type available: bool
1176    """
1177
1178    _attribute_map = {
1179        'available': {'key': 'available', 'type': 'bool'},
1180    }
1181
1182    def __init__(
1183        self,
1184        *,
1185        available: Optional[bool] = None,
1186        **kwargs
1187    ):
1188        super(DnsNameAvailabilityResult, self).__init__(**kwargs)
1189        self.available = available
1190
1191
1192class Error(msrest.serialization.Model):
1193    """Error object properties.
1194
1195    :param code:
1196    :type code: str
1197    :param message:
1198    :type message: str
1199    :param target:
1200    :type target: str
1201    :param details:
1202    :type details: list[~azure.mgmt.network.v2015_06_15.models.ErrorDetails]
1203    :param inner_error:
1204    :type inner_error: str
1205    """
1206
1207    _attribute_map = {
1208        'code': {'key': 'code', 'type': 'str'},
1209        'message': {'key': 'message', 'type': 'str'},
1210        'target': {'key': 'target', 'type': 'str'},
1211        'details': {'key': 'details', 'type': '[ErrorDetails]'},
1212        'inner_error': {'key': 'innerError', 'type': 'str'},
1213    }
1214
1215    def __init__(
1216        self,
1217        *,
1218        code: Optional[str] = None,
1219        message: Optional[str] = None,
1220        target: Optional[str] = None,
1221        details: Optional[List["ErrorDetails"]] = None,
1222        inner_error: Optional[str] = None,
1223        **kwargs
1224    ):
1225        super(Error, self).__init__(**kwargs)
1226        self.code = code
1227        self.message = message
1228        self.target = target
1229        self.details = details
1230        self.inner_error = inner_error
1231
1232
1233class ErrorDetails(msrest.serialization.Model):
1234    """Error details properties.
1235
1236    :param code:
1237    :type code: str
1238    :param target:
1239    :type target: str
1240    :param message:
1241    :type message: str
1242    """
1243
1244    _attribute_map = {
1245        'code': {'key': 'code', 'type': 'str'},
1246        'target': {'key': 'target', 'type': 'str'},
1247        'message': {'key': 'message', 'type': 'str'},
1248    }
1249
1250    def __init__(
1251        self,
1252        *,
1253        code: Optional[str] = None,
1254        target: Optional[str] = None,
1255        message: Optional[str] = None,
1256        **kwargs
1257    ):
1258        super(ErrorDetails, self).__init__(**kwargs)
1259        self.code = code
1260        self.target = target
1261        self.message = message
1262
1263
1264class ExpressRouteCircuit(Resource):
1265    """ExpressRouteCircuit resource.
1266
1267    Variables are only populated by the server, and will be ignored when sending a request.
1268
1269    :param id: Resource Identifier.
1270    :type id: str
1271    :ivar name: Resource name.
1272    :vartype name: str
1273    :ivar type: Resource type.
1274    :vartype type: str
1275    :param location: Resource location.
1276    :type location: str
1277    :param tags: A set of tags. Resource tags.
1278    :type tags: dict[str, str]
1279    :param sku: The SKU.
1280    :type sku: ~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitSku
1281    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
1282    :type etag: str
1283    :param circuit_provisioning_state: The CircuitProvisioningState state of the resource.
1284    :type circuit_provisioning_state: str
1285    :param service_provider_provisioning_state: The ServiceProviderProvisioningState state of the
1286     resource. Possible values are 'NotProvisioned', 'Provisioning', 'Provisioned', and
1287     'Deprovisioning'. Possible values include: "NotProvisioned", "Provisioning", "Provisioned",
1288     "Deprovisioning".
1289    :type service_provider_provisioning_state: str or
1290     ~azure.mgmt.network.v2015_06_15.models.ServiceProviderProvisioningState
1291    :param authorizations: The list of authorizations.
1292    :type authorizations:
1293     list[~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitAuthorization]
1294    :param peerings: The list of peerings.
1295    :type peerings: list[~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitPeering]
1296    :param service_key: The ServiceKey.
1297    :type service_key: str
1298    :param service_provider_notes: The ServiceProviderNotes.
1299    :type service_provider_notes: str
1300    :param service_provider_properties: The ServiceProviderProperties.
1301    :type service_provider_properties:
1302     ~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitServiceProviderProperties
1303    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
1304     values are: 'Updating', 'Deleting', and 'Failed'.
1305    :type provisioning_state: str
1306    """
1307
1308    _validation = {
1309        'name': {'readonly': True},
1310        'type': {'readonly': True},
1311    }
1312
1313    _attribute_map = {
1314        'id': {'key': 'id', 'type': 'str'},
1315        'name': {'key': 'name', 'type': 'str'},
1316        'type': {'key': 'type', 'type': 'str'},
1317        'location': {'key': 'location', 'type': 'str'},
1318        'tags': {'key': 'tags', 'type': '{str}'},
1319        'sku': {'key': 'sku', 'type': 'ExpressRouteCircuitSku'},
1320        'etag': {'key': 'etag', 'type': 'str'},
1321        'circuit_provisioning_state': {'key': 'properties.circuitProvisioningState', 'type': 'str'},
1322        'service_provider_provisioning_state': {'key': 'properties.serviceProviderProvisioningState', 'type': 'str'},
1323        'authorizations': {'key': 'properties.authorizations', 'type': '[ExpressRouteCircuitAuthorization]'},
1324        'peerings': {'key': 'properties.peerings', 'type': '[ExpressRouteCircuitPeering]'},
1325        'service_key': {'key': 'properties.serviceKey', 'type': 'str'},
1326        'service_provider_notes': {'key': 'properties.serviceProviderNotes', 'type': 'str'},
1327        'service_provider_properties': {'key': 'properties.serviceProviderProperties', 'type': 'ExpressRouteCircuitServiceProviderProperties'},
1328        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1329    }
1330
1331    def __init__(
1332        self,
1333        *,
1334        id: Optional[str] = None,
1335        location: Optional[str] = None,
1336        tags: Optional[Dict[str, str]] = None,
1337        sku: Optional["ExpressRouteCircuitSku"] = None,
1338        etag: Optional[str] = None,
1339        circuit_provisioning_state: Optional[str] = None,
1340        service_provider_provisioning_state: Optional[Union[str, "ServiceProviderProvisioningState"]] = None,
1341        authorizations: Optional[List["ExpressRouteCircuitAuthorization"]] = None,
1342        peerings: Optional[List["ExpressRouteCircuitPeering"]] = None,
1343        service_key: Optional[str] = None,
1344        service_provider_notes: Optional[str] = None,
1345        service_provider_properties: Optional["ExpressRouteCircuitServiceProviderProperties"] = None,
1346        provisioning_state: Optional[str] = None,
1347        **kwargs
1348    ):
1349        super(ExpressRouteCircuit, self).__init__(id=id, location=location, tags=tags, **kwargs)
1350        self.sku = sku
1351        self.etag = etag
1352        self.circuit_provisioning_state = circuit_provisioning_state
1353        self.service_provider_provisioning_state = service_provider_provisioning_state
1354        self.authorizations = authorizations
1355        self.peerings = peerings
1356        self.service_key = service_key
1357        self.service_provider_notes = service_provider_notes
1358        self.service_provider_properties = service_provider_properties
1359        self.provisioning_state = provisioning_state
1360
1361
1362class ExpressRouteCircuitArpTable(msrest.serialization.Model):
1363    """The ARP table associated with the ExpressRouteCircuit.
1364
1365    :param ip_address: The IP address.
1366    :type ip_address: str
1367    :param mac_address: The MAC address.
1368    :type mac_address: str
1369    """
1370
1371    _attribute_map = {
1372        'ip_address': {'key': 'ipAddress', 'type': 'str'},
1373        'mac_address': {'key': 'macAddress', 'type': 'str'},
1374    }
1375
1376    def __init__(
1377        self,
1378        *,
1379        ip_address: Optional[str] = None,
1380        mac_address: Optional[str] = None,
1381        **kwargs
1382    ):
1383        super(ExpressRouteCircuitArpTable, self).__init__(**kwargs)
1384        self.ip_address = ip_address
1385        self.mac_address = mac_address
1386
1387
1388class ExpressRouteCircuitAuthorization(SubResource):
1389    """Authorization in an ExpressRouteCircuit resource.
1390
1391    :param id: Resource Identifier.
1392    :type id: str
1393    :param name: Gets name of the resource that is unique within a resource group. This name can be
1394     used to access the resource.
1395    :type name: str
1396    :param etag: A unique read-only string that changes whenever the resource is updated.
1397    :type etag: str
1398    :param authorization_key: The authorization key.
1399    :type authorization_key: str
1400    :param authorization_use_status: AuthorizationUseStatus. Possible values are: 'Available' and
1401     'InUse'. Possible values include: "Available", "InUse".
1402    :type authorization_use_status: str or
1403     ~azure.mgmt.network.v2015_06_15.models.AuthorizationUseStatus
1404    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
1405     values are: 'Updating', 'Deleting', and 'Failed'.
1406    :type provisioning_state: str
1407    """
1408
1409    _attribute_map = {
1410        'id': {'key': 'id', 'type': 'str'},
1411        'name': {'key': 'name', 'type': 'str'},
1412        'etag': {'key': 'etag', 'type': 'str'},
1413        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
1414        'authorization_use_status': {'key': 'properties.authorizationUseStatus', 'type': 'str'},
1415        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1416    }
1417
1418    def __init__(
1419        self,
1420        *,
1421        id: Optional[str] = None,
1422        name: Optional[str] = None,
1423        etag: Optional[str] = None,
1424        authorization_key: Optional[str] = None,
1425        authorization_use_status: Optional[Union[str, "AuthorizationUseStatus"]] = None,
1426        provisioning_state: Optional[str] = None,
1427        **kwargs
1428    ):
1429        super(ExpressRouteCircuitAuthorization, self).__init__(id=id, **kwargs)
1430        self.name = name
1431        self.etag = etag
1432        self.authorization_key = authorization_key
1433        self.authorization_use_status = authorization_use_status
1434        self.provisioning_state = provisioning_state
1435
1436
1437class ExpressRouteCircuitListResult(msrest.serialization.Model):
1438    """Response for ListExpressRouteCircuit API service call.
1439
1440    :param value: A list of ExpressRouteCircuits in a resource group.
1441    :type value: list[~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuit]
1442    :param next_link: The URL to get the next set of results.
1443    :type next_link: str
1444    """
1445
1446    _attribute_map = {
1447        'value': {'key': 'value', 'type': '[ExpressRouteCircuit]'},
1448        'next_link': {'key': 'nextLink', 'type': 'str'},
1449    }
1450
1451    def __init__(
1452        self,
1453        *,
1454        value: Optional[List["ExpressRouteCircuit"]] = None,
1455        next_link: Optional[str] = None,
1456        **kwargs
1457    ):
1458        super(ExpressRouteCircuitListResult, self).__init__(**kwargs)
1459        self.value = value
1460        self.next_link = next_link
1461
1462
1463class ExpressRouteCircuitPeering(SubResource):
1464    """Peering in an ExpressRouteCircuit resource.
1465
1466    :param id: Resource Identifier.
1467    :type id: str
1468    :param name: Gets name of the resource that is unique within a resource group. This name can be
1469     used to access the resource.
1470    :type name: str
1471    :param etag: A unique read-only string that changes whenever the resource is updated.
1472    :type etag: str
1473    :param peering_type: The PeeringType. Possible values are: 'AzurePublicPeering',
1474     'AzurePrivatePeering', and 'MicrosoftPeering'. Possible values include: "AzurePublicPeering",
1475     "AzurePrivatePeering", "MicrosoftPeering".
1476    :type peering_type: str or
1477     ~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitPeeringType
1478    :param state: The state of peering. Possible values are: 'Disabled' and 'Enabled'. Possible
1479     values include: "Disabled", "Enabled".
1480    :type state: str or ~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitPeeringState
1481    :param azure_asn: The Azure ASN.
1482    :type azure_asn: int
1483    :param peer_asn: The peer ASN.
1484    :type peer_asn: int
1485    :param primary_peer_address_prefix: The primary address prefix.
1486    :type primary_peer_address_prefix: str
1487    :param secondary_peer_address_prefix: The secondary address prefix.
1488    :type secondary_peer_address_prefix: str
1489    :param primary_azure_port: The primary port.
1490    :type primary_azure_port: str
1491    :param secondary_azure_port: The secondary port.
1492    :type secondary_azure_port: str
1493    :param shared_key: The shared key.
1494    :type shared_key: str
1495    :param vlan_id: The VLAN ID.
1496    :type vlan_id: int
1497    :param microsoft_peering_config: The Microsoft peering configuration.
1498    :type microsoft_peering_config:
1499     ~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitPeeringConfig
1500    :param stats: Gets peering stats.
1501    :type stats: ~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitStats
1502    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
1503     values are: 'Updating', 'Deleting', and 'Failed'.
1504    :type provisioning_state: str
1505    """
1506
1507    _attribute_map = {
1508        'id': {'key': 'id', 'type': 'str'},
1509        'name': {'key': 'name', 'type': 'str'},
1510        'etag': {'key': 'etag', 'type': 'str'},
1511        'peering_type': {'key': 'properties.peeringType', 'type': 'str'},
1512        'state': {'key': 'properties.state', 'type': 'str'},
1513        'azure_asn': {'key': 'properties.azureASN', 'type': 'int'},
1514        'peer_asn': {'key': 'properties.peerASN', 'type': 'int'},
1515        'primary_peer_address_prefix': {'key': 'properties.primaryPeerAddressPrefix', 'type': 'str'},
1516        'secondary_peer_address_prefix': {'key': 'properties.secondaryPeerAddressPrefix', 'type': 'str'},
1517        'primary_azure_port': {'key': 'properties.primaryAzurePort', 'type': 'str'},
1518        'secondary_azure_port': {'key': 'properties.secondaryAzurePort', 'type': 'str'},
1519        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
1520        'vlan_id': {'key': 'properties.vlanId', 'type': 'int'},
1521        'microsoft_peering_config': {'key': 'properties.microsoftPeeringConfig', 'type': 'ExpressRouteCircuitPeeringConfig'},
1522        'stats': {'key': 'properties.stats', 'type': 'ExpressRouteCircuitStats'},
1523        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1524    }
1525
1526    def __init__(
1527        self,
1528        *,
1529        id: Optional[str] = None,
1530        name: Optional[str] = None,
1531        etag: Optional[str] = None,
1532        peering_type: Optional[Union[str, "ExpressRouteCircuitPeeringType"]] = None,
1533        state: Optional[Union[str, "ExpressRouteCircuitPeeringState"]] = None,
1534        azure_asn: Optional[int] = None,
1535        peer_asn: Optional[int] = None,
1536        primary_peer_address_prefix: Optional[str] = None,
1537        secondary_peer_address_prefix: Optional[str] = None,
1538        primary_azure_port: Optional[str] = None,
1539        secondary_azure_port: Optional[str] = None,
1540        shared_key: Optional[str] = None,
1541        vlan_id: Optional[int] = None,
1542        microsoft_peering_config: Optional["ExpressRouteCircuitPeeringConfig"] = None,
1543        stats: Optional["ExpressRouteCircuitStats"] = None,
1544        provisioning_state: Optional[str] = None,
1545        **kwargs
1546    ):
1547        super(ExpressRouteCircuitPeering, self).__init__(id=id, **kwargs)
1548        self.name = name
1549        self.etag = etag
1550        self.peering_type = peering_type
1551        self.state = state
1552        self.azure_asn = azure_asn
1553        self.peer_asn = peer_asn
1554        self.primary_peer_address_prefix = primary_peer_address_prefix
1555        self.secondary_peer_address_prefix = secondary_peer_address_prefix
1556        self.primary_azure_port = primary_azure_port
1557        self.secondary_azure_port = secondary_azure_port
1558        self.shared_key = shared_key
1559        self.vlan_id = vlan_id
1560        self.microsoft_peering_config = microsoft_peering_config
1561        self.stats = stats
1562        self.provisioning_state = provisioning_state
1563
1564
1565class ExpressRouteCircuitPeeringConfig(msrest.serialization.Model):
1566    """Specifies the peering configuration.
1567
1568    :param advertised_public_prefixes: The reference of AdvertisedPublicPrefixes.
1569    :type advertised_public_prefixes: list[str]
1570    :param advertised_public_prefixes_state: AdvertisedPublicPrefixState of the Peering resource.
1571     Possible values are 'NotConfigured', 'Configuring', 'Configured', and 'ValidationNeeded'.
1572     Possible values include: "NotConfigured", "Configuring", "Configured", "ValidationNeeded".
1573    :type advertised_public_prefixes_state: str or
1574     ~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitPeeringAdvertisedPublicPrefixState
1575    :param customer_asn: The CustomerASN of the peering.
1576    :type customer_asn: int
1577    :param routing_registry_name: The RoutingRegistryName of the configuration.
1578    :type routing_registry_name: str
1579    """
1580
1581    _attribute_map = {
1582        'advertised_public_prefixes': {'key': 'advertisedPublicPrefixes', 'type': '[str]'},
1583        'advertised_public_prefixes_state': {'key': 'advertisedPublicPrefixesState', 'type': 'str'},
1584        'customer_asn': {'key': 'customerASN', 'type': 'int'},
1585        'routing_registry_name': {'key': 'routingRegistryName', 'type': 'str'},
1586    }
1587
1588    def __init__(
1589        self,
1590        *,
1591        advertised_public_prefixes: Optional[List[str]] = None,
1592        advertised_public_prefixes_state: Optional[Union[str, "ExpressRouteCircuitPeeringAdvertisedPublicPrefixState"]] = None,
1593        customer_asn: Optional[int] = None,
1594        routing_registry_name: Optional[str] = None,
1595        **kwargs
1596    ):
1597        super(ExpressRouteCircuitPeeringConfig, self).__init__(**kwargs)
1598        self.advertised_public_prefixes = advertised_public_prefixes
1599        self.advertised_public_prefixes_state = advertised_public_prefixes_state
1600        self.customer_asn = customer_asn
1601        self.routing_registry_name = routing_registry_name
1602
1603
1604class ExpressRouteCircuitPeeringListResult(msrest.serialization.Model):
1605    """Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCircuit.
1606
1607    :param value: The peerings in an express route circuit.
1608    :type value: list[~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitPeering]
1609    :param next_link: The URL to get the next set of results.
1610    :type next_link: str
1611    """
1612
1613    _attribute_map = {
1614        'value': {'key': 'value', 'type': '[ExpressRouteCircuitPeering]'},
1615        'next_link': {'key': 'nextLink', 'type': 'str'},
1616    }
1617
1618    def __init__(
1619        self,
1620        *,
1621        value: Optional[List["ExpressRouteCircuitPeering"]] = None,
1622        next_link: Optional[str] = None,
1623        **kwargs
1624    ):
1625        super(ExpressRouteCircuitPeeringListResult, self).__init__(**kwargs)
1626        self.value = value
1627        self.next_link = next_link
1628
1629
1630class ExpressRouteCircuitRoutesTable(msrest.serialization.Model):
1631    """The routes table associated with the ExpressRouteCircuit.
1632
1633    All required parameters must be populated in order to send to Azure.
1634
1635    :param address_prefix: Gets AddressPrefix.
1636    :type address_prefix: str
1637    :param next_hop_type: Required. Gets NextHopType. Possible values include:
1638     "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
1639    :type next_hop_type: str or ~azure.mgmt.network.v2015_06_15.models.RouteNextHopType
1640    :param next_hop_ip: Gets NextHopIP.
1641    :type next_hop_ip: str
1642    :param as_path: Gets AsPath.
1643    :type as_path: str
1644    """
1645
1646    _validation = {
1647        'next_hop_type': {'required': True},
1648    }
1649
1650    _attribute_map = {
1651        'address_prefix': {'key': 'addressPrefix', 'type': 'str'},
1652        'next_hop_type': {'key': 'nextHopType', 'type': 'str'},
1653        'next_hop_ip': {'key': 'nextHopIP', 'type': 'str'},
1654        'as_path': {'key': 'asPath', 'type': 'str'},
1655    }
1656
1657    def __init__(
1658        self,
1659        *,
1660        next_hop_type: Union[str, "RouteNextHopType"],
1661        address_prefix: Optional[str] = None,
1662        next_hop_ip: Optional[str] = None,
1663        as_path: Optional[str] = None,
1664        **kwargs
1665    ):
1666        super(ExpressRouteCircuitRoutesTable, self).__init__(**kwargs)
1667        self.address_prefix = address_prefix
1668        self.next_hop_type = next_hop_type
1669        self.next_hop_ip = next_hop_ip
1670        self.as_path = as_path
1671
1672
1673class ExpressRouteCircuitsArpTableListResult(msrest.serialization.Model):
1674    """Response for ListArpTable associated with the Express Route Circuits API.
1675
1676    :param value: Gets list of the ARP table.
1677    :type value: list[~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitArpTable]
1678    :param next_link: The URL to get the next set of results.
1679    :type next_link: str
1680    """
1681
1682    _attribute_map = {
1683        'value': {'key': 'value', 'type': '[ExpressRouteCircuitArpTable]'},
1684        'next_link': {'key': 'nextLink', 'type': 'str'},
1685    }
1686
1687    def __init__(
1688        self,
1689        *,
1690        value: Optional[List["ExpressRouteCircuitArpTable"]] = None,
1691        next_link: Optional[str] = None,
1692        **kwargs
1693    ):
1694        super(ExpressRouteCircuitsArpTableListResult, self).__init__(**kwargs)
1695        self.value = value
1696        self.next_link = next_link
1697
1698
1699class ExpressRouteCircuitServiceProviderProperties(msrest.serialization.Model):
1700    """Contains ServiceProviderProperties in an ExpressRouteCircuit.
1701
1702    :param service_provider_name: The serviceProviderName.
1703    :type service_provider_name: str
1704    :param peering_location: The peering location.
1705    :type peering_location: str
1706    :param bandwidth_in_mbps: The BandwidthInMbps.
1707    :type bandwidth_in_mbps: int
1708    """
1709
1710    _attribute_map = {
1711        'service_provider_name': {'key': 'serviceProviderName', 'type': 'str'},
1712        'peering_location': {'key': 'peeringLocation', 'type': 'str'},
1713        'bandwidth_in_mbps': {'key': 'bandwidthInMbps', 'type': 'int'},
1714    }
1715
1716    def __init__(
1717        self,
1718        *,
1719        service_provider_name: Optional[str] = None,
1720        peering_location: Optional[str] = None,
1721        bandwidth_in_mbps: Optional[int] = None,
1722        **kwargs
1723    ):
1724        super(ExpressRouteCircuitServiceProviderProperties, self).__init__(**kwargs)
1725        self.service_provider_name = service_provider_name
1726        self.peering_location = peering_location
1727        self.bandwidth_in_mbps = bandwidth_in_mbps
1728
1729
1730class ExpressRouteCircuitSku(msrest.serialization.Model):
1731    """Contains SKU in an ExpressRouteCircuit.
1732
1733    :param name: The name of the SKU.
1734    :type name: str
1735    :param tier: The tier of the SKU. Possible values are 'Standard' and 'Premium'. Possible values
1736     include: "Standard", "Premium".
1737    :type tier: str or ~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitSkuTier
1738    :param family: The family of the SKU. Possible values are: 'UnlimitedData' and 'MeteredData'.
1739     Possible values include: "UnlimitedData", "MeteredData".
1740    :type family: str or ~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitSkuFamily
1741    """
1742
1743    _attribute_map = {
1744        'name': {'key': 'name', 'type': 'str'},
1745        'tier': {'key': 'tier', 'type': 'str'},
1746        'family': {'key': 'family', 'type': 'str'},
1747    }
1748
1749    def __init__(
1750        self,
1751        *,
1752        name: Optional[str] = None,
1753        tier: Optional[Union[str, "ExpressRouteCircuitSkuTier"]] = None,
1754        family: Optional[Union[str, "ExpressRouteCircuitSkuFamily"]] = None,
1755        **kwargs
1756    ):
1757        super(ExpressRouteCircuitSku, self).__init__(**kwargs)
1758        self.name = name
1759        self.tier = tier
1760        self.family = family
1761
1762
1763class ExpressRouteCircuitsRoutesTableListResult(msrest.serialization.Model):
1764    """Response for ListRoutesTable associated with the Express Route Circuits API.
1765
1766    :param value: The list of routes table.
1767    :type value: list[~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitRoutesTable]
1768    :param next_link: The URL to get the next set of results.
1769    :type next_link: str
1770    """
1771
1772    _attribute_map = {
1773        'value': {'key': 'value', 'type': '[ExpressRouteCircuitRoutesTable]'},
1774        'next_link': {'key': 'nextLink', 'type': 'str'},
1775    }
1776
1777    def __init__(
1778        self,
1779        *,
1780        value: Optional[List["ExpressRouteCircuitRoutesTable"]] = None,
1781        next_link: Optional[str] = None,
1782        **kwargs
1783    ):
1784        super(ExpressRouteCircuitsRoutesTableListResult, self).__init__(**kwargs)
1785        self.value = value
1786        self.next_link = next_link
1787
1788
1789class ExpressRouteCircuitsStatsListResult(msrest.serialization.Model):
1790    """Response for ListStats from Express Route Circuits Api service call.
1791
1792    :param value: Gets List of Stats.
1793    :type value: list[~azure.mgmt.network.v2015_06_15.models.ExpressRouteCircuitStats]
1794    :param next_link: Gets the URL to get the next set of results.
1795    :type next_link: str
1796    """
1797
1798    _attribute_map = {
1799        'value': {'key': 'value', 'type': '[ExpressRouteCircuitStats]'},
1800        'next_link': {'key': 'nextLink', 'type': 'str'},
1801    }
1802
1803    def __init__(
1804        self,
1805        *,
1806        value: Optional[List["ExpressRouteCircuitStats"]] = None,
1807        next_link: Optional[str] = None,
1808        **kwargs
1809    ):
1810        super(ExpressRouteCircuitsStatsListResult, self).__init__(**kwargs)
1811        self.value = value
1812        self.next_link = next_link
1813
1814
1815class ExpressRouteCircuitStats(msrest.serialization.Model):
1816    """Contains stats associated with the peering.
1817
1818    :param bytes_in: Gets BytesIn of the peering.
1819    :type bytes_in: int
1820    :param bytes_out: Gets BytesOut of the peering.
1821    :type bytes_out: int
1822    """
1823
1824    _attribute_map = {
1825        'bytes_in': {'key': 'bytesIn', 'type': 'int'},
1826        'bytes_out': {'key': 'bytesOut', 'type': 'int'},
1827    }
1828
1829    def __init__(
1830        self,
1831        *,
1832        bytes_in: Optional[int] = None,
1833        bytes_out: Optional[int] = None,
1834        **kwargs
1835    ):
1836        super(ExpressRouteCircuitStats, self).__init__(**kwargs)
1837        self.bytes_in = bytes_in
1838        self.bytes_out = bytes_out
1839
1840
1841class ExpressRouteServiceProvider(Resource):
1842    """A ExpressRouteResourceProvider object.
1843
1844    Variables are only populated by the server, and will be ignored when sending a request.
1845
1846    :param id: Resource Identifier.
1847    :type id: str
1848    :ivar name: Resource name.
1849    :vartype name: str
1850    :ivar type: Resource type.
1851    :vartype type: str
1852    :param location: Resource location.
1853    :type location: str
1854    :param tags: A set of tags. Resource tags.
1855    :type tags: dict[str, str]
1856    :param peering_locations: Get a list of peering locations.
1857    :type peering_locations: list[str]
1858    :param bandwidths_offered: Gets bandwidths offered.
1859    :type bandwidths_offered:
1860     list[~azure.mgmt.network.v2015_06_15.models.ExpressRouteServiceProviderBandwidthsOffered]
1861    :param provisioning_state: Gets the provisioning state of the resource.
1862    :type provisioning_state: str
1863    """
1864
1865    _validation = {
1866        'name': {'readonly': True},
1867        'type': {'readonly': True},
1868    }
1869
1870    _attribute_map = {
1871        'id': {'key': 'id', 'type': 'str'},
1872        'name': {'key': 'name', 'type': 'str'},
1873        'type': {'key': 'type', 'type': 'str'},
1874        'location': {'key': 'location', 'type': 'str'},
1875        'tags': {'key': 'tags', 'type': '{str}'},
1876        'peering_locations': {'key': 'properties.peeringLocations', 'type': '[str]'},
1877        'bandwidths_offered': {'key': 'properties.bandwidthsOffered', 'type': '[ExpressRouteServiceProviderBandwidthsOffered]'},
1878        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1879    }
1880
1881    def __init__(
1882        self,
1883        *,
1884        id: Optional[str] = None,
1885        location: Optional[str] = None,
1886        tags: Optional[Dict[str, str]] = None,
1887        peering_locations: Optional[List[str]] = None,
1888        bandwidths_offered: Optional[List["ExpressRouteServiceProviderBandwidthsOffered"]] = None,
1889        provisioning_state: Optional[str] = None,
1890        **kwargs
1891    ):
1892        super(ExpressRouteServiceProvider, self).__init__(id=id, location=location, tags=tags, **kwargs)
1893        self.peering_locations = peering_locations
1894        self.bandwidths_offered = bandwidths_offered
1895        self.provisioning_state = provisioning_state
1896
1897
1898class ExpressRouteServiceProviderBandwidthsOffered(msrest.serialization.Model):
1899    """Contains bandwidths offered in ExpressRouteServiceProvider resources.
1900
1901    :param offer_name: The OfferName.
1902    :type offer_name: str
1903    :param value_in_mbps: The ValueInMbps.
1904    :type value_in_mbps: int
1905    """
1906
1907    _attribute_map = {
1908        'offer_name': {'key': 'offerName', 'type': 'str'},
1909        'value_in_mbps': {'key': 'valueInMbps', 'type': 'int'},
1910    }
1911
1912    def __init__(
1913        self,
1914        *,
1915        offer_name: Optional[str] = None,
1916        value_in_mbps: Optional[int] = None,
1917        **kwargs
1918    ):
1919        super(ExpressRouteServiceProviderBandwidthsOffered, self).__init__(**kwargs)
1920        self.offer_name = offer_name
1921        self.value_in_mbps = value_in_mbps
1922
1923
1924class ExpressRouteServiceProviderListResult(msrest.serialization.Model):
1925    """Response for the ListExpressRouteServiceProvider API service call.
1926
1927    :param value: A list of ExpressRouteResourceProvider resources.
1928    :type value: list[~azure.mgmt.network.v2015_06_15.models.ExpressRouteServiceProvider]
1929    :param next_link: The URL to get the next set of results.
1930    :type next_link: str
1931    """
1932
1933    _attribute_map = {
1934        'value': {'key': 'value', 'type': '[ExpressRouteServiceProvider]'},
1935        'next_link': {'key': 'nextLink', 'type': 'str'},
1936    }
1937
1938    def __init__(
1939        self,
1940        *,
1941        value: Optional[List["ExpressRouteServiceProvider"]] = None,
1942        next_link: Optional[str] = None,
1943        **kwargs
1944    ):
1945        super(ExpressRouteServiceProviderListResult, self).__init__(**kwargs)
1946        self.value = value
1947        self.next_link = next_link
1948
1949
1950class FrontendIPConfiguration(SubResource):
1951    """Frontend IP address of the load balancer.
1952
1953    :param id: Resource Identifier.
1954    :type id: str
1955    :param name: The name of the resource that is unique within a resource group. This name can be
1956     used to access the resource.
1957    :type name: str
1958    :param etag: A unique read-only string that changes whenever the resource is updated.
1959    :type etag: str
1960    :param inbound_nat_rules: Read only. Inbound rules URIs that use this frontend IP.
1961    :type inbound_nat_rules: list[~azure.mgmt.network.v2015_06_15.models.SubResource]
1962    :param inbound_nat_pools: Read only. Inbound pools URIs that use this frontend IP.
1963    :type inbound_nat_pools: list[~azure.mgmt.network.v2015_06_15.models.SubResource]
1964    :param outbound_nat_rules: Read only. Outbound rules URIs that use this frontend IP.
1965    :type outbound_nat_rules: list[~azure.mgmt.network.v2015_06_15.models.SubResource]
1966    :param load_balancing_rules: Gets load balancing rules URIs that use this frontend IP.
1967    :type load_balancing_rules: list[~azure.mgmt.network.v2015_06_15.models.SubResource]
1968    :param private_ip_address: The private IP address of the IP configuration.
1969    :type private_ip_address: str
1970    :param private_ip_allocation_method: The Private IP allocation method. Possible values are:
1971     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
1972    :type private_ip_allocation_method: str or
1973     ~azure.mgmt.network.v2015_06_15.models.IPAllocationMethod
1974    :param subnet: The reference of the subnet resource.
1975    :type subnet: ~azure.mgmt.network.v2015_06_15.models.Subnet
1976    :param public_ip_address: The reference of the Public IP resource.
1977    :type public_ip_address: ~azure.mgmt.network.v2015_06_15.models.PublicIPAddress
1978    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
1979     values are: 'Updating', 'Deleting', and 'Failed'.
1980    :type provisioning_state: str
1981    """
1982
1983    _attribute_map = {
1984        'id': {'key': 'id', 'type': 'str'},
1985        'name': {'key': 'name', 'type': 'str'},
1986        'etag': {'key': 'etag', 'type': 'str'},
1987        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[SubResource]'},
1988        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[SubResource]'},
1989        'outbound_nat_rules': {'key': 'properties.outboundNatRules', 'type': '[SubResource]'},
1990        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
1991        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
1992        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
1993        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
1994        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
1995        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
1996    }
1997
1998    def __init__(
1999        self,
2000        *,
2001        id: Optional[str] = None,
2002        name: Optional[str] = None,
2003        etag: Optional[str] = None,
2004        inbound_nat_rules: Optional[List["SubResource"]] = None,
2005        inbound_nat_pools: Optional[List["SubResource"]] = None,
2006        outbound_nat_rules: Optional[List["SubResource"]] = None,
2007        load_balancing_rules: Optional[List["SubResource"]] = None,
2008        private_ip_address: Optional[str] = None,
2009        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
2010        subnet: Optional["Subnet"] = None,
2011        public_ip_address: Optional["PublicIPAddress"] = None,
2012        provisioning_state: Optional[str] = None,
2013        **kwargs
2014    ):
2015        super(FrontendIPConfiguration, self).__init__(id=id, **kwargs)
2016        self.name = name
2017        self.etag = etag
2018        self.inbound_nat_rules = inbound_nat_rules
2019        self.inbound_nat_pools = inbound_nat_pools
2020        self.outbound_nat_rules = outbound_nat_rules
2021        self.load_balancing_rules = load_balancing_rules
2022        self.private_ip_address = private_ip_address
2023        self.private_ip_allocation_method = private_ip_allocation_method
2024        self.subnet = subnet
2025        self.public_ip_address = public_ip_address
2026        self.provisioning_state = provisioning_state
2027
2028
2029class InboundNatPool(SubResource):
2030    """Inbound NAT pool of the load balancer.
2031
2032    :param id: Resource Identifier.
2033    :type id: str
2034    :param name: The name of the resource that is unique within a resource group. This name can be
2035     used to access the resource.
2036    :type name: str
2037    :param etag: A unique read-only string that changes whenever the resource is updated.
2038    :type etag: str
2039    :param frontend_ip_configuration: A reference to frontend IP addresses.
2040    :type frontend_ip_configuration: ~azure.mgmt.network.v2015_06_15.models.SubResource
2041    :param protocol: The transport protocol for the endpoint. Possible values are: 'Udp' or 'Tcp'.
2042     Possible values include: "Udp", "Tcp".
2043    :type protocol: str or ~azure.mgmt.network.v2015_06_15.models.TransportProtocol
2044    :param frontend_port_range_start: The first port number in the range of external ports that
2045     will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values
2046     range between 1 and 65534.
2047    :type frontend_port_range_start: int
2048    :param frontend_port_range_end: The last port number in the range of external ports that will
2049     be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable values range
2050     between 1 and 65535.
2051    :type frontend_port_range_end: int
2052    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
2053     are between 1 and 65535.
2054    :type backend_port: int
2055    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
2056     values are: 'Updating', 'Deleting', and 'Failed'.
2057    :type provisioning_state: str
2058    """
2059
2060    _attribute_map = {
2061        'id': {'key': 'id', 'type': 'str'},
2062        'name': {'key': 'name', 'type': 'str'},
2063        'etag': {'key': 'etag', 'type': 'str'},
2064        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
2065        'protocol': {'key': 'properties.protocol', 'type': 'str'},
2066        'frontend_port_range_start': {'key': 'properties.frontendPortRangeStart', 'type': 'int'},
2067        'frontend_port_range_end': {'key': 'properties.frontendPortRangeEnd', 'type': 'int'},
2068        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
2069        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2070    }
2071
2072    def __init__(
2073        self,
2074        *,
2075        id: Optional[str] = None,
2076        name: Optional[str] = None,
2077        etag: Optional[str] = None,
2078        frontend_ip_configuration: Optional["SubResource"] = None,
2079        protocol: Optional[Union[str, "TransportProtocol"]] = None,
2080        frontend_port_range_start: Optional[int] = None,
2081        frontend_port_range_end: Optional[int] = None,
2082        backend_port: Optional[int] = None,
2083        provisioning_state: Optional[str] = None,
2084        **kwargs
2085    ):
2086        super(InboundNatPool, self).__init__(id=id, **kwargs)
2087        self.name = name
2088        self.etag = etag
2089        self.frontend_ip_configuration = frontend_ip_configuration
2090        self.protocol = protocol
2091        self.frontend_port_range_start = frontend_port_range_start
2092        self.frontend_port_range_end = frontend_port_range_end
2093        self.backend_port = backend_port
2094        self.provisioning_state = provisioning_state
2095
2096
2097class InboundNatRule(SubResource):
2098    """Inbound NAT rule of the load balancer.
2099
2100    :param id: Resource Identifier.
2101    :type id: str
2102    :param name: Gets name of the resource that is unique within a resource group. This name can be
2103     used to access the resource.
2104    :type name: str
2105    :param etag: A unique read-only string that changes whenever the resource is updated.
2106    :type etag: str
2107    :param frontend_ip_configuration: A reference to frontend IP addresses.
2108    :type frontend_ip_configuration: ~azure.mgmt.network.v2015_06_15.models.SubResource
2109    :param backend_ip_configuration: A reference to a private IP address defined on a network
2110     interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations
2111     is forwarded to the backed IP.
2112    :type backend_ip_configuration:
2113     ~azure.mgmt.network.v2015_06_15.models.NetworkInterfaceIPConfiguration
2114    :param protocol: The transport protocol for the endpoint. Possible values are: 'Udp' or 'Tcp'.
2115     Possible values include: "Udp", "Tcp".
2116    :type protocol: str or ~azure.mgmt.network.v2015_06_15.models.TransportProtocol
2117    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
2118     unique within the Load Balancer. Acceptable values range from 1 to 65534.
2119    :type frontend_port: int
2120    :param backend_port: The port used for the internal endpoint. Acceptable values range from 1 to
2121     65535.
2122    :type backend_port: int
2123    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
2124     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
2125     protocol is set to TCP.
2126    :type idle_timeout_in_minutes: int
2127    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
2128     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
2129     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
2130     after you create the endpoint.
2131    :type enable_floating_ip: bool
2132    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
2133     values are: 'Updating', 'Deleting', and 'Failed'.
2134    :type provisioning_state: str
2135    """
2136
2137    _attribute_map = {
2138        'id': {'key': 'id', 'type': 'str'},
2139        'name': {'key': 'name', 'type': 'str'},
2140        'etag': {'key': 'etag', 'type': 'str'},
2141        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
2142        'backend_ip_configuration': {'key': 'properties.backendIPConfiguration', 'type': 'NetworkInterfaceIPConfiguration'},
2143        'protocol': {'key': 'properties.protocol', 'type': 'str'},
2144        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
2145        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
2146        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
2147        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
2148        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2149    }
2150
2151    def __init__(
2152        self,
2153        *,
2154        id: Optional[str] = None,
2155        name: Optional[str] = None,
2156        etag: Optional[str] = None,
2157        frontend_ip_configuration: Optional["SubResource"] = None,
2158        backend_ip_configuration: Optional["NetworkInterfaceIPConfiguration"] = None,
2159        protocol: Optional[Union[str, "TransportProtocol"]] = None,
2160        frontend_port: Optional[int] = None,
2161        backend_port: Optional[int] = None,
2162        idle_timeout_in_minutes: Optional[int] = None,
2163        enable_floating_ip: Optional[bool] = None,
2164        provisioning_state: Optional[str] = None,
2165        **kwargs
2166    ):
2167        super(InboundNatRule, self).__init__(id=id, **kwargs)
2168        self.name = name
2169        self.etag = etag
2170        self.frontend_ip_configuration = frontend_ip_configuration
2171        self.backend_ip_configuration = backend_ip_configuration
2172        self.protocol = protocol
2173        self.frontend_port = frontend_port
2174        self.backend_port = backend_port
2175        self.idle_timeout_in_minutes = idle_timeout_in_minutes
2176        self.enable_floating_ip = enable_floating_ip
2177        self.provisioning_state = provisioning_state
2178
2179
2180class IPConfiguration(SubResource):
2181    """IPConfiguration.
2182
2183    :param id: Resource Identifier.
2184    :type id: str
2185    :param name: The name of the resource that is unique within a resource group. This name can be
2186     used to access the resource.
2187    :type name: str
2188    :param etag: A unique read-only string that changes whenever the resource is updated.
2189    :type etag: str
2190    :param private_ip_address: The private IP address of the IP configuration.
2191    :type private_ip_address: str
2192    :param private_ip_allocation_method: The private IP allocation method. Possible values are
2193     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
2194    :type private_ip_allocation_method: str or
2195     ~azure.mgmt.network.v2015_06_15.models.IPAllocationMethod
2196    :param subnet: The reference of the subnet resource.
2197    :type subnet: ~azure.mgmt.network.v2015_06_15.models.Subnet
2198    :param public_ip_address: The reference of the public IP resource.
2199    :type public_ip_address: ~azure.mgmt.network.v2015_06_15.models.PublicIPAddress
2200    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
2201     values are: 'Updating', 'Deleting', and 'Failed'.
2202    :type provisioning_state: str
2203    """
2204
2205    _attribute_map = {
2206        'id': {'key': 'id', 'type': 'str'},
2207        'name': {'key': 'name', 'type': 'str'},
2208        'etag': {'key': 'etag', 'type': 'str'},
2209        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
2210        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
2211        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
2212        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
2213        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2214    }
2215
2216    def __init__(
2217        self,
2218        *,
2219        id: Optional[str] = None,
2220        name: Optional[str] = None,
2221        etag: Optional[str] = None,
2222        private_ip_address: Optional[str] = None,
2223        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
2224        subnet: Optional["Subnet"] = None,
2225        public_ip_address: Optional["PublicIPAddress"] = None,
2226        provisioning_state: Optional[str] = None,
2227        **kwargs
2228    ):
2229        super(IPConfiguration, self).__init__(id=id, **kwargs)
2230        self.name = name
2231        self.etag = etag
2232        self.private_ip_address = private_ip_address
2233        self.private_ip_allocation_method = private_ip_allocation_method
2234        self.subnet = subnet
2235        self.public_ip_address = public_ip_address
2236        self.provisioning_state = provisioning_state
2237
2238
2239class LoadBalancer(Resource):
2240    """LoadBalancer resource.
2241
2242    Variables are only populated by the server, and will be ignored when sending a request.
2243
2244    :param id: Resource Identifier.
2245    :type id: str
2246    :ivar name: Resource name.
2247    :vartype name: str
2248    :ivar type: Resource type.
2249    :vartype type: str
2250    :param location: Resource location.
2251    :type location: str
2252    :param tags: A set of tags. Resource tags.
2253    :type tags: dict[str, str]
2254    :param etag: A unique read-only string that changes whenever the resource is updated.
2255    :type etag: str
2256    :param frontend_ip_configurations: Object representing the frontend IPs to be used for the load
2257     balancer.
2258    :type frontend_ip_configurations:
2259     list[~azure.mgmt.network.v2015_06_15.models.FrontendIPConfiguration]
2260    :param backend_address_pools: Collection of backend address pools used by a load balancer.
2261    :type backend_address_pools: list[~azure.mgmt.network.v2015_06_15.models.BackendAddressPool]
2262    :param load_balancing_rules: Object collection representing the load balancing rules Gets the
2263     provisioning.
2264    :type load_balancing_rules: list[~azure.mgmt.network.v2015_06_15.models.LoadBalancingRule]
2265    :param probes: Collection of probe objects used in the load balancer.
2266    :type probes: list[~azure.mgmt.network.v2015_06_15.models.Probe]
2267    :param inbound_nat_rules: Collection of inbound NAT Rules used by a load balancer. Defining
2268     inbound NAT rules on your load balancer is mutually exclusive with defining an inbound NAT
2269     pool. Inbound NAT pools are referenced from virtual machine scale sets. NICs that are
2270     associated with individual virtual machines cannot reference an Inbound NAT pool. They have to
2271     reference individual inbound NAT rules.
2272    :type inbound_nat_rules: list[~azure.mgmt.network.v2015_06_15.models.InboundNatRule]
2273    :param inbound_nat_pools: Defines an external port range for inbound NAT to a single backend
2274     port on NICs associated with a load balancer. Inbound NAT rules are created automatically for
2275     each NIC associated with the Load Balancer using an external port from this range. Defining an
2276     Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules.
2277     Inbound NAT pools are referenced from virtual machine scale sets. NICs that are associated with
2278     individual virtual machines cannot reference an inbound NAT pool. They have to reference
2279     individual inbound NAT rules.
2280    :type inbound_nat_pools: list[~azure.mgmt.network.v2015_06_15.models.InboundNatPool]
2281    :param outbound_nat_rules: The outbound NAT rules.
2282    :type outbound_nat_rules: list[~azure.mgmt.network.v2015_06_15.models.OutboundNatRule]
2283    :param resource_guid: The resource GUID property of the load balancer resource.
2284    :type resource_guid: str
2285    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
2286     values are: 'Updating', 'Deleting', and 'Failed'.
2287    :type provisioning_state: str
2288    """
2289
2290    _validation = {
2291        'name': {'readonly': True},
2292        'type': {'readonly': True},
2293    }
2294
2295    _attribute_map = {
2296        'id': {'key': 'id', 'type': 'str'},
2297        'name': {'key': 'name', 'type': 'str'},
2298        'type': {'key': 'type', 'type': 'str'},
2299        'location': {'key': 'location', 'type': 'str'},
2300        'tags': {'key': 'tags', 'type': '{str}'},
2301        'etag': {'key': 'etag', 'type': 'str'},
2302        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[FrontendIPConfiguration]'},
2303        'backend_address_pools': {'key': 'properties.backendAddressPools', 'type': '[BackendAddressPool]'},
2304        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[LoadBalancingRule]'},
2305        'probes': {'key': 'properties.probes', 'type': '[Probe]'},
2306        'inbound_nat_rules': {'key': 'properties.inboundNatRules', 'type': '[InboundNatRule]'},
2307        'inbound_nat_pools': {'key': 'properties.inboundNatPools', 'type': '[InboundNatPool]'},
2308        'outbound_nat_rules': {'key': 'properties.outboundNatRules', 'type': '[OutboundNatRule]'},
2309        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
2310        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2311    }
2312
2313    def __init__(
2314        self,
2315        *,
2316        id: Optional[str] = None,
2317        location: Optional[str] = None,
2318        tags: Optional[Dict[str, str]] = None,
2319        etag: Optional[str] = None,
2320        frontend_ip_configurations: Optional[List["FrontendIPConfiguration"]] = None,
2321        backend_address_pools: Optional[List["BackendAddressPool"]] = None,
2322        load_balancing_rules: Optional[List["LoadBalancingRule"]] = None,
2323        probes: Optional[List["Probe"]] = None,
2324        inbound_nat_rules: Optional[List["InboundNatRule"]] = None,
2325        inbound_nat_pools: Optional[List["InboundNatPool"]] = None,
2326        outbound_nat_rules: Optional[List["OutboundNatRule"]] = None,
2327        resource_guid: Optional[str] = None,
2328        provisioning_state: Optional[str] = None,
2329        **kwargs
2330    ):
2331        super(LoadBalancer, self).__init__(id=id, location=location, tags=tags, **kwargs)
2332        self.etag = etag
2333        self.frontend_ip_configurations = frontend_ip_configurations
2334        self.backend_address_pools = backend_address_pools
2335        self.load_balancing_rules = load_balancing_rules
2336        self.probes = probes
2337        self.inbound_nat_rules = inbound_nat_rules
2338        self.inbound_nat_pools = inbound_nat_pools
2339        self.outbound_nat_rules = outbound_nat_rules
2340        self.resource_guid = resource_guid
2341        self.provisioning_state = provisioning_state
2342
2343
2344class LoadBalancerListResult(msrest.serialization.Model):
2345    """Response for ListLoadBalancers API service call.
2346
2347    :param value: A list of load balancers in a resource group.
2348    :type value: list[~azure.mgmt.network.v2015_06_15.models.LoadBalancer]
2349    :param next_link: The URL to get the next set of results.
2350    :type next_link: str
2351    """
2352
2353    _attribute_map = {
2354        'value': {'key': 'value', 'type': '[LoadBalancer]'},
2355        'next_link': {'key': 'nextLink', 'type': 'str'},
2356    }
2357
2358    def __init__(
2359        self,
2360        *,
2361        value: Optional[List["LoadBalancer"]] = None,
2362        next_link: Optional[str] = None,
2363        **kwargs
2364    ):
2365        super(LoadBalancerListResult, self).__init__(**kwargs)
2366        self.value = value
2367        self.next_link = next_link
2368
2369
2370class LoadBalancingRule(SubResource):
2371    """A load balancing rule for a load balancer.
2372
2373    :param id: Resource Identifier.
2374    :type id: str
2375    :param name: The name of the resource that is unique within a resource group. This name can be
2376     used to access the resource.
2377    :type name: str
2378    :param etag: A unique read-only string that changes whenever the resource is updated.
2379    :type etag: str
2380    :param frontend_ip_configuration: A reference to frontend IP addresses.
2381    :type frontend_ip_configuration: ~azure.mgmt.network.v2015_06_15.models.SubResource
2382    :param backend_address_pool: A reference to a pool of DIPs. Inbound traffic is randomly load
2383     balanced across IPs in the backend IPs.
2384    :type backend_address_pool: ~azure.mgmt.network.v2015_06_15.models.SubResource
2385    :param probe: The reference of the load balancer probe used by the load balancing rule.
2386    :type probe: ~azure.mgmt.network.v2015_06_15.models.SubResource
2387    :param protocol: The transport protocol for the external endpoint. Possible values are 'Udp' or
2388     'Tcp'. Possible values include: "Udp", "Tcp".
2389    :type protocol: str or ~azure.mgmt.network.v2015_06_15.models.TransportProtocol
2390    :param load_distribution: The load distribution policy for this rule. Possible values are
2391     'Default', 'SourceIP', and 'SourceIPProtocol'. Possible values include: "Default", "SourceIP",
2392     "SourceIPProtocol".
2393    :type load_distribution: str or ~azure.mgmt.network.v2015_06_15.models.LoadDistribution
2394    :param frontend_port: The port for the external endpoint. Port numbers for each rule must be
2395     unique within the Load Balancer. Acceptable values are between 1 and 65534.
2396    :type frontend_port: int
2397    :param backend_port: The port used for internal connections on the endpoint. Acceptable values
2398     are between 1 and 65535.
2399    :type backend_port: int
2400    :param idle_timeout_in_minutes: The timeout for the TCP idle connection. The value can be set
2401     between 4 and 30 minutes. The default value is 4 minutes. This element is only used when the
2402     protocol is set to TCP.
2403    :type idle_timeout_in_minutes: int
2404    :param enable_floating_ip: Configures a virtual machine's endpoint for the floating IP
2405     capability required to configure a SQL AlwaysOn Availability Group. This setting is required
2406     when using the SQL AlwaysOn Availability Groups in SQL server. This setting can't be changed
2407     after you create the endpoint.
2408    :type enable_floating_ip: bool
2409    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
2410     values are: 'Updating', 'Deleting', and 'Failed'.
2411    :type provisioning_state: str
2412    """
2413
2414    _attribute_map = {
2415        'id': {'key': 'id', 'type': 'str'},
2416        'name': {'key': 'name', 'type': 'str'},
2417        'etag': {'key': 'etag', 'type': 'str'},
2418        'frontend_ip_configuration': {'key': 'properties.frontendIPConfiguration', 'type': 'SubResource'},
2419        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
2420        'probe': {'key': 'properties.probe', 'type': 'SubResource'},
2421        'protocol': {'key': 'properties.protocol', 'type': 'str'},
2422        'load_distribution': {'key': 'properties.loadDistribution', 'type': 'str'},
2423        'frontend_port': {'key': 'properties.frontendPort', 'type': 'int'},
2424        'backend_port': {'key': 'properties.backendPort', 'type': 'int'},
2425        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
2426        'enable_floating_ip': {'key': 'properties.enableFloatingIP', 'type': 'bool'},
2427        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2428    }
2429
2430    def __init__(
2431        self,
2432        *,
2433        id: Optional[str] = None,
2434        name: Optional[str] = None,
2435        etag: Optional[str] = None,
2436        frontend_ip_configuration: Optional["SubResource"] = None,
2437        backend_address_pool: Optional["SubResource"] = None,
2438        probe: Optional["SubResource"] = None,
2439        protocol: Optional[Union[str, "TransportProtocol"]] = None,
2440        load_distribution: Optional[Union[str, "LoadDistribution"]] = None,
2441        frontend_port: Optional[int] = None,
2442        backend_port: Optional[int] = None,
2443        idle_timeout_in_minutes: Optional[int] = None,
2444        enable_floating_ip: Optional[bool] = None,
2445        provisioning_state: Optional[str] = None,
2446        **kwargs
2447    ):
2448        super(LoadBalancingRule, self).__init__(id=id, **kwargs)
2449        self.name = name
2450        self.etag = etag
2451        self.frontend_ip_configuration = frontend_ip_configuration
2452        self.backend_address_pool = backend_address_pool
2453        self.probe = probe
2454        self.protocol = protocol
2455        self.load_distribution = load_distribution
2456        self.frontend_port = frontend_port
2457        self.backend_port = backend_port
2458        self.idle_timeout_in_minutes = idle_timeout_in_minutes
2459        self.enable_floating_ip = enable_floating_ip
2460        self.provisioning_state = provisioning_state
2461
2462
2463class LocalNetworkGateway(Resource):
2464    """A common class for general resource information.
2465
2466    Variables are only populated by the server, and will be ignored when sending a request.
2467
2468    :param id: Resource Identifier.
2469    :type id: str
2470    :ivar name: Resource name.
2471    :vartype name: str
2472    :ivar type: Resource type.
2473    :vartype type: str
2474    :param location: Resource location.
2475    :type location: str
2476    :param tags: A set of tags. Resource tags.
2477    :type tags: dict[str, str]
2478    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
2479    :type etag: str
2480    :param local_network_address_space: Local network site address space.
2481    :type local_network_address_space: ~azure.mgmt.network.v2015_06_15.models.AddressSpace
2482    :param gateway_ip_address: IP address of local network gateway.
2483    :type gateway_ip_address: str
2484    :param bgp_settings: Local network gateway's BGP speaker settings.
2485    :type bgp_settings: ~azure.mgmt.network.v2015_06_15.models.BgpSettings
2486    :param resource_guid: The resource GUID property of the LocalNetworkGateway resource.
2487    :type resource_guid: str
2488    :param provisioning_state: Gets or sets Provisioning state of the LocalNetworkGateway resource
2489     Updating/Deleting/Failed.
2490    :type provisioning_state: str
2491    """
2492
2493    _validation = {
2494        'name': {'readonly': True},
2495        'type': {'readonly': True},
2496    }
2497
2498    _attribute_map = {
2499        'id': {'key': 'id', 'type': 'str'},
2500        'name': {'key': 'name', 'type': 'str'},
2501        'type': {'key': 'type', 'type': 'str'},
2502        'location': {'key': 'location', 'type': 'str'},
2503        'tags': {'key': 'tags', 'type': '{str}'},
2504        'etag': {'key': 'etag', 'type': 'str'},
2505        'local_network_address_space': {'key': 'properties.localNetworkAddressSpace', 'type': 'AddressSpace'},
2506        'gateway_ip_address': {'key': 'properties.gatewayIpAddress', 'type': 'str'},
2507        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
2508        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
2509        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2510    }
2511
2512    def __init__(
2513        self,
2514        *,
2515        id: Optional[str] = None,
2516        location: Optional[str] = None,
2517        tags: Optional[Dict[str, str]] = None,
2518        etag: Optional[str] = None,
2519        local_network_address_space: Optional["AddressSpace"] = None,
2520        gateway_ip_address: Optional[str] = None,
2521        bgp_settings: Optional["BgpSettings"] = None,
2522        resource_guid: Optional[str] = None,
2523        provisioning_state: Optional[str] = None,
2524        **kwargs
2525    ):
2526        super(LocalNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
2527        self.etag = etag
2528        self.local_network_address_space = local_network_address_space
2529        self.gateway_ip_address = gateway_ip_address
2530        self.bgp_settings = bgp_settings
2531        self.resource_guid = resource_guid
2532        self.provisioning_state = provisioning_state
2533
2534
2535class LocalNetworkGatewayListResult(msrest.serialization.Model):
2536    """Response for ListLocalNetworkGateways API service call.
2537
2538    :param value: A list of local network gateways that exists in a resource group.
2539    :type value: list[~azure.mgmt.network.v2015_06_15.models.LocalNetworkGateway]
2540    :param next_link: The URL to get the next set of results.
2541    :type next_link: str
2542    """
2543
2544    _attribute_map = {
2545        'value': {'key': 'value', 'type': '[LocalNetworkGateway]'},
2546        'next_link': {'key': 'nextLink', 'type': 'str'},
2547    }
2548
2549    def __init__(
2550        self,
2551        *,
2552        value: Optional[List["LocalNetworkGateway"]] = None,
2553        next_link: Optional[str] = None,
2554        **kwargs
2555    ):
2556        super(LocalNetworkGatewayListResult, self).__init__(**kwargs)
2557        self.value = value
2558        self.next_link = next_link
2559
2560
2561class NetworkInterface(Resource):
2562    """A network interface in a resource group.
2563
2564    Variables are only populated by the server, and will be ignored when sending a request.
2565
2566    :param id: Resource Identifier.
2567    :type id: str
2568    :ivar name: Resource name.
2569    :vartype name: str
2570    :ivar type: Resource type.
2571    :vartype type: str
2572    :param location: Resource location.
2573    :type location: str
2574    :param tags: A set of tags. Resource tags.
2575    :type tags: dict[str, str]
2576    :param etag: A unique read-only string that changes whenever the resource is updated.
2577    :type etag: str
2578    :param virtual_machine: The reference of a virtual machine.
2579    :type virtual_machine: ~azure.mgmt.network.v2015_06_15.models.SubResource
2580    :param network_security_group: The reference of the NetworkSecurityGroup resource.
2581    :type network_security_group: ~azure.mgmt.network.v2015_06_15.models.NetworkSecurityGroup
2582    :param ip_configurations: A list of IPConfigurations of the network interface.
2583    :type ip_configurations:
2584     list[~azure.mgmt.network.v2015_06_15.models.NetworkInterfaceIPConfiguration]
2585    :param dns_settings: The DNS settings in network interface.
2586    :type dns_settings: ~azure.mgmt.network.v2015_06_15.models.NetworkInterfaceDnsSettings
2587    :param mac_address: The MAC address of the network interface.
2588    :type mac_address: str
2589    :param primary: Gets whether this is a primary network interface on a virtual machine.
2590    :type primary: bool
2591    :param enable_ip_forwarding: Indicates whether IP forwarding is enabled on this network
2592     interface.
2593    :type enable_ip_forwarding: bool
2594    :param resource_guid: The resource GUID property of the network interface resource.
2595    :type resource_guid: str
2596    :param provisioning_state: The provisioning state of the public IP resource. Possible values
2597     are: 'Updating', 'Deleting', and 'Failed'.
2598    :type provisioning_state: str
2599    """
2600
2601    _validation = {
2602        'name': {'readonly': True},
2603        'type': {'readonly': True},
2604    }
2605
2606    _attribute_map = {
2607        'id': {'key': 'id', 'type': 'str'},
2608        'name': {'key': 'name', 'type': 'str'},
2609        'type': {'key': 'type', 'type': 'str'},
2610        'location': {'key': 'location', 'type': 'str'},
2611        'tags': {'key': 'tags', 'type': '{str}'},
2612        'etag': {'key': 'etag', 'type': 'str'},
2613        'virtual_machine': {'key': 'properties.virtualMachine', 'type': 'SubResource'},
2614        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
2615        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[NetworkInterfaceIPConfiguration]'},
2616        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'NetworkInterfaceDnsSettings'},
2617        'mac_address': {'key': 'properties.macAddress', 'type': 'str'},
2618        'primary': {'key': 'properties.primary', 'type': 'bool'},
2619        'enable_ip_forwarding': {'key': 'properties.enableIPForwarding', 'type': 'bool'},
2620        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
2621        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2622    }
2623
2624    def __init__(
2625        self,
2626        *,
2627        id: Optional[str] = None,
2628        location: Optional[str] = None,
2629        tags: Optional[Dict[str, str]] = None,
2630        etag: Optional[str] = None,
2631        virtual_machine: Optional["SubResource"] = None,
2632        network_security_group: Optional["NetworkSecurityGroup"] = None,
2633        ip_configurations: Optional[List["NetworkInterfaceIPConfiguration"]] = None,
2634        dns_settings: Optional["NetworkInterfaceDnsSettings"] = None,
2635        mac_address: Optional[str] = None,
2636        primary: Optional[bool] = None,
2637        enable_ip_forwarding: Optional[bool] = None,
2638        resource_guid: Optional[str] = None,
2639        provisioning_state: Optional[str] = None,
2640        **kwargs
2641    ):
2642        super(NetworkInterface, self).__init__(id=id, location=location, tags=tags, **kwargs)
2643        self.etag = etag
2644        self.virtual_machine = virtual_machine
2645        self.network_security_group = network_security_group
2646        self.ip_configurations = ip_configurations
2647        self.dns_settings = dns_settings
2648        self.mac_address = mac_address
2649        self.primary = primary
2650        self.enable_ip_forwarding = enable_ip_forwarding
2651        self.resource_guid = resource_guid
2652        self.provisioning_state = provisioning_state
2653
2654
2655class NetworkInterfaceDnsSettings(msrest.serialization.Model):
2656    """DNS settings of a network interface.
2657
2658    :param dns_servers: List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure
2659     provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with other IPs, it must be
2660     the only value in dnsServers collection.
2661    :type dns_servers: list[str]
2662    :param applied_dns_servers: If the VM that uses this NIC is part of an Availability Set, then
2663     this list will have the union of all DNS servers from all NICs that are part of the
2664     Availability Set. This property is what is configured on each of those VMs.
2665    :type applied_dns_servers: list[str]
2666    :param internal_dns_name_label: Relative DNS name for this NIC used for internal communications
2667     between VMs in the same virtual network.
2668    :type internal_dns_name_label: str
2669    :param internal_fqdn: Fully qualified DNS name supporting internal communications between VMs
2670     in the same virtual network.
2671    :type internal_fqdn: str
2672    """
2673
2674    _attribute_map = {
2675        'dns_servers': {'key': 'dnsServers', 'type': '[str]'},
2676        'applied_dns_servers': {'key': 'appliedDnsServers', 'type': '[str]'},
2677        'internal_dns_name_label': {'key': 'internalDnsNameLabel', 'type': 'str'},
2678        'internal_fqdn': {'key': 'internalFqdn', 'type': 'str'},
2679    }
2680
2681    def __init__(
2682        self,
2683        *,
2684        dns_servers: Optional[List[str]] = None,
2685        applied_dns_servers: Optional[List[str]] = None,
2686        internal_dns_name_label: Optional[str] = None,
2687        internal_fqdn: Optional[str] = None,
2688        **kwargs
2689    ):
2690        super(NetworkInterfaceDnsSettings, self).__init__(**kwargs)
2691        self.dns_servers = dns_servers
2692        self.applied_dns_servers = applied_dns_servers
2693        self.internal_dns_name_label = internal_dns_name_label
2694        self.internal_fqdn = internal_fqdn
2695
2696
2697class NetworkInterfaceIPConfiguration(SubResource):
2698    """IPConfiguration in a network interface.
2699
2700    :param id: Resource Identifier.
2701    :type id: str
2702    :param name: The name of the resource that is unique within a resource group. This name can be
2703     used to access the resource.
2704    :type name: str
2705    :param etag: A unique read-only string that changes whenever the resource is updated.
2706    :type etag: str
2707    :param load_balancer_backend_address_pools: The reference of LoadBalancerBackendAddressPool
2708     resource.
2709    :type load_balancer_backend_address_pools:
2710     list[~azure.mgmt.network.v2015_06_15.models.BackendAddressPool]
2711    :param load_balancer_inbound_nat_rules: A list of references of LoadBalancerInboundNatRules.
2712    :type load_balancer_inbound_nat_rules:
2713     list[~azure.mgmt.network.v2015_06_15.models.InboundNatRule]
2714    :param private_ip_address:
2715    :type private_ip_address: str
2716    :param private_ip_allocation_method: Defines how a private IP address is assigned. Possible
2717     values are: 'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
2718    :type private_ip_allocation_method: str or
2719     ~azure.mgmt.network.v2015_06_15.models.IPAllocationMethod
2720    :param subnet: Subnet in a virtual network resource.
2721    :type subnet: ~azure.mgmt.network.v2015_06_15.models.Subnet
2722    :param primary: Gets whether this is a primary customer address on the network interface.
2723    :type primary: bool
2724    :param public_ip_address: Public IP address resource.
2725    :type public_ip_address: ~azure.mgmt.network.v2015_06_15.models.PublicIPAddress
2726    :param provisioning_state:
2727    :type provisioning_state: str
2728    """
2729
2730    _attribute_map = {
2731        'id': {'key': 'id', 'type': 'str'},
2732        'name': {'key': 'name', 'type': 'str'},
2733        'etag': {'key': 'etag', 'type': 'str'},
2734        'load_balancer_backend_address_pools': {'key': 'properties.loadBalancerBackendAddressPools', 'type': '[BackendAddressPool]'},
2735        'load_balancer_inbound_nat_rules': {'key': 'properties.loadBalancerInboundNatRules', 'type': '[InboundNatRule]'},
2736        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
2737        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
2738        'subnet': {'key': 'properties.subnet', 'type': 'Subnet'},
2739        'primary': {'key': 'properties.primary', 'type': 'bool'},
2740        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'PublicIPAddress'},
2741        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2742    }
2743
2744    def __init__(
2745        self,
2746        *,
2747        id: Optional[str] = None,
2748        name: Optional[str] = None,
2749        etag: Optional[str] = None,
2750        load_balancer_backend_address_pools: Optional[List["BackendAddressPool"]] = None,
2751        load_balancer_inbound_nat_rules: Optional[List["InboundNatRule"]] = None,
2752        private_ip_address: Optional[str] = None,
2753        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
2754        subnet: Optional["Subnet"] = None,
2755        primary: Optional[bool] = None,
2756        public_ip_address: Optional["PublicIPAddress"] = None,
2757        provisioning_state: Optional[str] = None,
2758        **kwargs
2759    ):
2760        super(NetworkInterfaceIPConfiguration, self).__init__(id=id, **kwargs)
2761        self.name = name
2762        self.etag = etag
2763        self.load_balancer_backend_address_pools = load_balancer_backend_address_pools
2764        self.load_balancer_inbound_nat_rules = load_balancer_inbound_nat_rules
2765        self.private_ip_address = private_ip_address
2766        self.private_ip_allocation_method = private_ip_allocation_method
2767        self.subnet = subnet
2768        self.primary = primary
2769        self.public_ip_address = public_ip_address
2770        self.provisioning_state = provisioning_state
2771
2772
2773class NetworkInterfaceListResult(msrest.serialization.Model):
2774    """Response for the ListNetworkInterface API service call.
2775
2776    :param value: A list of network interfaces in a resource group.
2777    :type value: list[~azure.mgmt.network.v2015_06_15.models.NetworkInterface]
2778    :param next_link: The URL to get the next set of results.
2779    :type next_link: str
2780    """
2781
2782    _attribute_map = {
2783        'value': {'key': 'value', 'type': '[NetworkInterface]'},
2784        'next_link': {'key': 'nextLink', 'type': 'str'},
2785    }
2786
2787    def __init__(
2788        self,
2789        *,
2790        value: Optional[List["NetworkInterface"]] = None,
2791        next_link: Optional[str] = None,
2792        **kwargs
2793    ):
2794        super(NetworkInterfaceListResult, self).__init__(**kwargs)
2795        self.value = value
2796        self.next_link = next_link
2797
2798
2799class NetworkSecurityGroup(Resource):
2800    """NetworkSecurityGroup resource.
2801
2802    Variables are only populated by the server, and will be ignored when sending a request.
2803
2804    :param id: Resource Identifier.
2805    :type id: str
2806    :ivar name: Resource name.
2807    :vartype name: str
2808    :ivar type: Resource type.
2809    :vartype type: str
2810    :param location: Resource location.
2811    :type location: str
2812    :param tags: A set of tags. Resource tags.
2813    :type tags: dict[str, str]
2814    :param etag: A unique read-only string that changes whenever the resource is updated.
2815    :type etag: str
2816    :param security_rules: A collection of security rules of the network security group.
2817    :type security_rules: list[~azure.mgmt.network.v2015_06_15.models.SecurityRule]
2818    :param default_security_rules: The default security rules of network security group.
2819    :type default_security_rules: list[~azure.mgmt.network.v2015_06_15.models.SecurityRule]
2820    :param network_interfaces: A collection of references to network interfaces.
2821    :type network_interfaces: list[~azure.mgmt.network.v2015_06_15.models.NetworkInterface]
2822    :param subnets: A collection of references to subnets.
2823    :type subnets: list[~azure.mgmt.network.v2015_06_15.models.Subnet]
2824    :param resource_guid: The resource GUID property of the network security group resource.
2825    :type resource_guid: str
2826    :param provisioning_state: The provisioning state of the public IP resource. Possible values
2827     are: 'Updating', 'Deleting', and 'Failed'.
2828    :type provisioning_state: str
2829    """
2830
2831    _validation = {
2832        'name': {'readonly': True},
2833        'type': {'readonly': True},
2834    }
2835
2836    _attribute_map = {
2837        'id': {'key': 'id', 'type': 'str'},
2838        'name': {'key': 'name', 'type': 'str'},
2839        'type': {'key': 'type', 'type': 'str'},
2840        'location': {'key': 'location', 'type': 'str'},
2841        'tags': {'key': 'tags', 'type': '{str}'},
2842        'etag': {'key': 'etag', 'type': 'str'},
2843        'security_rules': {'key': 'properties.securityRules', 'type': '[SecurityRule]'},
2844        'default_security_rules': {'key': 'properties.defaultSecurityRules', 'type': '[SecurityRule]'},
2845        'network_interfaces': {'key': 'properties.networkInterfaces', 'type': '[NetworkInterface]'},
2846        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
2847        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
2848        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2849    }
2850
2851    def __init__(
2852        self,
2853        *,
2854        id: Optional[str] = None,
2855        location: Optional[str] = None,
2856        tags: Optional[Dict[str, str]] = None,
2857        etag: Optional[str] = None,
2858        security_rules: Optional[List["SecurityRule"]] = None,
2859        default_security_rules: Optional[List["SecurityRule"]] = None,
2860        network_interfaces: Optional[List["NetworkInterface"]] = None,
2861        subnets: Optional[List["Subnet"]] = None,
2862        resource_guid: Optional[str] = None,
2863        provisioning_state: Optional[str] = None,
2864        **kwargs
2865    ):
2866        super(NetworkSecurityGroup, self).__init__(id=id, location=location, tags=tags, **kwargs)
2867        self.etag = etag
2868        self.security_rules = security_rules
2869        self.default_security_rules = default_security_rules
2870        self.network_interfaces = network_interfaces
2871        self.subnets = subnets
2872        self.resource_guid = resource_guid
2873        self.provisioning_state = provisioning_state
2874
2875
2876class NetworkSecurityGroupListResult(msrest.serialization.Model):
2877    """Response for ListNetworkSecurityGroups API service call.
2878
2879    :param value: A list of NetworkSecurityGroup resources.
2880    :type value: list[~azure.mgmt.network.v2015_06_15.models.NetworkSecurityGroup]
2881    :param next_link: The URL to get the next set of results.
2882    :type next_link: str
2883    """
2884
2885    _attribute_map = {
2886        'value': {'key': 'value', 'type': '[NetworkSecurityGroup]'},
2887        'next_link': {'key': 'nextLink', 'type': 'str'},
2888    }
2889
2890    def __init__(
2891        self,
2892        *,
2893        value: Optional[List["NetworkSecurityGroup"]] = None,
2894        next_link: Optional[str] = None,
2895        **kwargs
2896    ):
2897        super(NetworkSecurityGroupListResult, self).__init__(**kwargs)
2898        self.value = value
2899        self.next_link = next_link
2900
2901
2902class OutboundNatRule(SubResource):
2903    """Outbound NAT pool of the load balancer.
2904
2905    :param id: Resource Identifier.
2906    :type id: str
2907    :param name: The name of the resource that is unique within a resource group. This name can be
2908     used to access the resource.
2909    :type name: str
2910    :param etag: A unique read-only string that changes whenever the resource is updated.
2911    :type etag: str
2912    :param allocated_outbound_ports: The number of outbound ports to be used for NAT.
2913    :type allocated_outbound_ports: int
2914    :param frontend_ip_configurations: The Frontend IP addresses of the load balancer.
2915    :type frontend_ip_configurations: list[~azure.mgmt.network.v2015_06_15.models.SubResource]
2916    :param backend_address_pool: A reference to a pool of DIPs. Outbound traffic is randomly load
2917     balanced across IPs in the backend IPs.
2918    :type backend_address_pool: ~azure.mgmt.network.v2015_06_15.models.SubResource
2919    :param provisioning_state: Gets the provisioning state of the PublicIP resource. Possible
2920     values are: 'Updating', 'Deleting', and 'Failed'.
2921    :type provisioning_state: str
2922    """
2923
2924    _attribute_map = {
2925        'id': {'key': 'id', 'type': 'str'},
2926        'name': {'key': 'name', 'type': 'str'},
2927        'etag': {'key': 'etag', 'type': 'str'},
2928        'allocated_outbound_ports': {'key': 'properties.allocatedOutboundPorts', 'type': 'int'},
2929        'frontend_ip_configurations': {'key': 'properties.frontendIPConfigurations', 'type': '[SubResource]'},
2930        'backend_address_pool': {'key': 'properties.backendAddressPool', 'type': 'SubResource'},
2931        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
2932    }
2933
2934    def __init__(
2935        self,
2936        *,
2937        id: Optional[str] = None,
2938        name: Optional[str] = None,
2939        etag: Optional[str] = None,
2940        allocated_outbound_ports: Optional[int] = None,
2941        frontend_ip_configurations: Optional[List["SubResource"]] = None,
2942        backend_address_pool: Optional["SubResource"] = None,
2943        provisioning_state: Optional[str] = None,
2944        **kwargs
2945    ):
2946        super(OutboundNatRule, self).__init__(id=id, **kwargs)
2947        self.name = name
2948        self.etag = etag
2949        self.allocated_outbound_ports = allocated_outbound_ports
2950        self.frontend_ip_configurations = frontend_ip_configurations
2951        self.backend_address_pool = backend_address_pool
2952        self.provisioning_state = provisioning_state
2953
2954
2955class Probe(SubResource):
2956    """A load balancer probe.
2957
2958    :param id: Resource Identifier.
2959    :type id: str
2960    :param name: Gets name of the resource that is unique within a resource group. This name can be
2961     used to access the resource.
2962    :type name: str
2963    :param etag: A unique read-only string that changes whenever the resource is updated.
2964    :type etag: str
2965    :param load_balancing_rules: The load balancer rules that use this probe.
2966    :type load_balancing_rules: list[~azure.mgmt.network.v2015_06_15.models.SubResource]
2967    :param protocol: The protocol of the end point. Possible values are: 'Http' or 'Tcp'. If 'Tcp'
2968     is specified, a received ACK is required for the probe to be successful. If 'Http' is
2969     specified, a 200 OK response from the specifies URI is required for the probe to be successful.
2970     Possible values include: "Http", "Tcp".
2971    :type protocol: str or ~azure.mgmt.network.v2015_06_15.models.ProbeProtocol
2972    :param port: The port for communicating the probe. Possible values range from 1 to 65535,
2973     inclusive.
2974    :type port: int
2975    :param interval_in_seconds: The interval, in seconds, for how frequently to probe the endpoint
2976     for health status. Typically, the interval is slightly less than half the allocated timeout
2977     period (in seconds) which allows two full probes before taking the instance out of rotation.
2978     The default value is 15, the minimum value is 5.
2979    :type interval_in_seconds: int
2980    :param number_of_probes: The number of probes where if no response, will result in stopping
2981     further traffic from being delivered to the endpoint. This values allows endpoints to be taken
2982     out of rotation faster or slower than the typical times used in Azure.
2983    :type number_of_probes: int
2984    :param request_path: The URI used for requesting health status from the VM. Path is required if
2985     a protocol is set to http. Otherwise, it is not allowed. There is no default value.
2986    :type request_path: str
2987    :param provisioning_state: Gets the provisioning state of the public IP resource. Possible
2988     values are: 'Updating', 'Deleting', and 'Failed'.
2989    :type provisioning_state: str
2990    """
2991
2992    _attribute_map = {
2993        'id': {'key': 'id', 'type': 'str'},
2994        'name': {'key': 'name', 'type': 'str'},
2995        'etag': {'key': 'etag', 'type': 'str'},
2996        'load_balancing_rules': {'key': 'properties.loadBalancingRules', 'type': '[SubResource]'},
2997        'protocol': {'key': 'properties.protocol', 'type': 'str'},
2998        'port': {'key': 'properties.port', 'type': 'int'},
2999        'interval_in_seconds': {'key': 'properties.intervalInSeconds', 'type': 'int'},
3000        'number_of_probes': {'key': 'properties.numberOfProbes', 'type': 'int'},
3001        'request_path': {'key': 'properties.requestPath', 'type': 'str'},
3002        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3003    }
3004
3005    def __init__(
3006        self,
3007        *,
3008        id: Optional[str] = None,
3009        name: Optional[str] = None,
3010        etag: Optional[str] = None,
3011        load_balancing_rules: Optional[List["SubResource"]] = None,
3012        protocol: Optional[Union[str, "ProbeProtocol"]] = None,
3013        port: Optional[int] = None,
3014        interval_in_seconds: Optional[int] = None,
3015        number_of_probes: Optional[int] = None,
3016        request_path: Optional[str] = None,
3017        provisioning_state: Optional[str] = None,
3018        **kwargs
3019    ):
3020        super(Probe, self).__init__(id=id, **kwargs)
3021        self.name = name
3022        self.etag = etag
3023        self.load_balancing_rules = load_balancing_rules
3024        self.protocol = protocol
3025        self.port = port
3026        self.interval_in_seconds = interval_in_seconds
3027        self.number_of_probes = number_of_probes
3028        self.request_path = request_path
3029        self.provisioning_state = provisioning_state
3030
3031
3032class PublicIPAddress(Resource):
3033    """Public IP address resource.
3034
3035    Variables are only populated by the server, and will be ignored when sending a request.
3036
3037    :param id: Resource Identifier.
3038    :type id: str
3039    :ivar name: Resource name.
3040    :vartype name: str
3041    :ivar type: Resource type.
3042    :vartype type: str
3043    :param location: Resource location.
3044    :type location: str
3045    :param tags: A set of tags. Resource tags.
3046    :type tags: dict[str, str]
3047    :param etag: A unique read-only string that changes whenever the resource is updated.
3048    :type etag: str
3049    :param public_ip_allocation_method: The public IP allocation method. Possible values are:
3050     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
3051    :type public_ip_allocation_method: str or
3052     ~azure.mgmt.network.v2015_06_15.models.IPAllocationMethod
3053    :param ip_configuration: IPConfiguration.
3054    :type ip_configuration: ~azure.mgmt.network.v2015_06_15.models.IPConfiguration
3055    :param dns_settings: The FQDN of the DNS record associated with the public IP address.
3056    :type dns_settings: ~azure.mgmt.network.v2015_06_15.models.PublicIPAddressDnsSettings
3057    :param ip_address:
3058    :type ip_address: str
3059    :param idle_timeout_in_minutes: The idle timeout of the public IP address.
3060    :type idle_timeout_in_minutes: int
3061    :param resource_guid: The resource GUID property of the public IP resource.
3062    :type resource_guid: str
3063    :param provisioning_state: The provisioning state of the PublicIP resource. Possible values
3064     are: 'Updating', 'Deleting', and 'Failed'.
3065    :type provisioning_state: str
3066    """
3067
3068    _validation = {
3069        'name': {'readonly': True},
3070        'type': {'readonly': True},
3071    }
3072
3073    _attribute_map = {
3074        'id': {'key': 'id', 'type': 'str'},
3075        'name': {'key': 'name', 'type': 'str'},
3076        'type': {'key': 'type', 'type': 'str'},
3077        'location': {'key': 'location', 'type': 'str'},
3078        'tags': {'key': 'tags', 'type': '{str}'},
3079        'etag': {'key': 'etag', 'type': 'str'},
3080        'public_ip_allocation_method': {'key': 'properties.publicIPAllocationMethod', 'type': 'str'},
3081        'ip_configuration': {'key': 'properties.ipConfiguration', 'type': 'IPConfiguration'},
3082        'dns_settings': {'key': 'properties.dnsSettings', 'type': 'PublicIPAddressDnsSettings'},
3083        'ip_address': {'key': 'properties.ipAddress', 'type': 'str'},
3084        'idle_timeout_in_minutes': {'key': 'properties.idleTimeoutInMinutes', 'type': 'int'},
3085        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
3086        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3087    }
3088
3089    def __init__(
3090        self,
3091        *,
3092        id: Optional[str] = None,
3093        location: Optional[str] = None,
3094        tags: Optional[Dict[str, str]] = None,
3095        etag: Optional[str] = None,
3096        public_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
3097        ip_configuration: Optional["IPConfiguration"] = None,
3098        dns_settings: Optional["PublicIPAddressDnsSettings"] = None,
3099        ip_address: Optional[str] = None,
3100        idle_timeout_in_minutes: Optional[int] = None,
3101        resource_guid: Optional[str] = None,
3102        provisioning_state: Optional[str] = None,
3103        **kwargs
3104    ):
3105        super(PublicIPAddress, self).__init__(id=id, location=location, tags=tags, **kwargs)
3106        self.etag = etag
3107        self.public_ip_allocation_method = public_ip_allocation_method
3108        self.ip_configuration = ip_configuration
3109        self.dns_settings = dns_settings
3110        self.ip_address = ip_address
3111        self.idle_timeout_in_minutes = idle_timeout_in_minutes
3112        self.resource_guid = resource_guid
3113        self.provisioning_state = provisioning_state
3114
3115
3116class PublicIPAddressDnsSettings(msrest.serialization.Model):
3117    """Contains FQDN of the DNS record associated with the public IP address.
3118
3119    :param domain_name_label: Gets or sets the Domain name label.The concatenation of the domain
3120     name label and the regionalized DNS zone make up the fully qualified domain name associated
3121     with the public IP address. If a domain name label is specified, an A DNS record is created for
3122     the public IP in the Microsoft Azure DNS system.
3123    :type domain_name_label: str
3124    :param fqdn: Gets the FQDN, Fully qualified domain name of the A DNS record associated with the
3125     public IP. This is the concatenation of the domainNameLabel and the regionalized DNS zone.
3126    :type fqdn: str
3127    :param reverse_fqdn: Gets or Sets the Reverse FQDN. A user-visible, fully qualified domain name
3128     that resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS record
3129     is created pointing from the IP address in the in-addr.arpa domain to the reverse FQDN.
3130    :type reverse_fqdn: str
3131    """
3132
3133    _attribute_map = {
3134        'domain_name_label': {'key': 'domainNameLabel', 'type': 'str'},
3135        'fqdn': {'key': 'fqdn', 'type': 'str'},
3136        'reverse_fqdn': {'key': 'reverseFqdn', 'type': 'str'},
3137    }
3138
3139    def __init__(
3140        self,
3141        *,
3142        domain_name_label: Optional[str] = None,
3143        fqdn: Optional[str] = None,
3144        reverse_fqdn: Optional[str] = None,
3145        **kwargs
3146    ):
3147        super(PublicIPAddressDnsSettings, self).__init__(**kwargs)
3148        self.domain_name_label = domain_name_label
3149        self.fqdn = fqdn
3150        self.reverse_fqdn = reverse_fqdn
3151
3152
3153class PublicIPAddressListResult(msrest.serialization.Model):
3154    """Response for ListPublicIpAddresses API service call.
3155
3156    :param value: A list of public IP addresses that exists in a resource group.
3157    :type value: list[~azure.mgmt.network.v2015_06_15.models.PublicIPAddress]
3158    :param next_link: The URL to get the next set of results.
3159    :type next_link: str
3160    """
3161
3162    _attribute_map = {
3163        'value': {'key': 'value', 'type': '[PublicIPAddress]'},
3164        'next_link': {'key': 'nextLink', 'type': 'str'},
3165    }
3166
3167    def __init__(
3168        self,
3169        *,
3170        value: Optional[List["PublicIPAddress"]] = None,
3171        next_link: Optional[str] = None,
3172        **kwargs
3173    ):
3174        super(PublicIPAddressListResult, self).__init__(**kwargs)
3175        self.value = value
3176        self.next_link = next_link
3177
3178
3179class Route(SubResource):
3180    """Route resource.
3181
3182    :param id: Resource Identifier.
3183    :type id: str
3184    :param name: The name of the resource that is unique within a resource group. This name can be
3185     used to access the resource.
3186    :type name: str
3187    :param etag: A unique read-only string that changes whenever the resource is updated.
3188    :type etag: str
3189    :param address_prefix: The destination CIDR to which the route applies.
3190    :type address_prefix: str
3191    :param next_hop_type: The type of Azure hop the packet should be sent to. Possible values are:
3192     'VirtualNetworkGateway', 'VnetLocal', 'Internet', 'VirtualAppliance', and 'None'. Possible
3193     values include: "VirtualNetworkGateway", "VnetLocal", "Internet", "VirtualAppliance", "None".
3194    :type next_hop_type: str or ~azure.mgmt.network.v2015_06_15.models.RouteNextHopType
3195    :param next_hop_ip_address: The IP address packets should be forwarded to. Next hop values are
3196     only allowed in routes where the next hop type is VirtualAppliance.
3197    :type next_hop_ip_address: str
3198    :param provisioning_state: The provisioning state of the resource. Possible values are:
3199     'Updating', 'Deleting', and 'Failed'.
3200    :type provisioning_state: str
3201    """
3202
3203    _attribute_map = {
3204        'id': {'key': 'id', 'type': 'str'},
3205        'name': {'key': 'name', 'type': 'str'},
3206        'etag': {'key': 'etag', 'type': 'str'},
3207        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
3208        'next_hop_type': {'key': 'properties.nextHopType', 'type': 'str'},
3209        'next_hop_ip_address': {'key': 'properties.nextHopIpAddress', 'type': 'str'},
3210        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3211    }
3212
3213    def __init__(
3214        self,
3215        *,
3216        id: Optional[str] = None,
3217        name: Optional[str] = None,
3218        etag: Optional[str] = None,
3219        address_prefix: Optional[str] = None,
3220        next_hop_type: Optional[Union[str, "RouteNextHopType"]] = None,
3221        next_hop_ip_address: Optional[str] = None,
3222        provisioning_state: Optional[str] = None,
3223        **kwargs
3224    ):
3225        super(Route, self).__init__(id=id, **kwargs)
3226        self.name = name
3227        self.etag = etag
3228        self.address_prefix = address_prefix
3229        self.next_hop_type = next_hop_type
3230        self.next_hop_ip_address = next_hop_ip_address
3231        self.provisioning_state = provisioning_state
3232
3233
3234class RouteListResult(msrest.serialization.Model):
3235    """Response for the ListRoute API service call.
3236
3237    :param value: Gets a list of routes in a resource group.
3238    :type value: list[~azure.mgmt.network.v2015_06_15.models.Route]
3239    :param next_link: The URL to get the next set of results.
3240    :type next_link: str
3241    """
3242
3243    _attribute_map = {
3244        'value': {'key': 'value', 'type': '[Route]'},
3245        'next_link': {'key': 'nextLink', 'type': 'str'},
3246    }
3247
3248    def __init__(
3249        self,
3250        *,
3251        value: Optional[List["Route"]] = None,
3252        next_link: Optional[str] = None,
3253        **kwargs
3254    ):
3255        super(RouteListResult, self).__init__(**kwargs)
3256        self.value = value
3257        self.next_link = next_link
3258
3259
3260class RouteTable(Resource):
3261    """Route table resource.
3262
3263    Variables are only populated by the server, and will be ignored when sending a request.
3264
3265    :param id: Resource Identifier.
3266    :type id: str
3267    :ivar name: Resource name.
3268    :vartype name: str
3269    :ivar type: Resource type.
3270    :vartype type: str
3271    :param location: Resource location.
3272    :type location: str
3273    :param tags: A set of tags. Resource tags.
3274    :type tags: dict[str, str]
3275    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
3276    :type etag: str
3277    :param routes: Collection of routes contained within a route table.
3278    :type routes: list[~azure.mgmt.network.v2015_06_15.models.Route]
3279    :param subnets: A collection of references to subnets.
3280    :type subnets: list[~azure.mgmt.network.v2015_06_15.models.Subnet]
3281    :param provisioning_state: The provisioning state of the resource. Possible values are:
3282     'Updating', 'Deleting', and 'Failed'.
3283    :type provisioning_state: str
3284    """
3285
3286    _validation = {
3287        'name': {'readonly': True},
3288        'type': {'readonly': True},
3289    }
3290
3291    _attribute_map = {
3292        'id': {'key': 'id', 'type': 'str'},
3293        'name': {'key': 'name', 'type': 'str'},
3294        'type': {'key': 'type', 'type': 'str'},
3295        'location': {'key': 'location', 'type': 'str'},
3296        'tags': {'key': 'tags', 'type': '{str}'},
3297        'etag': {'key': 'etag', 'type': 'str'},
3298        'routes': {'key': 'properties.routes', 'type': '[Route]'},
3299        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
3300        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3301    }
3302
3303    def __init__(
3304        self,
3305        *,
3306        id: Optional[str] = None,
3307        location: Optional[str] = None,
3308        tags: Optional[Dict[str, str]] = None,
3309        etag: Optional[str] = None,
3310        routes: Optional[List["Route"]] = None,
3311        subnets: Optional[List["Subnet"]] = None,
3312        provisioning_state: Optional[str] = None,
3313        **kwargs
3314    ):
3315        super(RouteTable, self).__init__(id=id, location=location, tags=tags, **kwargs)
3316        self.etag = etag
3317        self.routes = routes
3318        self.subnets = subnets
3319        self.provisioning_state = provisioning_state
3320
3321
3322class RouteTableListResult(msrest.serialization.Model):
3323    """Response for the ListRouteTable API service call.
3324
3325    :param value: Gets a list of route tables in a resource group.
3326    :type value: list[~azure.mgmt.network.v2015_06_15.models.RouteTable]
3327    :param next_link: The URL to get the next set of results.
3328    :type next_link: str
3329    """
3330
3331    _attribute_map = {
3332        'value': {'key': 'value', 'type': '[RouteTable]'},
3333        'next_link': {'key': 'nextLink', 'type': 'str'},
3334    }
3335
3336    def __init__(
3337        self,
3338        *,
3339        value: Optional[List["RouteTable"]] = None,
3340        next_link: Optional[str] = None,
3341        **kwargs
3342    ):
3343        super(RouteTableListResult, self).__init__(**kwargs)
3344        self.value = value
3345        self.next_link = next_link
3346
3347
3348class SecurityRule(SubResource):
3349    """Network security rule.
3350
3351    :param id: Resource Identifier.
3352    :type id: str
3353    :param name: The name of the resource that is unique within a resource group. This name can be
3354     used to access the resource.
3355    :type name: str
3356    :param etag: A unique read-only string that changes whenever the resource is updated.
3357    :type etag: str
3358    :param description: A description for this rule. Restricted to 140 chars.
3359    :type description: str
3360    :param protocol: Network protocol this rule applies to. Possible values are 'Tcp', 'Udp', and
3361     '*'. Possible values include: "Tcp", "Udp", "*".
3362    :type protocol: str or ~azure.mgmt.network.v2015_06_15.models.SecurityRuleProtocol
3363    :param source_port_range: The source port or range. Integer or range between 0 and 65535.
3364     Asterisk '*' can also be used to match all ports.
3365    :type source_port_range: str
3366    :param destination_port_range: The destination port or range. Integer or range between 0 and
3367     65535. Asterisk '*' can also be used to match all ports.
3368    :type destination_port_range: str
3369    :param source_address_prefix: The CIDR or source IP range. Asterisk '*' can also be used to
3370     match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet'
3371     can also be used. If this is an ingress rule, specifies where network traffic originates from.
3372    :type source_address_prefix: str
3373    :param destination_address_prefix: The destination address prefix. CIDR or source IP range.
3374     Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork',
3375     'AzureLoadBalancer' and 'Internet' can also be used.
3376    :type destination_address_prefix: str
3377    :param access: The network traffic is allowed or denied. Possible values are: 'Allow' and
3378     'Deny'. Possible values include: "Allow", "Deny".
3379    :type access: str or ~azure.mgmt.network.v2015_06_15.models.SecurityRuleAccess
3380    :param priority: The priority of the rule. The value can be between 100 and 4096. The priority
3381     number must be unique for each rule in the collection. The lower the priority number, the
3382     higher the priority of the rule.
3383    :type priority: int
3384    :param direction: The direction of the rule. The direction specifies if rule will be evaluated
3385     on incoming or outgoing traffic. Possible values are: 'Inbound' and 'Outbound'. Possible values
3386     include: "Inbound", "Outbound".
3387    :type direction: str or ~azure.mgmt.network.v2015_06_15.models.SecurityRuleDirection
3388    :param provisioning_state: The provisioning state of the public IP resource. Possible values
3389     are: 'Updating', 'Deleting', and 'Failed'.
3390    :type provisioning_state: str
3391    """
3392
3393    _attribute_map = {
3394        'id': {'key': 'id', 'type': 'str'},
3395        'name': {'key': 'name', 'type': 'str'},
3396        'etag': {'key': 'etag', 'type': 'str'},
3397        'description': {'key': 'properties.description', 'type': 'str'},
3398        'protocol': {'key': 'properties.protocol', 'type': 'str'},
3399        'source_port_range': {'key': 'properties.sourcePortRange', 'type': 'str'},
3400        'destination_port_range': {'key': 'properties.destinationPortRange', 'type': 'str'},
3401        'source_address_prefix': {'key': 'properties.sourceAddressPrefix', 'type': 'str'},
3402        'destination_address_prefix': {'key': 'properties.destinationAddressPrefix', 'type': 'str'},
3403        'access': {'key': 'properties.access', 'type': 'str'},
3404        'priority': {'key': 'properties.priority', 'type': 'int'},
3405        'direction': {'key': 'properties.direction', 'type': 'str'},
3406        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3407    }
3408
3409    def __init__(
3410        self,
3411        *,
3412        id: Optional[str] = None,
3413        name: Optional[str] = None,
3414        etag: Optional[str] = None,
3415        description: Optional[str] = None,
3416        protocol: Optional[Union[str, "SecurityRuleProtocol"]] = None,
3417        source_port_range: Optional[str] = None,
3418        destination_port_range: Optional[str] = None,
3419        source_address_prefix: Optional[str] = None,
3420        destination_address_prefix: Optional[str] = None,
3421        access: Optional[Union[str, "SecurityRuleAccess"]] = None,
3422        priority: Optional[int] = None,
3423        direction: Optional[Union[str, "SecurityRuleDirection"]] = None,
3424        provisioning_state: Optional[str] = None,
3425        **kwargs
3426    ):
3427        super(SecurityRule, self).__init__(id=id, **kwargs)
3428        self.name = name
3429        self.etag = etag
3430        self.description = description
3431        self.protocol = protocol
3432        self.source_port_range = source_port_range
3433        self.destination_port_range = destination_port_range
3434        self.source_address_prefix = source_address_prefix
3435        self.destination_address_prefix = destination_address_prefix
3436        self.access = access
3437        self.priority = priority
3438        self.direction = direction
3439        self.provisioning_state = provisioning_state
3440
3441
3442class SecurityRuleListResult(msrest.serialization.Model):
3443    """Response for ListSecurityRule API service call. Retrieves all security rules that belongs to a network security group.
3444
3445    :param value: The security rules in a network security group.
3446    :type value: list[~azure.mgmt.network.v2015_06_15.models.SecurityRule]
3447    :param next_link: The URL to get the next set of results.
3448    :type next_link: str
3449    """
3450
3451    _attribute_map = {
3452        'value': {'key': 'value', 'type': '[SecurityRule]'},
3453        'next_link': {'key': 'nextLink', 'type': 'str'},
3454    }
3455
3456    def __init__(
3457        self,
3458        *,
3459        value: Optional[List["SecurityRule"]] = None,
3460        next_link: Optional[str] = None,
3461        **kwargs
3462    ):
3463        super(SecurityRuleListResult, self).__init__(**kwargs)
3464        self.value = value
3465        self.next_link = next_link
3466
3467
3468class Subnet(SubResource):
3469    """Subnet in a virtual network resource.
3470
3471    :param id: Resource Identifier.
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 address_prefix: The address prefix for the subnet.
3479    :type address_prefix: str
3480    :param network_security_group: The reference of the NetworkSecurityGroup resource.
3481    :type network_security_group: ~azure.mgmt.network.v2015_06_15.models.NetworkSecurityGroup
3482    :param route_table: The reference of the RouteTable resource.
3483    :type route_table: ~azure.mgmt.network.v2015_06_15.models.RouteTable
3484    :param ip_configurations: Gets an array of references to the network interface IP
3485     configurations using subnet.
3486    :type ip_configurations: list[~azure.mgmt.network.v2015_06_15.models.IPConfiguration]
3487    :param provisioning_state: The provisioning state of the resource.
3488    :type provisioning_state: str
3489    """
3490
3491    _attribute_map = {
3492        'id': {'key': 'id', 'type': 'str'},
3493        'name': {'key': 'name', 'type': 'str'},
3494        'etag': {'key': 'etag', 'type': 'str'},
3495        'address_prefix': {'key': 'properties.addressPrefix', 'type': 'str'},
3496        'network_security_group': {'key': 'properties.networkSecurityGroup', 'type': 'NetworkSecurityGroup'},
3497        'route_table': {'key': 'properties.routeTable', 'type': 'RouteTable'},
3498        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[IPConfiguration]'},
3499        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3500    }
3501
3502    def __init__(
3503        self,
3504        *,
3505        id: Optional[str] = None,
3506        name: Optional[str] = None,
3507        etag: Optional[str] = None,
3508        address_prefix: Optional[str] = None,
3509        network_security_group: Optional["NetworkSecurityGroup"] = None,
3510        route_table: Optional["RouteTable"] = None,
3511        ip_configurations: Optional[List["IPConfiguration"]] = None,
3512        provisioning_state: Optional[str] = None,
3513        **kwargs
3514    ):
3515        super(Subnet, self).__init__(id=id, **kwargs)
3516        self.name = name
3517        self.etag = etag
3518        self.address_prefix = address_prefix
3519        self.network_security_group = network_security_group
3520        self.route_table = route_table
3521        self.ip_configurations = ip_configurations
3522        self.provisioning_state = provisioning_state
3523
3524
3525class SubnetListResult(msrest.serialization.Model):
3526    """Response for ListSubnets API service callRetrieves all subnet that belongs to a virtual network.
3527
3528    :param value: The subnets in a virtual network.
3529    :type value: list[~azure.mgmt.network.v2015_06_15.models.Subnet]
3530    :param next_link: The URL to get the next set of results.
3531    :type next_link: str
3532    """
3533
3534    _attribute_map = {
3535        'value': {'key': 'value', 'type': '[Subnet]'},
3536        'next_link': {'key': 'nextLink', 'type': 'str'},
3537    }
3538
3539    def __init__(
3540        self,
3541        *,
3542        value: Optional[List["Subnet"]] = None,
3543        next_link: Optional[str] = None,
3544        **kwargs
3545    ):
3546        super(SubnetListResult, self).__init__(**kwargs)
3547        self.value = value
3548        self.next_link = next_link
3549
3550
3551class Usage(msrest.serialization.Model):
3552    """Describes network resource usage.
3553
3554    All required parameters must be populated in order to send to Azure.
3555
3556    :param unit: Required. An enum describing the unit of measurement. Possible values include:
3557     "Count".
3558    :type unit: str or ~azure.mgmt.network.v2015_06_15.models.UsageUnit
3559    :param current_value: Required. The current value of the usage.
3560    :type current_value: long
3561    :param limit: Required. The limit of usage.
3562    :type limit: long
3563    :param name: Required. The name of the type of usage.
3564    :type name: ~azure.mgmt.network.v2015_06_15.models.UsageName
3565    """
3566
3567    _validation = {
3568        'unit': {'required': True},
3569        'current_value': {'required': True},
3570        'limit': {'required': True},
3571        'name': {'required': True},
3572    }
3573
3574    _attribute_map = {
3575        'unit': {'key': 'unit', 'type': 'str'},
3576        'current_value': {'key': 'currentValue', 'type': 'long'},
3577        'limit': {'key': 'limit', 'type': 'long'},
3578        'name': {'key': 'name', 'type': 'UsageName'},
3579    }
3580
3581    def __init__(
3582        self,
3583        *,
3584        unit: Union[str, "UsageUnit"],
3585        current_value: int,
3586        limit: int,
3587        name: "UsageName",
3588        **kwargs
3589    ):
3590        super(Usage, self).__init__(**kwargs)
3591        self.unit = unit
3592        self.current_value = current_value
3593        self.limit = limit
3594        self.name = name
3595
3596
3597class UsageName(msrest.serialization.Model):
3598    """The usage names.
3599
3600    :param value: A string describing the resource name.
3601    :type value: str
3602    :param localized_value: A localized string describing the resource name.
3603    :type localized_value: str
3604    """
3605
3606    _attribute_map = {
3607        'value': {'key': 'value', 'type': 'str'},
3608        'localized_value': {'key': 'localizedValue', 'type': 'str'},
3609    }
3610
3611    def __init__(
3612        self,
3613        *,
3614        value: Optional[str] = None,
3615        localized_value: Optional[str] = None,
3616        **kwargs
3617    ):
3618        super(UsageName, self).__init__(**kwargs)
3619        self.value = value
3620        self.localized_value = localized_value
3621
3622
3623class UsagesListResult(msrest.serialization.Model):
3624    """The list usages operation response.
3625
3626    :param value: The list network resource usages.
3627    :type value: list[~azure.mgmt.network.v2015_06_15.models.Usage]
3628    :param next_link: URL to get the next set of results.
3629    :type next_link: str
3630    """
3631
3632    _attribute_map = {
3633        'value': {'key': 'value', 'type': '[Usage]'},
3634        'next_link': {'key': 'nextLink', 'type': 'str'},
3635    }
3636
3637    def __init__(
3638        self,
3639        *,
3640        value: Optional[List["Usage"]] = None,
3641        next_link: Optional[str] = None,
3642        **kwargs
3643    ):
3644        super(UsagesListResult, self).__init__(**kwargs)
3645        self.value = value
3646        self.next_link = next_link
3647
3648
3649class VirtualNetwork(Resource):
3650    """Virtual Network resource.
3651
3652    Variables are only populated by the server, and will be ignored when sending a request.
3653
3654    :param id: Resource Identifier.
3655    :type id: str
3656    :ivar name: Resource name.
3657    :vartype name: str
3658    :ivar type: Resource type.
3659    :vartype type: str
3660    :param location: Resource location.
3661    :type location: str
3662    :param tags: A set of tags. Resource tags.
3663    :type tags: dict[str, str]
3664    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
3665    :type etag: str
3666    :param address_space: The AddressSpace that contains an array of IP address ranges that can be
3667     used by subnets.
3668    :type address_space: ~azure.mgmt.network.v2015_06_15.models.AddressSpace
3669    :param dhcp_options: The dhcpOptions that contains an array of DNS servers available to VMs
3670     deployed in the virtual network.
3671    :type dhcp_options: ~azure.mgmt.network.v2015_06_15.models.DhcpOptions
3672    :param subnets: A list of subnets in a Virtual Network.
3673    :type subnets: list[~azure.mgmt.network.v2015_06_15.models.Subnet]
3674    :param resource_guid: The resourceGuid property of the Virtual Network resource.
3675    :type resource_guid: str
3676    :param provisioning_state: The provisioning state of the PublicIP resource. Possible values
3677     are: 'Updating', 'Deleting', and 'Failed'.
3678    :type provisioning_state: str
3679    """
3680
3681    _validation = {
3682        'name': {'readonly': True},
3683        'type': {'readonly': True},
3684    }
3685
3686    _attribute_map = {
3687        'id': {'key': 'id', 'type': 'str'},
3688        'name': {'key': 'name', 'type': 'str'},
3689        'type': {'key': 'type', 'type': 'str'},
3690        'location': {'key': 'location', 'type': 'str'},
3691        'tags': {'key': 'tags', 'type': '{str}'},
3692        'etag': {'key': 'etag', 'type': 'str'},
3693        'address_space': {'key': 'properties.addressSpace', 'type': 'AddressSpace'},
3694        'dhcp_options': {'key': 'properties.dhcpOptions', 'type': 'DhcpOptions'},
3695        'subnets': {'key': 'properties.subnets', 'type': '[Subnet]'},
3696        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
3697        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3698    }
3699
3700    def __init__(
3701        self,
3702        *,
3703        id: Optional[str] = None,
3704        location: Optional[str] = None,
3705        tags: Optional[Dict[str, str]] = None,
3706        etag: Optional[str] = None,
3707        address_space: Optional["AddressSpace"] = None,
3708        dhcp_options: Optional["DhcpOptions"] = None,
3709        subnets: Optional[List["Subnet"]] = None,
3710        resource_guid: Optional[str] = None,
3711        provisioning_state: Optional[str] = None,
3712        **kwargs
3713    ):
3714        super(VirtualNetwork, self).__init__(id=id, location=location, tags=tags, **kwargs)
3715        self.etag = etag
3716        self.address_space = address_space
3717        self.dhcp_options = dhcp_options
3718        self.subnets = subnets
3719        self.resource_guid = resource_guid
3720        self.provisioning_state = provisioning_state
3721
3722
3723class VirtualNetworkGateway(Resource):
3724    """A common class for general resource information.
3725
3726    Variables are only populated by the server, and will be ignored when sending a request.
3727
3728    :param id: Resource Identifier.
3729    :type id: str
3730    :ivar name: Resource name.
3731    :vartype name: str
3732    :ivar type: Resource type.
3733    :vartype type: str
3734    :param location: Resource location.
3735    :type location: str
3736    :param tags: A set of tags. Resource tags.
3737    :type tags: dict[str, str]
3738    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
3739    :type etag: str
3740    :param ip_configurations: IP configurations for virtual network gateway.
3741    :type ip_configurations:
3742     list[~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGatewayIPConfiguration]
3743    :param gateway_type: The type of this virtual network gateway. Possible values are: 'Vpn' and
3744     'ExpressRoute'. Possible values include: "Vpn", "ExpressRoute".
3745    :type gateway_type: str or ~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGatewayType
3746    :param vpn_type: The type of this virtual network gateway. Possible values are: 'PolicyBased'
3747     and 'RouteBased'. Possible values include: "PolicyBased", "RouteBased".
3748    :type vpn_type: str or ~azure.mgmt.network.v2015_06_15.models.VpnType
3749    :param enable_bgp: Whether BGP is enabled for this virtual network gateway or not.
3750    :type enable_bgp: bool
3751    :param gateway_default_site: The reference of the LocalNetworkGateway resource which represents
3752     local network site having default routes. Assign Null value in case of removing existing
3753     default site setting.
3754    :type gateway_default_site: ~azure.mgmt.network.v2015_06_15.models.SubResource
3755    :param sku: The reference of the VirtualNetworkGatewaySku resource which represents the SKU
3756     selected for Virtual network gateway.
3757    :type sku: ~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGatewaySku
3758    :param vpn_client_configuration: The reference of the VpnClientConfiguration resource which
3759     represents the P2S VpnClient configurations.
3760    :type vpn_client_configuration: ~azure.mgmt.network.v2015_06_15.models.VpnClientConfiguration
3761    :param bgp_settings: Virtual network gateway's BGP speaker settings.
3762    :type bgp_settings: ~azure.mgmt.network.v2015_06_15.models.BgpSettings
3763    :param resource_guid: The resource GUID property of the VirtualNetworkGateway resource.
3764    :type resource_guid: str
3765    :param provisioning_state: The provisioning state of the VirtualNetworkGateway resource.
3766     Possible values are: 'Updating', 'Deleting', and 'Failed'.
3767    :type provisioning_state: str
3768    """
3769
3770    _validation = {
3771        'name': {'readonly': True},
3772        'type': {'readonly': True},
3773    }
3774
3775    _attribute_map = {
3776        'id': {'key': 'id', 'type': 'str'},
3777        'name': {'key': 'name', 'type': 'str'},
3778        'type': {'key': 'type', 'type': 'str'},
3779        'location': {'key': 'location', 'type': 'str'},
3780        'tags': {'key': 'tags', 'type': '{str}'},
3781        'etag': {'key': 'etag', 'type': 'str'},
3782        'ip_configurations': {'key': 'properties.ipConfigurations', 'type': '[VirtualNetworkGatewayIPConfiguration]'},
3783        'gateway_type': {'key': 'properties.gatewayType', 'type': 'str'},
3784        'vpn_type': {'key': 'properties.vpnType', 'type': 'str'},
3785        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
3786        'gateway_default_site': {'key': 'properties.gatewayDefaultSite', 'type': 'SubResource'},
3787        'sku': {'key': 'properties.sku', 'type': 'VirtualNetworkGatewaySku'},
3788        'vpn_client_configuration': {'key': 'properties.vpnClientConfiguration', 'type': 'VpnClientConfiguration'},
3789        'bgp_settings': {'key': 'properties.bgpSettings', 'type': 'BgpSettings'},
3790        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
3791        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3792    }
3793
3794    def __init__(
3795        self,
3796        *,
3797        id: Optional[str] = None,
3798        location: Optional[str] = None,
3799        tags: Optional[Dict[str, str]] = None,
3800        etag: Optional[str] = None,
3801        ip_configurations: Optional[List["VirtualNetworkGatewayIPConfiguration"]] = None,
3802        gateway_type: Optional[Union[str, "VirtualNetworkGatewayType"]] = None,
3803        vpn_type: Optional[Union[str, "VpnType"]] = None,
3804        enable_bgp: Optional[bool] = None,
3805        gateway_default_site: Optional["SubResource"] = None,
3806        sku: Optional["VirtualNetworkGatewaySku"] = None,
3807        vpn_client_configuration: Optional["VpnClientConfiguration"] = None,
3808        bgp_settings: Optional["BgpSettings"] = None,
3809        resource_guid: Optional[str] = None,
3810        provisioning_state: Optional[str] = None,
3811        **kwargs
3812    ):
3813        super(VirtualNetworkGateway, self).__init__(id=id, location=location, tags=tags, **kwargs)
3814        self.etag = etag
3815        self.ip_configurations = ip_configurations
3816        self.gateway_type = gateway_type
3817        self.vpn_type = vpn_type
3818        self.enable_bgp = enable_bgp
3819        self.gateway_default_site = gateway_default_site
3820        self.sku = sku
3821        self.vpn_client_configuration = vpn_client_configuration
3822        self.bgp_settings = bgp_settings
3823        self.resource_guid = resource_guid
3824        self.provisioning_state = provisioning_state
3825
3826
3827class VirtualNetworkGatewayConnection(Resource):
3828    """A common class for general resource information.
3829
3830    Variables are only populated by the server, and will be ignored when sending a request.
3831
3832    :param id: Resource Identifier.
3833    :type id: str
3834    :ivar name: Resource name.
3835    :vartype name: str
3836    :ivar type: Resource type.
3837    :vartype type: str
3838    :param location: Resource location.
3839    :type location: str
3840    :param tags: A set of tags. Resource tags.
3841    :type tags: dict[str, str]
3842    :param etag: Gets a unique read-only string that changes whenever the resource is updated.
3843    :type etag: str
3844    :param authorization_key: The authorizationKey.
3845    :type authorization_key: str
3846    :param virtual_network_gateway1: A common class for general resource information.
3847    :type virtual_network_gateway1: ~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGateway
3848    :param virtual_network_gateway2: A common class for general resource information.
3849    :type virtual_network_gateway2: ~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGateway
3850    :param local_network_gateway2: A common class for general resource information.
3851    :type local_network_gateway2: ~azure.mgmt.network.v2015_06_15.models.LocalNetworkGateway
3852    :param connection_type: Gateway connection type. Possible values are:
3853     'IPsec','Vnet2Vnet','ExpressRoute', and 'VPNClient. Possible values include: "IPsec",
3854     "Vnet2Vnet", "ExpressRoute", "VPNClient".
3855    :type connection_type: str or
3856     ~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGatewayConnectionType
3857    :param routing_weight: The routing weight.
3858    :type routing_weight: int
3859    :param shared_key: The IPSec shared key.
3860    :type shared_key: str
3861    :param connection_status: Virtual network Gateway connection status. Possible values are
3862     'Unknown', 'Connecting', 'Connected' and 'NotConnected'. Possible values include: "Unknown",
3863     "Connecting", "Connected", "NotConnected".
3864    :type connection_status: str or
3865     ~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGatewayConnectionStatus
3866    :param egress_bytes_transferred: The egress bytes transferred in this connection.
3867    :type egress_bytes_transferred: long
3868    :param ingress_bytes_transferred: The ingress bytes transferred in this connection.
3869    :type ingress_bytes_transferred: long
3870    :param peer: The reference to peerings resource.
3871    :type peer: ~azure.mgmt.network.v2015_06_15.models.SubResource
3872    :param enable_bgp: EnableBgp flag.
3873    :type enable_bgp: bool
3874    :param resource_guid: The resource GUID property of the VirtualNetworkGatewayConnection
3875     resource.
3876    :type resource_guid: str
3877    :param provisioning_state: The provisioning state of the VirtualNetworkGatewayConnection
3878     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
3879    :type provisioning_state: str
3880    """
3881
3882    _validation = {
3883        'name': {'readonly': True},
3884        'type': {'readonly': True},
3885    }
3886
3887    _attribute_map = {
3888        'id': {'key': 'id', 'type': 'str'},
3889        'name': {'key': 'name', 'type': 'str'},
3890        'type': {'key': 'type', 'type': 'str'},
3891        'location': {'key': 'location', 'type': 'str'},
3892        'tags': {'key': 'tags', 'type': '{str}'},
3893        'etag': {'key': 'etag', 'type': 'str'},
3894        'authorization_key': {'key': 'properties.authorizationKey', 'type': 'str'},
3895        'virtual_network_gateway1': {'key': 'properties.virtualNetworkGateway1', 'type': 'VirtualNetworkGateway'},
3896        'virtual_network_gateway2': {'key': 'properties.virtualNetworkGateway2', 'type': 'VirtualNetworkGateway'},
3897        'local_network_gateway2': {'key': 'properties.localNetworkGateway2', 'type': 'LocalNetworkGateway'},
3898        'connection_type': {'key': 'properties.connectionType', 'type': 'str'},
3899        'routing_weight': {'key': 'properties.routingWeight', 'type': 'int'},
3900        'shared_key': {'key': 'properties.sharedKey', 'type': 'str'},
3901        'connection_status': {'key': 'properties.connectionStatus', 'type': 'str'},
3902        'egress_bytes_transferred': {'key': 'properties.egressBytesTransferred', 'type': 'long'},
3903        'ingress_bytes_transferred': {'key': 'properties.ingressBytesTransferred', 'type': 'long'},
3904        'peer': {'key': 'properties.peer', 'type': 'SubResource'},
3905        'enable_bgp': {'key': 'properties.enableBgp', 'type': 'bool'},
3906        'resource_guid': {'key': 'properties.resourceGuid', 'type': 'str'},
3907        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
3908    }
3909
3910    def __init__(
3911        self,
3912        *,
3913        id: Optional[str] = None,
3914        location: Optional[str] = None,
3915        tags: Optional[Dict[str, str]] = None,
3916        etag: Optional[str] = None,
3917        authorization_key: Optional[str] = None,
3918        virtual_network_gateway1: Optional["VirtualNetworkGateway"] = None,
3919        virtual_network_gateway2: Optional["VirtualNetworkGateway"] = None,
3920        local_network_gateway2: Optional["LocalNetworkGateway"] = None,
3921        connection_type: Optional[Union[str, "VirtualNetworkGatewayConnectionType"]] = None,
3922        routing_weight: Optional[int] = None,
3923        shared_key: Optional[str] = None,
3924        connection_status: Optional[Union[str, "VirtualNetworkGatewayConnectionStatus"]] = None,
3925        egress_bytes_transferred: Optional[int] = None,
3926        ingress_bytes_transferred: Optional[int] = None,
3927        peer: Optional["SubResource"] = None,
3928        enable_bgp: Optional[bool] = None,
3929        resource_guid: Optional[str] = None,
3930        provisioning_state: Optional[str] = None,
3931        **kwargs
3932    ):
3933        super(VirtualNetworkGatewayConnection, self).__init__(id=id, location=location, tags=tags, **kwargs)
3934        self.etag = etag
3935        self.authorization_key = authorization_key
3936        self.virtual_network_gateway1 = virtual_network_gateway1
3937        self.virtual_network_gateway2 = virtual_network_gateway2
3938        self.local_network_gateway2 = local_network_gateway2
3939        self.connection_type = connection_type
3940        self.routing_weight = routing_weight
3941        self.shared_key = shared_key
3942        self.connection_status = connection_status
3943        self.egress_bytes_transferred = egress_bytes_transferred
3944        self.ingress_bytes_transferred = ingress_bytes_transferred
3945        self.peer = peer
3946        self.enable_bgp = enable_bgp
3947        self.resource_guid = resource_guid
3948        self.provisioning_state = provisioning_state
3949
3950
3951class VirtualNetworkGatewayConnectionListResult(msrest.serialization.Model):
3952    """Response for the ListVirtualNetworkGatewayConnections API service call.
3953
3954    :param value: Gets a list of VirtualNetworkGatewayConnection resources that exists in a
3955     resource group.
3956    :type value: list[~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGatewayConnection]
3957    :param next_link: The URL to get the next set of results.
3958    :type next_link: str
3959    """
3960
3961    _attribute_map = {
3962        'value': {'key': 'value', 'type': '[VirtualNetworkGatewayConnection]'},
3963        'next_link': {'key': 'nextLink', 'type': 'str'},
3964    }
3965
3966    def __init__(
3967        self,
3968        *,
3969        value: Optional[List["VirtualNetworkGatewayConnection"]] = None,
3970        next_link: Optional[str] = None,
3971        **kwargs
3972    ):
3973        super(VirtualNetworkGatewayConnectionListResult, self).__init__(**kwargs)
3974        self.value = value
3975        self.next_link = next_link
3976
3977
3978class VirtualNetworkGatewayIPConfiguration(SubResource):
3979    """IP configuration for virtual network gateway.
3980
3981    :param id: Resource Identifier.
3982    :type id: str
3983    :param name: The name of the resource that is unique within a resource group. This name can be
3984     used to access the resource.
3985    :type name: str
3986    :param etag: A unique read-only string that changes whenever the resource is updated.
3987    :type etag: str
3988    :param private_ip_address: Gets or sets the privateIPAddress of the IP Configuration.
3989    :type private_ip_address: str
3990    :param private_ip_allocation_method: The private IP allocation method. Possible values are:
3991     'Static' and 'Dynamic'. Possible values include: "Static", "Dynamic".
3992    :type private_ip_allocation_method: str or
3993     ~azure.mgmt.network.v2015_06_15.models.IPAllocationMethod
3994    :param subnet: The reference of the subnet resource.
3995    :type subnet: ~azure.mgmt.network.v2015_06_15.models.SubResource
3996    :param public_ip_address: The reference of the public IP resource.
3997    :type public_ip_address: ~azure.mgmt.network.v2015_06_15.models.SubResource
3998    :param provisioning_state: The provisioning state of the public IP resource. Possible values
3999     are: 'Updating', 'Deleting', and 'Failed'.
4000    :type provisioning_state: str
4001    """
4002
4003    _attribute_map = {
4004        'id': {'key': 'id', 'type': 'str'},
4005        'name': {'key': 'name', 'type': 'str'},
4006        'etag': {'key': 'etag', 'type': 'str'},
4007        'private_ip_address': {'key': 'properties.privateIPAddress', 'type': 'str'},
4008        'private_ip_allocation_method': {'key': 'properties.privateIPAllocationMethod', 'type': 'str'},
4009        'subnet': {'key': 'properties.subnet', 'type': 'SubResource'},
4010        'public_ip_address': {'key': 'properties.publicIPAddress', 'type': 'SubResource'},
4011        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4012    }
4013
4014    def __init__(
4015        self,
4016        *,
4017        id: Optional[str] = None,
4018        name: Optional[str] = None,
4019        etag: Optional[str] = None,
4020        private_ip_address: Optional[str] = None,
4021        private_ip_allocation_method: Optional[Union[str, "IPAllocationMethod"]] = None,
4022        subnet: Optional["SubResource"] = None,
4023        public_ip_address: Optional["SubResource"] = None,
4024        provisioning_state: Optional[str] = None,
4025        **kwargs
4026    ):
4027        super(VirtualNetworkGatewayIPConfiguration, self).__init__(id=id, **kwargs)
4028        self.name = name
4029        self.etag = etag
4030        self.private_ip_address = private_ip_address
4031        self.private_ip_allocation_method = private_ip_allocation_method
4032        self.subnet = subnet
4033        self.public_ip_address = public_ip_address
4034        self.provisioning_state = provisioning_state
4035
4036
4037class VirtualNetworkGatewayListResult(msrest.serialization.Model):
4038    """Response for the ListVirtualNetworkGateways API service call.
4039
4040    :param value: Gets a list of VirtualNetworkGateway resources that exists in a resource group.
4041    :type value: list[~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGateway]
4042    :param next_link: The URL to get the next set of results.
4043    :type next_link: str
4044    """
4045
4046    _attribute_map = {
4047        'value': {'key': 'value', 'type': '[VirtualNetworkGateway]'},
4048        'next_link': {'key': 'nextLink', 'type': 'str'},
4049    }
4050
4051    def __init__(
4052        self,
4053        *,
4054        value: Optional[List["VirtualNetworkGateway"]] = None,
4055        next_link: Optional[str] = None,
4056        **kwargs
4057    ):
4058        super(VirtualNetworkGatewayListResult, self).__init__(**kwargs)
4059        self.value = value
4060        self.next_link = next_link
4061
4062
4063class VirtualNetworkGatewaySku(msrest.serialization.Model):
4064    """VirtualNetworkGatewaySku details.
4065
4066    :param name: Gateway sku name -Basic/HighPerformance/Standard. Possible values include:
4067     "Basic", "HighPerformance", "Standard".
4068    :type name: str or ~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGatewaySkuName
4069    :param tier: Gateway sku tier -Basic/HighPerformance/Standard. Possible values include:
4070     "Basic", "HighPerformance", "Standard".
4071    :type tier: str or ~azure.mgmt.network.v2015_06_15.models.VirtualNetworkGatewaySkuTier
4072    :param capacity: The capacity.
4073    :type capacity: int
4074    """
4075
4076    _attribute_map = {
4077        'name': {'key': 'name', 'type': 'str'},
4078        'tier': {'key': 'tier', 'type': 'str'},
4079        'capacity': {'key': 'capacity', 'type': 'int'},
4080    }
4081
4082    def __init__(
4083        self,
4084        *,
4085        name: Optional[Union[str, "VirtualNetworkGatewaySkuName"]] = None,
4086        tier: Optional[Union[str, "VirtualNetworkGatewaySkuTier"]] = None,
4087        capacity: Optional[int] = None,
4088        **kwargs
4089    ):
4090        super(VirtualNetworkGatewaySku, self).__init__(**kwargs)
4091        self.name = name
4092        self.tier = tier
4093        self.capacity = capacity
4094
4095
4096class VirtualNetworkListResult(msrest.serialization.Model):
4097    """Response for the ListVirtualNetworks API service call.
4098
4099    :param value: Gets a list of VirtualNetwork resources in a resource group.
4100    :type value: list[~azure.mgmt.network.v2015_06_15.models.VirtualNetwork]
4101    :param next_link: The URL to get the next set of results.
4102    :type next_link: str
4103    """
4104
4105    _attribute_map = {
4106        'value': {'key': 'value', 'type': '[VirtualNetwork]'},
4107        'next_link': {'key': 'nextLink', 'type': 'str'},
4108    }
4109
4110    def __init__(
4111        self,
4112        *,
4113        value: Optional[List["VirtualNetwork"]] = None,
4114        next_link: Optional[str] = None,
4115        **kwargs
4116    ):
4117        super(VirtualNetworkListResult, self).__init__(**kwargs)
4118        self.value = value
4119        self.next_link = next_link
4120
4121
4122class VpnClientConfiguration(msrest.serialization.Model):
4123    """VpnClientConfiguration for P2S client.
4124
4125    :param vpn_client_address_pool: Gets or sets the reference of the Address space resource which
4126     represents Address space for P2S VpnClient.
4127    :type vpn_client_address_pool: ~azure.mgmt.network.v2015_06_15.models.AddressSpace
4128    :param vpn_client_root_certificates: VpnClientRootCertificate for Virtual network gateway.
4129    :type vpn_client_root_certificates:
4130     list[~azure.mgmt.network.v2015_06_15.models.VpnClientRootCertificate]
4131    :param vpn_client_revoked_certificates: VpnClientRevokedCertificate for Virtual network
4132     gateway.
4133    :type vpn_client_revoked_certificates:
4134     list[~azure.mgmt.network.v2015_06_15.models.VpnClientRevokedCertificate]
4135    """
4136
4137    _attribute_map = {
4138        'vpn_client_address_pool': {'key': 'vpnClientAddressPool', 'type': 'AddressSpace'},
4139        'vpn_client_root_certificates': {'key': 'vpnClientRootCertificates', 'type': '[VpnClientRootCertificate]'},
4140        'vpn_client_revoked_certificates': {'key': 'vpnClientRevokedCertificates', 'type': '[VpnClientRevokedCertificate]'},
4141    }
4142
4143    def __init__(
4144        self,
4145        *,
4146        vpn_client_address_pool: Optional["AddressSpace"] = None,
4147        vpn_client_root_certificates: Optional[List["VpnClientRootCertificate"]] = None,
4148        vpn_client_revoked_certificates: Optional[List["VpnClientRevokedCertificate"]] = None,
4149        **kwargs
4150    ):
4151        super(VpnClientConfiguration, self).__init__(**kwargs)
4152        self.vpn_client_address_pool = vpn_client_address_pool
4153        self.vpn_client_root_certificates = vpn_client_root_certificates
4154        self.vpn_client_revoked_certificates = vpn_client_revoked_certificates
4155
4156
4157class VpnClientParameters(msrest.serialization.Model):
4158    """VpnClientParameters.
4159
4160    :param processor_architecture: VPN client Processor Architecture. Possible values are: 'AMD64'
4161     and 'X86'. Possible values include: "Amd64", "X86".
4162    :type processor_architecture: str or
4163     ~azure.mgmt.network.v2015_06_15.models.ProcessorArchitecture
4164    """
4165
4166    _attribute_map = {
4167        'processor_architecture': {'key': 'ProcessorArchitecture', 'type': 'str'},
4168    }
4169
4170    def __init__(
4171        self,
4172        *,
4173        processor_architecture: Optional[Union[str, "ProcessorArchitecture"]] = None,
4174        **kwargs
4175    ):
4176        super(VpnClientParameters, self).__init__(**kwargs)
4177        self.processor_architecture = processor_architecture
4178
4179
4180class VpnClientRevokedCertificate(SubResource):
4181    """VPN client revoked certificate of virtual network gateway.
4182
4183    :param id: Resource Identifier.
4184    :type id: str
4185    :param name: The name of the resource that is unique within a resource group. This name can be
4186     used to access the resource.
4187    :type name: str
4188    :param etag: A unique read-only string that changes whenever the resource is updated.
4189    :type etag: str
4190    :param thumbprint: The revoked VPN client certificate thumbprint.
4191    :type thumbprint: str
4192    :param provisioning_state: The provisioning state of the VPN client revoked certificate
4193     resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
4194    :type provisioning_state: str
4195    """
4196
4197    _attribute_map = {
4198        'id': {'key': 'id', 'type': 'str'},
4199        'name': {'key': 'name', 'type': 'str'},
4200        'etag': {'key': 'etag', 'type': 'str'},
4201        'thumbprint': {'key': 'properties.thumbprint', 'type': 'str'},
4202        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4203    }
4204
4205    def __init__(
4206        self,
4207        *,
4208        id: Optional[str] = None,
4209        name: Optional[str] = None,
4210        etag: Optional[str] = None,
4211        thumbprint: Optional[str] = None,
4212        provisioning_state: Optional[str] = None,
4213        **kwargs
4214    ):
4215        super(VpnClientRevokedCertificate, self).__init__(id=id, **kwargs)
4216        self.name = name
4217        self.etag = etag
4218        self.thumbprint = thumbprint
4219        self.provisioning_state = provisioning_state
4220
4221
4222class VpnClientRootCertificate(SubResource):
4223    """VPN client root certificate of virtual network gateway.
4224
4225    :param id: Resource Identifier.
4226    :type id: str
4227    :param name: The name of the resource that is unique within a resource group. This name can be
4228     used to access the resource.
4229    :type name: str
4230    :param etag: A unique read-only string that changes whenever the resource is updated.
4231    :type etag: str
4232    :param public_cert_data: Gets or sets the certificate public data.
4233    :type public_cert_data: str
4234    :param provisioning_state: The provisioning state of the VPN client root certificate resource.
4235     Possible values are: 'Updating', 'Deleting', and 'Failed'.
4236    :type provisioning_state: str
4237    """
4238
4239    _attribute_map = {
4240        'id': {'key': 'id', 'type': 'str'},
4241        'name': {'key': 'name', 'type': 'str'},
4242        'etag': {'key': 'etag', 'type': 'str'},
4243        'public_cert_data': {'key': 'properties.publicCertData', 'type': 'str'},
4244        'provisioning_state': {'key': 'properties.provisioningState', 'type': 'str'},
4245    }
4246
4247    def __init__(
4248        self,
4249        *,
4250        id: Optional[str] = None,
4251        name: Optional[str] = None,
4252        etag: Optional[str] = None,
4253        public_cert_data: Optional[str] = None,
4254        provisioning_state: Optional[str] = None,
4255        **kwargs
4256    ):
4257        super(VpnClientRootCertificate, self).__init__(id=id, **kwargs)
4258        self.name = name
4259        self.etag = etag
4260        self.public_cert_data = public_cert_data
4261        self.provisioning_state = provisioning_state
4262