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
5# license information.
6#
7# Code generated by Microsoft (R) AutoRest Code Generator.
8# Changes may cause incorrect behavior and will be lost if the code is
9# regenerated.
10# --------------------------------------------------------------------------
11
12from typing import TYPE_CHECKING
13
14from azure.mgmt.core import ARMPipelineClient
15from azure.profiles import KnownProfiles, ProfileDefinition
16from azure.profiles.multiapiclient import MultiApiClientMixin
17from msrest import Deserializer, Serializer
18
19from ._configuration import WebSiteManagementClientConfiguration
20from ._operations_mixin import WebSiteManagementClientOperationsMixin
21
22if TYPE_CHECKING:
23    # pylint: disable=unused-import,ungrouped-imports
24    from typing import Any, Optional
25
26    from azure.core.credentials import TokenCredential
27    from azure.core.pipeline.transport import HttpRequest, HttpResponse
28
29class _SDKClient(object):
30    def __init__(self, *args, **kwargs):
31        """This is a fake class to support current implemetation of MultiApiClientMixin."
32        Will be removed in final version of multiapi azure-core based client
33        """
34        pass
35
36class WebSiteManagementClient(WebSiteManagementClientOperationsMixin, MultiApiClientMixin, _SDKClient):
37    """WebSite Management Client.
38
39    This ready contains multiple API versions, to help you deal with all of the Azure clouds
40    (Azure Stack, Azure Government, Azure China, etc.).
41    By default, it uses the latest API version available on public Azure.
42    For production, you should stick to a particular api-version and/or profile.
43    The profile sets a mapping between an operation group and its API version.
44    The api-version parameter sets the default API version if the operation
45    group is not described in the profile.
46
47    :param credential: Credential needed for the client to connect to Azure.
48    :type credential: ~azure.core.credentials.TokenCredential
49    :param subscription_id: Your Azure subscription ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000).
50    :type subscription_id: str
51    :param api_version: API version to use if no profile is provided, or if missing in profile.
52    :type api_version: str
53    :param base_url: Service URL
54    :type base_url: str
55    :param profile: A profile definition, from KnownProfiles to dict.
56    :type profile: azure.profiles.KnownProfiles
57    :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
58    """
59
60    DEFAULT_API_VERSION = '2021-01-15'
61    _PROFILE_TAG = "azure.mgmt.web.WebSiteManagementClient"
62    LATEST_PROFILE = ProfileDefinition({
63        _PROFILE_TAG: {
64            None: DEFAULT_API_VERSION,
65            'billing_meters': '2016-03-01',
66            'validate_container_settings': '2018-02-01',
67        }},
68        _PROFILE_TAG + " latest"
69    )
70
71    def __init__(
72        self,
73        credential,  # type: "TokenCredential"
74        subscription_id,  # type: str
75        api_version=None, # type: Optional[str]
76        base_url=None,  # type: Optional[str]
77        profile=KnownProfiles.default, # type: KnownProfiles
78        **kwargs  # type: Any
79    ):
80        if not base_url:
81            base_url = 'https://management.azure.com'
82        self._config = WebSiteManagementClientConfiguration(credential, subscription_id, **kwargs)
83        self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs)
84        super(WebSiteManagementClient, self).__init__(
85            api_version=api_version,
86            profile=profile
87        )
88
89    @classmethod
90    def _models_dict(cls, api_version):
91        return {k: v for k, v in cls.models(api_version).__dict__.items() if isinstance(v, type)}
92
93    @classmethod
94    def models(cls, api_version=DEFAULT_API_VERSION):
95        """Module depends on the API version:
96
97           * 2015-04-01: :mod:`v2015_04_01.models<azure.mgmt.web.v2015_04_01.models>`
98           * 2015-08-01: :mod:`v2015_08_01.models<azure.mgmt.web.v2015_08_01.models>`
99           * 2016-03-01: :mod:`v2016_03_01.models<azure.mgmt.web.v2016_03_01.models>`
100           * 2016-08-01: :mod:`v2016_08_01.models<azure.mgmt.web.v2016_08_01.models>`
101           * 2016-09-01: :mod:`v2016_09_01.models<azure.mgmt.web.v2016_09_01.models>`
102           * 2018-02-01: :mod:`v2018_02_01.models<azure.mgmt.web.v2018_02_01.models>`
103           * 2018-11-01: :mod:`v2018_11_01.models<azure.mgmt.web.v2018_11_01.models>`
104           * 2019-08-01: :mod:`v2019_08_01.models<azure.mgmt.web.v2019_08_01.models>`
105           * 2020-06-01: :mod:`v2020_06_01.models<azure.mgmt.web.v2020_06_01.models>`
106           * 2020-09-01: :mod:`v2020_09_01.models<azure.mgmt.web.v2020_09_01.models>`
107           * 2020-12-01: :mod:`v2020_12_01.models<azure.mgmt.web.v2020_12_01.models>`
108           * 2021-01-01: :mod:`v2021_01_01.models<azure.mgmt.web.v2021_01_01.models>`
109           * 2021-01-15: :mod:`v2021_01_15.models<azure.mgmt.web.v2021_01_15.models>`
110        """
111        if api_version == '2015-04-01':
112            from .v2015_04_01 import models
113            return models
114        elif api_version == '2015-08-01':
115            from .v2015_08_01 import models
116            return models
117        elif api_version == '2016-03-01':
118            from .v2016_03_01 import models
119            return models
120        elif api_version == '2016-08-01':
121            from .v2016_08_01 import models
122            return models
123        elif api_version == '2016-09-01':
124            from .v2016_09_01 import models
125            return models
126        elif api_version == '2018-02-01':
127            from .v2018_02_01 import models
128            return models
129        elif api_version == '2018-11-01':
130            from .v2018_11_01 import models
131            return models
132        elif api_version == '2019-08-01':
133            from .v2019_08_01 import models
134            return models
135        elif api_version == '2020-06-01':
136            from .v2020_06_01 import models
137            return models
138        elif api_version == '2020-09-01':
139            from .v2020_09_01 import models
140            return models
141        elif api_version == '2020-12-01':
142            from .v2020_12_01 import models
143            return models
144        elif api_version == '2021-01-01':
145            from .v2021_01_01 import models
146            return models
147        elif api_version == '2021-01-15':
148            from .v2021_01_15 import models
149            return models
150        raise ValueError("API version {} is not available".format(api_version))
151
152    @property
153    def app_service_certificate_orders(self):
154        """Instance depends on the API version:
155
156           * 2015-08-01: :class:`AppServiceCertificateOrdersOperations<azure.mgmt.web.v2015_08_01.operations.AppServiceCertificateOrdersOperations>`
157           * 2018-02-01: :class:`AppServiceCertificateOrdersOperations<azure.mgmt.web.v2018_02_01.operations.AppServiceCertificateOrdersOperations>`
158           * 2019-08-01: :class:`AppServiceCertificateOrdersOperations<azure.mgmt.web.v2019_08_01.operations.AppServiceCertificateOrdersOperations>`
159           * 2020-06-01: :class:`AppServiceCertificateOrdersOperations<azure.mgmt.web.v2020_06_01.operations.AppServiceCertificateOrdersOperations>`
160           * 2020-09-01: :class:`AppServiceCertificateOrdersOperations<azure.mgmt.web.v2020_09_01.operations.AppServiceCertificateOrdersOperations>`
161           * 2020-12-01: :class:`AppServiceCertificateOrdersOperations<azure.mgmt.web.v2020_12_01.operations.AppServiceCertificateOrdersOperations>`
162           * 2021-01-01: :class:`AppServiceCertificateOrdersOperations<azure.mgmt.web.v2021_01_01.operations.AppServiceCertificateOrdersOperations>`
163           * 2021-01-15: :class:`AppServiceCertificateOrdersOperations<azure.mgmt.web.v2021_01_15.operations.AppServiceCertificateOrdersOperations>`
164        """
165        api_version = self._get_api_version('app_service_certificate_orders')
166        if api_version == '2015-08-01':
167            from .v2015_08_01.operations import AppServiceCertificateOrdersOperations as OperationClass
168        elif api_version == '2018-02-01':
169            from .v2018_02_01.operations import AppServiceCertificateOrdersOperations as OperationClass
170        elif api_version == '2019-08-01':
171            from .v2019_08_01.operations import AppServiceCertificateOrdersOperations as OperationClass
172        elif api_version == '2020-06-01':
173            from .v2020_06_01.operations import AppServiceCertificateOrdersOperations as OperationClass
174        elif api_version == '2020-09-01':
175            from .v2020_09_01.operations import AppServiceCertificateOrdersOperations as OperationClass
176        elif api_version == '2020-12-01':
177            from .v2020_12_01.operations import AppServiceCertificateOrdersOperations as OperationClass
178        elif api_version == '2021-01-01':
179            from .v2021_01_01.operations import AppServiceCertificateOrdersOperations as OperationClass
180        elif api_version == '2021-01-15':
181            from .v2021_01_15.operations import AppServiceCertificateOrdersOperations as OperationClass
182        else:
183            raise ValueError("API version {} does not have operation group 'app_service_certificate_orders'".format(api_version))
184        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
185
186    @property
187    def app_service_environments(self):
188        """Instance depends on the API version:
189
190           * 2016-09-01: :class:`AppServiceEnvironmentsOperations<azure.mgmt.web.v2016_09_01.operations.AppServiceEnvironmentsOperations>`
191           * 2018-02-01: :class:`AppServiceEnvironmentsOperations<azure.mgmt.web.v2018_02_01.operations.AppServiceEnvironmentsOperations>`
192           * 2019-08-01: :class:`AppServiceEnvironmentsOperations<azure.mgmt.web.v2019_08_01.operations.AppServiceEnvironmentsOperations>`
193           * 2020-06-01: :class:`AppServiceEnvironmentsOperations<azure.mgmt.web.v2020_06_01.operations.AppServiceEnvironmentsOperations>`
194           * 2020-09-01: :class:`AppServiceEnvironmentsOperations<azure.mgmt.web.v2020_09_01.operations.AppServiceEnvironmentsOperations>`
195           * 2020-12-01: :class:`AppServiceEnvironmentsOperations<azure.mgmt.web.v2020_12_01.operations.AppServiceEnvironmentsOperations>`
196           * 2021-01-01: :class:`AppServiceEnvironmentsOperations<azure.mgmt.web.v2021_01_01.operations.AppServiceEnvironmentsOperations>`
197           * 2021-01-15: :class:`AppServiceEnvironmentsOperations<azure.mgmt.web.v2021_01_15.operations.AppServiceEnvironmentsOperations>`
198        """
199        api_version = self._get_api_version('app_service_environments')
200        if api_version == '2016-09-01':
201            from .v2016_09_01.operations import AppServiceEnvironmentsOperations as OperationClass
202        elif api_version == '2018-02-01':
203            from .v2018_02_01.operations import AppServiceEnvironmentsOperations as OperationClass
204        elif api_version == '2019-08-01':
205            from .v2019_08_01.operations import AppServiceEnvironmentsOperations as OperationClass
206        elif api_version == '2020-06-01':
207            from .v2020_06_01.operations import AppServiceEnvironmentsOperations as OperationClass
208        elif api_version == '2020-09-01':
209            from .v2020_09_01.operations import AppServiceEnvironmentsOperations as OperationClass
210        elif api_version == '2020-12-01':
211            from .v2020_12_01.operations import AppServiceEnvironmentsOperations as OperationClass
212        elif api_version == '2021-01-01':
213            from .v2021_01_01.operations import AppServiceEnvironmentsOperations as OperationClass
214        elif api_version == '2021-01-15':
215            from .v2021_01_15.operations import AppServiceEnvironmentsOperations as OperationClass
216        else:
217            raise ValueError("API version {} does not have operation group 'app_service_environments'".format(api_version))
218        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
219
220    @property
221    def app_service_plans(self):
222        """Instance depends on the API version:
223
224           * 2016-09-01: :class:`AppServicePlansOperations<azure.mgmt.web.v2016_09_01.operations.AppServicePlansOperations>`
225           * 2018-02-01: :class:`AppServicePlansOperations<azure.mgmt.web.v2018_02_01.operations.AppServicePlansOperations>`
226           * 2019-08-01: :class:`AppServicePlansOperations<azure.mgmt.web.v2019_08_01.operations.AppServicePlansOperations>`
227           * 2020-06-01: :class:`AppServicePlansOperations<azure.mgmt.web.v2020_06_01.operations.AppServicePlansOperations>`
228           * 2020-09-01: :class:`AppServicePlansOperations<azure.mgmt.web.v2020_09_01.operations.AppServicePlansOperations>`
229           * 2020-12-01: :class:`AppServicePlansOperations<azure.mgmt.web.v2020_12_01.operations.AppServicePlansOperations>`
230           * 2021-01-01: :class:`AppServicePlansOperations<azure.mgmt.web.v2021_01_01.operations.AppServicePlansOperations>`
231           * 2021-01-15: :class:`AppServicePlansOperations<azure.mgmt.web.v2021_01_15.operations.AppServicePlansOperations>`
232        """
233        api_version = self._get_api_version('app_service_plans')
234        if api_version == '2016-09-01':
235            from .v2016_09_01.operations import AppServicePlansOperations as OperationClass
236        elif api_version == '2018-02-01':
237            from .v2018_02_01.operations import AppServicePlansOperations as OperationClass
238        elif api_version == '2019-08-01':
239            from .v2019_08_01.operations import AppServicePlansOperations as OperationClass
240        elif api_version == '2020-06-01':
241            from .v2020_06_01.operations import AppServicePlansOperations as OperationClass
242        elif api_version == '2020-09-01':
243            from .v2020_09_01.operations import AppServicePlansOperations as OperationClass
244        elif api_version == '2020-12-01':
245            from .v2020_12_01.operations import AppServicePlansOperations as OperationClass
246        elif api_version == '2021-01-01':
247            from .v2021_01_01.operations import AppServicePlansOperations as OperationClass
248        elif api_version == '2021-01-15':
249            from .v2021_01_15.operations import AppServicePlansOperations as OperationClass
250        else:
251            raise ValueError("API version {} does not have operation group 'app_service_plans'".format(api_version))
252        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
253
254    @property
255    def billing_meters(self):
256        """Instance depends on the API version:
257
258           * 2016-03-01: :class:`BillingMetersOperations<azure.mgmt.web.v2016_03_01.operations.BillingMetersOperations>`
259        """
260        api_version = self._get_api_version('billing_meters')
261        if api_version == '2016-03-01':
262            from .v2016_03_01.operations import BillingMetersOperations as OperationClass
263        else:
264            raise ValueError("API version {} does not have operation group 'billing_meters'".format(api_version))
265        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
266
267    @property
268    def certificate_orders_diagnostics(self):
269        """Instance depends on the API version:
270
271           * 2020-12-01: :class:`CertificateOrdersDiagnosticsOperations<azure.mgmt.web.v2020_12_01.operations.CertificateOrdersDiagnosticsOperations>`
272           * 2021-01-01: :class:`CertificateOrdersDiagnosticsOperations<azure.mgmt.web.v2021_01_01.operations.CertificateOrdersDiagnosticsOperations>`
273           * 2021-01-15: :class:`CertificateOrdersDiagnosticsOperations<azure.mgmt.web.v2021_01_15.operations.CertificateOrdersDiagnosticsOperations>`
274        """
275        api_version = self._get_api_version('certificate_orders_diagnostics')
276        if api_version == '2020-12-01':
277            from .v2020_12_01.operations import CertificateOrdersDiagnosticsOperations as OperationClass
278        elif api_version == '2021-01-01':
279            from .v2021_01_01.operations import CertificateOrdersDiagnosticsOperations as OperationClass
280        elif api_version == '2021-01-15':
281            from .v2021_01_15.operations import CertificateOrdersDiagnosticsOperations as OperationClass
282        else:
283            raise ValueError("API version {} does not have operation group 'certificate_orders_diagnostics'".format(api_version))
284        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
285
286    @property
287    def certificate_registration_provider(self):
288        """Instance depends on the API version:
289
290           * 2015-08-01: :class:`CertificateRegistrationProviderOperations<azure.mgmt.web.v2015_08_01.operations.CertificateRegistrationProviderOperations>`
291           * 2018-02-01: :class:`CertificateRegistrationProviderOperations<azure.mgmt.web.v2018_02_01.operations.CertificateRegistrationProviderOperations>`
292           * 2019-08-01: :class:`CertificateRegistrationProviderOperations<azure.mgmt.web.v2019_08_01.operations.CertificateRegistrationProviderOperations>`
293           * 2020-06-01: :class:`CertificateRegistrationProviderOperations<azure.mgmt.web.v2020_06_01.operations.CertificateRegistrationProviderOperations>`
294           * 2020-09-01: :class:`CertificateRegistrationProviderOperations<azure.mgmt.web.v2020_09_01.operations.CertificateRegistrationProviderOperations>`
295           * 2020-12-01: :class:`CertificateRegistrationProviderOperations<azure.mgmt.web.v2020_12_01.operations.CertificateRegistrationProviderOperations>`
296           * 2021-01-01: :class:`CertificateRegistrationProviderOperations<azure.mgmt.web.v2021_01_01.operations.CertificateRegistrationProviderOperations>`
297           * 2021-01-15: :class:`CertificateRegistrationProviderOperations<azure.mgmt.web.v2021_01_15.operations.CertificateRegistrationProviderOperations>`
298        """
299        api_version = self._get_api_version('certificate_registration_provider')
300        if api_version == '2015-08-01':
301            from .v2015_08_01.operations import CertificateRegistrationProviderOperations as OperationClass
302        elif api_version == '2018-02-01':
303            from .v2018_02_01.operations import CertificateRegistrationProviderOperations as OperationClass
304        elif api_version == '2019-08-01':
305            from .v2019_08_01.operations import CertificateRegistrationProviderOperations as OperationClass
306        elif api_version == '2020-06-01':
307            from .v2020_06_01.operations import CertificateRegistrationProviderOperations as OperationClass
308        elif api_version == '2020-09-01':
309            from .v2020_09_01.operations import CertificateRegistrationProviderOperations as OperationClass
310        elif api_version == '2020-12-01':
311            from .v2020_12_01.operations import CertificateRegistrationProviderOperations as OperationClass
312        elif api_version == '2021-01-01':
313            from .v2021_01_01.operations import CertificateRegistrationProviderOperations as OperationClass
314        elif api_version == '2021-01-15':
315            from .v2021_01_15.operations import CertificateRegistrationProviderOperations as OperationClass
316        else:
317            raise ValueError("API version {} does not have operation group 'certificate_registration_provider'".format(api_version))
318        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
319
320    @property
321    def certificates(self):
322        """Instance depends on the API version:
323
324           * 2016-03-01: :class:`CertificatesOperations<azure.mgmt.web.v2016_03_01.operations.CertificatesOperations>`
325           * 2018-02-01: :class:`CertificatesOperations<azure.mgmt.web.v2018_02_01.operations.CertificatesOperations>`
326           * 2018-11-01: :class:`CertificatesOperations<azure.mgmt.web.v2018_11_01.operations.CertificatesOperations>`
327           * 2019-08-01: :class:`CertificatesOperations<azure.mgmt.web.v2019_08_01.operations.CertificatesOperations>`
328           * 2020-06-01: :class:`CertificatesOperations<azure.mgmt.web.v2020_06_01.operations.CertificatesOperations>`
329           * 2020-09-01: :class:`CertificatesOperations<azure.mgmt.web.v2020_09_01.operations.CertificatesOperations>`
330           * 2020-12-01: :class:`CertificatesOperations<azure.mgmt.web.v2020_12_01.operations.CertificatesOperations>`
331           * 2021-01-01: :class:`CertificatesOperations<azure.mgmt.web.v2021_01_01.operations.CertificatesOperations>`
332           * 2021-01-15: :class:`CertificatesOperations<azure.mgmt.web.v2021_01_15.operations.CertificatesOperations>`
333        """
334        api_version = self._get_api_version('certificates')
335        if api_version == '2016-03-01':
336            from .v2016_03_01.operations import CertificatesOperations as OperationClass
337        elif api_version == '2018-02-01':
338            from .v2018_02_01.operations import CertificatesOperations as OperationClass
339        elif api_version == '2018-11-01':
340            from .v2018_11_01.operations import CertificatesOperations as OperationClass
341        elif api_version == '2019-08-01':
342            from .v2019_08_01.operations import CertificatesOperations as OperationClass
343        elif api_version == '2020-06-01':
344            from .v2020_06_01.operations import CertificatesOperations as OperationClass
345        elif api_version == '2020-09-01':
346            from .v2020_09_01.operations import CertificatesOperations as OperationClass
347        elif api_version == '2020-12-01':
348            from .v2020_12_01.operations import CertificatesOperations as OperationClass
349        elif api_version == '2021-01-01':
350            from .v2021_01_01.operations import CertificatesOperations as OperationClass
351        elif api_version == '2021-01-15':
352            from .v2021_01_15.operations import CertificatesOperations as OperationClass
353        else:
354            raise ValueError("API version {} does not have operation group 'certificates'".format(api_version))
355        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
356
357    @property
358    def deleted_web_apps(self):
359        """Instance depends on the API version:
360
361           * 2016-03-01: :class:`DeletedWebAppsOperations<azure.mgmt.web.v2016_03_01.operations.DeletedWebAppsOperations>`
362           * 2018-02-01: :class:`DeletedWebAppsOperations<azure.mgmt.web.v2018_02_01.operations.DeletedWebAppsOperations>`
363           * 2019-08-01: :class:`DeletedWebAppsOperations<azure.mgmt.web.v2019_08_01.operations.DeletedWebAppsOperations>`
364           * 2020-06-01: :class:`DeletedWebAppsOperations<azure.mgmt.web.v2020_06_01.operations.DeletedWebAppsOperations>`
365           * 2020-09-01: :class:`DeletedWebAppsOperations<azure.mgmt.web.v2020_09_01.operations.DeletedWebAppsOperations>`
366           * 2020-12-01: :class:`DeletedWebAppsOperations<azure.mgmt.web.v2020_12_01.operations.DeletedWebAppsOperations>`
367           * 2021-01-01: :class:`DeletedWebAppsOperations<azure.mgmt.web.v2021_01_01.operations.DeletedWebAppsOperations>`
368           * 2021-01-15: :class:`DeletedWebAppsOperations<azure.mgmt.web.v2021_01_15.operations.DeletedWebAppsOperations>`
369        """
370        api_version = self._get_api_version('deleted_web_apps')
371        if api_version == '2016-03-01':
372            from .v2016_03_01.operations import DeletedWebAppsOperations as OperationClass
373        elif api_version == '2018-02-01':
374            from .v2018_02_01.operations import DeletedWebAppsOperations as OperationClass
375        elif api_version == '2019-08-01':
376            from .v2019_08_01.operations import DeletedWebAppsOperations as OperationClass
377        elif api_version == '2020-06-01':
378            from .v2020_06_01.operations import DeletedWebAppsOperations as OperationClass
379        elif api_version == '2020-09-01':
380            from .v2020_09_01.operations import DeletedWebAppsOperations as OperationClass
381        elif api_version == '2020-12-01':
382            from .v2020_12_01.operations import DeletedWebAppsOperations as OperationClass
383        elif api_version == '2021-01-01':
384            from .v2021_01_01.operations import DeletedWebAppsOperations as OperationClass
385        elif api_version == '2021-01-15':
386            from .v2021_01_15.operations import DeletedWebAppsOperations as OperationClass
387        else:
388            raise ValueError("API version {} does not have operation group 'deleted_web_apps'".format(api_version))
389        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
390
391    @property
392    def diagnostics(self):
393        """Instance depends on the API version:
394
395           * 2016-03-01: :class:`DiagnosticsOperations<azure.mgmt.web.v2016_03_01.operations.DiagnosticsOperations>`
396           * 2018-02-01: :class:`DiagnosticsOperations<azure.mgmt.web.v2018_02_01.operations.DiagnosticsOperations>`
397           * 2019-08-01: :class:`DiagnosticsOperations<azure.mgmt.web.v2019_08_01.operations.DiagnosticsOperations>`
398           * 2020-06-01: :class:`DiagnosticsOperations<azure.mgmt.web.v2020_06_01.operations.DiagnosticsOperations>`
399           * 2020-09-01: :class:`DiagnosticsOperations<azure.mgmt.web.v2020_09_01.operations.DiagnosticsOperations>`
400           * 2020-12-01: :class:`DiagnosticsOperations<azure.mgmt.web.v2020_12_01.operations.DiagnosticsOperations>`
401           * 2021-01-01: :class:`DiagnosticsOperations<azure.mgmt.web.v2021_01_01.operations.DiagnosticsOperations>`
402           * 2021-01-15: :class:`DiagnosticsOperations<azure.mgmt.web.v2021_01_15.operations.DiagnosticsOperations>`
403        """
404        api_version = self._get_api_version('diagnostics')
405        if api_version == '2016-03-01':
406            from .v2016_03_01.operations import DiagnosticsOperations as OperationClass
407        elif api_version == '2018-02-01':
408            from .v2018_02_01.operations import DiagnosticsOperations as OperationClass
409        elif api_version == '2019-08-01':
410            from .v2019_08_01.operations import DiagnosticsOperations as OperationClass
411        elif api_version == '2020-06-01':
412            from .v2020_06_01.operations import DiagnosticsOperations as OperationClass
413        elif api_version == '2020-09-01':
414            from .v2020_09_01.operations import DiagnosticsOperations as OperationClass
415        elif api_version == '2020-12-01':
416            from .v2020_12_01.operations import DiagnosticsOperations as OperationClass
417        elif api_version == '2021-01-01':
418            from .v2021_01_01.operations import DiagnosticsOperations as OperationClass
419        elif api_version == '2021-01-15':
420            from .v2021_01_15.operations import DiagnosticsOperations as OperationClass
421        else:
422            raise ValueError("API version {} does not have operation group 'diagnostics'".format(api_version))
423        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
424
425    @property
426    def domain_registration_provider(self):
427        """Instance depends on the API version:
428
429           * 2015-04-01: :class:`DomainRegistrationProviderOperations<azure.mgmt.web.v2015_04_01.operations.DomainRegistrationProviderOperations>`
430           * 2018-02-01: :class:`DomainRegistrationProviderOperations<azure.mgmt.web.v2018_02_01.operations.DomainRegistrationProviderOperations>`
431           * 2019-08-01: :class:`DomainRegistrationProviderOperations<azure.mgmt.web.v2019_08_01.operations.DomainRegistrationProviderOperations>`
432           * 2020-06-01: :class:`DomainRegistrationProviderOperations<azure.mgmt.web.v2020_06_01.operations.DomainRegistrationProviderOperations>`
433           * 2020-09-01: :class:`DomainRegistrationProviderOperations<azure.mgmt.web.v2020_09_01.operations.DomainRegistrationProviderOperations>`
434           * 2020-12-01: :class:`DomainRegistrationProviderOperations<azure.mgmt.web.v2020_12_01.operations.DomainRegistrationProviderOperations>`
435           * 2021-01-01: :class:`DomainRegistrationProviderOperations<azure.mgmt.web.v2021_01_01.operations.DomainRegistrationProviderOperations>`
436           * 2021-01-15: :class:`DomainRegistrationProviderOperations<azure.mgmt.web.v2021_01_15.operations.DomainRegistrationProviderOperations>`
437        """
438        api_version = self._get_api_version('domain_registration_provider')
439        if api_version == '2015-04-01':
440            from .v2015_04_01.operations import DomainRegistrationProviderOperations as OperationClass
441        elif api_version == '2018-02-01':
442            from .v2018_02_01.operations import DomainRegistrationProviderOperations as OperationClass
443        elif api_version == '2019-08-01':
444            from .v2019_08_01.operations import DomainRegistrationProviderOperations as OperationClass
445        elif api_version == '2020-06-01':
446            from .v2020_06_01.operations import DomainRegistrationProviderOperations as OperationClass
447        elif api_version == '2020-09-01':
448            from .v2020_09_01.operations import DomainRegistrationProviderOperations as OperationClass
449        elif api_version == '2020-12-01':
450            from .v2020_12_01.operations import DomainRegistrationProviderOperations as OperationClass
451        elif api_version == '2021-01-01':
452            from .v2021_01_01.operations import DomainRegistrationProviderOperations as OperationClass
453        elif api_version == '2021-01-15':
454            from .v2021_01_15.operations import DomainRegistrationProviderOperations as OperationClass
455        else:
456            raise ValueError("API version {} does not have operation group 'domain_registration_provider'".format(api_version))
457        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
458
459    @property
460    def domains(self):
461        """Instance depends on the API version:
462
463           * 2015-04-01: :class:`DomainsOperations<azure.mgmt.web.v2015_04_01.operations.DomainsOperations>`
464           * 2018-02-01: :class:`DomainsOperations<azure.mgmt.web.v2018_02_01.operations.DomainsOperations>`
465           * 2019-08-01: :class:`DomainsOperations<azure.mgmt.web.v2019_08_01.operations.DomainsOperations>`
466           * 2020-06-01: :class:`DomainsOperations<azure.mgmt.web.v2020_06_01.operations.DomainsOperations>`
467           * 2020-09-01: :class:`DomainsOperations<azure.mgmt.web.v2020_09_01.operations.DomainsOperations>`
468           * 2020-12-01: :class:`DomainsOperations<azure.mgmt.web.v2020_12_01.operations.DomainsOperations>`
469           * 2021-01-01: :class:`DomainsOperations<azure.mgmt.web.v2021_01_01.operations.DomainsOperations>`
470           * 2021-01-15: :class:`DomainsOperations<azure.mgmt.web.v2021_01_15.operations.DomainsOperations>`
471        """
472        api_version = self._get_api_version('domains')
473        if api_version == '2015-04-01':
474            from .v2015_04_01.operations import DomainsOperations as OperationClass
475        elif api_version == '2018-02-01':
476            from .v2018_02_01.operations import DomainsOperations as OperationClass
477        elif api_version == '2019-08-01':
478            from .v2019_08_01.operations import DomainsOperations as OperationClass
479        elif api_version == '2020-06-01':
480            from .v2020_06_01.operations import DomainsOperations as OperationClass
481        elif api_version == '2020-09-01':
482            from .v2020_09_01.operations import DomainsOperations as OperationClass
483        elif api_version == '2020-12-01':
484            from .v2020_12_01.operations import DomainsOperations as OperationClass
485        elif api_version == '2021-01-01':
486            from .v2021_01_01.operations import DomainsOperations as OperationClass
487        elif api_version == '2021-01-15':
488            from .v2021_01_15.operations import DomainsOperations as OperationClass
489        else:
490            raise ValueError("API version {} does not have operation group 'domains'".format(api_version))
491        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
492
493    @property
494    def global_model(self):
495        """Instance depends on the API version:
496
497           * 2020-12-01: :class:`GlobalOperations<azure.mgmt.web.v2020_12_01.operations.GlobalOperations>`
498           * 2021-01-01: :class:`GlobalOperations<azure.mgmt.web.v2021_01_01.operations.GlobalOperations>`
499           * 2021-01-15: :class:`GlobalOperations<azure.mgmt.web.v2021_01_15.operations.GlobalOperations>`
500        """
501        api_version = self._get_api_version('global_model')
502        if api_version == '2020-12-01':
503            from .v2020_12_01.operations import GlobalOperations as OperationClass
504        elif api_version == '2021-01-01':
505            from .v2021_01_01.operations import GlobalOperations as OperationClass
506        elif api_version == '2021-01-15':
507            from .v2021_01_15.operations import GlobalOperations as OperationClass
508        else:
509            raise ValueError("API version {} does not have operation group 'global_model'".format(api_version))
510        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
511
512    @property
513    def kube_environments(self):
514        """Instance depends on the API version:
515
516           * 2021-01-01: :class:`KubeEnvironmentsOperations<azure.mgmt.web.v2021_01_01.operations.KubeEnvironmentsOperations>`
517           * 2021-01-15: :class:`KubeEnvironmentsOperations<azure.mgmt.web.v2021_01_15.operations.KubeEnvironmentsOperations>`
518        """
519        api_version = self._get_api_version('kube_environments')
520        if api_version == '2021-01-01':
521            from .v2021_01_01.operations import KubeEnvironmentsOperations as OperationClass
522        elif api_version == '2021-01-15':
523            from .v2021_01_15.operations import KubeEnvironmentsOperations as OperationClass
524        else:
525            raise ValueError("API version {} does not have operation group 'kube_environments'".format(api_version))
526        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
527
528    @property
529    def provider(self):
530        """Instance depends on the API version:
531
532           * 2016-03-01: :class:`ProviderOperations<azure.mgmt.web.v2016_03_01.operations.ProviderOperations>`
533           * 2018-02-01: :class:`ProviderOperations<azure.mgmt.web.v2018_02_01.operations.ProviderOperations>`
534           * 2019-08-01: :class:`ProviderOperations<azure.mgmt.web.v2019_08_01.operations.ProviderOperations>`
535           * 2020-06-01: :class:`ProviderOperations<azure.mgmt.web.v2020_06_01.operations.ProviderOperations>`
536           * 2020-09-01: :class:`ProviderOperations<azure.mgmt.web.v2020_09_01.operations.ProviderOperations>`
537           * 2020-12-01: :class:`ProviderOperations<azure.mgmt.web.v2020_12_01.operations.ProviderOperations>`
538           * 2021-01-01: :class:`ProviderOperations<azure.mgmt.web.v2021_01_01.operations.ProviderOperations>`
539           * 2021-01-15: :class:`ProviderOperations<azure.mgmt.web.v2021_01_15.operations.ProviderOperations>`
540        """
541        api_version = self._get_api_version('provider')
542        if api_version == '2016-03-01':
543            from .v2016_03_01.operations import ProviderOperations as OperationClass
544        elif api_version == '2018-02-01':
545            from .v2018_02_01.operations import ProviderOperations as OperationClass
546        elif api_version == '2019-08-01':
547            from .v2019_08_01.operations import ProviderOperations as OperationClass
548        elif api_version == '2020-06-01':
549            from .v2020_06_01.operations import ProviderOperations as OperationClass
550        elif api_version == '2020-09-01':
551            from .v2020_09_01.operations import ProviderOperations as OperationClass
552        elif api_version == '2020-12-01':
553            from .v2020_12_01.operations import ProviderOperations as OperationClass
554        elif api_version == '2021-01-01':
555            from .v2021_01_01.operations import ProviderOperations as OperationClass
556        elif api_version == '2021-01-15':
557            from .v2021_01_15.operations import ProviderOperations as OperationClass
558        else:
559            raise ValueError("API version {} does not have operation group 'provider'".format(api_version))
560        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
561
562    @property
563    def recommendations(self):
564        """Instance depends on the API version:
565
566           * 2016-03-01: :class:`RecommendationsOperations<azure.mgmt.web.v2016_03_01.operations.RecommendationsOperations>`
567           * 2018-02-01: :class:`RecommendationsOperations<azure.mgmt.web.v2018_02_01.operations.RecommendationsOperations>`
568           * 2019-08-01: :class:`RecommendationsOperations<azure.mgmt.web.v2019_08_01.operations.RecommendationsOperations>`
569           * 2020-06-01: :class:`RecommendationsOperations<azure.mgmt.web.v2020_06_01.operations.RecommendationsOperations>`
570           * 2020-09-01: :class:`RecommendationsOperations<azure.mgmt.web.v2020_09_01.operations.RecommendationsOperations>`
571           * 2020-12-01: :class:`RecommendationsOperations<azure.mgmt.web.v2020_12_01.operations.RecommendationsOperations>`
572           * 2021-01-01: :class:`RecommendationsOperations<azure.mgmt.web.v2021_01_01.operations.RecommendationsOperations>`
573           * 2021-01-15: :class:`RecommendationsOperations<azure.mgmt.web.v2021_01_15.operations.RecommendationsOperations>`
574        """
575        api_version = self._get_api_version('recommendations')
576        if api_version == '2016-03-01':
577            from .v2016_03_01.operations import RecommendationsOperations as OperationClass
578        elif api_version == '2018-02-01':
579            from .v2018_02_01.operations import RecommendationsOperations as OperationClass
580        elif api_version == '2019-08-01':
581            from .v2019_08_01.operations import RecommendationsOperations as OperationClass
582        elif api_version == '2020-06-01':
583            from .v2020_06_01.operations import RecommendationsOperations as OperationClass
584        elif api_version == '2020-09-01':
585            from .v2020_09_01.operations import RecommendationsOperations as OperationClass
586        elif api_version == '2020-12-01':
587            from .v2020_12_01.operations import RecommendationsOperations as OperationClass
588        elif api_version == '2021-01-01':
589            from .v2021_01_01.operations import RecommendationsOperations as OperationClass
590        elif api_version == '2021-01-15':
591            from .v2021_01_15.operations import RecommendationsOperations as OperationClass
592        else:
593            raise ValueError("API version {} does not have operation group 'recommendations'".format(api_version))
594        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
595
596    @property
597    def resource_health_metadata(self):
598        """Instance depends on the API version:
599
600           * 2016-03-01: :class:`ResourceHealthMetadataOperations<azure.mgmt.web.v2016_03_01.operations.ResourceHealthMetadataOperations>`
601           * 2018-02-01: :class:`ResourceHealthMetadataOperations<azure.mgmt.web.v2018_02_01.operations.ResourceHealthMetadataOperations>`
602           * 2019-08-01: :class:`ResourceHealthMetadataOperations<azure.mgmt.web.v2019_08_01.operations.ResourceHealthMetadataOperations>`
603           * 2020-06-01: :class:`ResourceHealthMetadataOperations<azure.mgmt.web.v2020_06_01.operations.ResourceHealthMetadataOperations>`
604           * 2020-09-01: :class:`ResourceHealthMetadataOperations<azure.mgmt.web.v2020_09_01.operations.ResourceHealthMetadataOperations>`
605           * 2020-12-01: :class:`ResourceHealthMetadataOperations<azure.mgmt.web.v2020_12_01.operations.ResourceHealthMetadataOperations>`
606           * 2021-01-01: :class:`ResourceHealthMetadataOperations<azure.mgmt.web.v2021_01_01.operations.ResourceHealthMetadataOperations>`
607           * 2021-01-15: :class:`ResourceHealthMetadataOperations<azure.mgmt.web.v2021_01_15.operations.ResourceHealthMetadataOperations>`
608        """
609        api_version = self._get_api_version('resource_health_metadata')
610        if api_version == '2016-03-01':
611            from .v2016_03_01.operations import ResourceHealthMetadataOperations as OperationClass
612        elif api_version == '2018-02-01':
613            from .v2018_02_01.operations import ResourceHealthMetadataOperations as OperationClass
614        elif api_version == '2019-08-01':
615            from .v2019_08_01.operations import ResourceHealthMetadataOperations as OperationClass
616        elif api_version == '2020-06-01':
617            from .v2020_06_01.operations import ResourceHealthMetadataOperations as OperationClass
618        elif api_version == '2020-09-01':
619            from .v2020_09_01.operations import ResourceHealthMetadataOperations as OperationClass
620        elif api_version == '2020-12-01':
621            from .v2020_12_01.operations import ResourceHealthMetadataOperations as OperationClass
622        elif api_version == '2021-01-01':
623            from .v2021_01_01.operations import ResourceHealthMetadataOperations as OperationClass
624        elif api_version == '2021-01-15':
625            from .v2021_01_15.operations import ResourceHealthMetadataOperations as OperationClass
626        else:
627            raise ValueError("API version {} does not have operation group 'resource_health_metadata'".format(api_version))
628        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
629
630    @property
631    def static_sites(self):
632        """Instance depends on the API version:
633
634           * 2019-08-01: :class:`StaticSitesOperations<azure.mgmt.web.v2019_08_01.operations.StaticSitesOperations>`
635           * 2020-06-01: :class:`StaticSitesOperations<azure.mgmt.web.v2020_06_01.operations.StaticSitesOperations>`
636           * 2020-09-01: :class:`StaticSitesOperations<azure.mgmt.web.v2020_09_01.operations.StaticSitesOperations>`
637           * 2020-12-01: :class:`StaticSitesOperations<azure.mgmt.web.v2020_12_01.operations.StaticSitesOperations>`
638           * 2021-01-01: :class:`StaticSitesOperations<azure.mgmt.web.v2021_01_01.operations.StaticSitesOperations>`
639           * 2021-01-15: :class:`StaticSitesOperations<azure.mgmt.web.v2021_01_15.operations.StaticSitesOperations>`
640        """
641        api_version = self._get_api_version('static_sites')
642        if api_version == '2019-08-01':
643            from .v2019_08_01.operations import StaticSitesOperations as OperationClass
644        elif api_version == '2020-06-01':
645            from .v2020_06_01.operations import StaticSitesOperations as OperationClass
646        elif api_version == '2020-09-01':
647            from .v2020_09_01.operations import StaticSitesOperations as OperationClass
648        elif api_version == '2020-12-01':
649            from .v2020_12_01.operations import StaticSitesOperations as OperationClass
650        elif api_version == '2021-01-01':
651            from .v2021_01_01.operations import StaticSitesOperations as OperationClass
652        elif api_version == '2021-01-15':
653            from .v2021_01_15.operations import StaticSitesOperations as OperationClass
654        else:
655            raise ValueError("API version {} does not have operation group 'static_sites'".format(api_version))
656        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
657
658    @property
659    def top_level_domains(self):
660        """Instance depends on the API version:
661
662           * 2015-04-01: :class:`TopLevelDomainsOperations<azure.mgmt.web.v2015_04_01.operations.TopLevelDomainsOperations>`
663           * 2018-02-01: :class:`TopLevelDomainsOperations<azure.mgmt.web.v2018_02_01.operations.TopLevelDomainsOperations>`
664           * 2019-08-01: :class:`TopLevelDomainsOperations<azure.mgmt.web.v2019_08_01.operations.TopLevelDomainsOperations>`
665           * 2020-06-01: :class:`TopLevelDomainsOperations<azure.mgmt.web.v2020_06_01.operations.TopLevelDomainsOperations>`
666           * 2020-09-01: :class:`TopLevelDomainsOperations<azure.mgmt.web.v2020_09_01.operations.TopLevelDomainsOperations>`
667           * 2020-12-01: :class:`TopLevelDomainsOperations<azure.mgmt.web.v2020_12_01.operations.TopLevelDomainsOperations>`
668           * 2021-01-01: :class:`TopLevelDomainsOperations<azure.mgmt.web.v2021_01_01.operations.TopLevelDomainsOperations>`
669           * 2021-01-15: :class:`TopLevelDomainsOperations<azure.mgmt.web.v2021_01_15.operations.TopLevelDomainsOperations>`
670        """
671        api_version = self._get_api_version('top_level_domains')
672        if api_version == '2015-04-01':
673            from .v2015_04_01.operations import TopLevelDomainsOperations as OperationClass
674        elif api_version == '2018-02-01':
675            from .v2018_02_01.operations import TopLevelDomainsOperations as OperationClass
676        elif api_version == '2019-08-01':
677            from .v2019_08_01.operations import TopLevelDomainsOperations as OperationClass
678        elif api_version == '2020-06-01':
679            from .v2020_06_01.operations import TopLevelDomainsOperations as OperationClass
680        elif api_version == '2020-09-01':
681            from .v2020_09_01.operations import TopLevelDomainsOperations as OperationClass
682        elif api_version == '2020-12-01':
683            from .v2020_12_01.operations import TopLevelDomainsOperations as OperationClass
684        elif api_version == '2021-01-01':
685            from .v2021_01_01.operations import TopLevelDomainsOperations as OperationClass
686        elif api_version == '2021-01-15':
687            from .v2021_01_15.operations import TopLevelDomainsOperations as OperationClass
688        else:
689            raise ValueError("API version {} does not have operation group 'top_level_domains'".format(api_version))
690        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
691
692    @property
693    def web_apps(self):
694        """Instance depends on the API version:
695
696           * 2016-08-01: :class:`WebAppsOperations<azure.mgmt.web.v2016_08_01.operations.WebAppsOperations>`
697           * 2018-02-01: :class:`WebAppsOperations<azure.mgmt.web.v2018_02_01.operations.WebAppsOperations>`
698           * 2019-08-01: :class:`WebAppsOperations<azure.mgmt.web.v2019_08_01.operations.WebAppsOperations>`
699           * 2020-06-01: :class:`WebAppsOperations<azure.mgmt.web.v2020_06_01.operations.WebAppsOperations>`
700           * 2020-09-01: :class:`WebAppsOperations<azure.mgmt.web.v2020_09_01.operations.WebAppsOperations>`
701           * 2020-12-01: :class:`WebAppsOperations<azure.mgmt.web.v2020_12_01.operations.WebAppsOperations>`
702           * 2021-01-01: :class:`WebAppsOperations<azure.mgmt.web.v2021_01_01.operations.WebAppsOperations>`
703           * 2021-01-15: :class:`WebAppsOperations<azure.mgmt.web.v2021_01_15.operations.WebAppsOperations>`
704        """
705        api_version = self._get_api_version('web_apps')
706        if api_version == '2016-08-01':
707            from .v2016_08_01.operations import WebAppsOperations as OperationClass
708        elif api_version == '2018-02-01':
709            from .v2018_02_01.operations import WebAppsOperations as OperationClass
710        elif api_version == '2019-08-01':
711            from .v2019_08_01.operations import WebAppsOperations as OperationClass
712        elif api_version == '2020-06-01':
713            from .v2020_06_01.operations import WebAppsOperations as OperationClass
714        elif api_version == '2020-09-01':
715            from .v2020_09_01.operations import WebAppsOperations as OperationClass
716        elif api_version == '2020-12-01':
717            from .v2020_12_01.operations import WebAppsOperations as OperationClass
718        elif api_version == '2021-01-01':
719            from .v2021_01_01.operations import WebAppsOperations as OperationClass
720        elif api_version == '2021-01-15':
721            from .v2021_01_15.operations import WebAppsOperations as OperationClass
722        else:
723            raise ValueError("API version {} does not have operation group 'web_apps'".format(api_version))
724        return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)))
725
726    def close(self):
727        self._client.close()
728    def __enter__(self):
729        self._client.__enter__()
730        return self
731    def __exit__(self, *exc_details):
732        self._client.__exit__(*exc_details)
733