diff options
author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
---|---|---|
committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor | |
parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
download | gn-ai-master.tar.gz |
Diffstat (limited to '.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor')
28 files changed, 21598 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/__init__.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/__init__.py new file mode 100644 index 00000000..29a4fcd3 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/__init__.py @@ -0,0 +1,5 @@ +# --------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# --------------------------------------------------------- + +__path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/__init__.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/__init__.py new file mode 100644 index 00000000..95ce19c4 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/__init__.py @@ -0,0 +1,18 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._resource_management_client import ResourceManagementClient + +__all__ = ["ResourceManagementClient"] + +try: + from ._patch import patch_sdk # type: ignore + + patch_sdk() +except ImportError: + pass diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/_configuration.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/_configuration.py new file mode 100644 index 00000000..a0ad8147 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/_configuration.py @@ -0,0 +1,72 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import TYPE_CHECKING + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies +from azure.mgmt.core.policies import ARMHttpLoggingPolicy + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any + + from azure.core.credentials import TokenCredential + +VERSION = "15.0.0" + + +class ResourceManagementClientConfiguration(Configuration): + """Configuration for ResourceManagementClient. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential + :param subscription_id: The ID of the target subscription. + :type subscription_id: str + """ + + def __init__( + self, + credential, # type: "TokenCredential" + subscription_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") + if subscription_id is None: + raise ValueError("Parameter 'subscription_id' must not be None.") + super(ResourceManagementClientConfiguration, self).__init__(**kwargs) + + self.credential = credential + self.subscription_id = subscription_id + self.api_version = "2020-06-01" + self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) + kwargs.setdefault("sdk_moniker", "mgmt-resource/{}".format(VERSION)) + self._configure(**kwargs) + + def _configure( + self, **kwargs # type: Any + ): + # type: (...) -> None + self.user_agent_policy = kwargs.get("user_agent_policy") or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get("headers_policy") or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get("proxy_policy") or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get("logging_policy") or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get("http_logging_policy") or ARMHttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get("retry_policy") or policies.RetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get("custom_hook_policy") or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get("redirect_policy") or policies.RedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get("authentication_policy") + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.BearerTokenCredentialPolicy( + self.credential, *self.credential_scopes, **kwargs + ) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/_resource_management_client.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/_resource_management_client.py new file mode 100644 index 00000000..c34dd096 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/_resource_management_client.py @@ -0,0 +1,95 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import TYPE_CHECKING + +from azure.mgmt.core import ARMPipelineClient +from msrest import Deserializer, Serializer + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Optional + + from azure.core.credentials import TokenCredential + +from ._configuration import ResourceManagementClientConfiguration +from .operations import Operations +from .operations import DeploymentsOperations +from .operations import ProvidersOperations +from .operations import ResourcesOperations +from .operations import ResourceGroupsOperations +from .operations import TagsOperations +from .operations import DeploymentOperationsOperations +from . import models + + +class ResourceManagementClient(object): + """Provides operations for working with resources and resource groups. + + :ivar operations: Operations operations + :vartype operations: azure.mgmt.resource.resources.v2020_06_01.operations.Operations + :ivar deployments: DeploymentsOperations operations + :vartype deployments: azure.mgmt.resource.resources.v2020_06_01.operations.DeploymentsOperations + :ivar providers: ProvidersOperations operations + :vartype providers: azure.mgmt.resource.resources.v2020_06_01.operations.ProvidersOperations + :ivar resources: ResourcesOperations operations + :vartype resources: azure.mgmt.resource.resources.v2020_06_01.operations.ResourcesOperations + :ivar resource_groups: ResourceGroupsOperations operations + :vartype resource_groups: azure.mgmt.resource.resources.v2020_06_01.operations.ResourceGroupsOperations + :ivar tags: TagsOperations operations + :vartype tags: azure.mgmt.resource.resources.v2020_06_01.operations.TagsOperations + :ivar deployment_operations: DeploymentOperationsOperations operations + :vartype deployment_operations: azure.mgmt.resource.resources.v2020_06_01.operations.DeploymentOperationsOperations + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials.TokenCredential + :param subscription_id: The ID of the target subscription. + :type subscription_id: str + :param str base_url: Service URL + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + def __init__( + self, + credential, # type: "TokenCredential" + subscription_id, # type: str + base_url=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> None + if not base_url: + base_url = "https://management.azure.com" + self._config = ResourceManagementClientConfiguration(credential, subscription_id, **kwargs) + self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) + + client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + self._serialize = Serializer(client_models) + self._serialize.client_side_validation = False + self._deserialize = Deserializer(client_models) + + self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) + self.deployments = DeploymentsOperations(self._client, self._config, self._serialize, self._deserialize) + self.providers = ProvidersOperations(self._client, self._config, self._serialize, self._deserialize) + self.resources = ResourcesOperations(self._client, self._config, self._serialize, self._deserialize) + self.resource_groups = ResourceGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.tags = TagsOperations(self._client, self._config, self._serialize, self._deserialize) + self.deployment_operations = DeploymentOperationsOperations( + self._client, self._config, self._serialize, self._deserialize + ) + + def close(self): + # type: () -> None + self._client.close() + + def __enter__(self): + # type: () -> ResourceManagementClient + self._client.__enter__() + return self + + def __exit__(self, *exc_details): + # type: (Any) -> None + self._client.__exit__(*exc_details) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/__init__.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/__init__.py new file mode 100644 index 00000000..8e6e586e --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/__init__.py @@ -0,0 +1,11 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._resource_management_client import ResourceManagementClient + +__all__ = ["ResourceManagementClient"] diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/_configuration.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/_configuration.py new file mode 100644 index 00000000..ce89919d --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/_configuration.py @@ -0,0 +1,61 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any, TYPE_CHECKING + +from azure.core.configuration import Configuration +from azure.core.pipeline import policies +from azure.mgmt.core.policies import ARMHttpLoggingPolicy + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential + +VERSION = "unknown" + + +class ResourceManagementClientConfiguration(Configuration): + """Configuration for ResourceManagementClient. + + Note that all parameters used to create this instance are saved as instance + attributes. + + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + :param subscription_id: The ID of the target subscription. + :type subscription_id: str + """ + + def __init__(self, credential: "AsyncTokenCredential", subscription_id: str, **kwargs: Any) -> None: + if credential is None: + raise ValueError("Parameter 'credential' must not be None.") + if subscription_id is None: + raise ValueError("Parameter 'subscription_id' must not be None.") + super(ResourceManagementClientConfiguration, self).__init__(**kwargs) + + self.credential = credential + self.subscription_id = subscription_id + self.api_version = "2020-06-01" + self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) + kwargs.setdefault("sdk_moniker", "mgmt-resource/{}".format(VERSION)) + self._configure(**kwargs) + + def _configure(self, **kwargs: Any) -> None: + self.user_agent_policy = kwargs.get("user_agent_policy") or policies.UserAgentPolicy(**kwargs) + self.headers_policy = kwargs.get("headers_policy") or policies.HeadersPolicy(**kwargs) + self.proxy_policy = kwargs.get("proxy_policy") or policies.ProxyPolicy(**kwargs) + self.logging_policy = kwargs.get("logging_policy") or policies.NetworkTraceLoggingPolicy(**kwargs) + self.http_logging_policy = kwargs.get("http_logging_policy") or ARMHttpLoggingPolicy(**kwargs) + self.retry_policy = kwargs.get("retry_policy") or policies.AsyncRetryPolicy(**kwargs) + self.custom_hook_policy = kwargs.get("custom_hook_policy") or policies.CustomHookPolicy(**kwargs) + self.redirect_policy = kwargs.get("redirect_policy") or policies.AsyncRedirectPolicy(**kwargs) + self.authentication_policy = kwargs.get("authentication_policy") + if self.credential and not self.authentication_policy: + self.authentication_policy = policies.AsyncBearerTokenCredentialPolicy( + self.credential, *self.credential_scopes, **kwargs + ) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/_resource_management_client.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/_resource_management_client.py new file mode 100644 index 00000000..5ce54fd0 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/_resource_management_client.py @@ -0,0 +1,85 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Any, Optional, TYPE_CHECKING + +from azure.mgmt.core import AsyncARMPipelineClient +from msrest import Deserializer, Serializer + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from azure.core.credentials_async import AsyncTokenCredential + +from ._configuration import ResourceManagementClientConfiguration +from .operations import Operations +from .operations import DeploymentsOperations +from .operations import ProvidersOperations +from .operations import ResourcesOperations +from .operations import ResourceGroupsOperations +from .operations import TagsOperations +from .operations import DeploymentOperationsOperations +from .. import models + + +class ResourceManagementClient(object): + """Provides operations for working with resources and resource groups. + + :ivar operations: Operations operations + :vartype operations: azure.mgmt.resource.resources.v2020_06_01.aio.operations.Operations + :ivar deployments: DeploymentsOperations operations + :vartype deployments: azure.mgmt.resource.resources.v2020_06_01.aio.operations.DeploymentsOperations + :ivar providers: ProvidersOperations operations + :vartype providers: azure.mgmt.resource.resources.v2020_06_01.aio.operations.ProvidersOperations + :ivar resources: ResourcesOperations operations + :vartype resources: azure.mgmt.resource.resources.v2020_06_01.aio.operations.ResourcesOperations + :ivar resource_groups: ResourceGroupsOperations operations + :vartype resource_groups: azure.mgmt.resource.resources.v2020_06_01.aio.operations.ResourceGroupsOperations + :ivar tags: TagsOperations operations + :vartype tags: azure.mgmt.resource.resources.v2020_06_01.aio.operations.TagsOperations + :ivar deployment_operations: DeploymentOperationsOperations operations + :vartype deployment_operations: azure.mgmt.resource.resources.v2020_06_01.aio.operations.DeploymentOperationsOperations + :param credential: Credential needed for the client to connect to Azure. + :type credential: ~azure.core.credentials_async.AsyncTokenCredential + :param subscription_id: The ID of the target subscription. + :type subscription_id: str + :param str base_url: Service URL + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + """ + + def __init__( + self, credential: "AsyncTokenCredential", subscription_id: str, base_url: Optional[str] = None, **kwargs: Any + ) -> None: + if not base_url: + base_url = "https://management.azure.com" + self._config = ResourceManagementClientConfiguration(credential, subscription_id, **kwargs) + self._client = AsyncARMPipelineClient(base_url=base_url, config=self._config, **kwargs) + + client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} + self._serialize = Serializer(client_models) + self._serialize.client_side_validation = False + self._deserialize = Deserializer(client_models) + + self.operations = Operations(self._client, self._config, self._serialize, self._deserialize) + self.deployments = DeploymentsOperations(self._client, self._config, self._serialize, self._deserialize) + self.providers = ProvidersOperations(self._client, self._config, self._serialize, self._deserialize) + self.resources = ResourcesOperations(self._client, self._config, self._serialize, self._deserialize) + self.resource_groups = ResourceGroupsOperations(self._client, self._config, self._serialize, self._deserialize) + self.tags = TagsOperations(self._client, self._config, self._serialize, self._deserialize) + self.deployment_operations = DeploymentOperationsOperations( + self._client, self._config, self._serialize, self._deserialize + ) + + async def close(self) -> None: + await self._client.close() + + async def __aenter__(self) -> "ResourceManagementClient": + await self._client.__aenter__() + return self + + async def __aexit__(self, *exc_details) -> None: + await self._client.__aexit__(*exc_details) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/__init__.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/__init__.py new file mode 100644 index 00000000..b96aa279 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/__init__.py @@ -0,0 +1,25 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._operations import Operations +from ._deployments_operations import DeploymentsOperations +from ._providers_operations import ProvidersOperations +from ._resources_operations import ResourcesOperations +from ._resource_groups_operations import ResourceGroupsOperations +from ._tags_operations import TagsOperations +from ._deployment_operations_operations import DeploymentOperationsOperations + +__all__ = [ + "Operations", + "DeploymentsOperations", + "ProvidersOperations", + "ResourcesOperations", + "ResourceGroupsOperations", + "TagsOperations", + "DeploymentOperationsOperations", +] diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_deployment_operations_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_deployment_operations_operations.py new file mode 100644 index 00000000..666bb90f --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_deployment_operations_operations.py @@ -0,0 +1,738 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.mgmt.core.exceptions import ARMErrorFormat + +from ... import models + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class DeploymentOperationsOperations: + """DeploymentOperationsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def get_at_scope( + self, scope: str, deployment_name: str, operation_id: str, **kwargs + ) -> "models.DeploymentOperation": + """Gets a deployments operation. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param operation_id: The ID of the operation to get. + :type operation_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentOperation, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperation"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "operationId": self._serialize.url("operation_id", operation_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentOperation", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}"} # type: ignore + + def list_at_scope( + self, scope: str, deployment_name: str, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.DeploymentOperationsListResult"]: + """Gets all deployments operations for a deployment. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param top: The number of results to return. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentOperationsListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperationsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", + deployment_name, + "str", + max_length=64, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentOperationsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations"} # type: ignore + + async def get_at_tenant_scope( + self, deployment_name: str, operation_id: str, **kwargs + ) -> "models.DeploymentOperation": + """Gets a deployments operation. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param operation_id: The ID of the operation to get. + :type operation_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentOperation, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperation"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "operationId": self._serialize.url("operation_id", operation_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentOperation", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}"} # type: ignore + + def list_at_tenant_scope( + self, deployment_name: str, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.DeploymentOperationsListResult"]: + """Gets all deployments operations for a deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param top: The number of results to return. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentOperationsListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperationsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", + deployment_name, + "str", + max_length=64, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentOperationsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/operations"} # type: ignore + + async def get_at_management_group_scope( + self, group_id: str, deployment_name: str, operation_id: str, **kwargs + ) -> "models.DeploymentOperation": + """Gets a deployments operation. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param operation_id: The ID of the operation to get. + :type operation_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentOperation, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperation"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "operationId": self._serialize.url("operation_id", operation_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentOperation", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}"} # type: ignore + + def list_at_management_group_scope( + self, group_id: str, deployment_name: str, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.DeploymentOperationsListResult"]: + """Gets all deployments operations for a deployment. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param top: The number of results to return. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentOperationsListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperationsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", + deployment_name, + "str", + max_length=64, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentOperationsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations"} # type: ignore + + async def get_at_subscription_scope( + self, deployment_name: str, operation_id: str, **kwargs + ) -> "models.DeploymentOperation": + """Gets a deployments operation. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param operation_id: The ID of the operation to get. + :type operation_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentOperation, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperation"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "operationId": self._serialize.url("operation_id", operation_id, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentOperation", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}"} # type: ignore + + def list_at_subscription_scope( + self, deployment_name: str, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.DeploymentOperationsListResult"]: + """Gets all deployments operations for a deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param top: The number of results to return. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentOperationsListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperationsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", + deployment_name, + "str", + max_length=64, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentOperationsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations"} # type: ignore + + async def get( + self, resource_group_name: str, deployment_name: str, operation_id: str, **kwargs + ) -> "models.DeploymentOperation": + """Gets a deployments operation. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param operation_id: The ID of the operation to get. + :type operation_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentOperation, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperation"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "operationId": self._serialize.url("operation_id", operation_id, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentOperation", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}"} # type: ignore + + def list( + self, resource_group_name: str, deployment_name: str, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.DeploymentOperationsListResult"]: + """Gets all deployments operations for a deployment. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param top: The number of results to return. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentOperationsListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperationsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", + deployment_name, + "str", + max_length=64, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentOperationsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_deployments_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_deployments_operations.py new file mode 100644 index 00000000..4c457714 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_deployments_operations.py @@ -0,0 +1,3668 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling + +from ... import models + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class DeploymentsOperations: + """DeploymentsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def _delete_at_scope_initial(self, scope: str, deployment_name: str, **kwargs) -> None: + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_at_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_at_scope_initial.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def begin_delete_at_scope(self, scope: str, deployment_name: str, **kwargs) -> AsyncLROPoller[None]: + """Deletes a deployment from the deployment history. + + A template deployment that is currently running cannot be deleted. Deleting a template + deployment removes the associated deployment operations. This is an asynchronous operation that + returns a status of 202 until the template deployment is successfully deleted. The Location + response header contains the URI that is used to obtain the status of the process. While the + process is running, a call to the URI in the Location header returns a status of 202. When the + process finishes, the URI in the Location header returns a status of 204 on success. If the + asynchronous request failed, the URI in the Location header returns an error-level status code. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_at_scope_initial( + scope=scope, deployment_name=deployment_name, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def check_existence_at_scope(self, scope: str, deployment_name: str, **kwargs) -> bool: + """Checks whether the deployment exists. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def _create_or_update_at_scope_initial( + self, scope: str, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> "models.DeploymentExtended": + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_at_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_at_scope_initial.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def begin_create_or_update_at_scope( + self, scope: str, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> AsyncLROPoller["models.DeploymentExtended"]: + """Deploys resources at a given scope. + + You can provide the template and parameters directly in the request or link to JSON files. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Additional parameters supplied to the operation. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DeploymentExtended or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_at_scope_initial( + scope=scope, deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def get_at_scope(self, scope: str, deployment_name: str, **kwargs) -> "models.DeploymentExtended": + """Gets a deployment. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExtended, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def cancel_at_scope(self, scope: str, deployment_name: str, **kwargs) -> None: + """Cancels a currently running template deployment. + + You can cancel a deployment only if the provisioningState is Accepted or Running. After the + deployment is canceled, the provisioningState is set to Canceled. Canceling a template + deployment stops the currently running template deployment and leaves the resources partially + deployed. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.cancel_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + cancel_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"} # type: ignore + + async def _validate_at_scope_initial( + self, scope: str, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> Optional["models.DeploymentValidateResult"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.DeploymentValidateResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_at_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 400]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if response.status_code == 400: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _validate_at_scope_initial.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + async def begin_validate_at_scope( + self, scope: str, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> AsyncLROPoller["models.DeploymentValidateResult"]: + """Validates whether the specified template is syntactically correct and will be accepted by Azure + Resource Manager.. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DeploymentValidateResult or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentValidateResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentValidateResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._validate_at_scope_initial( + scope=scope, deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + async def export_template_at_scope( + self, scope: str, deployment_name: str, **kwargs + ) -> "models.DeploymentExportResult": + """Exports the template used for specified deployment. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExportResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExportResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExportResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.export_template_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + export_template_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate"} # type: ignore + + def list_at_scope( + self, scope: str, filter: Optional[str] = None, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.DeploymentListResult"]: + """Get all the deployments at the given scope. + + :param scope: The resource scope. + :type scope: str + :param filter: The filter to apply on the operation. For example, you can use + $filter=provisioningState eq '{state}'. + :type filter: str + :param top: The number of results to get. If null is passed, returns all deployments. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/"} # type: ignore + + async def _delete_at_tenant_scope_initial(self, deployment_name: str, **kwargs) -> None: + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_at_tenant_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_at_tenant_scope_initial.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def begin_delete_at_tenant_scope(self, deployment_name: str, **kwargs) -> AsyncLROPoller[None]: + """Deletes a deployment from the deployment history. + + A template deployment that is currently running cannot be deleted. Deleting a template + deployment removes the associated deployment operations. This is an asynchronous operation that + returns a status of 202 until the template deployment is successfully deleted. The Location + response header contains the URI that is used to obtain the status of the process. While the + process is running, a call to the URI in the Location header returns a status of 202. When the + process finishes, the URI in the Location header returns a status of 204 on success. If the + asynchronous request failed, the URI in the Location header returns an error-level status code. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_at_tenant_scope_initial( + deployment_name=deployment_name, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def check_existence_at_tenant_scope(self, deployment_name: str, **kwargs) -> bool: + """Checks whether the deployment exists. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def _create_or_update_at_tenant_scope_initial( + self, deployment_name: str, parameters: "models.ScopedDeployment", **kwargs + ) -> "models.DeploymentExtended": + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_at_tenant_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeployment") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_at_tenant_scope_initial.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def begin_create_or_update_at_tenant_scope( + self, deployment_name: str, parameters: "models.ScopedDeployment", **kwargs + ) -> AsyncLROPoller["models.DeploymentExtended"]: + """Deploys resources at tenant scope. + + You can provide the template and parameters directly in the request or link to JSON files. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Additional parameters supplied to the operation. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DeploymentExtended or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_at_tenant_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def get_at_tenant_scope(self, deployment_name: str, **kwargs) -> "models.DeploymentExtended": + """Gets a deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExtended, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def cancel_at_tenant_scope(self, deployment_name: str, **kwargs) -> None: + """Cancels a currently running template deployment. + + You can cancel a deployment only if the provisioningState is Accepted or Running. After the + deployment is canceled, the provisioningState is set to Canceled. Canceling a template + deployment stops the currently running template deployment and leaves the resources partially + deployed. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.cancel_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + cancel_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"} # type: ignore + + async def _validate_at_tenant_scope_initial( + self, deployment_name: str, parameters: "models.ScopedDeployment", **kwargs + ) -> Optional["models.DeploymentValidateResult"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.DeploymentValidateResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_at_tenant_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeployment") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 400]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if response.status_code == 400: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _validate_at_tenant_scope_initial.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + async def begin_validate_at_tenant_scope( + self, deployment_name: str, parameters: "models.ScopedDeployment", **kwargs + ) -> AsyncLROPoller["models.DeploymentValidateResult"]: + """Validates whether the specified template is syntactically correct and will be accepted by Azure + Resource Manager.. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DeploymentValidateResult or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentValidateResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentValidateResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._validate_at_tenant_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + async def _what_if_at_tenant_scope_initial( + self, deployment_name: str, parameters: "models.ScopedDeploymentWhatIf", **kwargs + ) -> Optional["models.WhatIfOperationResult"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.WhatIfOperationResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._what_if_at_tenant_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeploymentWhatIf") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + _what_if_at_tenant_scope_initial.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + async def begin_what_if_at_tenant_scope( + self, deployment_name: str, parameters: "models.ScopedDeploymentWhatIf", **kwargs + ) -> AsyncLROPoller["models.WhatIfOperationResult"]: + """Returns changes that will be made by the deployment if executed at the scope of the tenant + group. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeploymentWhatIf + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either WhatIfOperationResult or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfOperationResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.WhatIfOperationResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._what_if_at_tenant_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_what_if_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + async def export_template_at_tenant_scope(self, deployment_name: str, **kwargs) -> "models.DeploymentExportResult": + """Exports the template used for specified deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExportResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExportResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExportResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.export_template_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + export_template_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate"} # type: ignore + + def list_at_tenant_scope( + self, filter: Optional[str] = None, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.DeploymentListResult"]: + """Get all the deployments at the tenant scope. + + :param filter: The filter to apply on the operation. For example, you can use + $filter=provisioningState eq '{state}'. + :type filter: str + :param top: The number of results to get. If null is passed, returns all deployments. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_tenant_scope.metadata["url"] # type: ignore + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/"} # type: ignore + + async def _delete_at_management_group_scope_initial(self, group_id: str, deployment_name: str, **kwargs) -> None: + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_at_management_group_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_at_management_group_scope_initial.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def begin_delete_at_management_group_scope( + self, group_id: str, deployment_name: str, **kwargs + ) -> AsyncLROPoller[None]: + """Deletes a deployment from the deployment history. + + A template deployment that is currently running cannot be deleted. Deleting a template + deployment removes the associated deployment operations. This is an asynchronous operation that + returns a status of 202 until the template deployment is successfully deleted. The Location + response header contains the URI that is used to obtain the status of the process. While the + process is running, a call to the URI in the Location header returns a status of 202. When the + process finishes, the URI in the Location header returns a status of 204 on success. If the + asynchronous request failed, the URI in the Location header returns an error-level status code. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_at_management_group_scope_initial( + group_id=group_id, deployment_name=deployment_name, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def check_existence_at_management_group_scope(self, group_id: str, deployment_name: str, **kwargs) -> bool: + """Checks whether the deployment exists. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def _create_or_update_at_management_group_scope_initial( + self, group_id: str, deployment_name: str, parameters: "models.ScopedDeployment", **kwargs + ) -> "models.DeploymentExtended": + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_at_management_group_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeployment") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_at_management_group_scope_initial.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def begin_create_or_update_at_management_group_scope( + self, group_id: str, deployment_name: str, parameters: "models.ScopedDeployment", **kwargs + ) -> AsyncLROPoller["models.DeploymentExtended"]: + """Deploys resources at management group scope. + + You can provide the template and parameters directly in the request or link to JSON files. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Additional parameters supplied to the operation. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DeploymentExtended or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_at_management_group_scope_initial( + group_id=group_id, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def get_at_management_group_scope( + self, group_id: str, deployment_name: str, **kwargs + ) -> "models.DeploymentExtended": + """Gets a deployment. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExtended, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def cancel_at_management_group_scope(self, group_id: str, deployment_name: str, **kwargs) -> None: + """Cancels a currently running template deployment. + + You can cancel a deployment only if the provisioningState is Accepted or Running. After the + deployment is canceled, the provisioningState is set to Canceled. Canceling a template + deployment stops the currently running template deployment and leaves the resources partially + deployed. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.cancel_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + cancel_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"} # type: ignore + + async def _validate_at_management_group_scope_initial( + self, group_id: str, deployment_name: str, parameters: "models.ScopedDeployment", **kwargs + ) -> Optional["models.DeploymentValidateResult"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.DeploymentValidateResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_at_management_group_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeployment") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 400]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if response.status_code == 400: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _validate_at_management_group_scope_initial.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + async def begin_validate_at_management_group_scope( + self, group_id: str, deployment_name: str, parameters: "models.ScopedDeployment", **kwargs + ) -> AsyncLROPoller["models.DeploymentValidateResult"]: + """Validates whether the specified template is syntactically correct and will be accepted by Azure + Resource Manager.. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DeploymentValidateResult or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentValidateResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentValidateResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._validate_at_management_group_scope_initial( + group_id=group_id, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + async def _what_if_at_management_group_scope_initial( + self, group_id: str, deployment_name: str, parameters: "models.ScopedDeploymentWhatIf", **kwargs + ) -> Optional["models.WhatIfOperationResult"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.WhatIfOperationResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._what_if_at_management_group_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeploymentWhatIf") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + _what_if_at_management_group_scope_initial.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + async def begin_what_if_at_management_group_scope( + self, group_id: str, deployment_name: str, parameters: "models.ScopedDeploymentWhatIf", **kwargs + ) -> AsyncLROPoller["models.WhatIfOperationResult"]: + """Returns changes that will be made by the deployment if executed at the scope of the management + group. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeploymentWhatIf + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either WhatIfOperationResult or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfOperationResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.WhatIfOperationResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._what_if_at_management_group_scope_initial( + group_id=group_id, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_what_if_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + async def export_template_at_management_group_scope( + self, group_id: str, deployment_name: str, **kwargs + ) -> "models.DeploymentExportResult": + """Exports the template used for specified deployment. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExportResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExportResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExportResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.export_template_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + export_template_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate"} # type: ignore + + def list_at_management_group_scope( + self, group_id: str, filter: Optional[str] = None, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.DeploymentListResult"]: + """Get all the deployments for a management group. + + :param group_id: The management group ID. + :type group_id: str + :param filter: The filter to apply on the operation. For example, you can use + $filter=provisioningState eq '{state}'. + :type filter: str + :param top: The number of results to get. If null is passed, returns all deployments. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/"} # type: ignore + + async def _delete_at_subscription_scope_initial(self, deployment_name: str, **kwargs) -> None: + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_at_subscription_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_at_subscription_scope_initial.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def begin_delete_at_subscription_scope(self, deployment_name: str, **kwargs) -> AsyncLROPoller[None]: + """Deletes a deployment from the deployment history. + + A template deployment that is currently running cannot be deleted. Deleting a template + deployment removes the associated deployment operations. This is an asynchronous operation that + returns a status of 202 until the template deployment is successfully deleted. The Location + response header contains the URI that is used to obtain the status of the process. While the + process is running, a call to the URI in the Location header returns a status of 202. When the + process finishes, the URI in the Location header returns a status of 204 on success. If the + asynchronous request failed, the URI in the Location header returns an error-level status code. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_at_subscription_scope_initial( + deployment_name=deployment_name, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def check_existence_at_subscription_scope(self, deployment_name: str, **kwargs) -> bool: + """Checks whether the deployment exists. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def _create_or_update_at_subscription_scope_initial( + self, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> "models.DeploymentExtended": + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_at_subscription_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_at_subscription_scope_initial.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def begin_create_or_update_at_subscription_scope( + self, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> AsyncLROPoller["models.DeploymentExtended"]: + """Deploys resources at subscription scope. + + You can provide the template and parameters directly in the request or link to JSON files. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Additional parameters supplied to the operation. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DeploymentExtended or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_at_subscription_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def get_at_subscription_scope(self, deployment_name: str, **kwargs) -> "models.DeploymentExtended": + """Gets a deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExtended, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def cancel_at_subscription_scope(self, deployment_name: str, **kwargs) -> None: + """Cancels a currently running template deployment. + + You can cancel a deployment only if the provisioningState is Accepted or Running. After the + deployment is canceled, the provisioningState is set to Canceled. Canceling a template + deployment stops the currently running template deployment and leaves the resources partially + deployed. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.cancel_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + cancel_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"} # type: ignore + + async def _validate_at_subscription_scope_initial( + self, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> Optional["models.DeploymentValidateResult"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.DeploymentValidateResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_at_subscription_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 400]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if response.status_code == 400: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _validate_at_subscription_scope_initial.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + async def begin_validate_at_subscription_scope( + self, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> AsyncLROPoller["models.DeploymentValidateResult"]: + """Validates whether the specified template is syntactically correct and will be accepted by Azure + Resource Manager.. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DeploymentValidateResult or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentValidateResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentValidateResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._validate_at_subscription_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + async def _what_if_at_subscription_scope_initial( + self, deployment_name: str, parameters: "models.DeploymentWhatIf", **kwargs + ) -> Optional["models.WhatIfOperationResult"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.WhatIfOperationResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._what_if_at_subscription_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "DeploymentWhatIf") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + _what_if_at_subscription_scope_initial.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + async def begin_what_if_at_subscription_scope( + self, deployment_name: str, parameters: "models.DeploymentWhatIf", **kwargs + ) -> AsyncLROPoller["models.WhatIfOperationResult"]: + """Returns changes that will be made by the deployment if executed at the scope of the + subscription. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to What If. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentWhatIf + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either WhatIfOperationResult or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfOperationResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.WhatIfOperationResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._what_if_at_subscription_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_what_if_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + async def export_template_at_subscription_scope( + self, deployment_name: str, **kwargs + ) -> "models.DeploymentExportResult": + """Exports the template used for specified deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExportResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExportResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExportResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.export_template_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + export_template_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate"} # type: ignore + + def list_at_subscription_scope( + self, filter: Optional[str] = None, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.DeploymentListResult"]: + """Get all the deployments for a subscription. + + :param filter: The filter to apply on the operation. For example, you can use + $filter=provisioningState eq '{state}'. + :type filter: str + :param top: The number of results to get. If null is passed, returns all deployments. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/"} # type: ignore + + async def _delete_initial(self, resource_group_name: str, deployment_name: str, **kwargs) -> None: + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def begin_delete(self, resource_group_name: str, deployment_name: str, **kwargs) -> AsyncLROPoller[None]: + """Deletes a deployment from the deployment history. + + A template deployment that is currently running cannot be deleted. Deleting a template + deployment removes the associated deployment operations. Deleting a template deployment does + not affect the state of the resource group. This is an asynchronous operation that returns a + status of 202 until the template deployment is successfully deleted. The Location response + header contains the URI that is used to obtain the status of the process. While the process is + running, a call to the URI in the Location header returns a status of 202. When the process + finishes, the URI in the Location header returns a status of 204 on success. If the + asynchronous request failed, the URI in the Location header returns an error-level status code. + + :param resource_group_name: The name of the resource group with the deployment to delete. The + name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + deployment_name=deployment_name, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def check_existence(self, resource_group_name: str, deployment_name: str, **kwargs) -> bool: + """Checks whether the deployment exists. + + :param resource_group_name: The name of the resource group with the deployment to check. The + name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def _create_or_update_initial( + self, resource_group_name: str, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> "models.DeploymentExtended": + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def begin_create_or_update( + self, resource_group_name: str, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> AsyncLROPoller["models.DeploymentExtended"]: + """Deploys resources to a resource group. + + You can provide the template and parameters directly in the request or link to JSON files. + + :param resource_group_name: The name of the resource group to deploy the resources to. The name + is case insensitive. The resource group must already exist. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Additional parameters supplied to the operation. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DeploymentExtended or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def get(self, resource_group_name: str, deployment_name: str, **kwargs) -> "models.DeploymentExtended": + """Gets a deployment. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExtended, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + async def cancel(self, resource_group_name: str, deployment_name: str, **kwargs) -> None: + """Cancels a currently running template deployment. + + You can cancel a deployment only if the provisioningState is Accepted or Running. After the + deployment is canceled, the provisioningState is set to Canceled. Canceling a template + deployment stops the currently running template deployment and leaves the resource group + partially deployed. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.cancel.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + cancel.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"} # type: ignore + + async def _validate_initial( + self, resource_group_name: str, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> Optional["models.DeploymentValidateResult"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.DeploymentValidateResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 400]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if response.status_code == 400: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _validate_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + async def begin_validate( + self, resource_group_name: str, deployment_name: str, parameters: "models.Deployment", **kwargs + ) -> AsyncLROPoller["models.DeploymentValidateResult"]: + """Validates whether the specified template is syntactically correct and will be accepted by Azure + Resource Manager.. + + :param resource_group_name: The name of the resource group the template will be deployed to. + The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either DeploymentValidateResult or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentValidateResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentValidateResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._validate_initial( + resource_group_name=resource_group_name, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + async def _what_if_initial( + self, resource_group_name: str, deployment_name: str, parameters: "models.DeploymentWhatIf", **kwargs + ) -> Optional["models.WhatIfOperationResult"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.WhatIfOperationResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._what_if_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "DeploymentWhatIf") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + _what_if_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + async def begin_what_if( + self, resource_group_name: str, deployment_name: str, parameters: "models.DeploymentWhatIf", **kwargs + ) -> AsyncLROPoller["models.WhatIfOperationResult"]: + """Returns changes that will be made by the deployment if executed at the scope of the resource + group. + + :param resource_group_name: The name of the resource group the template will be deployed to. + The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentWhatIf + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either WhatIfOperationResult or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfOperationResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.WhatIfOperationResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._what_if_initial( + resource_group_name=resource_group_name, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_what_if.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + async def export_template( + self, resource_group_name: str, deployment_name: str, **kwargs + ) -> "models.DeploymentExportResult": + """Exports the template used for specified deployment. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExportResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExportResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExportResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.export_template.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + export_template.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate"} # type: ignore + + def list_by_resource_group( + self, resource_group_name: str, filter: Optional[str] = None, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.DeploymentListResult"]: + """Get all the deployments for a resource group. + + :param resource_group_name: The name of the resource group with the deployments to get. The + name is case insensitive. + :type resource_group_name: str + :param filter: The filter to apply on the operation. For example, you can use + $filter=provisioningState eq '{state}'. + :type filter: str + :param top: The number of results to get. If null is passed, returns all deployments. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_by_resource_group.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_by_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/"} # type: ignore + + async def calculate_template_hash(self, template: object, **kwargs) -> "models.TemplateHashResult": + """Calculate the hash of the given template. + + :param template: The template provided to calculate hash. + :type template: object + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TemplateHashResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TemplateHashResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TemplateHashResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.calculate_template_hash.metadata["url"] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(template, "object") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("TemplateHashResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + calculate_template_hash.metadata = {"url": "/providers/Microsoft.Resources/calculateTemplateHash"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_operations.py new file mode 100644 index 00000000..f91909a3 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_operations.py @@ -0,0 +1,104 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.mgmt.core.exceptions import ARMErrorFormat + +from ... import models + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class Operations: + """Operations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def list(self, **kwargs) -> AsyncIterable["models.OperationListResult"]: + """Lists all of the available Microsoft.Resources REST API operations. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either OperationListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.OperationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.OperationListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("OperationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list.metadata = {"url": "/providers/Microsoft.Resources/operations"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_providers_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_providers_operations.py new file mode 100644 index 00000000..6a646821 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_providers_operations.py @@ -0,0 +1,405 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.mgmt.core.exceptions import ARMErrorFormat + +from ... import models + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class ProvidersOperations: + """ProvidersOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def unregister(self, resource_provider_namespace: str, **kwargs) -> "models.Provider": + """Unregister a subscription from a resource provider. + + :param resource_provider_namespace: The namespace of the resource provider to unregister. + :type resource_provider_namespace: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Provider, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.Provider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.Provider"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.unregister.metadata["url"] # type: ignore + path_format_arguments = { + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Provider", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + unregister.metadata = {"url": "/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister"} # type: ignore + + async def register(self, resource_provider_namespace: str, **kwargs) -> "models.Provider": + """Registers a subscription with a resource provider. + + :param resource_provider_namespace: The namespace of the resource provider to register. + :type resource_provider_namespace: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Provider, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.Provider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.Provider"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.register.metadata["url"] # type: ignore + path_format_arguments = { + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Provider", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + register.metadata = {"url": "/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register"} # type: ignore + + def list( + self, top: Optional[int] = None, expand: Optional[str] = None, **kwargs + ) -> AsyncIterable["models.ProviderListResult"]: + """Gets all resource providers for a subscription. + + :param top: The number of results to return. If null is passed returns all deployments. + :type top: int + :param expand: The properties to include in the results. For example, use &$expand=metadata in + the query string to retrieve resource provider metadata. To include property aliases in + response, use $expand=resourceTypes/aliases. + :type expand: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ProviderListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.ProviderListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ProviderListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ProviderListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list.metadata = {"url": "/subscriptions/{subscriptionId}/providers"} # type: ignore + + def list_at_tenant_scope( + self, top: Optional[int] = None, expand: Optional[str] = None, **kwargs + ) -> AsyncIterable["models.ProviderListResult"]: + """Gets all resource providers for the tenant. + + :param top: The number of results to return. If null is passed returns all providers. + :type top: int + :param expand: The properties to include in the results. For example, use &$expand=metadata in + the query string to retrieve resource provider metadata. To include property aliases in + response, use $expand=resourceTypes/aliases. + :type expand: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ProviderListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.ProviderListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ProviderListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_tenant_scope.metadata["url"] # type: ignore + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ProviderListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_at_tenant_scope.metadata = {"url": "/providers"} # type: ignore + + async def get(self, resource_provider_namespace: str, expand: Optional[str] = None, **kwargs) -> "models.Provider": + """Gets the specified resource provider. + + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param expand: The $expand query parameter. For example, to include property aliases in + response, use $expand=resourceTypes/aliases. + :type expand: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Provider, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.Provider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.Provider"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get.metadata["url"] # type: ignore + path_format_arguments = { + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Provider", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {"url": "/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}"} # type: ignore + + async def get_at_tenant_scope( + self, resource_provider_namespace: str, expand: Optional[str] = None, **kwargs + ) -> "models.Provider": + """Gets the specified resource provider at the tenant level. + + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param expand: The $expand query parameter. For example, to include property aliases in + response, use $expand=resourceTypes/aliases. + :type expand: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Provider, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.Provider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.Provider"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Provider", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_tenant_scope.metadata = {"url": "/providers/{resourceProviderNamespace}"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_resource_groups_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_resource_groups_operations.py new file mode 100644 index 00000000..f2e01070 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_resource_groups_operations.py @@ -0,0 +1,585 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling + +from ... import models + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class ResourceGroupsOperations: + """ResourceGroupsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def check_existence(self, resource_group_name: str, **kwargs) -> bool: + """Checks whether a resource group exists. + + :param resource_group_name: The name of the resource group to check. The name is case + insensitive. + :type resource_group_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + async def create_or_update( + self, resource_group_name: str, parameters: "models.ResourceGroup", **kwargs + ) -> "models.ResourceGroup": + """Creates or updates a resource group. + + :param resource_group_name: The name of the resource group to create or update. Can include + alphanumeric, underscore, parentheses, hyphen, period (except at end), and Unicode characters + that match the allowed characters. + :type resource_group_name: str + :param parameters: Parameters supplied to the create or update a resource group. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroup + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ResourceGroup, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceGroup"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_or_update.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ResourceGroup") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("ResourceGroup", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("ResourceGroup", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + async def _delete_initial(self, resource_group_name: str, **kwargs) -> None: + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + async def begin_delete(self, resource_group_name: str, **kwargs) -> AsyncLROPoller[None]: + """Deletes a resource group. + + When you delete a resource group, all of its resources are also deleted. Deleting a resource + group deletes all of its template deployments and currently stored operations. + + :param resource_group_name: The name of the resource group to delete. The name is case + insensitive. + :type resource_group_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + async def get(self, resource_group_name: str, **kwargs) -> "models.ResourceGroup": + """Gets a resource group. + + :param resource_group_name: The name of the resource group to get. The name is case + insensitive. + :type resource_group_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ResourceGroup, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceGroup"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("ResourceGroup", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + async def update( + self, resource_group_name: str, parameters: "models.ResourceGroupPatchable", **kwargs + ) -> "models.ResourceGroup": + """Updates a resource group. + + Resource groups can be updated through a simple PATCH operation to a group address. The format + of the request is the same as that for creating a resource group. If a field is unspecified, + the current value is retained. + + :param resource_group_name: The name of the resource group to update. The name is case + insensitive. + :type resource_group_name: str + :param parameters: Parameters supplied to update a resource group. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroupPatchable + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ResourceGroup, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceGroup"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.update.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ResourceGroupPatchable") + body_content_kwargs["content"] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("ResourceGroup", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + async def _export_template_initial( + self, resource_group_name: str, parameters: "models.ExportTemplateRequest", **kwargs + ) -> Optional["models.ResourceGroupExportResult"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.ResourceGroupExportResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._export_template_initial.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ExportTemplateRequest") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("ResourceGroupExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _export_template_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate"} # type: ignore + + async def begin_export_template( + self, resource_group_name: str, parameters: "models.ExportTemplateRequest", **kwargs + ) -> AsyncLROPoller["models.ResourceGroupExportResult"]: + """Captures the specified resource group as a template. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param parameters: Parameters for exporting the template. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ExportTemplateRequest + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either ResourceGroupExportResult or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroupExportResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceGroupExportResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._export_template_initial( + resource_group_name=resource_group_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("ResourceGroupExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_export_template.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate"} # type: ignore + + def list( + self, filter: Optional[str] = None, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.ResourceGroupListResult"]: + """Gets all the resource groups for a subscription. + + :param filter: The filter to apply on the operation.:code:`<br>`:code:`<br>`You can filter by + tag names and values. For example, to filter for a tag name and value, use $filter=tagName eq + 'tag1' and tagValue eq 'Value1'. + :type filter: str + :param top: The number of results to return. If null is passed, returns all resource groups. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ResourceGroupListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceGroupListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ResourceGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_resources_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_resources_operations.py new file mode 100644 index 00000000..778797a4 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_resources_operations.py @@ -0,0 +1,1487 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar, Union + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling + +from ... import models + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class ResourcesOperations: + """ResourcesOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def list_by_resource_group( + self, + resource_group_name: str, + filter: Optional[str] = None, + expand: Optional[str] = None, + top: Optional[int] = None, + **kwargs + ) -> AsyncIterable["models.ResourceListResult"]: + """Get all the resources for a resource group. + + :param resource_group_name: The resource group with the resources to get. + :type resource_group_name: str + :param filter: The filter to apply on the operation.:code:`<br>`:code:`<br>`The properties you + can use for eq (equals) or ne (not equals) are: location, resourceType, name, resourceGroup, + identity, identity/principalId, plan, plan/publisher, plan/product, plan/name, plan/version, + and plan/promotionCode.:code:`<br>`:code:`<br>`For example, to filter by a resource type, use: + $filter=resourceType eq 'Microsoft.Network/virtualNetworks':code:`<br>`:code:`<br>`You can use + substringof(value, property) in the filter. The properties you can use for substring are: name + and resourceGroup.:code:`<br>`:code:`<br>`For example, to get all resources with 'demo' + anywhere in the name, use: $filter=substringof('demo', name):code:`<br>`:code:`<br>`You can + link more than one substringof together by adding and/or operators.:code:`<br>`:code:`<br>`You + can filter by tag names and values. For example, to filter for a tag name and value, use + $filter=tagName eq 'tag1' and tagValue eq 'Value1'. When you filter by a tag name and value, + the tags for each resource are not returned in the results.:code:`<br>`:code:`<br>`You can use + some properties together when filtering. The combinations you can use are: substringof and/or + resourceType, plan and plan/publisher and plan/name, identity and identity/principalId. + :type filter: str + :param expand: Comma-separated list of additional properties to be included in the response. + Valid values include ``createdTime``\ , ``changedTime`` and ``provisioningState``. For example, + ``$expand=createdTime,changedTime``. + :type expand: str + :param top: The number of results to return. If null is passed, returns all resources. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ResourceListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_by_resource_group.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ResourceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list_by_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources"} # type: ignore + + async def _move_resources_initial( + self, source_resource_group_name: str, parameters: "models.ResourcesMoveInfo", **kwargs + ) -> None: + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._move_resources_initial.metadata["url"] # type: ignore + path_format_arguments = { + "sourceResourceGroupName": self._serialize.url( + "source_resource_group_name", + source_resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ResourcesMoveInfo") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _move_resources_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources"} # type: ignore + + async def begin_move_resources( + self, source_resource_group_name: str, parameters: "models.ResourcesMoveInfo", **kwargs + ) -> AsyncLROPoller[None]: + """Moves resources from one resource group to another resource group. + + The resources to move must be in the same source resource group. The target resource group may + be in a different subscription. When moving resources, both the source group and the target + group are locked for the duration of the operation. Write and delete operations are blocked on + the groups until the move completes. + + :param source_resource_group_name: The name of the resource group containing the resources to + move. + :type source_resource_group_name: str + :param parameters: Parameters for moving resources. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourcesMoveInfo + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._move_resources_initial( + source_resource_group_name=source_resource_group_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_move_resources.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources"} # type: ignore + + async def _validate_move_resources_initial( + self, source_resource_group_name: str, parameters: "models.ResourcesMoveInfo", **kwargs + ) -> None: + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_move_resources_initial.metadata["url"] # type: ignore + path_format_arguments = { + "sourceResourceGroupName": self._serialize.url( + "source_resource_group_name", + source_resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ResourcesMoveInfo") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _validate_move_resources_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources"} # type: ignore + + async def begin_validate_move_resources( + self, source_resource_group_name: str, parameters: "models.ResourcesMoveInfo", **kwargs + ) -> AsyncLROPoller[None]: + """Validates whether resources can be moved from one resource group to another resource group. + + This operation checks whether the specified resources can be moved to the target. The resources + to move must be in the same source resource group. The target resource group may be in a + different subscription. If validation succeeds, it returns HTTP response code 204 (no content). + If validation fails, it returns HTTP response code 409 (Conflict) with an error message. + Retrieve the URL in the Location header value to check the result of the long-running + operation. + + :param source_resource_group_name: The name of the resource group containing the resources to + validate for move. + :type source_resource_group_name: str + :param parameters: Parameters for moving resources. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourcesMoveInfo + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._validate_move_resources_initial( + source_resource_group_name=source_resource_group_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate_move_resources.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources"} # type: ignore + + def list( + self, filter: Optional[str] = None, expand: Optional[str] = None, top: Optional[int] = None, **kwargs + ) -> AsyncIterable["models.ResourceListResult"]: + """Get all the resources in a subscription. + + :param filter: The filter to apply on the operation.:code:`<br>`:code:`<br>`The properties you + can use for eq (equals) or ne (not equals) are: location, resourceType, name, resourceGroup, + identity, identity/principalId, plan, plan/publisher, plan/product, plan/name, plan/version, + and plan/promotionCode.:code:`<br>`:code:`<br>`For example, to filter by a resource type, use: + $filter=resourceType eq 'Microsoft.Network/virtualNetworks':code:`<br>`:code:`<br>`You can use + substringof(value, property) in the filter. The properties you can use for substring are: name + and resourceGroup.:code:`<br>`:code:`<br>`For example, to get all resources with 'demo' + anywhere in the name, use: $filter=substringof('demo', name):code:`<br>`:code:`<br>`You can + link more than one substringof together by adding and/or operators.:code:`<br>`:code:`<br>`You + can filter by tag names and values. For example, to filter for a tag name and value, use + $filter=tagName eq 'tag1' and tagValue eq 'Value1'. When you filter by a tag name and value, + the tags for each resource are not returned in the results.:code:`<br>`:code:`<br>`You can use + some properties together when filtering. The combinations you can use are: substringof and/or + resourceType, plan and plan/publisher and plan/name, identity and identity/principalId. + :type filter: str + :param expand: Comma-separated list of additional properties to be included in the response. + Valid values include ``createdTime``\ , ``changedTime`` and ``provisioningState``. For example, + ``$expand=createdTime,changedTime``. + :type expand: str + :param top: The number of results to return. If null is passed, returns all resource groups. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ResourceListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ResourceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list.metadata = {"url": "/subscriptions/{subscriptionId}/resources"} # type: ignore + + async def check_existence( + self, + resource_group_name: str, + resource_provider_namespace: str, + parent_resource_path: str, + resource_type: str, + resource_name: str, + api_version: str, + **kwargs + ) -> bool: + """Checks whether a resource exists. + + :param resource_group_name: The name of the resource group containing the resource to check. + The name is case insensitive. + :type resource_group_name: str + :param resource_provider_namespace: The resource provider of the resource to check. + :type resource_provider_namespace: str + :param parent_resource_path: The parent resource identity. + :type parent_resource_path: str + :param resource_type: The resource type. + :type resource_type: str + :param resource_name: The name of the resource to check whether it exists. + :type resource_name: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self.check_existence.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "parentResourcePath": self._serialize.url( + "parent_resource_path", parent_resource_path, "str", skip_quote=True + ), + "resourceType": self._serialize.url("resource_type", resource_type, "str", skip_quote=True), + "resourceName": self._serialize.url("resource_name", resource_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + async def _delete_initial( + self, + resource_group_name: str, + resource_provider_namespace: str, + parent_resource_path: str, + resource_type: str, + resource_name: str, + api_version: str, + **kwargs + ) -> None: + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self._delete_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "parentResourcePath": self._serialize.url( + "parent_resource_path", parent_resource_path, "str", skip_quote=True + ), + "resourceType": self._serialize.url("resource_type", resource_type, "str", skip_quote=True), + "resourceName": self._serialize.url("resource_name", resource_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + async def begin_delete( + self, + resource_group_name: str, + resource_provider_namespace: str, + parent_resource_path: str, + resource_type: str, + resource_name: str, + api_version: str, + **kwargs + ) -> AsyncLROPoller[None]: + """Deletes a resource. + + :param resource_group_name: The name of the resource group that contains the resource to + delete. The name is case insensitive. + :type resource_group_name: str + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param parent_resource_path: The parent resource identity. + :type parent_resource_path: str + :param resource_type: The resource type. + :type resource_type: str + :param resource_name: The name of the resource to delete. + :type resource_name: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + resource_provider_namespace=resource_provider_namespace, + parent_resource_path=parent_resource_path, + resource_type=resource_type, + resource_name=resource_name, + api_version=api_version, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + async def _create_or_update_initial( + self, + resource_group_name: str, + resource_provider_namespace: str, + parent_resource_path: str, + resource_type: str, + resource_name: str, + api_version: str, + parameters: "models.GenericResource", + **kwargs + ) -> Optional["models.GenericResource"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.GenericResource"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "parentResourcePath": self._serialize.url( + "parent_resource_path", parent_resource_path, "str", skip_quote=True + ), + "resourceType": self._serialize.url("resource_type", resource_type, "str", skip_quote=True), + "resourceName": self._serialize.url("resource_name", resource_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "GenericResource") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + async def begin_create_or_update( + self, + resource_group_name: str, + resource_provider_namespace: str, + parent_resource_path: str, + resource_type: str, + resource_name: str, + api_version: str, + parameters: "models.GenericResource", + **kwargs + ) -> AsyncLROPoller["models.GenericResource"]: + """Creates a resource. + + :param resource_group_name: The name of the resource group for the resource. The name is case + insensitive. + :type resource_group_name: str + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param parent_resource_path: The parent resource identity. + :type parent_resource_path: str + :param resource_type: The resource type of the resource to create. + :type resource_type: str + :param resource_name: The name of the resource to create. + :type resource_name: str + :param api_version: The API version to use for the operation. + :type api_version: str + :param parameters: Parameters for creating or updating the resource. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either GenericResource or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_initial( + resource_group_name=resource_group_name, + resource_provider_namespace=resource_provider_namespace, + parent_resource_path=parent_resource_path, + resource_type=resource_type, + resource_name=resource_name, + api_version=api_version, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + async def _update_initial( + self, + resource_group_name: str, + resource_provider_namespace: str, + parent_resource_path: str, + resource_type: str, + resource_name: str, + api_version: str, + parameters: "models.GenericResource", + **kwargs + ) -> Optional["models.GenericResource"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.GenericResource"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._update_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "parentResourcePath": self._serialize.url( + "parent_resource_path", parent_resource_path, "str", skip_quote=True + ), + "resourceType": self._serialize.url("resource_type", resource_type, "str", skip_quote=True), + "resourceName": self._serialize.url("resource_name", resource_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "GenericResource") + body_content_kwargs["content"] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + async def begin_update( + self, + resource_group_name: str, + resource_provider_namespace: str, + parent_resource_path: str, + resource_type: str, + resource_name: str, + api_version: str, + parameters: "models.GenericResource", + **kwargs + ) -> AsyncLROPoller["models.GenericResource"]: + """Updates a resource. + + :param resource_group_name: The name of the resource group for the resource. The name is case + insensitive. + :type resource_group_name: str + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param parent_resource_path: The parent resource identity. + :type parent_resource_path: str + :param resource_type: The resource type of the resource to update. + :type resource_type: str + :param resource_name: The name of the resource to update. + :type resource_name: str + :param api_version: The API version to use for the operation. + :type api_version: str + :param parameters: Parameters for updating the resource. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either GenericResource or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_initial( + resource_group_name=resource_group_name, + resource_provider_namespace=resource_provider_namespace, + parent_resource_path=parent_resource_path, + resource_type=resource_type, + resource_name=resource_name, + api_version=api_version, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + async def get( + self, + resource_group_name: str, + resource_provider_namespace: str, + parent_resource_path: str, + resource_type: str, + resource_name: str, + api_version: str, + **kwargs + ) -> "models.GenericResource": + """Gets a resource. + + :param resource_group_name: The name of the resource group containing the resource to get. The + name is case insensitive. + :type resource_group_name: str + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param parent_resource_path: The parent resource identity. + :type parent_resource_path: str + :param resource_type: The resource type of the resource. + :type resource_type: str + :param resource_name: The name of the resource to get. + :type resource_name: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: GenericResource, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self.get.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "parentResourcePath": self._serialize.url( + "parent_resource_path", parent_resource_path, "str", skip_quote=True + ), + "resourceType": self._serialize.url("resource_type", resource_type, "str", skip_quote=True), + "resourceName": self._serialize.url("resource_name", resource_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + async def check_existence_by_id(self, resource_id: str, api_version: str, **kwargs) -> bool: + """Checks by ID whether a resource exists. + + :param resource_id: The fully qualified ID of the resource, including the resource name and + resource type. Use the format, /subscriptions/{guid}/resourceGroups/{resource-group- + name}/{resource-provider-namespace}/{resource-type}/{resource-name}. + :type resource_id: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self.check_existence_by_id.metadata["url"] # type: ignore + path_format_arguments = { + "resourceId": self._serialize.url("resource_id", resource_id, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence_by_id.metadata = {"url": "/{resourceId}"} # type: ignore + + async def _delete_by_id_initial(self, resource_id: str, api_version: str, **kwargs) -> None: + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self._delete_by_id_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceId": self._serialize.url("resource_id", resource_id, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_by_id_initial.metadata = {"url": "/{resourceId}"} # type: ignore + + async def begin_delete_by_id(self, resource_id: str, api_version: str, **kwargs) -> AsyncLROPoller[None]: + """Deletes a resource by ID. + + :param resource_id: The fully qualified ID of the resource, including the resource name and + resource type. Use the format, /subscriptions/{guid}/resourceGroups/{resource-group- + name}/{resource-provider-namespace}/{resource-type}/{resource-name}. + :type resource_id: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._delete_by_id_initial( + resource_id=resource_id, api_version=api_version, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_by_id.metadata = {"url": "/{resourceId}"} # type: ignore + + async def _create_or_update_by_id_initial( + self, resource_id: str, api_version: str, parameters: "models.GenericResource", **kwargs + ) -> Optional["models.GenericResource"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.GenericResource"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_by_id_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceId": self._serialize.url("resource_id", resource_id, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "GenericResource") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_by_id_initial.metadata = {"url": "/{resourceId}"} # type: ignore + + async def begin_create_or_update_by_id( + self, resource_id: str, api_version: str, parameters: "models.GenericResource", **kwargs + ) -> AsyncLROPoller["models.GenericResource"]: + """Create a resource by ID. + + :param resource_id: The fully qualified ID of the resource, including the resource name and + resource type. Use the format, /subscriptions/{guid}/resourceGroups/{resource-group- + name}/{resource-provider-namespace}/{resource-type}/{resource-name}. + :type resource_id: str + :param api_version: The API version to use for the operation. + :type api_version: str + :param parameters: Create or update resource parameters. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either GenericResource or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._create_or_update_by_id_initial( + resource_id=resource_id, api_version=api_version, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update_by_id.metadata = {"url": "/{resourceId}"} # type: ignore + + async def _update_by_id_initial( + self, resource_id: str, api_version: str, parameters: "models.GenericResource", **kwargs + ) -> Optional["models.GenericResource"]: + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.GenericResource"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._update_by_id_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceId": self._serialize.url("resource_id", resource_id, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "GenericResource") + body_content_kwargs["content"] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_by_id_initial.metadata = {"url": "/{resourceId}"} # type: ignore + + async def begin_update_by_id( + self, resource_id: str, api_version: str, parameters: "models.GenericResource", **kwargs + ) -> AsyncLROPoller["models.GenericResource"]: + """Updates a resource by ID. + + :param resource_id: The fully qualified ID of the resource, including the resource name and + resource type. Use the format, /subscriptions/{guid}/resourceGroups/{resource-group- + name}/{resource-provider-namespace}/{resource-type}/{resource-name}. + :type resource_id: str + :param api_version: The API version to use for the operation. + :type api_version: str + :param parameters: Update resource parameters. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.AsyncPollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of AsyncLROPoller that returns either GenericResource or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, AsyncPollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = await self._update_by_id_initial( + resource_id=resource_id, api_version=api_version, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = AsyncARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = AsyncNoPolling() + else: + polling_method = polling + if cont_token: + return AsyncLROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_by_id.metadata = {"url": "/{resourceId}"} # type: ignore + + async def get_by_id(self, resource_id: str, api_version: str, **kwargs) -> "models.GenericResource": + """Gets a resource by ID. + + :param resource_id: The fully qualified ID of the resource, including the resource name and + resource type. Use the format, /subscriptions/{guid}/resourceGroups/{resource-group- + name}/{resource-provider-namespace}/{resource-type}/{resource-name}. + :type resource_id: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: GenericResource, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self.get_by_id.metadata["url"] # type: ignore + path_format_arguments = { + "resourceId": self._serialize.url("resource_id", resource_id, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_by_id.metadata = {"url": "/{resourceId}"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_tags_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_tags_operations.py new file mode 100644 index 00000000..8d062001 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_tags_operations.py @@ -0,0 +1,553 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar + +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import AsyncHttpResponse, HttpRequest +from azure.mgmt.core.exceptions import ARMErrorFormat + +from ... import models + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class TagsOperations: + """TagsOperations async operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer) -> None: + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + async def delete_value(self, tag_name: str, tag_value: str, **kwargs) -> None: + """Deletes a predefined tag value for a predefined tag name. + + This operation allows deleting a value from the list of predefined values for an existing + predefined tag name. The value being deleted must not be in use as a tag value for the given + tag name for any resource. + + :param tag_name: The name of the tag. + :type tag_name: str + :param tag_value: The value of the tag to delete. + :type tag_value: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.delete_value.metadata["url"] # type: ignore + path_format_arguments = { + "tagName": self._serialize.url("tag_name", tag_name, "str"), + "tagValue": self._serialize.url("tag_value", tag_value, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete_value.metadata = {"url": "/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}"} # type: ignore + + async def create_or_update_value(self, tag_name: str, tag_value: str, **kwargs) -> "models.TagValue": + """Creates a predefined value for a predefined tag name. + + This operation allows adding a value to the list of predefined values for an existing + predefined tag name. A tag value can have a maximum of 256 characters. + + :param tag_name: The name of the tag. + :type tag_name: str + :param tag_value: The value of the tag to create. + :type tag_value: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TagValue, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TagValue + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagValue"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.create_or_update_value.metadata["url"] # type: ignore + path_format_arguments = { + "tagName": self._serialize.url("tag_name", tag_name, "str"), + "tagValue": self._serialize.url("tag_value", tag_value, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.put(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("TagValue", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("TagValue", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update_value.metadata = {"url": "/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}"} # type: ignore + + async def create_or_update(self, tag_name: str, **kwargs) -> "models.TagDetails": + """Creates a predefined tag name. + + This operation allows adding a name to the list of predefined tag names for the given + subscription. A tag name can have a maximum of 512 characters and is case-insensitive. Tag + names cannot have the following prefixes which are reserved for Azure use: 'microsoft', + 'azure', 'windows'. + + :param tag_name: The name of the tag to create. + :type tag_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TagDetails, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TagDetails + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagDetails"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.create_or_update.metadata["url"] # type: ignore + path_format_arguments = { + "tagName": self._serialize.url("tag_name", tag_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.put(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("TagDetails", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("TagDetails", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/tagNames/{tagName}"} # type: ignore + + async def delete(self, tag_name: str, **kwargs) -> None: + """Deletes a predefined tag name. + + This operation allows deleting a name from the list of predefined tag names for the given + subscription. The name being deleted must not be in use as a tag name for any resource. All + predefined values for the given name must have already been deleted. + + :param tag_name: The name of the tag. + :type tag_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.delete.metadata["url"] # type: ignore + path_format_arguments = { + "tagName": self._serialize.url("tag_name", tag_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete.metadata = {"url": "/subscriptions/{subscriptionId}/tagNames/{tagName}"} # type: ignore + + def list(self, **kwargs) -> AsyncIterable["models.TagsListResult"]: + """Gets a summary of tag usage under the subscription. + + This operation performs a union of predefined tags, resource tags, resource group tags and + subscription tags, and returns a summary of usage for each tag name and value under the given + subscription. In case of a large number of tags, this operation may return a previously cached + result. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either TagsListResult or the result of cls(response) + :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.TagsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("TagsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + list.metadata = {"url": "/subscriptions/{subscriptionId}/tagNames"} # type: ignore + + async def create_or_update_at_scope( + self, scope: str, parameters: "models.TagsResource", **kwargs + ) -> "models.TagsResource": + """Creates or updates the entire set of tags on a resource or subscription. + + This operation allows adding or replacing the entire set of tags on the specified resource or + subscription. The specified entity can have a maximum of 50 tags. + + :param scope: The resource scope. + :type scope: str + :param parameters: + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.TagsResource + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TagsResource, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TagsResource + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagsResource"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_or_update_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "TagsResource") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("TagsResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/tags/default"} # type: ignore + + async def update_at_scope( + self, scope: str, parameters: "models.TagsPatchResource", **kwargs + ) -> "models.TagsResource": + """Selectively updates the set of tags on a resource or subscription. + + This operation allows replacing, merging or selectively deleting tags on the specified resource + or subscription. The specified entity can have a maximum of 50 tags at the end of the + operation. The 'replace' option replaces the entire set of existing tags with a new set. The + 'merge' option allows adding tags with new names and updating the values of tags with existing + names. The 'delete' option allows selectively deleting tags based on given names or name/value + pairs. + + :param scope: The resource scope. + :type scope: str + :param parameters: + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.TagsPatchResource + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TagsResource, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TagsResource + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagsResource"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.update_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "TagsPatchResource") + body_content_kwargs["content"] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("TagsResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/tags/default"} # type: ignore + + async def get_at_scope(self, scope: str, **kwargs) -> "models.TagsResource": + """Gets the entire set of tags on a resource or subscription. + + Gets the entire set of tags on a resource or subscription. + + :param scope: The resource scope. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TagsResource, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TagsResource + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagsResource"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("TagsResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/tags/default"} # type: ignore + + async def delete_at_scope(self, scope: str, **kwargs) -> None: + """Deletes the entire set of tags on a resource or subscription. + + Deletes the entire set of tags on a resource or subscription. + + :param scope: The resource scope. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.delete_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = await self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/tags/default"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/flatten_json/__init__.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/flatten_json/__init__.py new file mode 100644 index 00000000..3a620a92 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/flatten_json/__init__.py @@ -0,0 +1,417 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for +# license information. +# -------------------------------------------------------------------------- + +import copy +import json +import re +import sys +from math import isnan + + +try: + # 3.8 and up + from collections.abc import Iterable +except ImportError: + from collections import Iterable + + +def check_if_numbers_are_consecutive(list_): + """ + Returns True if numbers in the list are consecutive + + :param list_: list of integers + :return: Boolean + """ + return all(True if second - first == 1 else False for first, second in zip(list_[:-1], list_[1:])) + + +def _construct_key(previous_key, separator, new_key, replace_separators=None): + """ + Returns the new_key if no previous key exists, otherwise concatenates + previous key, separator, and new_key + :param previous_key: + :param separator: + :param new_key: + :param str replace_separators: Replace separators within keys + :return: a string if previous_key exists and simply passes through the + new_key otherwise + """ + if replace_separators is not None: + new_key = str(new_key).replace(separator, replace_separators) + if previous_key: + return "{}{}{}".format(previous_key, separator, new_key) + else: + return new_key + + +def flatten(nested_dict, separator="_", root_keys_to_ignore=None, replace_separators=None): + """ + Flattens a dictionary with nested structure to a dictionary with no + hierarchy + Consider ignoring keys that you are not interested in to prevent + unnecessary processing + This is specially true for very deep objects + + :param nested_dict: dictionary we want to flatten + :param separator: string to separate dictionary keys by + :param root_keys_to_ignore: set of root keys to ignore from flattening + :param str replace_separators: Replace separators within keys + :return: flattened dictionary + """ + assert isinstance(nested_dict, dict), "flatten requires a dictionary input" + assert isinstance(separator, str), "separator must be string" + + if root_keys_to_ignore is None: + root_keys_to_ignore = set() + + if len(nested_dict) == 0: + return {} + + # This global dictionary stores the flattened keys and values and is + # ultimately returned + flattened_dict = {} + + def _flatten(object_, key): + """ + For dict, list and set objects_ calls itself on the elements and for + other types assigns the object_ to + the corresponding key in the global flattened_dict + :param object_: object to flatten + :param key: carries the concatenated key for the object_ + :return: None + """ + # Empty object can't be iterated, take as is + if not object_: + flattened_dict[key] = object_ + # These object types support iteration + elif isinstance(object_, dict): + for object_key in object_: + if not (not key and object_key in root_keys_to_ignore): + _flatten( + object_[object_key], + _construct_key(key, separator, object_key, replace_separators=replace_separators), + ) + elif isinstance(object_, (list, set, tuple)): + for index, item in enumerate(object_): + _flatten(item, _construct_key(key, separator, index, replace_separators=replace_separators)) + # Anything left take as is + else: + flattened_dict[key] = object_ + + _flatten(nested_dict, None) + return flattened_dict + + +flatten_json = flatten + + +def flatten_preserve_lists( + nested_dict, separator="_", root_keys_to_ignore=None, max_list_index=3, max_depth=3, replace_separators=None +): + """ + Flattens a dictionary with nested structure to a dictionary with no + hierarchy + Consider ignoring keys that you are not interested in to prevent + unnecessary processing + This is specially true for very deep objects + This preserves list structure, and + you can specify max_list_index and max_depth to limit processing + + Child elements with only one value inside + will be unwrapped and become parent's value. + + :param nested_dict: dictionary we want to flatten + :param separator: string to separate dictionary keys by + :param root_keys_to_ignore: set of root keys to ignore from flattening + :param max_list_index: maximum list index to process + :param max_depth: maximum nesting depth to process + :param str replace_separators: Replace separators within keys + :return: flattened dictionary + """ + + assert isinstance(nested_dict, dict), "flatten requires a dictionary input" + assert isinstance(separator, str), "separator must be a string" + + if root_keys_to_ignore is None: + root_keys_to_ignore = set() + + # This global dictionary stores the flattened keys and values and is + # ultimately returned + flattened_dict = {} + + def _flatten(object_, key): + """ + For dict, list and set objects_ calls itself on the elements and for + other types assigns the object_ to + the corresponding key in the global flattened_dict + :param object_: object to flatten + :param key: carries the concatenated key for the object_ + :return: None + """ + + # Empty object can't be iterated, take as is + if not object_: + flattened_dict[key] = object_ + + # These object types support iteration + # dict always go into columns + elif isinstance(object_, dict): + first_key = list(object_.keys())[0] + # if only 1 child value, and child value not a dict or list + # flatten immediately + is_iter = isinstance(object_[first_key], Iterable) + if len(object_) == 1 and not is_iter: + flattened_dict[key] = object_[first_key] + else: + for object_key in object_: + if not (not key and object_key in root_keys_to_ignore): + _flatten( + object_[object_key], + _construct_key(key, separator, object_key, replace_separators=replace_separators), + ) + + elif isinstance(object_, (list, set, tuple)): + for index, item in enumerate(object_): + key = _construct_key(key, separator, index, replace_separators=replace_separators) + _flatten(item, key) + + else: + flattened_dict[key] = object_ + + def _flatten_low_entropy(object_, key, cur_depth, max_depth_inner): + """ + For dict, list and set objects_ calls itself on the elements and for + other types assigns the object_ to + the corresponding key in the global flattened_dict + + :param object_: object to flatten + :param key: carries the concatenated key for the object_ + :return: None + """ + cur_depth = cur_depth + 1 # increase current_depth + debug = 0 + + # write latest child as value if max_depth exceeded + if cur_depth > max_depth_inner: + global_max_record = int(max(list(list_prebuilt_flattened_dict.keys()))) + for d in list_prebuilt_flattened_dict[str(global_max_record)]: + d[key] = object_ + + else: + # Empty object can't be iterated, take as is + if not object_: + global_max_record = int(max(list(list_prebuilt_flattened_dict.keys()))) + for d in list_prebuilt_flattened_dict[str(global_max_record)]: + d[key] = object_ + + # These object types support iteration + # dict always go into columns + elif isinstance(object_, dict): + first_key = list(object_.keys())[0] + # if only 1 child value, and child value + # not a dict or list, flatten immediately + if len(object_) == 1 and not ( + isinstance(object_[first_key], dict) or isinstance(object_[first_key], list) + ): + global_max_record = int(max(list(list_prebuilt_flattened_dict.keys()))) + + for d in list_prebuilt_flattened_dict[str(global_max_record)]: + d[key] = object_[first_key] + + else: + for object_key, val in sorted( + object_.items(), key=lambda x: (str(type(x[1])), len(str(x[1]))), reverse=False + ): + if not (not key and object_key in root_keys_to_ignore): + _flatten_low_entropy( + object_[object_key], + _construct_key(key, separator, object_key, replace_separators=replace_separators), + cur_depth, + max_depth_inner, + ) + + # lists could go into rows, like in a relational database + elif isinstance(object_, list) or isinstance(object_, set): + if debug: + print("\nparent key of list:", key, "| length: ", str(len(object_))) + + # need to remember global list state when we entered + # this recursion + global_max_record_start = int(max(list(list_prebuilt_flattened_dict.keys()))) + entry = copy.deepcopy(list_prebuilt_flattened_dict[str(global_max_record_start)]) + + for index, item in enumerate(object_): + if debug: + print(" list key:", key, " index: " + str(index), "vals: ", item) + + sub = -1 + if isinstance(item, dict): + first_value = list(item.values())[0] + if isinstance(first_value, float): + sub = first_value + + if not isnan(sub) and index < max_list_index: + # start from second element, 1st element is like column + if index > 0: + global_max_record = int(max(list(list_prebuilt_flattened_dict.keys()))) + + list_prebuilt_flattened_dict[str(global_max_record + 1)] = copy.deepcopy(entry) + + _flatten_low_entropy(item, key, cur_depth, max_depth_inner) + else: + pass + + list_prebuilt_flattened_dict["0"] = [ + subel for k, v in sorted(list_prebuilt_flattened_dict.items()) for idx, subel in enumerate(v) + ] + + for key in list(sorted(list_prebuilt_flattened_dict.keys())): + if key != "0": + del list_prebuilt_flattened_dict[key] + if debug: + print("collapsed global list") + + # Anything left take as is, assuming you hit the end of the line. + else: + # in this case, there may be + # a list of prebuilt_flattened_dict by now + # so need to update them all. + global_max_record = int(max(list(list_prebuilt_flattened_dict.keys()))) + + for d in list_prebuilt_flattened_dict[str(global_max_record)]: + d[key] = object_ + + # decrease depth counter + cur_depth -= 1 + + _flatten(nested_dict, None) + + # get unique column names, without the integers + # TODO: potential issue: what if column names have digits naturally? + reskeys = list(flattened_dict.keys()) + unique_integers = list(set([separator + char for key in reskeys for char in key if char.isdigit()])) + regex = "|".join(unique_integers) + regex += "|" + regex.replace(".", "") + unique_columns = list(set([re.sub("(" + regex + ")", "", key) for key in reskeys])) + + # create global dict, now with unique column names + prebuilt_flattened_dict = {column: None for column in unique_columns} + + # initialize global record list + list_prebuilt_flattened_dict = {"0": [prebuilt_flattened_dict]} + + _flatten_low_entropy(nested_dict, None, cur_depth=0, max_depth_inner=max_depth) + + return list_prebuilt_flattened_dict["0"] + + +def _unflatten_asserts(flat_dict, separator): + assert isinstance(flat_dict, dict), "un_flatten requires dictionary input" + assert isinstance(separator, str), "separator must be string" + assert all( + (not value or not isinstance(value, Iterable) or isinstance(value, str) for value in flat_dict.values()) + ), "provided dict is not flat" + + +def unflatten(flat_dict, separator="_"): + """ + Creates a hierarchical dictionary from a flattened dictionary + Assumes no lists are present + :param flat_dict: a dictionary with no hierarchy + :param separator: a string that separates keys + :return: a dictionary with hierarchy + """ + _unflatten_asserts(flat_dict, separator) + + # This global dictionary is mutated and returned + unflattened_dict = {} + + def _unflatten(dic, keys, value): + for key in keys[:-1]: + dic = dic.setdefault(key, {}) + + dic[keys[-1]] = value + + list_keys = sorted(flat_dict.keys()) + for i, item in enumerate(list_keys): + if i != len(list_keys) - 1: + split_key = item.split(separator) + next_split_key = list_keys[i + 1].split(separator) + if not split_key == next_split_key[:-1]: + _unflatten(unflattened_dict, item.split(separator), flat_dict[item]) + else: + pass # if key contained in next key, json will be invalid. + else: + # last element + _unflatten(unflattened_dict, item.split(separator), flat_dict[item]) + return unflattened_dict + + +def unflatten_list(flat_dict, separator="_"): + """ + Unflattens a dictionary, first assuming no lists exist and then tries to + identify lists and replaces them + This is probably not very efficient and has not been tested extensively + Feel free to add test cases or rewrite the logic + Issues that stand out to me: + - Sorting all the keys in the dictionary, which specially for the root + dictionary can be a lot of keys + - Checking that numbers are consecutive is O(N) in number of keys + + :param flat_dict: dictionary with no hierarchy + :param separator: a string that separates keys + :return: a dictionary with hierarchy + """ + _unflatten_asserts(flat_dict, separator) + + # First unflatten the dictionary assuming no lists exist + unflattened_dict = unflatten(flat_dict, separator) + + def _convert_dict_to_list(object_, parent_object, parent_object_key): + if isinstance(object_, dict): + for key in object_: + if isinstance(object_[key], dict): + _convert_dict_to_list(object_[key], object_, key) + try: + keys = [int(key) for key in object_] + keys.sort() + except (ValueError, TypeError): + keys = [] + keys_len = len(keys) + + if ( + keys_len > 0 + and sum(keys) == int(((keys_len - 1) * keys_len) / 2) + and keys[0] == 0 + and keys[-1] == keys_len - 1 + and check_if_numbers_are_consecutive(keys) + ): + # The dictionary looks like a list so we're going to replace it + parent_object[parent_object_key] = [] + for key_index, key in enumerate(keys): + parent_object[parent_object_key].append(object_[str(key)]) + # The list item we just added might be a list itself + # https://github.com/amirziai/flatten/issues/15 + _convert_dict_to_list( + parent_object[parent_object_key][-1], parent_object[parent_object_key], key_index + ) + + _convert_dict_to_list(unflattened_dict, None, None) + return unflattened_dict + + +def cli(input_stream=sys.stdin, output_stream=sys.stdout): + raw = input_stream.read() + input_json = json.loads(raw) + output = json.dumps(flatten(input_json)) + output_stream.write("{}\n".format(output)) + output_stream.flush() + + +if __name__ == "__main__": + cli() diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/__init__.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/__init__.py new file mode 100644 index 00000000..95b05684 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/__init__.py @@ -0,0 +1,252 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +try: + from ._models_py3 import Alias + from ._models_py3 import AliasPath + from ._models_py3 import AliasPathMetadata + from ._models_py3 import AliasPattern + from ._models_py3 import ApiProfile + from ._models_py3 import BasicDependency + from ._models_py3 import DebugSetting + from ._models_py3 import Dependency + from ._models_py3 import Deployment + from ._models_py3 import DeploymentExportResult + from ._models_py3 import DeploymentExtended + from ._models_py3 import DeploymentExtendedFilter + from ._models_py3 import DeploymentListResult + from ._models_py3 import DeploymentOperation + from ._models_py3 import DeploymentOperationProperties + from ._models_py3 import DeploymentOperationsListResult + from ._models_py3 import DeploymentProperties + from ._models_py3 import DeploymentPropertiesExtended + from ._models_py3 import DeploymentValidateResult + from ._models_py3 import DeploymentWhatIf + from ._models_py3 import DeploymentWhatIfProperties + from ._models_py3 import DeploymentWhatIfSettings + from ._models_py3 import ErrorAdditionalInfo + from ._models_py3 import ErrorResponse + from ._models_py3 import ExportTemplateRequest + from ._models_py3 import GenericResource + from ._models_py3 import GenericResourceExpanded + from ._models_py3 import GenericResourceFilter + from ._models_py3 import HttpMessage + from ._models_py3 import Identity + from ._models_py3 import IdentityUserAssignedIdentitiesValue + from ._models_py3 import OnErrorDeployment + from ._models_py3 import OnErrorDeploymentExtended + from ._models_py3 import Operation + from ._models_py3 import OperationDisplay + from ._models_py3 import OperationListResult + from ._models_py3 import ParametersLink + from ._models_py3 import Plan + from ._models_py3 import Provider + from ._models_py3 import ProviderListResult + from ._models_py3 import ProviderResourceType + from ._models_py3 import Resource + from ._models_py3 import ResourceGroup + from ._models_py3 import ResourceGroupExportResult + from ._models_py3 import ResourceGroupFilter + from ._models_py3 import ResourceGroupListResult + from ._models_py3 import ResourceGroupPatchable + from ._models_py3 import ResourceGroupProperties + from ._models_py3 import ResourceListResult + from ._models_py3 import ResourceProviderOperationDisplayProperties + from ._models_py3 import ResourceReference + from ._models_py3 import ResourcesMoveInfo + from ._models_py3 import ScopedDeployment + from ._models_py3 import ScopedDeploymentWhatIf + from ._models_py3 import Sku + from ._models_py3 import StatusMessage + from ._models_py3 import SubResource + from ._models_py3 import TagCount + from ._models_py3 import TagDetails + from ._models_py3 import TagValue + from ._models_py3 import Tags + from ._models_py3 import TagsListResult + from ._models_py3 import TagsPatchResource + from ._models_py3 import TagsResource + from ._models_py3 import TargetResource + from ._models_py3 import TemplateHashResult + from ._models_py3 import TemplateLink + from ._models_py3 import WhatIfChange + from ._models_py3 import WhatIfOperationResult + from ._models_py3 import WhatIfPropertyChange +except (SyntaxError, ImportError): + from ._models import Alias # type: ignore + from ._models import AliasPath # type: ignore + from ._models import AliasPathMetadata # type: ignore + from ._models import AliasPattern # type: ignore + from ._models import ApiProfile # type: ignore + from ._models import BasicDependency # type: ignore + from ._models import DebugSetting # type: ignore + from ._models import Dependency # type: ignore + from ._models import Deployment # type: ignore + from ._models import DeploymentExportResult # type: ignore + from ._models import DeploymentExtended # type: ignore + from ._models import DeploymentExtendedFilter # type: ignore + from ._models import DeploymentListResult # type: ignore + from ._models import DeploymentOperation # type: ignore + from ._models import DeploymentOperationProperties # type: ignore + from ._models import DeploymentOperationsListResult # type: ignore + from ._models import DeploymentProperties # type: ignore + from ._models import DeploymentPropertiesExtended # type: ignore + from ._models import DeploymentValidateResult # type: ignore + from ._models import DeploymentWhatIf # type: ignore + from ._models import DeploymentWhatIfProperties # type: ignore + from ._models import DeploymentWhatIfSettings # type: ignore + from ._models import ErrorAdditionalInfo # type: ignore + from ._models import ErrorResponse # type: ignore + from ._models import ExportTemplateRequest # type: ignore + from ._models import GenericResource # type: ignore + from ._models import GenericResourceExpanded # type: ignore + from ._models import GenericResourceFilter # type: ignore + from ._models import HttpMessage # type: ignore + from ._models import Identity # type: ignore + from ._models import IdentityUserAssignedIdentitiesValue # type: ignore + from ._models import OnErrorDeployment # type: ignore + from ._models import OnErrorDeploymentExtended # type: ignore + from ._models import Operation # type: ignore + from ._models import OperationDisplay # type: ignore + from ._models import OperationListResult # type: ignore + from ._models import ParametersLink # type: ignore + from ._models import Plan # type: ignore + from ._models import Provider # type: ignore + from ._models import ProviderListResult # type: ignore + from ._models import ProviderResourceType # type: ignore + from ._models import Resource # type: ignore + from ._models import ResourceGroup # type: ignore + from ._models import ResourceGroupExportResult # type: ignore + from ._models import ResourceGroupFilter # type: ignore + from ._models import ResourceGroupListResult # type: ignore + from ._models import ResourceGroupPatchable # type: ignore + from ._models import ResourceGroupProperties # type: ignore + from ._models import ResourceListResult # type: ignore + from ._models import ResourceProviderOperationDisplayProperties # type: ignore + from ._models import ResourceReference # type: ignore + from ._models import ResourcesMoveInfo # type: ignore + from ._models import ScopedDeployment # type: ignore + from ._models import ScopedDeploymentWhatIf # type: ignore + from ._models import Sku # type: ignore + from ._models import StatusMessage # type: ignore + from ._models import SubResource # type: ignore + from ._models import TagCount # type: ignore + from ._models import TagDetails # type: ignore + from ._models import TagValue # type: ignore + from ._models import Tags # type: ignore + from ._models import TagsListResult # type: ignore + from ._models import TagsPatchResource # type: ignore + from ._models import TagsResource # type: ignore + from ._models import TargetResource # type: ignore + from ._models import TemplateHashResult # type: ignore + from ._models import TemplateLink # type: ignore + from ._models import WhatIfChange # type: ignore + from ._models import WhatIfOperationResult # type: ignore + from ._models import WhatIfPropertyChange # type: ignore + +from ._resource_management_client_enums import ( + AliasPathAttributes, + AliasPathTokenType, + AliasPatternType, + AliasType, + ChangeType, + DeploymentMode, + OnErrorDeploymentType, + PropertyChangeType, + ProvisioningOperation, + ProvisioningState, + ResourceIdentityType, + TagsPatchOperation, + WhatIfResultFormat, +) + +__all__ = [ + "Alias", + "AliasPath", + "AliasPathMetadata", + "AliasPattern", + "ApiProfile", + "BasicDependency", + "DebugSetting", + "Dependency", + "Deployment", + "DeploymentExportResult", + "DeploymentExtended", + "DeploymentExtendedFilter", + "DeploymentListResult", + "DeploymentOperation", + "DeploymentOperationProperties", + "DeploymentOperationsListResult", + "DeploymentProperties", + "DeploymentPropertiesExtended", + "DeploymentValidateResult", + "DeploymentWhatIf", + "DeploymentWhatIfProperties", + "DeploymentWhatIfSettings", + "ErrorAdditionalInfo", + "ErrorResponse", + "ExportTemplateRequest", + "GenericResource", + "GenericResourceExpanded", + "GenericResourceFilter", + "HttpMessage", + "Identity", + "IdentityUserAssignedIdentitiesValue", + "OnErrorDeployment", + "OnErrorDeploymentExtended", + "Operation", + "OperationDisplay", + "OperationListResult", + "ParametersLink", + "Plan", + "Provider", + "ProviderListResult", + "ProviderResourceType", + "Resource", + "ResourceGroup", + "ResourceGroupExportResult", + "ResourceGroupFilter", + "ResourceGroupListResult", + "ResourceGroupPatchable", + "ResourceGroupProperties", + "ResourceListResult", + "ResourceProviderOperationDisplayProperties", + "ResourceReference", + "ResourcesMoveInfo", + "ScopedDeployment", + "ScopedDeploymentWhatIf", + "Sku", + "StatusMessage", + "SubResource", + "TagCount", + "TagDetails", + "TagValue", + "Tags", + "TagsListResult", + "TagsPatchResource", + "TagsResource", + "TargetResource", + "TemplateHashResult", + "TemplateLink", + "WhatIfChange", + "WhatIfOperationResult", + "WhatIfPropertyChange", + "AliasPathAttributes", + "AliasPathTokenType", + "AliasPatternType", + "AliasType", + "ChangeType", + "DeploymentMode", + "OnErrorDeploymentType", + "PropertyChangeType", + "ProvisioningOperation", + "ProvisioningState", + "ResourceIdentityType", + "TagsPatchOperation", + "WhatIfResultFormat", +] diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_models.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_models.py new file mode 100644 index 00000000..c556a5e1 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_models.py @@ -0,0 +1,2235 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +import msrest.serialization + + +class Alias(msrest.serialization.Model): + """The alias type. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param name: The alias name. + :type name: str + :param paths: The paths for an alias. + :type paths: list[~azure.mgmt.resource.resources.v2020_06_01.models.AliasPath] + :param type: The type of the alias. Possible values include: "NotSpecified", "PlainText", + "Mask". + :type type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.AliasType + :param default_path: The default path for an alias. + :type default_path: str + :param default_pattern: The default pattern for an alias. + :type default_pattern: ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPattern + :ivar default_metadata: The default alias path metadata. Applies to the default path and to any + alias path that doesn't have metadata. + :vartype default_metadata: ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPathMetadata + """ + + _validation = { + "default_metadata": {"readonly": True}, + } + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "paths": {"key": "paths", "type": "[AliasPath]"}, + "type": {"key": "type", "type": "str"}, + "default_path": {"key": "defaultPath", "type": "str"}, + "default_pattern": {"key": "defaultPattern", "type": "AliasPattern"}, + "default_metadata": {"key": "defaultMetadata", "type": "AliasPathMetadata"}, + } + + def __init__(self, **kwargs): + super(Alias, self).__init__(**kwargs) + self.name = kwargs.get("name", None) + self.paths = kwargs.get("paths", None) + self.type = kwargs.get("type", None) + self.default_path = kwargs.get("default_path", None) + self.default_pattern = kwargs.get("default_pattern", None) + self.default_metadata = None + + +class AliasPath(msrest.serialization.Model): + """The type of the paths for alias. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param path: The path of an alias. + :type path: str + :param api_versions: The API versions. + :type api_versions: list[str] + :param pattern: The pattern for an alias path. + :type pattern: ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPattern + :ivar metadata: The metadata of the alias path. If missing, fall back to the default metadata + of the alias. + :vartype metadata: ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPathMetadata + """ + + _validation = { + "metadata": {"readonly": True}, + } + + _attribute_map = { + "path": {"key": "path", "type": "str"}, + "api_versions": {"key": "apiVersions", "type": "[str]"}, + "pattern": {"key": "pattern", "type": "AliasPattern"}, + "metadata": {"key": "metadata", "type": "AliasPathMetadata"}, + } + + def __init__(self, **kwargs): + super(AliasPath, self).__init__(**kwargs) + self.path = kwargs.get("path", None) + self.api_versions = kwargs.get("api_versions", None) + self.pattern = kwargs.get("pattern", None) + self.metadata = None + + +class AliasPathMetadata(msrest.serialization.Model): + """AliasPathMetadata. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar type: The type of the token that the alias path is referring to. Possible values include: + "NotSpecified", "Any", "String", "Object", "Array", "Integer", "Number", "Boolean". + :vartype type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPathTokenType + :ivar attributes: The attributes of the token that the alias path is referring to. Possible + values include: "None", "Modifiable". + :vartype attributes: str or + ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPathAttributes + """ + + _validation = { + "type": {"readonly": True}, + "attributes": {"readonly": True}, + } + + _attribute_map = { + "type": {"key": "type", "type": "str"}, + "attributes": {"key": "attributes", "type": "str"}, + } + + def __init__(self, **kwargs): + super(AliasPathMetadata, self).__init__(**kwargs) + self.type = None + self.attributes = None + + +class AliasPattern(msrest.serialization.Model): + """The type of the pattern for an alias path. + + :param phrase: The alias pattern phrase. + :type phrase: str + :param variable: The alias pattern variable. + :type variable: str + :param type: The type of alias pattern. Possible values include: "NotSpecified", "Extract". + :type type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPatternType + """ + + _attribute_map = { + "phrase": {"key": "phrase", "type": "str"}, + "variable": {"key": "variable", "type": "str"}, + "type": {"key": "type", "type": "str"}, + } + + def __init__(self, **kwargs): + super(AliasPattern, self).__init__(**kwargs) + self.phrase = kwargs.get("phrase", None) + self.variable = kwargs.get("variable", None) + self.type = kwargs.get("type", None) + + +class ApiProfile(msrest.serialization.Model): + """ApiProfile. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar profile_version: The profile version. + :vartype profile_version: str + :ivar api_version: The API version. + :vartype api_version: str + """ + + _validation = { + "profile_version": {"readonly": True}, + "api_version": {"readonly": True}, + } + + _attribute_map = { + "profile_version": {"key": "profileVersion", "type": "str"}, + "api_version": {"key": "apiVersion", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ApiProfile, self).__init__(**kwargs) + self.profile_version = None + self.api_version = None + + +class BasicDependency(msrest.serialization.Model): + """Deployment dependency information. + + :param id: The ID of the dependency. + :type id: str + :param resource_type: The dependency resource type. + :type resource_type: str + :param resource_name: The dependency resource name. + :type resource_name: str + """ + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "resource_type": {"key": "resourceType", "type": "str"}, + "resource_name": {"key": "resourceName", "type": "str"}, + } + + def __init__(self, **kwargs): + super(BasicDependency, self).__init__(**kwargs) + self.id = kwargs.get("id", None) + self.resource_type = kwargs.get("resource_type", None) + self.resource_name = kwargs.get("resource_name", None) + + +class DebugSetting(msrest.serialization.Model): + """The debug setting. + + :param detail_level: Specifies the type of information to log for debugging. The permitted + values are none, requestContent, responseContent, or both requestContent and responseContent + separated by a comma. The default is none. When setting this value, carefully consider the type + of information you are passing in during deployment. By logging information about the request + or response, you could potentially expose sensitive data that is retrieved through the + deployment operations. + :type detail_level: str + """ + + _attribute_map = { + "detail_level": {"key": "detailLevel", "type": "str"}, + } + + def __init__(self, **kwargs): + super(DebugSetting, self).__init__(**kwargs) + self.detail_level = kwargs.get("detail_level", None) + + +class Dependency(msrest.serialization.Model): + """Deployment dependency information. + + :param depends_on: The list of dependencies. + :type depends_on: list[~azure.mgmt.resource.resources.v2020_06_01.models.BasicDependency] + :param id: The ID of the dependency. + :type id: str + :param resource_type: The dependency resource type. + :type resource_type: str + :param resource_name: The dependency resource name. + :type resource_name: str + """ + + _attribute_map = { + "depends_on": {"key": "dependsOn", "type": "[BasicDependency]"}, + "id": {"key": "id", "type": "str"}, + "resource_type": {"key": "resourceType", "type": "str"}, + "resource_name": {"key": "resourceName", "type": "str"}, + } + + def __init__(self, **kwargs): + super(Dependency, self).__init__(**kwargs) + self.depends_on = kwargs.get("depends_on", None) + self.id = kwargs.get("id", None) + self.resource_type = kwargs.get("resource_type", None) + self.resource_name = kwargs.get("resource_name", None) + + +class Deployment(msrest.serialization.Model): + """Deployment operation parameters. + + All required parameters must be populated in order to send to Azure. + + :param location: The location to store the deployment data. + :type location: str + :param properties: Required. The deployment properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentProperties + :param tags: A set of tags. Deployment tags. + :type tags: dict[str, str] + """ + + _validation = { + "properties": {"required": True}, + } + + _attribute_map = { + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentProperties"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__(self, **kwargs): + super(Deployment, self).__init__(**kwargs) + self.location = kwargs.get("location", None) + self.properties = kwargs["properties"] + self.tags = kwargs.get("tags", None) + + +class DeploymentExportResult(msrest.serialization.Model): + """The deployment export result. + + :param template: The template content. + :type template: object + """ + + _attribute_map = { + "template": {"key": "template", "type": "object"}, + } + + def __init__(self, **kwargs): + super(DeploymentExportResult, self).__init__(**kwargs) + self.template = kwargs.get("template", None) + + +class DeploymentExtended(msrest.serialization.Model): + """Deployment information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The ID of the deployment. + :vartype id: str + :ivar name: The name of the deployment. + :vartype name: str + :ivar type: The type of the deployment. + :vartype type: str + :param location: the location of the deployment. + :type location: str + :param properties: Deployment properties. + :type properties: + ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentPropertiesExtended + :param tags: A set of tags. Deployment tags. + :type tags: dict[str, str] + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentPropertiesExtended"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__(self, **kwargs): + super(DeploymentExtended, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.location = kwargs.get("location", None) + self.properties = kwargs.get("properties", None) + self.tags = kwargs.get("tags", None) + + +class DeploymentExtendedFilter(msrest.serialization.Model): + """Deployment filter. + + :param provisioning_state: The provisioning state. + :type provisioning_state: str + """ + + _attribute_map = { + "provisioning_state": {"key": "provisioningState", "type": "str"}, + } + + def __init__(self, **kwargs): + super(DeploymentExtendedFilter, self).__init__(**kwargs) + self.provisioning_state = kwargs.get("provisioning_state", None) + + +class DeploymentListResult(msrest.serialization.Model): + """List of deployments. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of deployments. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[DeploymentExtended]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs): + super(DeploymentListResult, self).__init__(**kwargs) + self.value = kwargs.get("value", None) + self.next_link = None + + +class DeploymentOperation(msrest.serialization.Model): + """Deployment operation information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Full deployment operation ID. + :vartype id: str + :ivar operation_id: Deployment operation ID. + :vartype operation_id: str + :param properties: Deployment properties. + :type properties: + ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationProperties + """ + + _validation = { + "id": {"readonly": True}, + "operation_id": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "operation_id": {"key": "operationId", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentOperationProperties"}, + } + + def __init__(self, **kwargs): + super(DeploymentOperation, self).__init__(**kwargs) + self.id = None + self.operation_id = None + self.properties = kwargs.get("properties", None) + + +class DeploymentOperationProperties(msrest.serialization.Model): + """Deployment operation properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar provisioning_operation: The name of the current provisioning operation. Possible values + include: "NotSpecified", "Create", "Delete", "Waiting", "AzureAsyncOperationWaiting", + "ResourceCacheWaiting", "Action", "Read", "EvaluateDeploymentOutput", "DeploymentCleanup". + :vartype provisioning_operation: str or + ~azure.mgmt.resource.resources.v2020_06_01.models.ProvisioningOperation + :ivar provisioning_state: The state of the provisioning. + :vartype provisioning_state: str + :ivar timestamp: The date and time of the operation. + :vartype timestamp: ~datetime.datetime + :ivar duration: The duration of the operation. + :vartype duration: str + :ivar service_request_id: Deployment operation service request id. + :vartype service_request_id: str + :ivar status_code: Operation status code from the resource provider. This property may not be + set if a response has not yet been received. + :vartype status_code: str + :ivar status_message: Operation status message from the resource provider. This property is + optional. It will only be provided if an error was received from the resource provider. + :vartype status_message: ~azure.mgmt.resource.resources.v2020_06_01.models.StatusMessage + :ivar target_resource: The target resource. + :vartype target_resource: ~azure.mgmt.resource.resources.v2020_06_01.models.TargetResource + :ivar request: The HTTP request message. + :vartype request: ~azure.mgmt.resource.resources.v2020_06_01.models.HttpMessage + :ivar response: The HTTP response message. + :vartype response: ~azure.mgmt.resource.resources.v2020_06_01.models.HttpMessage + """ + + _validation = { + "provisioning_operation": {"readonly": True}, + "provisioning_state": {"readonly": True}, + "timestamp": {"readonly": True}, + "duration": {"readonly": True}, + "service_request_id": {"readonly": True}, + "status_code": {"readonly": True}, + "status_message": {"readonly": True}, + "target_resource": {"readonly": True}, + "request": {"readonly": True}, + "response": {"readonly": True}, + } + + _attribute_map = { + "provisioning_operation": {"key": "provisioningOperation", "type": "str"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "timestamp": {"key": "timestamp", "type": "iso-8601"}, + "duration": {"key": "duration", "type": "str"}, + "service_request_id": {"key": "serviceRequestId", "type": "str"}, + "status_code": {"key": "statusCode", "type": "str"}, + "status_message": {"key": "statusMessage", "type": "StatusMessage"}, + "target_resource": {"key": "targetResource", "type": "TargetResource"}, + "request": {"key": "request", "type": "HttpMessage"}, + "response": {"key": "response", "type": "HttpMessage"}, + } + + def __init__(self, **kwargs): + super(DeploymentOperationProperties, self).__init__(**kwargs) + self.provisioning_operation = None + self.provisioning_state = None + self.timestamp = None + self.duration = None + self.service_request_id = None + self.status_code = None + self.status_message = None + self.target_resource = None + self.request = None + self.response = None + + +class DeploymentOperationsListResult(msrest.serialization.Model): + """List of deployment operations. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of deployment operations. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[DeploymentOperation]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs): + super(DeploymentOperationsListResult, self).__init__(**kwargs) + self.value = kwargs.get("value", None) + self.next_link = None + + +class DeploymentProperties(msrest.serialization.Model): + """Deployment properties. + + All required parameters must be populated in order to send to Azure. + + :param template: The template content. You use this element when you want to pass the template + syntax directly in the request rather than link to an existing template. It can be a JObject or + well-formed JSON string. Use either the templateLink property or the template property, but not + both. + :type template: object + :param template_link: The URI of the template. Use either the templateLink property or the + template property, but not both. + :type template_link: ~azure.mgmt.resource.resources.v2020_06_01.models.TemplateLink + :param parameters: Name and value pairs that define the deployment parameters for the template. + You use this element when you want to provide the parameter values directly in the request + rather than link to an existing parameter file. Use either the parametersLink property or the + parameters property, but not both. It can be a JObject or a well formed JSON string. + :type parameters: object + :param parameters_link: The URI of parameters file. You use this element to link to an existing + parameters file. Use either the parametersLink property or the parameters property, but not + both. + :type parameters_link: ~azure.mgmt.resource.resources.v2020_06_01.models.ParametersLink + :param mode: Required. The mode that is used to deploy resources. This value can be either + Incremental or Complete. In Incremental mode, resources are deployed without deleting existing + resources that are not included in the template. In Complete mode, resources are deployed and + existing resources in the resource group that are not included in the template are deleted. Be + careful when using Complete mode as you may unintentionally delete resources. Possible values + include: "Incremental", "Complete". + :type mode: str or ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentMode + :param debug_setting: The debug setting of the deployment. + :type debug_setting: ~azure.mgmt.resource.resources.v2020_06_01.models.DebugSetting + :param on_error_deployment: The deployment on error behavior. + :type on_error_deployment: ~azure.mgmt.resource.resources.v2020_06_01.models.OnErrorDeployment + """ + + _validation = { + "mode": {"required": True}, + } + + _attribute_map = { + "template": {"key": "template", "type": "object"}, + "template_link": {"key": "templateLink", "type": "TemplateLink"}, + "parameters": {"key": "parameters", "type": "object"}, + "parameters_link": {"key": "parametersLink", "type": "ParametersLink"}, + "mode": {"key": "mode", "type": "str"}, + "debug_setting": {"key": "debugSetting", "type": "DebugSetting"}, + "on_error_deployment": {"key": "onErrorDeployment", "type": "OnErrorDeployment"}, + } + + def __init__(self, **kwargs): + super(DeploymentProperties, self).__init__(**kwargs) + self.template = kwargs.get("template", None) + self.template_link = kwargs.get("template_link", None) + self.parameters = kwargs.get("parameters", None) + self.parameters_link = kwargs.get("parameters_link", None) + self.mode = kwargs["mode"] + self.debug_setting = kwargs.get("debug_setting", None) + self.on_error_deployment = kwargs.get("on_error_deployment", None) + + +class DeploymentPropertiesExtended(msrest.serialization.Model): + """Deployment properties with additional details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar provisioning_state: Denotes the state of provisioning. Possible values include: + "NotSpecified", "Accepted", "Running", "Ready", "Creating", "Created", "Deleting", "Deleted", + "Canceled", "Failed", "Succeeded", "Updating". + :vartype provisioning_state: str or + ~azure.mgmt.resource.resources.v2020_06_01.models.ProvisioningState + :ivar correlation_id: The correlation ID of the deployment. + :vartype correlation_id: str + :ivar timestamp: The timestamp of the template deployment. + :vartype timestamp: ~datetime.datetime + :ivar duration: The duration of the template deployment. + :vartype duration: str + :ivar outputs: Key/value pairs that represent deployment output. + :vartype outputs: object + :ivar providers: The list of resource providers needed for the deployment. + :vartype providers: list[~azure.mgmt.resource.resources.v2020_06_01.models.Provider] + :ivar dependencies: The list of deployment dependencies. + :vartype dependencies: list[~azure.mgmt.resource.resources.v2020_06_01.models.Dependency] + :ivar template_link: The URI referencing the template. + :vartype template_link: ~azure.mgmt.resource.resources.v2020_06_01.models.TemplateLink + :ivar parameters: Deployment parameters. + :vartype parameters: object + :ivar parameters_link: The URI referencing the parameters. + :vartype parameters_link: ~azure.mgmt.resource.resources.v2020_06_01.models.ParametersLink + :ivar mode: The deployment mode. Possible values are Incremental and Complete. Possible values + include: "Incremental", "Complete". + :vartype mode: str or ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentMode + :ivar debug_setting: The debug setting of the deployment. + :vartype debug_setting: ~azure.mgmt.resource.resources.v2020_06_01.models.DebugSetting + :ivar on_error_deployment: The deployment on error behavior. + :vartype on_error_deployment: + ~azure.mgmt.resource.resources.v2020_06_01.models.OnErrorDeploymentExtended + :ivar template_hash: The hash produced for the template. + :vartype template_hash: str + :ivar output_resources: Array of provisioned resources. + :vartype output_resources: + list[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceReference] + :ivar validated_resources: Array of validated resources. + :vartype validated_resources: + list[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceReference] + :ivar error: The deployment error. + :vartype error: ~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse + """ + + _validation = { + "provisioning_state": {"readonly": True}, + "correlation_id": {"readonly": True}, + "timestamp": {"readonly": True}, + "duration": {"readonly": True}, + "outputs": {"readonly": True}, + "providers": {"readonly": True}, + "dependencies": {"readonly": True}, + "template_link": {"readonly": True}, + "parameters": {"readonly": True}, + "parameters_link": {"readonly": True}, + "mode": {"readonly": True}, + "debug_setting": {"readonly": True}, + "on_error_deployment": {"readonly": True}, + "template_hash": {"readonly": True}, + "output_resources": {"readonly": True}, + "validated_resources": {"readonly": True}, + "error": {"readonly": True}, + } + + _attribute_map = { + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "correlation_id": {"key": "correlationId", "type": "str"}, + "timestamp": {"key": "timestamp", "type": "iso-8601"}, + "duration": {"key": "duration", "type": "str"}, + "outputs": {"key": "outputs", "type": "object"}, + "providers": {"key": "providers", "type": "[Provider]"}, + "dependencies": {"key": "dependencies", "type": "[Dependency]"}, + "template_link": {"key": "templateLink", "type": "TemplateLink"}, + "parameters": {"key": "parameters", "type": "object"}, + "parameters_link": {"key": "parametersLink", "type": "ParametersLink"}, + "mode": {"key": "mode", "type": "str"}, + "debug_setting": {"key": "debugSetting", "type": "DebugSetting"}, + "on_error_deployment": {"key": "onErrorDeployment", "type": "OnErrorDeploymentExtended"}, + "template_hash": {"key": "templateHash", "type": "str"}, + "output_resources": {"key": "outputResources", "type": "[ResourceReference]"}, + "validated_resources": {"key": "validatedResources", "type": "[ResourceReference]"}, + "error": {"key": "error", "type": "ErrorResponse"}, + } + + def __init__(self, **kwargs): + super(DeploymentPropertiesExtended, self).__init__(**kwargs) + self.provisioning_state = None + self.correlation_id = None + self.timestamp = None + self.duration = None + self.outputs = None + self.providers = None + self.dependencies = None + self.template_link = None + self.parameters = None + self.parameters_link = None + self.mode = None + self.debug_setting = None + self.on_error_deployment = None + self.template_hash = None + self.output_resources = None + self.validated_resources = None + self.error = None + + +class DeploymentValidateResult(msrest.serialization.Model): + """Information from validate template deployment response. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar error: The deployment validation error. + :vartype error: ~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse + :param properties: The template deployment properties. + :type properties: + ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentPropertiesExtended + """ + + _validation = { + "error": {"readonly": True}, + } + + _attribute_map = { + "error": {"key": "error", "type": "ErrorResponse"}, + "properties": {"key": "properties", "type": "DeploymentPropertiesExtended"}, + } + + def __init__(self, **kwargs): + super(DeploymentValidateResult, self).__init__(**kwargs) + self.error = None + self.properties = kwargs.get("properties", None) + + +class DeploymentWhatIf(msrest.serialization.Model): + """Deployment What-if operation parameters. + + All required parameters must be populated in order to send to Azure. + + :param location: The location to store the deployment data. + :type location: str + :param properties: Required. The deployment properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentWhatIfProperties + """ + + _validation = { + "properties": {"required": True}, + } + + _attribute_map = { + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentWhatIfProperties"}, + } + + def __init__(self, **kwargs): + super(DeploymentWhatIf, self).__init__(**kwargs) + self.location = kwargs.get("location", None) + self.properties = kwargs["properties"] + + +class DeploymentWhatIfProperties(DeploymentProperties): + """Deployment What-if properties. + + All required parameters must be populated in order to send to Azure. + + :param template: The template content. You use this element when you want to pass the template + syntax directly in the request rather than link to an existing template. It can be a JObject or + well-formed JSON string. Use either the templateLink property or the template property, but not + both. + :type template: object + :param template_link: The URI of the template. Use either the templateLink property or the + template property, but not both. + :type template_link: ~azure.mgmt.resource.resources.v2020_06_01.models.TemplateLink + :param parameters: Name and value pairs that define the deployment parameters for the template. + You use this element when you want to provide the parameter values directly in the request + rather than link to an existing parameter file. Use either the parametersLink property or the + parameters property, but not both. It can be a JObject or a well formed JSON string. + :type parameters: object + :param parameters_link: The URI of parameters file. You use this element to link to an existing + parameters file. Use either the parametersLink property or the parameters property, but not + both. + :type parameters_link: ~azure.mgmt.resource.resources.v2020_06_01.models.ParametersLink + :param mode: Required. The mode that is used to deploy resources. This value can be either + Incremental or Complete. In Incremental mode, resources are deployed without deleting existing + resources that are not included in the template. In Complete mode, resources are deployed and + existing resources in the resource group that are not included in the template are deleted. Be + careful when using Complete mode as you may unintentionally delete resources. Possible values + include: "Incremental", "Complete". + :type mode: str or ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentMode + :param debug_setting: The debug setting of the deployment. + :type debug_setting: ~azure.mgmt.resource.resources.v2020_06_01.models.DebugSetting + :param on_error_deployment: The deployment on error behavior. + :type on_error_deployment: ~azure.mgmt.resource.resources.v2020_06_01.models.OnErrorDeployment + :param what_if_settings: Optional What-If operation settings. + :type what_if_settings: + ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentWhatIfSettings + """ + + _validation = { + "mode": {"required": True}, + } + + _attribute_map = { + "template": {"key": "template", "type": "object"}, + "template_link": {"key": "templateLink", "type": "TemplateLink"}, + "parameters": {"key": "parameters", "type": "object"}, + "parameters_link": {"key": "parametersLink", "type": "ParametersLink"}, + "mode": {"key": "mode", "type": "str"}, + "debug_setting": {"key": "debugSetting", "type": "DebugSetting"}, + "on_error_deployment": {"key": "onErrorDeployment", "type": "OnErrorDeployment"}, + "what_if_settings": {"key": "whatIfSettings", "type": "DeploymentWhatIfSettings"}, + } + + def __init__(self, **kwargs): + super(DeploymentWhatIfProperties, self).__init__(**kwargs) + self.what_if_settings = kwargs.get("what_if_settings", None) + + +class DeploymentWhatIfSettings(msrest.serialization.Model): + """Deployment What-If operation settings. + + :param result_format: The format of the What-If results. Possible values include: + "ResourceIdOnly", "FullResourcePayloads". + :type result_format: str or + ~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfResultFormat + """ + + _attribute_map = { + "result_format": {"key": "resultFormat", "type": "str"}, + } + + def __init__(self, **kwargs): + super(DeploymentWhatIfSettings, self).__init__(**kwargs) + self.result_format = kwargs.get("result_format", None) + + +class ErrorAdditionalInfo(msrest.serialization.Model): + """The resource management error additional info. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar type: The additional info type. + :vartype type: str + :ivar info: The additional info. + :vartype info: object + """ + + _validation = { + "type": {"readonly": True}, + "info": {"readonly": True}, + } + + _attribute_map = { + "type": {"key": "type", "type": "str"}, + "info": {"key": "info", "type": "object"}, + } + + def __init__(self, **kwargs): + super(ErrorAdditionalInfo, self).__init__(**kwargs) + self.type = None + self.info = None + + +class ErrorResponse(msrest.serialization.Model): + """The resource management error response. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar code: The error code. + :vartype code: str + :ivar message: The error message. + :vartype message: str + :ivar target: The error target. + :vartype target: str + :ivar details: The error details. + :vartype details: list[~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse] + :ivar additional_info: The error additional info. + :vartype additional_info: + list[~azure.mgmt.resource.resources.v2020_06_01.models.ErrorAdditionalInfo] + """ + + _validation = { + "code": {"readonly": True}, + "message": {"readonly": True}, + "target": {"readonly": True}, + "details": {"readonly": True}, + "additional_info": {"readonly": True}, + } + + _attribute_map = { + "code": {"key": "code", "type": "str"}, + "message": {"key": "message", "type": "str"}, + "target": {"key": "target", "type": "str"}, + "details": {"key": "details", "type": "[ErrorResponse]"}, + "additional_info": {"key": "additionalInfo", "type": "[ErrorAdditionalInfo]"}, + } + + def __init__(self, **kwargs): + super(ErrorResponse, self).__init__(**kwargs) + self.code = None + self.message = None + self.target = None + self.details = None + self.additional_info = None + + +class ExportTemplateRequest(msrest.serialization.Model): + """Export resource group template request parameters. + + :param resources: The IDs of the resources to filter the export by. To export all resources, + supply an array with single entry '*'. + :type resources: list[str] + :param options: The export template options. A CSV-formatted list containing zero or more of + the following: 'IncludeParameterDefaultValue', 'IncludeComments', + 'SkipResourceNameParameterization', 'SkipAllParameterization'. + :type options: str + """ + + _attribute_map = { + "resources": {"key": "resources", "type": "[str]"}, + "options": {"key": "options", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ExportTemplateRequest, self).__init__(**kwargs) + self.resources = kwargs.get("resources", None) + self.options = kwargs.get("options", None) + + +class Resource(msrest.serialization.Model): + """Specified resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :param location: Resource location. + :type location: str + :param tags: A set of tags. Resource tags. + :type tags: dict[str, str] + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__(self, **kwargs): + super(Resource, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.location = kwargs.get("location", None) + self.tags = kwargs.get("tags", None) + + +class GenericResource(Resource): + """Resource information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :param location: Resource location. + :type location: str + :param tags: A set of tags. Resource tags. + :type tags: dict[str, str] + :param plan: The plan of the resource. + :type plan: ~azure.mgmt.resource.resources.v2020_06_01.models.Plan + :param properties: The resource properties. + :type properties: object + :param kind: The kind of the resource. + :type kind: str + :param managed_by: ID of the resource that manages this resource. + :type managed_by: str + :param sku: The SKU of the resource. + :type sku: ~azure.mgmt.resource.resources.v2020_06_01.models.Sku + :param identity: The identity of the resource. + :type identity: ~azure.mgmt.resource.resources.v2020_06_01.models.Identity + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "kind": {"pattern": r"^[-\w\._,\(\)]+$"}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + "plan": {"key": "plan", "type": "Plan"}, + "properties": {"key": "properties", "type": "object"}, + "kind": {"key": "kind", "type": "str"}, + "managed_by": {"key": "managedBy", "type": "str"}, + "sku": {"key": "sku", "type": "Sku"}, + "identity": {"key": "identity", "type": "Identity"}, + } + + def __init__(self, **kwargs): + super(GenericResource, self).__init__(**kwargs) + self.plan = kwargs.get("plan", None) + self.properties = kwargs.get("properties", None) + self.kind = kwargs.get("kind", None) + self.managed_by = kwargs.get("managed_by", None) + self.sku = kwargs.get("sku", None) + self.identity = kwargs.get("identity", None) + + +class GenericResourceExpanded(GenericResource): + """Resource information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :param location: Resource location. + :type location: str + :param tags: A set of tags. Resource tags. + :type tags: dict[str, str] + :param plan: The plan of the resource. + :type plan: ~azure.mgmt.resource.resources.v2020_06_01.models.Plan + :param properties: The resource properties. + :type properties: object + :param kind: The kind of the resource. + :type kind: str + :param managed_by: ID of the resource that manages this resource. + :type managed_by: str + :param sku: The SKU of the resource. + :type sku: ~azure.mgmt.resource.resources.v2020_06_01.models.Sku + :param identity: The identity of the resource. + :type identity: ~azure.mgmt.resource.resources.v2020_06_01.models.Identity + :ivar created_time: The created time of the resource. This is only present if requested via the + $expand query parameter. + :vartype created_time: ~datetime.datetime + :ivar changed_time: The changed time of the resource. This is only present if requested via the + $expand query parameter. + :vartype changed_time: ~datetime.datetime + :ivar provisioning_state: The provisioning state of the resource. This is only present if + requested via the $expand query parameter. + :vartype provisioning_state: str + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "kind": {"pattern": r"^[-\w\._,\(\)]+$"}, + "created_time": {"readonly": True}, + "changed_time": {"readonly": True}, + "provisioning_state": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + "plan": {"key": "plan", "type": "Plan"}, + "properties": {"key": "properties", "type": "object"}, + "kind": {"key": "kind", "type": "str"}, + "managed_by": {"key": "managedBy", "type": "str"}, + "sku": {"key": "sku", "type": "Sku"}, + "identity": {"key": "identity", "type": "Identity"}, + "created_time": {"key": "createdTime", "type": "iso-8601"}, + "changed_time": {"key": "changedTime", "type": "iso-8601"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + } + + def __init__(self, **kwargs): + super(GenericResourceExpanded, self).__init__(**kwargs) + self.created_time = None + self.changed_time = None + self.provisioning_state = None + + +class GenericResourceFilter(msrest.serialization.Model): + """Resource filter. + + :param resource_type: The resource type. + :type resource_type: str + :param tagname: The tag name. + :type tagname: str + :param tagvalue: The tag value. + :type tagvalue: str + """ + + _attribute_map = { + "resource_type": {"key": "resourceType", "type": "str"}, + "tagname": {"key": "tagname", "type": "str"}, + "tagvalue": {"key": "tagvalue", "type": "str"}, + } + + def __init__(self, **kwargs): + super(GenericResourceFilter, self).__init__(**kwargs) + self.resource_type = kwargs.get("resource_type", None) + self.tagname = kwargs.get("tagname", None) + self.tagvalue = kwargs.get("tagvalue", None) + + +class HttpMessage(msrest.serialization.Model): + """HTTP message. + + :param content: HTTP message content. + :type content: object + """ + + _attribute_map = { + "content": {"key": "content", "type": "object"}, + } + + def __init__(self, **kwargs): + super(HttpMessage, self).__init__(**kwargs) + self.content = kwargs.get("content", None) + + +class Identity(msrest.serialization.Model): + """Identity for the resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar principal_id: The principal ID of resource identity. + :vartype principal_id: str + :ivar tenant_id: The tenant ID of resource. + :vartype tenant_id: str + :param type: The identity type. Possible values include: "SystemAssigned", "UserAssigned", + "SystemAssigned, UserAssigned", "None". + :type type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceIdentityType + :param user_assigned_identities: The list of user identities associated with the resource. The + user identity dictionary key references will be ARM resource ids in the form: + '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + :type user_assigned_identities: dict[str, + ~azure.mgmt.resource.resources.v2020_06_01.models.IdentityUserAssignedIdentitiesValue] + """ + + _validation = { + "principal_id": {"readonly": True}, + "tenant_id": {"readonly": True}, + } + + _attribute_map = { + "principal_id": {"key": "principalId", "type": "str"}, + "tenant_id": {"key": "tenantId", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "user_assigned_identities": {"key": "userAssignedIdentities", "type": "{IdentityUserAssignedIdentitiesValue}"}, + } + + def __init__(self, **kwargs): + super(Identity, self).__init__(**kwargs) + self.principal_id = None + self.tenant_id = None + self.type = kwargs.get("type", None) + self.user_assigned_identities = kwargs.get("user_assigned_identities", None) + + +class IdentityUserAssignedIdentitiesValue(msrest.serialization.Model): + """IdentityUserAssignedIdentitiesValue. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar principal_id: The principal id of user assigned identity. + :vartype principal_id: str + :ivar client_id: The client id of user assigned identity. + :vartype client_id: str + """ + + _validation = { + "principal_id": {"readonly": True}, + "client_id": {"readonly": True}, + } + + _attribute_map = { + "principal_id": {"key": "principalId", "type": "str"}, + "client_id": {"key": "clientId", "type": "str"}, + } + + def __init__(self, **kwargs): + super(IdentityUserAssignedIdentitiesValue, self).__init__(**kwargs) + self.principal_id = None + self.client_id = None + + +class OnErrorDeployment(msrest.serialization.Model): + """Deployment on error behavior. + + :param type: The deployment on error behavior type. Possible values are LastSuccessful and + SpecificDeployment. Possible values include: "LastSuccessful", "SpecificDeployment". + :type type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.OnErrorDeploymentType + :param deployment_name: The deployment to be used on error case. + :type deployment_name: str + """ + + _attribute_map = { + "type": {"key": "type", "type": "str"}, + "deployment_name": {"key": "deploymentName", "type": "str"}, + } + + def __init__(self, **kwargs): + super(OnErrorDeployment, self).__init__(**kwargs) + self.type = kwargs.get("type", None) + self.deployment_name = kwargs.get("deployment_name", None) + + +class OnErrorDeploymentExtended(msrest.serialization.Model): + """Deployment on error behavior with additional details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar provisioning_state: The state of the provisioning for the on error deployment. + :vartype provisioning_state: str + :param type: The deployment on error behavior type. Possible values are LastSuccessful and + SpecificDeployment. Possible values include: "LastSuccessful", "SpecificDeployment". + :type type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.OnErrorDeploymentType + :param deployment_name: The deployment to be used on error case. + :type deployment_name: str + """ + + _validation = { + "provisioning_state": {"readonly": True}, + } + + _attribute_map = { + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "deployment_name": {"key": "deploymentName", "type": "str"}, + } + + def __init__(self, **kwargs): + super(OnErrorDeploymentExtended, self).__init__(**kwargs) + self.provisioning_state = None + self.type = kwargs.get("type", None) + self.deployment_name = kwargs.get("deployment_name", None) + + +class Operation(msrest.serialization.Model): + """Microsoft.Resources operation. + + :param name: Operation name: {provider}/{resource}/{operation}. + :type name: str + :param display: The object that represents the operation. + :type display: ~azure.mgmt.resource.resources.v2020_06_01.models.OperationDisplay + """ + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "display": {"key": "display", "type": "OperationDisplay"}, + } + + def __init__(self, **kwargs): + super(Operation, self).__init__(**kwargs) + self.name = kwargs.get("name", None) + self.display = kwargs.get("display", None) + + +class OperationDisplay(msrest.serialization.Model): + """The object that represents the operation. + + :param provider: Service provider: Microsoft.Resources. + :type provider: str + :param resource: Resource on which the operation is performed: Profile, endpoint, etc. + :type resource: str + :param operation: Operation type: Read, write, delete, etc. + :type operation: str + :param description: Description of the operation. + :type description: str + """ + + _attribute_map = { + "provider": {"key": "provider", "type": "str"}, + "resource": {"key": "resource", "type": "str"}, + "operation": {"key": "operation", "type": "str"}, + "description": {"key": "description", "type": "str"}, + } + + def __init__(self, **kwargs): + super(OperationDisplay, self).__init__(**kwargs) + self.provider = kwargs.get("provider", None) + self.resource = kwargs.get("resource", None) + self.operation = kwargs.get("operation", None) + self.description = kwargs.get("description", None) + + +class OperationListResult(msrest.serialization.Model): + """Result of the request to list Microsoft.Resources operations. It contains a list of operations and a URL link to get the next set of results. + + :param value: List of Microsoft.Resources operations. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.Operation] + :param next_link: URL to get the next set of operation list results if there are any. + :type next_link: str + """ + + _attribute_map = { + "value": {"key": "value", "type": "[Operation]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs): + super(OperationListResult, self).__init__(**kwargs) + self.value = kwargs.get("value", None) + self.next_link = kwargs.get("next_link", None) + + +class ParametersLink(msrest.serialization.Model): + """Entity representing the reference to the deployment parameters. + + All required parameters must be populated in order to send to Azure. + + :param uri: Required. The URI of the parameters file. + :type uri: str + :param content_version: If included, must match the ContentVersion in the template. + :type content_version: str + """ + + _validation = { + "uri": {"required": True}, + } + + _attribute_map = { + "uri": {"key": "uri", "type": "str"}, + "content_version": {"key": "contentVersion", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ParametersLink, self).__init__(**kwargs) + self.uri = kwargs["uri"] + self.content_version = kwargs.get("content_version", None) + + +class Plan(msrest.serialization.Model): + """Plan for the resource. + + :param name: The plan ID. + :type name: str + :param publisher: The publisher ID. + :type publisher: str + :param product: The offer ID. + :type product: str + :param promotion_code: The promotion code. + :type promotion_code: str + :param version: The plan's version. + :type version: str + """ + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "publisher": {"key": "publisher", "type": "str"}, + "product": {"key": "product", "type": "str"}, + "promotion_code": {"key": "promotionCode", "type": "str"}, + "version": {"key": "version", "type": "str"}, + } + + def __init__(self, **kwargs): + super(Plan, self).__init__(**kwargs) + self.name = kwargs.get("name", None) + self.publisher = kwargs.get("publisher", None) + self.product = kwargs.get("product", None) + self.promotion_code = kwargs.get("promotion_code", None) + self.version = kwargs.get("version", None) + + +class Provider(msrest.serialization.Model): + """Resource provider information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The provider ID. + :vartype id: str + :param namespace: The namespace of the resource provider. + :type namespace: str + :ivar registration_state: The registration state of the resource provider. + :vartype registration_state: str + :ivar registration_policy: The registration policy of the resource provider. + :vartype registration_policy: str + :ivar resource_types: The collection of provider resource types. + :vartype resource_types: + list[~azure.mgmt.resource.resources.v2020_06_01.models.ProviderResourceType] + """ + + _validation = { + "id": {"readonly": True}, + "registration_state": {"readonly": True}, + "registration_policy": {"readonly": True}, + "resource_types": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "namespace": {"key": "namespace", "type": "str"}, + "registration_state": {"key": "registrationState", "type": "str"}, + "registration_policy": {"key": "registrationPolicy", "type": "str"}, + "resource_types": {"key": "resourceTypes", "type": "[ProviderResourceType]"}, + } + + def __init__(self, **kwargs): + super(Provider, self).__init__(**kwargs) + self.id = None + self.namespace = kwargs.get("namespace", None) + self.registration_state = None + self.registration_policy = None + self.resource_types = None + + +class ProviderListResult(msrest.serialization.Model): + """List of resource providers. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of resource providers. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.Provider] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[Provider]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ProviderListResult, self).__init__(**kwargs) + self.value = kwargs.get("value", None) + self.next_link = None + + +class ProviderResourceType(msrest.serialization.Model): + """Resource type managed by the resource provider. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param resource_type: The resource type. + :type resource_type: str + :param locations: The collection of locations where this resource type can be created. + :type locations: list[str] + :param aliases: The aliases that are supported by this resource type. + :type aliases: list[~azure.mgmt.resource.resources.v2020_06_01.models.Alias] + :param api_versions: The API version. + :type api_versions: list[str] + :ivar default_api_version: The default API version. + :vartype default_api_version: str + :ivar api_profiles: The API profiles for the resource provider. + :vartype api_profiles: list[~azure.mgmt.resource.resources.v2020_06_01.models.ApiProfile] + :param capabilities: The additional capabilities offered by this resource type. + :type capabilities: str + :param properties: The properties. + :type properties: dict[str, str] + """ + + _validation = { + "default_api_version": {"readonly": True}, + "api_profiles": {"readonly": True}, + } + + _attribute_map = { + "resource_type": {"key": "resourceType", "type": "str"}, + "locations": {"key": "locations", "type": "[str]"}, + "aliases": {"key": "aliases", "type": "[Alias]"}, + "api_versions": {"key": "apiVersions", "type": "[str]"}, + "default_api_version": {"key": "defaultApiVersion", "type": "str"}, + "api_profiles": {"key": "apiProfiles", "type": "[ApiProfile]"}, + "capabilities": {"key": "capabilities", "type": "str"}, + "properties": {"key": "properties", "type": "{str}"}, + } + + def __init__(self, **kwargs): + super(ProviderResourceType, self).__init__(**kwargs) + self.resource_type = kwargs.get("resource_type", None) + self.locations = kwargs.get("locations", None) + self.aliases = kwargs.get("aliases", None) + self.api_versions = kwargs.get("api_versions", None) + self.default_api_version = None + self.api_profiles = None + self.capabilities = kwargs.get("capabilities", None) + self.properties = kwargs.get("properties", None) + + +class ResourceGroup(msrest.serialization.Model): + """Resource group information. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: The ID of the resource group. + :vartype id: str + :ivar name: The name of the resource group. + :vartype name: str + :ivar type: The type of the resource group. + :vartype type: str + :param properties: The resource group properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroupProperties + :param location: Required. The location of the resource group. It cannot be changed after the + resource group has been created. It must be one of the supported Azure locations. + :type location: str + :param managed_by: The ID of the resource that manages this resource group. + :type managed_by: str + :param tags: A set of tags. The tags attached to the resource group. + :type tags: dict[str, str] + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "location": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "properties": {"key": "properties", "type": "ResourceGroupProperties"}, + "location": {"key": "location", "type": "str"}, + "managed_by": {"key": "managedBy", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__(self, **kwargs): + super(ResourceGroup, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.properties = kwargs.get("properties", None) + self.location = kwargs["location"] + self.managed_by = kwargs.get("managed_by", None) + self.tags = kwargs.get("tags", None) + + +class ResourceGroupExportResult(msrest.serialization.Model): + """Resource group export result. + + :param template: The template content. + :type template: object + :param error: The template export error. + :type error: ~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse + """ + + _attribute_map = { + "template": {"key": "template", "type": "object"}, + "error": {"key": "error", "type": "ErrorResponse"}, + } + + def __init__(self, **kwargs): + super(ResourceGroupExportResult, self).__init__(**kwargs) + self.template = kwargs.get("template", None) + self.error = kwargs.get("error", None) + + +class ResourceGroupFilter(msrest.serialization.Model): + """Resource group filter. + + :param tag_name: The tag name. + :type tag_name: str + :param tag_value: The tag value. + :type tag_value: str + """ + + _attribute_map = { + "tag_name": {"key": "tagName", "type": "str"}, + "tag_value": {"key": "tagValue", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ResourceGroupFilter, self).__init__(**kwargs) + self.tag_name = kwargs.get("tag_name", None) + self.tag_value = kwargs.get("tag_value", None) + + +class ResourceGroupListResult(msrest.serialization.Model): + """List of resource groups. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of resource groups. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroup] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[ResourceGroup]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ResourceGroupListResult, self).__init__(**kwargs) + self.value = kwargs.get("value", None) + self.next_link = None + + +class ResourceGroupPatchable(msrest.serialization.Model): + """Resource group information. + + :param name: The name of the resource group. + :type name: str + :param properties: The resource group properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroupProperties + :param managed_by: The ID of the resource that manages this resource group. + :type managed_by: str + :param tags: A set of tags. The tags attached to the resource group. + :type tags: dict[str, str] + """ + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "properties": {"key": "properties", "type": "ResourceGroupProperties"}, + "managed_by": {"key": "managedBy", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__(self, **kwargs): + super(ResourceGroupPatchable, self).__init__(**kwargs) + self.name = kwargs.get("name", None) + self.properties = kwargs.get("properties", None) + self.managed_by = kwargs.get("managed_by", None) + self.tags = kwargs.get("tags", None) + + +class ResourceGroupProperties(msrest.serialization.Model): + """The resource group properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar provisioning_state: The provisioning state. + :vartype provisioning_state: str + """ + + _validation = { + "provisioning_state": {"readonly": True}, + } + + _attribute_map = { + "provisioning_state": {"key": "provisioningState", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ResourceGroupProperties, self).__init__(**kwargs) + self.provisioning_state = None + + +class ResourceListResult(msrest.serialization.Model): + """List of resource groups. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of resources. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.GenericResourceExpanded] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[GenericResourceExpanded]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ResourceListResult, self).__init__(**kwargs) + self.value = kwargs.get("value", None) + self.next_link = None + + +class ResourceProviderOperationDisplayProperties(msrest.serialization.Model): + """Resource provider operation's display properties. + + :param publisher: Operation description. + :type publisher: str + :param provider: Operation provider. + :type provider: str + :param resource: Operation resource. + :type resource: str + :param operation: Resource provider operation. + :type operation: str + :param description: Operation description. + :type description: str + """ + + _attribute_map = { + "publisher": {"key": "publisher", "type": "str"}, + "provider": {"key": "provider", "type": "str"}, + "resource": {"key": "resource", "type": "str"}, + "operation": {"key": "operation", "type": "str"}, + "description": {"key": "description", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ResourceProviderOperationDisplayProperties, self).__init__(**kwargs) + self.publisher = kwargs.get("publisher", None) + self.provider = kwargs.get("provider", None) + self.resource = kwargs.get("resource", None) + self.operation = kwargs.get("operation", None) + self.description = kwargs.get("description", None) + + +class ResourceReference(msrest.serialization.Model): + """The resource Id model. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The fully qualified resource Id. + :vartype id: str + """ + + _validation = { + "id": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ResourceReference, self).__init__(**kwargs) + self.id = None + + +class ResourcesMoveInfo(msrest.serialization.Model): + """Parameters of move resources. + + :param resources: The IDs of the resources. + :type resources: list[str] + :param target_resource_group: The target resource group. + :type target_resource_group: str + """ + + _attribute_map = { + "resources": {"key": "resources", "type": "[str]"}, + "target_resource_group": {"key": "targetResourceGroup", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ResourcesMoveInfo, self).__init__(**kwargs) + self.resources = kwargs.get("resources", None) + self.target_resource_group = kwargs.get("target_resource_group", None) + + +class ScopedDeployment(msrest.serialization.Model): + """Deployment operation parameters. + + All required parameters must be populated in order to send to Azure. + + :param location: Required. The location to store the deployment data. + :type location: str + :param properties: Required. The deployment properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentProperties + :param tags: A set of tags. Deployment tags. + :type tags: dict[str, str] + """ + + _validation = { + "location": {"required": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentProperties"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__(self, **kwargs): + super(ScopedDeployment, self).__init__(**kwargs) + self.location = kwargs["location"] + self.properties = kwargs["properties"] + self.tags = kwargs.get("tags", None) + + +class ScopedDeploymentWhatIf(msrest.serialization.Model): + """Deployment What-if operation parameters. + + All required parameters must be populated in order to send to Azure. + + :param location: Required. The location to store the deployment data. + :type location: str + :param properties: Required. The deployment properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentWhatIfProperties + """ + + _validation = { + "location": {"required": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentWhatIfProperties"}, + } + + def __init__(self, **kwargs): + super(ScopedDeploymentWhatIf, self).__init__(**kwargs) + self.location = kwargs["location"] + self.properties = kwargs["properties"] + + +class Sku(msrest.serialization.Model): + """SKU for the resource. + + :param name: The SKU name. + :type name: str + :param tier: The SKU tier. + :type tier: str + :param size: The SKU size. + :type size: str + :param family: The SKU family. + :type family: str + :param model: The SKU model. + :type model: str + :param capacity: The SKU capacity. + :type capacity: int + """ + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "tier": {"key": "tier", "type": "str"}, + "size": {"key": "size", "type": "str"}, + "family": {"key": "family", "type": "str"}, + "model": {"key": "model", "type": "str"}, + "capacity": {"key": "capacity", "type": "int"}, + } + + def __init__(self, **kwargs): + super(Sku, self).__init__(**kwargs) + self.name = kwargs.get("name", None) + self.tier = kwargs.get("tier", None) + self.size = kwargs.get("size", None) + self.family = kwargs.get("family", None) + self.model = kwargs.get("model", None) + self.capacity = kwargs.get("capacity", None) + + +class StatusMessage(msrest.serialization.Model): + """Operation status message object. + + :param status: Status of the deployment operation. + :type status: str + :param error: The error reported by the operation. + :type error: ~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse + """ + + _attribute_map = { + "status": {"key": "status", "type": "str"}, + "error": {"key": "error", "type": "ErrorResponse"}, + } + + def __init__(self, **kwargs): + super(StatusMessage, self).__init__(**kwargs) + self.status = kwargs.get("status", None) + self.error = kwargs.get("error", None) + + +class SubResource(msrest.serialization.Model): + """Sub-resource. + + :param id: Resource ID. + :type id: str + """ + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + } + + def __init__(self, **kwargs): + super(SubResource, self).__init__(**kwargs) + self.id = kwargs.get("id", None) + + +class TagCount(msrest.serialization.Model): + """Tag count. + + :param type: Type of count. + :type type: str + :param value: Value of count. + :type value: int + """ + + _attribute_map = { + "type": {"key": "type", "type": "str"}, + "value": {"key": "value", "type": "int"}, + } + + def __init__(self, **kwargs): + super(TagCount, self).__init__(**kwargs) + self.type = kwargs.get("type", None) + self.value = kwargs.get("value", None) + + +class TagDetails(msrest.serialization.Model): + """Tag details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The tag name ID. + :vartype id: str + :param tag_name: The tag name. + :type tag_name: str + :param count: The total number of resources that use the resource tag. When a tag is initially + created and has no associated resources, the value is 0. + :type count: ~azure.mgmt.resource.resources.v2020_06_01.models.TagCount + :param values: The list of tag values. + :type values: list[~azure.mgmt.resource.resources.v2020_06_01.models.TagValue] + """ + + _validation = { + "id": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "tag_name": {"key": "tagName", "type": "str"}, + "count": {"key": "count", "type": "TagCount"}, + "values": {"key": "values", "type": "[TagValue]"}, + } + + def __init__(self, **kwargs): + super(TagDetails, self).__init__(**kwargs) + self.id = None + self.tag_name = kwargs.get("tag_name", None) + self.count = kwargs.get("count", None) + self.values = kwargs.get("values", None) + + +class Tags(msrest.serialization.Model): + """A dictionary of name and value pairs. + + :param tags: A set of tags. Dictionary of :code:`<string>`. + :type tags: dict[str, str] + """ + + _attribute_map = { + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__(self, **kwargs): + super(Tags, self).__init__(**kwargs) + self.tags = kwargs.get("tags", None) + + +class TagsListResult(msrest.serialization.Model): + """List of subscription tags. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of tags. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.TagDetails] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[TagDetails]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs): + super(TagsListResult, self).__init__(**kwargs) + self.value = kwargs.get("value", None) + self.next_link = None + + +class TagsPatchResource(msrest.serialization.Model): + """Wrapper resource for tags patch API request only. + + :param operation: The operation type for the patch API. Possible values include: "Replace", + "Merge", "Delete". + :type operation: str or ~azure.mgmt.resource.resources.v2020_06_01.models.TagsPatchOperation + :param properties: The set of tags. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.Tags + """ + + _attribute_map = { + "operation": {"key": "operation", "type": "str"}, + "properties": {"key": "properties", "type": "Tags"}, + } + + def __init__(self, **kwargs): + super(TagsPatchResource, self).__init__(**kwargs) + self.operation = kwargs.get("operation", None) + self.properties = kwargs.get("properties", None) + + +class TagsResource(msrest.serialization.Model): + """Wrapper resource for tags API requests and responses. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: The ID of the tags wrapper resource. + :vartype id: str + :ivar name: The name of the tags wrapper resource. + :vartype name: str + :ivar type: The type of the tags wrapper resource. + :vartype type: str + :param properties: Required. The set of tags. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.Tags + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "properties": {"key": "properties", "type": "Tags"}, + } + + def __init__(self, **kwargs): + super(TagsResource, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.properties = kwargs["properties"] + + +class TagValue(msrest.serialization.Model): + """Tag information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The tag value ID. + :vartype id: str + :param tag_value: The tag value. + :type tag_value: str + :param count: The tag value count. + :type count: ~azure.mgmt.resource.resources.v2020_06_01.models.TagCount + """ + + _validation = { + "id": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "tag_value": {"key": "tagValue", "type": "str"}, + "count": {"key": "count", "type": "TagCount"}, + } + + def __init__(self, **kwargs): + super(TagValue, self).__init__(**kwargs) + self.id = None + self.tag_value = kwargs.get("tag_value", None) + self.count = kwargs.get("count", None) + + +class TargetResource(msrest.serialization.Model): + """Target resource. + + :param id: The ID of the resource. + :type id: str + :param resource_name: The name of the resource. + :type resource_name: str + :param resource_type: The type of the resource. + :type resource_type: str + """ + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "resource_name": {"key": "resourceName", "type": "str"}, + "resource_type": {"key": "resourceType", "type": "str"}, + } + + def __init__(self, **kwargs): + super(TargetResource, self).__init__(**kwargs) + self.id = kwargs.get("id", None) + self.resource_name = kwargs.get("resource_name", None) + self.resource_type = kwargs.get("resource_type", None) + + +class TemplateHashResult(msrest.serialization.Model): + """Result of the request to calculate template hash. It contains a string of minified template and its hash. + + :param minified_template: The minified template string. + :type minified_template: str + :param template_hash: The template hash. + :type template_hash: str + """ + + _attribute_map = { + "minified_template": {"key": "minifiedTemplate", "type": "str"}, + "template_hash": {"key": "templateHash", "type": "str"}, + } + + def __init__(self, **kwargs): + super(TemplateHashResult, self).__init__(**kwargs) + self.minified_template = kwargs.get("minified_template", None) + self.template_hash = kwargs.get("template_hash", None) + + +class TemplateLink(msrest.serialization.Model): + """Entity representing the reference to the template. + + :param uri: The URI of the template to deploy. Use either the uri or id property, but not both. + :type uri: str + :param id: The resource id of a Template Spec. Use either the id or uri property, but not both. + :type id: str + :param relative_path: Applicable only if this template link references a Template Spec. This + relativePath property can optionally be used to reference a Template Spec artifact by path. + :type relative_path: str + :param content_version: If included, must match the ContentVersion in the template. + :type content_version: str + """ + + _attribute_map = { + "uri": {"key": "uri", "type": "str"}, + "id": {"key": "id", "type": "str"}, + "relative_path": {"key": "relativePath", "type": "str"}, + "content_version": {"key": "contentVersion", "type": "str"}, + } + + def __init__(self, **kwargs): + super(TemplateLink, self).__init__(**kwargs) + self.uri = kwargs.get("uri", None) + self.id = kwargs.get("id", None) + self.relative_path = kwargs.get("relative_path", None) + self.content_version = kwargs.get("content_version", None) + + +class WhatIfChange(msrest.serialization.Model): + """Information about a single resource change predicted by What-If operation. + + All required parameters must be populated in order to send to Azure. + + :param resource_id: Required. Resource ID. + :type resource_id: str + :param change_type: Required. Type of change that will be made to the resource when the + deployment is executed. Possible values include: "Create", "Delete", "Ignore", "Deploy", + "NoChange", "Modify". + :type change_type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.ChangeType + :param before: The snapshot of the resource before the deployment is executed. + :type before: object + :param after: The predicted snapshot of the resource after the deployment is executed. + :type after: object + :param delta: The predicted changes to resource properties. + :type delta: list[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfPropertyChange] + """ + + _validation = { + "resource_id": {"required": True}, + "change_type": {"required": True}, + } + + _attribute_map = { + "resource_id": {"key": "resourceId", "type": "str"}, + "change_type": {"key": "changeType", "type": "str"}, + "before": {"key": "before", "type": "object"}, + "after": {"key": "after", "type": "object"}, + "delta": {"key": "delta", "type": "[WhatIfPropertyChange]"}, + } + + def __init__(self, **kwargs): + super(WhatIfChange, self).__init__(**kwargs) + self.resource_id = kwargs["resource_id"] + self.change_type = kwargs["change_type"] + self.before = kwargs.get("before", None) + self.after = kwargs.get("after", None) + self.delta = kwargs.get("delta", None) + + +class WhatIfOperationResult(msrest.serialization.Model): + """Result of the What-If operation. Contains a list of predicted changes and a URL link to get to the next set of results. + + :param status: Status of the What-If operation. + :type status: str + :param error: Error when What-If operation fails. + :type error: ~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse + :param changes: List of resource changes predicted by What-If operation. + :type changes: list[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfChange] + """ + + _attribute_map = { + "status": {"key": "status", "type": "str"}, + "error": {"key": "error", "type": "ErrorResponse"}, + "changes": {"key": "properties.changes", "type": "[WhatIfChange]"}, + } + + def __init__(self, **kwargs): + super(WhatIfOperationResult, self).__init__(**kwargs) + self.status = kwargs.get("status", None) + self.error = kwargs.get("error", None) + self.changes = kwargs.get("changes", None) + + +class WhatIfPropertyChange(msrest.serialization.Model): + """The predicted change to the resource property. + + All required parameters must be populated in order to send to Azure. + + :param path: Required. The path of the property. + :type path: str + :param property_change_type: Required. The type of property change. Possible values include: + "Create", "Delete", "Modify", "Array". + :type property_change_type: str or + ~azure.mgmt.resource.resources.v2020_06_01.models.PropertyChangeType + :param before: The value of the property before the deployment is executed. + :type before: object + :param after: The value of the property after the deployment is executed. + :type after: object + :param children: Nested property changes. + :type children: list[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfPropertyChange] + """ + + _validation = { + "path": {"required": True}, + "property_change_type": {"required": True}, + } + + _attribute_map = { + "path": {"key": "path", "type": "str"}, + "property_change_type": {"key": "propertyChangeType", "type": "str"}, + "before": {"key": "before", "type": "object"}, + "after": {"key": "after", "type": "object"}, + "children": {"key": "children", "type": "[WhatIfPropertyChange]"}, + } + + def __init__(self, **kwargs): + super(WhatIfPropertyChange, self).__init__(**kwargs) + self.path = kwargs["path"] + self.property_change_type = kwargs["property_change_type"] + self.before = kwargs.get("before", None) + self.after = kwargs.get("after", None) + self.children = kwargs.get("children", None) diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_models_py3.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_models_py3.py new file mode 100644 index 00000000..06549062 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_models_py3.py @@ -0,0 +1,2499 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from typing import Dict, List, Optional, Union + +import msrest.serialization + +from ._resource_management_client_enums import * + + +class Alias(msrest.serialization.Model): + """The alias type. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param name: The alias name. + :type name: str + :param paths: The paths for an alias. + :type paths: list[~azure.mgmt.resource.resources.v2020_06_01.models.AliasPath] + :param type: The type of the alias. Possible values include: "NotSpecified", "PlainText", + "Mask". + :type type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.AliasType + :param default_path: The default path for an alias. + :type default_path: str + :param default_pattern: The default pattern for an alias. + :type default_pattern: ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPattern + :ivar default_metadata: The default alias path metadata. Applies to the default path and to any + alias path that doesn't have metadata. + :vartype default_metadata: ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPathMetadata + """ + + _validation = { + "default_metadata": {"readonly": True}, + } + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "paths": {"key": "paths", "type": "[AliasPath]"}, + "type": {"key": "type", "type": "str"}, + "default_path": {"key": "defaultPath", "type": "str"}, + "default_pattern": {"key": "defaultPattern", "type": "AliasPattern"}, + "default_metadata": {"key": "defaultMetadata", "type": "AliasPathMetadata"}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + paths: Optional[List["AliasPath"]] = None, + type: Optional[Union[str, "AliasType"]] = None, + default_path: Optional[str] = None, + default_pattern: Optional["AliasPattern"] = None, + **kwargs + ): + super(Alias, self).__init__(**kwargs) + self.name = name + self.paths = paths + self.type = type + self.default_path = default_path + self.default_pattern = default_pattern + self.default_metadata = None + + +class AliasPath(msrest.serialization.Model): + """The type of the paths for alias. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param path: The path of an alias. + :type path: str + :param api_versions: The API versions. + :type api_versions: list[str] + :param pattern: The pattern for an alias path. + :type pattern: ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPattern + :ivar metadata: The metadata of the alias path. If missing, fall back to the default metadata + of the alias. + :vartype metadata: ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPathMetadata + """ + + _validation = { + "metadata": {"readonly": True}, + } + + _attribute_map = { + "path": {"key": "path", "type": "str"}, + "api_versions": {"key": "apiVersions", "type": "[str]"}, + "pattern": {"key": "pattern", "type": "AliasPattern"}, + "metadata": {"key": "metadata", "type": "AliasPathMetadata"}, + } + + def __init__( + self, + *, + path: Optional[str] = None, + api_versions: Optional[List[str]] = None, + pattern: Optional["AliasPattern"] = None, + **kwargs + ): + super(AliasPath, self).__init__(**kwargs) + self.path = path + self.api_versions = api_versions + self.pattern = pattern + self.metadata = None + + +class AliasPathMetadata(msrest.serialization.Model): + """AliasPathMetadata. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar type: The type of the token that the alias path is referring to. Possible values include: + "NotSpecified", "Any", "String", "Object", "Array", "Integer", "Number", "Boolean". + :vartype type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPathTokenType + :ivar attributes: The attributes of the token that the alias path is referring to. Possible + values include: "None", "Modifiable". + :vartype attributes: str or + ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPathAttributes + """ + + _validation = { + "type": {"readonly": True}, + "attributes": {"readonly": True}, + } + + _attribute_map = { + "type": {"key": "type", "type": "str"}, + "attributes": {"key": "attributes", "type": "str"}, + } + + def __init__(self, **kwargs): + super(AliasPathMetadata, self).__init__(**kwargs) + self.type = None + self.attributes = None + + +class AliasPattern(msrest.serialization.Model): + """The type of the pattern for an alias path. + + :param phrase: The alias pattern phrase. + :type phrase: str + :param variable: The alias pattern variable. + :type variable: str + :param type: The type of alias pattern. Possible values include: "NotSpecified", "Extract". + :type type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.AliasPatternType + """ + + _attribute_map = { + "phrase": {"key": "phrase", "type": "str"}, + "variable": {"key": "variable", "type": "str"}, + "type": {"key": "type", "type": "str"}, + } + + def __init__( + self, + *, + phrase: Optional[str] = None, + variable: Optional[str] = None, + type: Optional[Union[str, "AliasPatternType"]] = None, + **kwargs + ): + super(AliasPattern, self).__init__(**kwargs) + self.phrase = phrase + self.variable = variable + self.type = type + + +class ApiProfile(msrest.serialization.Model): + """ApiProfile. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar profile_version: The profile version. + :vartype profile_version: str + :ivar api_version: The API version. + :vartype api_version: str + """ + + _validation = { + "profile_version": {"readonly": True}, + "api_version": {"readonly": True}, + } + + _attribute_map = { + "profile_version": {"key": "profileVersion", "type": "str"}, + "api_version": {"key": "apiVersion", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ApiProfile, self).__init__(**kwargs) + self.profile_version = None + self.api_version = None + + +class BasicDependency(msrest.serialization.Model): + """Deployment dependency information. + + :param id: The ID of the dependency. + :type id: str + :param resource_type: The dependency resource type. + :type resource_type: str + :param resource_name: The dependency resource name. + :type resource_name: str + """ + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "resource_type": {"key": "resourceType", "type": "str"}, + "resource_name": {"key": "resourceName", "type": "str"}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + resource_type: Optional[str] = None, + resource_name: Optional[str] = None, + **kwargs + ): + super(BasicDependency, self).__init__(**kwargs) + self.id = id + self.resource_type = resource_type + self.resource_name = resource_name + + +class DebugSetting(msrest.serialization.Model): + """The debug setting. + + :param detail_level: Specifies the type of information to log for debugging. The permitted + values are none, requestContent, responseContent, or both requestContent and responseContent + separated by a comma. The default is none. When setting this value, carefully consider the type + of information you are passing in during deployment. By logging information about the request + or response, you could potentially expose sensitive data that is retrieved through the + deployment operations. + :type detail_level: str + """ + + _attribute_map = { + "detail_level": {"key": "detailLevel", "type": "str"}, + } + + def __init__(self, *, detail_level: Optional[str] = None, **kwargs): + super(DebugSetting, self).__init__(**kwargs) + self.detail_level = detail_level + + +class Dependency(msrest.serialization.Model): + """Deployment dependency information. + + :param depends_on: The list of dependencies. + :type depends_on: list[~azure.mgmt.resource.resources.v2020_06_01.models.BasicDependency] + :param id: The ID of the dependency. + :type id: str + :param resource_type: The dependency resource type. + :type resource_type: str + :param resource_name: The dependency resource name. + :type resource_name: str + """ + + _attribute_map = { + "depends_on": {"key": "dependsOn", "type": "[BasicDependency]"}, + "id": {"key": "id", "type": "str"}, + "resource_type": {"key": "resourceType", "type": "str"}, + "resource_name": {"key": "resourceName", "type": "str"}, + } + + def __init__( + self, + *, + depends_on: Optional[List["BasicDependency"]] = None, + id: Optional[str] = None, + resource_type: Optional[str] = None, + resource_name: Optional[str] = None, + **kwargs + ): + super(Dependency, self).__init__(**kwargs) + self.depends_on = depends_on + self.id = id + self.resource_type = resource_type + self.resource_name = resource_name + + +class Deployment(msrest.serialization.Model): + """Deployment operation parameters. + + All required parameters must be populated in order to send to Azure. + + :param location: The location to store the deployment data. + :type location: str + :param properties: Required. The deployment properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentProperties + :param tags: A set of tags. Deployment tags. + :type tags: dict[str, str] + """ + + _validation = { + "properties": {"required": True}, + } + + _attribute_map = { + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentProperties"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__( + self, + *, + properties: "DeploymentProperties", + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + super(Deployment, self).__init__(**kwargs) + self.location = location + self.properties = properties + self.tags = tags + + +class DeploymentExportResult(msrest.serialization.Model): + """The deployment export result. + + :param template: The template content. + :type template: object + """ + + _attribute_map = { + "template": {"key": "template", "type": "object"}, + } + + def __init__(self, *, template: Optional[object] = None, **kwargs): + super(DeploymentExportResult, self).__init__(**kwargs) + self.template = template + + +class DeploymentExtended(msrest.serialization.Model): + """Deployment information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The ID of the deployment. + :vartype id: str + :ivar name: The name of the deployment. + :vartype name: str + :ivar type: The type of the deployment. + :vartype type: str + :param location: the location of the deployment. + :type location: str + :param properties: Deployment properties. + :type properties: + ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentPropertiesExtended + :param tags: A set of tags. Deployment tags. + :type tags: dict[str, str] + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentPropertiesExtended"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__( + self, + *, + location: Optional[str] = None, + properties: Optional["DeploymentPropertiesExtended"] = None, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + super(DeploymentExtended, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.location = location + self.properties = properties + self.tags = tags + + +class DeploymentExtendedFilter(msrest.serialization.Model): + """Deployment filter. + + :param provisioning_state: The provisioning state. + :type provisioning_state: str + """ + + _attribute_map = { + "provisioning_state": {"key": "provisioningState", "type": "str"}, + } + + def __init__(self, *, provisioning_state: Optional[str] = None, **kwargs): + super(DeploymentExtendedFilter, self).__init__(**kwargs) + self.provisioning_state = provisioning_state + + +class DeploymentListResult(msrest.serialization.Model): + """List of deployments. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of deployments. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[DeploymentExtended]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, *, value: Optional[List["DeploymentExtended"]] = None, **kwargs): + super(DeploymentListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class DeploymentOperation(msrest.serialization.Model): + """Deployment operation information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Full deployment operation ID. + :vartype id: str + :ivar operation_id: Deployment operation ID. + :vartype operation_id: str + :param properties: Deployment properties. + :type properties: + ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationProperties + """ + + _validation = { + "id": {"readonly": True}, + "operation_id": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "operation_id": {"key": "operationId", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentOperationProperties"}, + } + + def __init__(self, *, properties: Optional["DeploymentOperationProperties"] = None, **kwargs): + super(DeploymentOperation, self).__init__(**kwargs) + self.id = None + self.operation_id = None + self.properties = properties + + +class DeploymentOperationProperties(msrest.serialization.Model): + """Deployment operation properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar provisioning_operation: The name of the current provisioning operation. Possible values + include: "NotSpecified", "Create", "Delete", "Waiting", "AzureAsyncOperationWaiting", + "ResourceCacheWaiting", "Action", "Read", "EvaluateDeploymentOutput", "DeploymentCleanup". + :vartype provisioning_operation: str or + ~azure.mgmt.resource.resources.v2020_06_01.models.ProvisioningOperation + :ivar provisioning_state: The state of the provisioning. + :vartype provisioning_state: str + :ivar timestamp: The date and time of the operation. + :vartype timestamp: ~datetime.datetime + :ivar duration: The duration of the operation. + :vartype duration: str + :ivar service_request_id: Deployment operation service request id. + :vartype service_request_id: str + :ivar status_code: Operation status code from the resource provider. This property may not be + set if a response has not yet been received. + :vartype status_code: str + :ivar status_message: Operation status message from the resource provider. This property is + optional. It will only be provided if an error was received from the resource provider. + :vartype status_message: ~azure.mgmt.resource.resources.v2020_06_01.models.StatusMessage + :ivar target_resource: The target resource. + :vartype target_resource: ~azure.mgmt.resource.resources.v2020_06_01.models.TargetResource + :ivar request: The HTTP request message. + :vartype request: ~azure.mgmt.resource.resources.v2020_06_01.models.HttpMessage + :ivar response: The HTTP response message. + :vartype response: ~azure.mgmt.resource.resources.v2020_06_01.models.HttpMessage + """ + + _validation = { + "provisioning_operation": {"readonly": True}, + "provisioning_state": {"readonly": True}, + "timestamp": {"readonly": True}, + "duration": {"readonly": True}, + "service_request_id": {"readonly": True}, + "status_code": {"readonly": True}, + "status_message": {"readonly": True}, + "target_resource": {"readonly": True}, + "request": {"readonly": True}, + "response": {"readonly": True}, + } + + _attribute_map = { + "provisioning_operation": {"key": "provisioningOperation", "type": "str"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "timestamp": {"key": "timestamp", "type": "iso-8601"}, + "duration": {"key": "duration", "type": "str"}, + "service_request_id": {"key": "serviceRequestId", "type": "str"}, + "status_code": {"key": "statusCode", "type": "str"}, + "status_message": {"key": "statusMessage", "type": "StatusMessage"}, + "target_resource": {"key": "targetResource", "type": "TargetResource"}, + "request": {"key": "request", "type": "HttpMessage"}, + "response": {"key": "response", "type": "HttpMessage"}, + } + + def __init__(self, **kwargs): + super(DeploymentOperationProperties, self).__init__(**kwargs) + self.provisioning_operation = None + self.provisioning_state = None + self.timestamp = None + self.duration = None + self.service_request_id = None + self.status_code = None + self.status_message = None + self.target_resource = None + self.request = None + self.response = None + + +class DeploymentOperationsListResult(msrest.serialization.Model): + """List of deployment operations. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of deployment operations. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[DeploymentOperation]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, *, value: Optional[List["DeploymentOperation"]] = None, **kwargs): + super(DeploymentOperationsListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class DeploymentProperties(msrest.serialization.Model): + """Deployment properties. + + All required parameters must be populated in order to send to Azure. + + :param template: The template content. You use this element when you want to pass the template + syntax directly in the request rather than link to an existing template. It can be a JObject or + well-formed JSON string. Use either the templateLink property or the template property, but not + both. + :type template: object + :param template_link: The URI of the template. Use either the templateLink property or the + template property, but not both. + :type template_link: ~azure.mgmt.resource.resources.v2020_06_01.models.TemplateLink + :param parameters: Name and value pairs that define the deployment parameters for the template. + You use this element when you want to provide the parameter values directly in the request + rather than link to an existing parameter file. Use either the parametersLink property or the + parameters property, but not both. It can be a JObject or a well formed JSON string. + :type parameters: object + :param parameters_link: The URI of parameters file. You use this element to link to an existing + parameters file. Use either the parametersLink property or the parameters property, but not + both. + :type parameters_link: ~azure.mgmt.resource.resources.v2020_06_01.models.ParametersLink + :param mode: Required. The mode that is used to deploy resources. This value can be either + Incremental or Complete. In Incremental mode, resources are deployed without deleting existing + resources that are not included in the template. In Complete mode, resources are deployed and + existing resources in the resource group that are not included in the template are deleted. Be + careful when using Complete mode as you may unintentionally delete resources. Possible values + include: "Incremental", "Complete". + :type mode: str or ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentMode + :param debug_setting: The debug setting of the deployment. + :type debug_setting: ~azure.mgmt.resource.resources.v2020_06_01.models.DebugSetting + :param on_error_deployment: The deployment on error behavior. + :type on_error_deployment: ~azure.mgmt.resource.resources.v2020_06_01.models.OnErrorDeployment + """ + + _validation = { + "mode": {"required": True}, + } + + _attribute_map = { + "template": {"key": "template", "type": "object"}, + "template_link": {"key": "templateLink", "type": "TemplateLink"}, + "parameters": {"key": "parameters", "type": "object"}, + "parameters_link": {"key": "parametersLink", "type": "ParametersLink"}, + "mode": {"key": "mode", "type": "str"}, + "debug_setting": {"key": "debugSetting", "type": "DebugSetting"}, + "on_error_deployment": {"key": "onErrorDeployment", "type": "OnErrorDeployment"}, + } + + def __init__( + self, + *, + mode: Union[str, "DeploymentMode"], + template: Optional[object] = None, + template_link: Optional["TemplateLink"] = None, + parameters: Optional[object] = None, + parameters_link: Optional["ParametersLink"] = None, + debug_setting: Optional["DebugSetting"] = None, + on_error_deployment: Optional["OnErrorDeployment"] = None, + **kwargs + ): + super(DeploymentProperties, self).__init__(**kwargs) + self.template = template + self.template_link = template_link + self.parameters = parameters + self.parameters_link = parameters_link + self.mode = mode + self.debug_setting = debug_setting + self.on_error_deployment = on_error_deployment + + +class DeploymentPropertiesExtended(msrest.serialization.Model): + """Deployment properties with additional details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar provisioning_state: Denotes the state of provisioning. Possible values include: + "NotSpecified", "Accepted", "Running", "Ready", "Creating", "Created", "Deleting", "Deleted", + "Canceled", "Failed", "Succeeded", "Updating". + :vartype provisioning_state: str or + ~azure.mgmt.resource.resources.v2020_06_01.models.ProvisioningState + :ivar correlation_id: The correlation ID of the deployment. + :vartype correlation_id: str + :ivar timestamp: The timestamp of the template deployment. + :vartype timestamp: ~datetime.datetime + :ivar duration: The duration of the template deployment. + :vartype duration: str + :ivar outputs: Key/value pairs that represent deployment output. + :vartype outputs: object + :ivar providers: The list of resource providers needed for the deployment. + :vartype providers: list[~azure.mgmt.resource.resources.v2020_06_01.models.Provider] + :ivar dependencies: The list of deployment dependencies. + :vartype dependencies: list[~azure.mgmt.resource.resources.v2020_06_01.models.Dependency] + :ivar template_link: The URI referencing the template. + :vartype template_link: ~azure.mgmt.resource.resources.v2020_06_01.models.TemplateLink + :ivar parameters: Deployment parameters. + :vartype parameters: object + :ivar parameters_link: The URI referencing the parameters. + :vartype parameters_link: ~azure.mgmt.resource.resources.v2020_06_01.models.ParametersLink + :ivar mode: The deployment mode. Possible values are Incremental and Complete. Possible values + include: "Incremental", "Complete". + :vartype mode: str or ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentMode + :ivar debug_setting: The debug setting of the deployment. + :vartype debug_setting: ~azure.mgmt.resource.resources.v2020_06_01.models.DebugSetting + :ivar on_error_deployment: The deployment on error behavior. + :vartype on_error_deployment: + ~azure.mgmt.resource.resources.v2020_06_01.models.OnErrorDeploymentExtended + :ivar template_hash: The hash produced for the template. + :vartype template_hash: str + :ivar output_resources: Array of provisioned resources. + :vartype output_resources: + list[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceReference] + :ivar validated_resources: Array of validated resources. + :vartype validated_resources: + list[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceReference] + :ivar error: The deployment error. + :vartype error: ~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse + """ + + _validation = { + "provisioning_state": {"readonly": True}, + "correlation_id": {"readonly": True}, + "timestamp": {"readonly": True}, + "duration": {"readonly": True}, + "outputs": {"readonly": True}, + "providers": {"readonly": True}, + "dependencies": {"readonly": True}, + "template_link": {"readonly": True}, + "parameters": {"readonly": True}, + "parameters_link": {"readonly": True}, + "mode": {"readonly": True}, + "debug_setting": {"readonly": True}, + "on_error_deployment": {"readonly": True}, + "template_hash": {"readonly": True}, + "output_resources": {"readonly": True}, + "validated_resources": {"readonly": True}, + "error": {"readonly": True}, + } + + _attribute_map = { + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "correlation_id": {"key": "correlationId", "type": "str"}, + "timestamp": {"key": "timestamp", "type": "iso-8601"}, + "duration": {"key": "duration", "type": "str"}, + "outputs": {"key": "outputs", "type": "object"}, + "providers": {"key": "providers", "type": "[Provider]"}, + "dependencies": {"key": "dependencies", "type": "[Dependency]"}, + "template_link": {"key": "templateLink", "type": "TemplateLink"}, + "parameters": {"key": "parameters", "type": "object"}, + "parameters_link": {"key": "parametersLink", "type": "ParametersLink"}, + "mode": {"key": "mode", "type": "str"}, + "debug_setting": {"key": "debugSetting", "type": "DebugSetting"}, + "on_error_deployment": {"key": "onErrorDeployment", "type": "OnErrorDeploymentExtended"}, + "template_hash": {"key": "templateHash", "type": "str"}, + "output_resources": {"key": "outputResources", "type": "[ResourceReference]"}, + "validated_resources": {"key": "validatedResources", "type": "[ResourceReference]"}, + "error": {"key": "error", "type": "ErrorResponse"}, + } + + def __init__(self, **kwargs): + super(DeploymentPropertiesExtended, self).__init__(**kwargs) + self.provisioning_state = None + self.correlation_id = None + self.timestamp = None + self.duration = None + self.outputs = None + self.providers = None + self.dependencies = None + self.template_link = None + self.parameters = None + self.parameters_link = None + self.mode = None + self.debug_setting = None + self.on_error_deployment = None + self.template_hash = None + self.output_resources = None + self.validated_resources = None + self.error = None + + +class DeploymentValidateResult(msrest.serialization.Model): + """Information from validate template deployment response. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar error: The deployment validation error. + :vartype error: ~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse + :param properties: The template deployment properties. + :type properties: + ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentPropertiesExtended + """ + + _validation = { + "error": {"readonly": True}, + } + + _attribute_map = { + "error": {"key": "error", "type": "ErrorResponse"}, + "properties": {"key": "properties", "type": "DeploymentPropertiesExtended"}, + } + + def __init__(self, *, properties: Optional["DeploymentPropertiesExtended"] = None, **kwargs): + super(DeploymentValidateResult, self).__init__(**kwargs) + self.error = None + self.properties = properties + + +class DeploymentWhatIf(msrest.serialization.Model): + """Deployment What-if operation parameters. + + All required parameters must be populated in order to send to Azure. + + :param location: The location to store the deployment data. + :type location: str + :param properties: Required. The deployment properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentWhatIfProperties + """ + + _validation = { + "properties": {"required": True}, + } + + _attribute_map = { + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentWhatIfProperties"}, + } + + def __init__(self, *, properties: "DeploymentWhatIfProperties", location: Optional[str] = None, **kwargs): + super(DeploymentWhatIf, self).__init__(**kwargs) + self.location = location + self.properties = properties + + +class DeploymentWhatIfProperties(DeploymentProperties): + """Deployment What-if properties. + + All required parameters must be populated in order to send to Azure. + + :param template: The template content. You use this element when you want to pass the template + syntax directly in the request rather than link to an existing template. It can be a JObject or + well-formed JSON string. Use either the templateLink property or the template property, but not + both. + :type template: object + :param template_link: The URI of the template. Use either the templateLink property or the + template property, but not both. + :type template_link: ~azure.mgmt.resource.resources.v2020_06_01.models.TemplateLink + :param parameters: Name and value pairs that define the deployment parameters for the template. + You use this element when you want to provide the parameter values directly in the request + rather than link to an existing parameter file. Use either the parametersLink property or the + parameters property, but not both. It can be a JObject or a well formed JSON string. + :type parameters: object + :param parameters_link: The URI of parameters file. You use this element to link to an existing + parameters file. Use either the parametersLink property or the parameters property, but not + both. + :type parameters_link: ~azure.mgmt.resource.resources.v2020_06_01.models.ParametersLink + :param mode: Required. The mode that is used to deploy resources. This value can be either + Incremental or Complete. In Incremental mode, resources are deployed without deleting existing + resources that are not included in the template. In Complete mode, resources are deployed and + existing resources in the resource group that are not included in the template are deleted. Be + careful when using Complete mode as you may unintentionally delete resources. Possible values + include: "Incremental", "Complete". + :type mode: str or ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentMode + :param debug_setting: The debug setting of the deployment. + :type debug_setting: ~azure.mgmt.resource.resources.v2020_06_01.models.DebugSetting + :param on_error_deployment: The deployment on error behavior. + :type on_error_deployment: ~azure.mgmt.resource.resources.v2020_06_01.models.OnErrorDeployment + :param what_if_settings: Optional What-If operation settings. + :type what_if_settings: + ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentWhatIfSettings + """ + + _validation = { + "mode": {"required": True}, + } + + _attribute_map = { + "template": {"key": "template", "type": "object"}, + "template_link": {"key": "templateLink", "type": "TemplateLink"}, + "parameters": {"key": "parameters", "type": "object"}, + "parameters_link": {"key": "parametersLink", "type": "ParametersLink"}, + "mode": {"key": "mode", "type": "str"}, + "debug_setting": {"key": "debugSetting", "type": "DebugSetting"}, + "on_error_deployment": {"key": "onErrorDeployment", "type": "OnErrorDeployment"}, + "what_if_settings": {"key": "whatIfSettings", "type": "DeploymentWhatIfSettings"}, + } + + def __init__( + self, + *, + mode: Union[str, "DeploymentMode"], + template: Optional[object] = None, + template_link: Optional["TemplateLink"] = None, + parameters: Optional[object] = None, + parameters_link: Optional["ParametersLink"] = None, + debug_setting: Optional["DebugSetting"] = None, + on_error_deployment: Optional["OnErrorDeployment"] = None, + what_if_settings: Optional["DeploymentWhatIfSettings"] = None, + **kwargs + ): + super(DeploymentWhatIfProperties, self).__init__( + template=template, + template_link=template_link, + parameters=parameters, + parameters_link=parameters_link, + mode=mode, + debug_setting=debug_setting, + on_error_deployment=on_error_deployment, + **kwargs + ) + self.what_if_settings = what_if_settings + + +class DeploymentWhatIfSettings(msrest.serialization.Model): + """Deployment What-If operation settings. + + :param result_format: The format of the What-If results. Possible values include: + "ResourceIdOnly", "FullResourcePayloads". + :type result_format: str or + ~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfResultFormat + """ + + _attribute_map = { + "result_format": {"key": "resultFormat", "type": "str"}, + } + + def __init__(self, *, result_format: Optional[Union[str, "WhatIfResultFormat"]] = None, **kwargs): + super(DeploymentWhatIfSettings, self).__init__(**kwargs) + self.result_format = result_format + + +class ErrorAdditionalInfo(msrest.serialization.Model): + """The resource management error additional info. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar type: The additional info type. + :vartype type: str + :ivar info: The additional info. + :vartype info: object + """ + + _validation = { + "type": {"readonly": True}, + "info": {"readonly": True}, + } + + _attribute_map = { + "type": {"key": "type", "type": "str"}, + "info": {"key": "info", "type": "object"}, + } + + def __init__(self, **kwargs): + super(ErrorAdditionalInfo, self).__init__(**kwargs) + self.type = None + self.info = None + + +class ErrorResponse(msrest.serialization.Model): + """The resource management error response. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar code: The error code. + :vartype code: str + :ivar message: The error message. + :vartype message: str + :ivar target: The error target. + :vartype target: str + :ivar details: The error details. + :vartype details: list[~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse] + :ivar additional_info: The error additional info. + :vartype additional_info: + list[~azure.mgmt.resource.resources.v2020_06_01.models.ErrorAdditionalInfo] + """ + + _validation = { + "code": {"readonly": True}, + "message": {"readonly": True}, + "target": {"readonly": True}, + "details": {"readonly": True}, + "additional_info": {"readonly": True}, + } + + _attribute_map = { + "code": {"key": "code", "type": "str"}, + "message": {"key": "message", "type": "str"}, + "target": {"key": "target", "type": "str"}, + "details": {"key": "details", "type": "[ErrorResponse]"}, + "additional_info": {"key": "additionalInfo", "type": "[ErrorAdditionalInfo]"}, + } + + def __init__(self, **kwargs): + super(ErrorResponse, self).__init__(**kwargs) + self.code = None + self.message = None + self.target = None + self.details = None + self.additional_info = None + + +class ExportTemplateRequest(msrest.serialization.Model): + """Export resource group template request parameters. + + :param resources: The IDs of the resources to filter the export by. To export all resources, + supply an array with single entry '*'. + :type resources: list[str] + :param options: The export template options. A CSV-formatted list containing zero or more of + the following: 'IncludeParameterDefaultValue', 'IncludeComments', + 'SkipResourceNameParameterization', 'SkipAllParameterization'. + :type options: str + """ + + _attribute_map = { + "resources": {"key": "resources", "type": "[str]"}, + "options": {"key": "options", "type": "str"}, + } + + def __init__(self, *, resources: Optional[List[str]] = None, options: Optional[str] = None, **kwargs): + super(ExportTemplateRequest, self).__init__(**kwargs) + self.resources = resources + self.options = options + + +class Resource(msrest.serialization.Model): + """Specified resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :param location: Resource location. + :type location: str + :param tags: A set of tags. Resource tags. + :type tags: dict[str, str] + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__(self, *, location: Optional[str] = None, tags: Optional[Dict[str, str]] = None, **kwargs): + super(Resource, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.location = location + self.tags = tags + + +class GenericResource(Resource): + """Resource information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :param location: Resource location. + :type location: str + :param tags: A set of tags. Resource tags. + :type tags: dict[str, str] + :param plan: The plan of the resource. + :type plan: ~azure.mgmt.resource.resources.v2020_06_01.models.Plan + :param properties: The resource properties. + :type properties: object + :param kind: The kind of the resource. + :type kind: str + :param managed_by: ID of the resource that manages this resource. + :type managed_by: str + :param sku: The SKU of the resource. + :type sku: ~azure.mgmt.resource.resources.v2020_06_01.models.Sku + :param identity: The identity of the resource. + :type identity: ~azure.mgmt.resource.resources.v2020_06_01.models.Identity + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "kind": {"pattern": r"^[-\w\._,\(\)]+$"}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + "plan": {"key": "plan", "type": "Plan"}, + "properties": {"key": "properties", "type": "object"}, + "kind": {"key": "kind", "type": "str"}, + "managed_by": {"key": "managedBy", "type": "str"}, + "sku": {"key": "sku", "type": "Sku"}, + "identity": {"key": "identity", "type": "Identity"}, + } + + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + plan: Optional["Plan"] = None, + properties: Optional[object] = None, + kind: Optional[str] = None, + managed_by: Optional[str] = None, + sku: Optional["Sku"] = None, + identity: Optional["Identity"] = None, + **kwargs + ): + super(GenericResource, self).__init__(location=location, tags=tags, **kwargs) + self.plan = plan + self.properties = properties + self.kind = kind + self.managed_by = managed_by + self.sku = sku + self.identity = identity + + +class GenericResourceExpanded(GenericResource): + """Resource information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Resource ID. + :vartype id: str + :ivar name: Resource name. + :vartype name: str + :ivar type: Resource type. + :vartype type: str + :param location: Resource location. + :type location: str + :param tags: A set of tags. Resource tags. + :type tags: dict[str, str] + :param plan: The plan of the resource. + :type plan: ~azure.mgmt.resource.resources.v2020_06_01.models.Plan + :param properties: The resource properties. + :type properties: object + :param kind: The kind of the resource. + :type kind: str + :param managed_by: ID of the resource that manages this resource. + :type managed_by: str + :param sku: The SKU of the resource. + :type sku: ~azure.mgmt.resource.resources.v2020_06_01.models.Sku + :param identity: The identity of the resource. + :type identity: ~azure.mgmt.resource.resources.v2020_06_01.models.Identity + :ivar created_time: The created time of the resource. This is only present if requested via the + $expand query parameter. + :vartype created_time: ~datetime.datetime + :ivar changed_time: The changed time of the resource. This is only present if requested via the + $expand query parameter. + :vartype changed_time: ~datetime.datetime + :ivar provisioning_state: The provisioning state of the resource. This is only present if + requested via the $expand query parameter. + :vartype provisioning_state: str + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "kind": {"pattern": r"^[-\w\._,\(\)]+$"}, + "created_time": {"readonly": True}, + "changed_time": {"readonly": True}, + "provisioning_state": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "location": {"key": "location", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + "plan": {"key": "plan", "type": "Plan"}, + "properties": {"key": "properties", "type": "object"}, + "kind": {"key": "kind", "type": "str"}, + "managed_by": {"key": "managedBy", "type": "str"}, + "sku": {"key": "sku", "type": "Sku"}, + "identity": {"key": "identity", "type": "Identity"}, + "created_time": {"key": "createdTime", "type": "iso-8601"}, + "changed_time": {"key": "changedTime", "type": "iso-8601"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + } + + def __init__( + self, + *, + location: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + plan: Optional["Plan"] = None, + properties: Optional[object] = None, + kind: Optional[str] = None, + managed_by: Optional[str] = None, + sku: Optional["Sku"] = None, + identity: Optional["Identity"] = None, + **kwargs + ): + super(GenericResourceExpanded, self).__init__( + location=location, + tags=tags, + plan=plan, + properties=properties, + kind=kind, + managed_by=managed_by, + sku=sku, + identity=identity, + **kwargs + ) + self.created_time = None + self.changed_time = None + self.provisioning_state = None + + +class GenericResourceFilter(msrest.serialization.Model): + """Resource filter. + + :param resource_type: The resource type. + :type resource_type: str + :param tagname: The tag name. + :type tagname: str + :param tagvalue: The tag value. + :type tagvalue: str + """ + + _attribute_map = { + "resource_type": {"key": "resourceType", "type": "str"}, + "tagname": {"key": "tagname", "type": "str"}, + "tagvalue": {"key": "tagvalue", "type": "str"}, + } + + def __init__( + self, + *, + resource_type: Optional[str] = None, + tagname: Optional[str] = None, + tagvalue: Optional[str] = None, + **kwargs + ): + super(GenericResourceFilter, self).__init__(**kwargs) + self.resource_type = resource_type + self.tagname = tagname + self.tagvalue = tagvalue + + +class HttpMessage(msrest.serialization.Model): + """HTTP message. + + :param content: HTTP message content. + :type content: object + """ + + _attribute_map = { + "content": {"key": "content", "type": "object"}, + } + + def __init__(self, *, content: Optional[object] = None, **kwargs): + super(HttpMessage, self).__init__(**kwargs) + self.content = content + + +class Identity(msrest.serialization.Model): + """Identity for the resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar principal_id: The principal ID of resource identity. + :vartype principal_id: str + :ivar tenant_id: The tenant ID of resource. + :vartype tenant_id: str + :param type: The identity type. Possible values include: "SystemAssigned", "UserAssigned", + "SystemAssigned, UserAssigned", "None". + :type type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceIdentityType + :param user_assigned_identities: The list of user identities associated with the resource. The + user identity dictionary key references will be ARM resource ids in the form: + '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + :type user_assigned_identities: dict[str, + ~azure.mgmt.resource.resources.v2020_06_01.models.IdentityUserAssignedIdentitiesValue] + """ + + _validation = { + "principal_id": {"readonly": True}, + "tenant_id": {"readonly": True}, + } + + _attribute_map = { + "principal_id": {"key": "principalId", "type": "str"}, + "tenant_id": {"key": "tenantId", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "user_assigned_identities": {"key": "userAssignedIdentities", "type": "{IdentityUserAssignedIdentitiesValue}"}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "ResourceIdentityType"]] = None, + user_assigned_identities: Optional[Dict[str, "IdentityUserAssignedIdentitiesValue"]] = None, + **kwargs + ): + super(Identity, self).__init__(**kwargs) + self.principal_id = None + self.tenant_id = None + self.type = type + self.user_assigned_identities = user_assigned_identities + + +class IdentityUserAssignedIdentitiesValue(msrest.serialization.Model): + """IdentityUserAssignedIdentitiesValue. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar principal_id: The principal id of user assigned identity. + :vartype principal_id: str + :ivar client_id: The client id of user assigned identity. + :vartype client_id: str + """ + + _validation = { + "principal_id": {"readonly": True}, + "client_id": {"readonly": True}, + } + + _attribute_map = { + "principal_id": {"key": "principalId", "type": "str"}, + "client_id": {"key": "clientId", "type": "str"}, + } + + def __init__(self, **kwargs): + super(IdentityUserAssignedIdentitiesValue, self).__init__(**kwargs) + self.principal_id = None + self.client_id = None + + +class OnErrorDeployment(msrest.serialization.Model): + """Deployment on error behavior. + + :param type: The deployment on error behavior type. Possible values are LastSuccessful and + SpecificDeployment. Possible values include: "LastSuccessful", "SpecificDeployment". + :type type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.OnErrorDeploymentType + :param deployment_name: The deployment to be used on error case. + :type deployment_name: str + """ + + _attribute_map = { + "type": {"key": "type", "type": "str"}, + "deployment_name": {"key": "deploymentName", "type": "str"}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "OnErrorDeploymentType"]] = None, + deployment_name: Optional[str] = None, + **kwargs + ): + super(OnErrorDeployment, self).__init__(**kwargs) + self.type = type + self.deployment_name = deployment_name + + +class OnErrorDeploymentExtended(msrest.serialization.Model): + """Deployment on error behavior with additional details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar provisioning_state: The state of the provisioning for the on error deployment. + :vartype provisioning_state: str + :param type: The deployment on error behavior type. Possible values are LastSuccessful and + SpecificDeployment. Possible values include: "LastSuccessful", "SpecificDeployment". + :type type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.OnErrorDeploymentType + :param deployment_name: The deployment to be used on error case. + :type deployment_name: str + """ + + _validation = { + "provisioning_state": {"readonly": True}, + } + + _attribute_map = { + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "deployment_name": {"key": "deploymentName", "type": "str"}, + } + + def __init__( + self, + *, + type: Optional[Union[str, "OnErrorDeploymentType"]] = None, + deployment_name: Optional[str] = None, + **kwargs + ): + super(OnErrorDeploymentExtended, self).__init__(**kwargs) + self.provisioning_state = None + self.type = type + self.deployment_name = deployment_name + + +class Operation(msrest.serialization.Model): + """Microsoft.Resources operation. + + :param name: Operation name: {provider}/{resource}/{operation}. + :type name: str + :param display: The object that represents the operation. + :type display: ~azure.mgmt.resource.resources.v2020_06_01.models.OperationDisplay + """ + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "display": {"key": "display", "type": "OperationDisplay"}, + } + + def __init__(self, *, name: Optional[str] = None, display: Optional["OperationDisplay"] = None, **kwargs): + super(Operation, self).__init__(**kwargs) + self.name = name + self.display = display + + +class OperationDisplay(msrest.serialization.Model): + """The object that represents the operation. + + :param provider: Service provider: Microsoft.Resources. + :type provider: str + :param resource: Resource on which the operation is performed: Profile, endpoint, etc. + :type resource: str + :param operation: Operation type: Read, write, delete, etc. + :type operation: str + :param description: Description of the operation. + :type description: str + """ + + _attribute_map = { + "provider": {"key": "provider", "type": "str"}, + "resource": {"key": "resource", "type": "str"}, + "operation": {"key": "operation", "type": "str"}, + "description": {"key": "description", "type": "str"}, + } + + def __init__( + self, + *, + provider: Optional[str] = None, + resource: Optional[str] = None, + operation: Optional[str] = None, + description: Optional[str] = None, + **kwargs + ): + super(OperationDisplay, self).__init__(**kwargs) + self.provider = provider + self.resource = resource + self.operation = operation + self.description = description + + +class OperationListResult(msrest.serialization.Model): + """Result of the request to list Microsoft.Resources operations. It contains a list of operations and a URL link to get the next set of results. + + :param value: List of Microsoft.Resources operations. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.Operation] + :param next_link: URL to get the next set of operation list results if there are any. + :type next_link: str + """ + + _attribute_map = { + "value": {"key": "value", "type": "[Operation]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, *, value: Optional[List["Operation"]] = None, next_link: Optional[str] = None, **kwargs): + super(OperationListResult, self).__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class ParametersLink(msrest.serialization.Model): + """Entity representing the reference to the deployment parameters. + + All required parameters must be populated in order to send to Azure. + + :param uri: Required. The URI of the parameters file. + :type uri: str + :param content_version: If included, must match the ContentVersion in the template. + :type content_version: str + """ + + _validation = { + "uri": {"required": True}, + } + + _attribute_map = { + "uri": {"key": "uri", "type": "str"}, + "content_version": {"key": "contentVersion", "type": "str"}, + } + + def __init__(self, *, uri: str, content_version: Optional[str] = None, **kwargs): + super(ParametersLink, self).__init__(**kwargs) + self.uri = uri + self.content_version = content_version + + +class Plan(msrest.serialization.Model): + """Plan for the resource. + + :param name: The plan ID. + :type name: str + :param publisher: The publisher ID. + :type publisher: str + :param product: The offer ID. + :type product: str + :param promotion_code: The promotion code. + :type promotion_code: str + :param version: The plan's version. + :type version: str + """ + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "publisher": {"key": "publisher", "type": "str"}, + "product": {"key": "product", "type": "str"}, + "promotion_code": {"key": "promotionCode", "type": "str"}, + "version": {"key": "version", "type": "str"}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + publisher: Optional[str] = None, + product: Optional[str] = None, + promotion_code: Optional[str] = None, + version: Optional[str] = None, + **kwargs + ): + super(Plan, self).__init__(**kwargs) + self.name = name + self.publisher = publisher + self.product = product + self.promotion_code = promotion_code + self.version = version + + +class Provider(msrest.serialization.Model): + """Resource provider information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The provider ID. + :vartype id: str + :param namespace: The namespace of the resource provider. + :type namespace: str + :ivar registration_state: The registration state of the resource provider. + :vartype registration_state: str + :ivar registration_policy: The registration policy of the resource provider. + :vartype registration_policy: str + :ivar resource_types: The collection of provider resource types. + :vartype resource_types: + list[~azure.mgmt.resource.resources.v2020_06_01.models.ProviderResourceType] + """ + + _validation = { + "id": {"readonly": True}, + "registration_state": {"readonly": True}, + "registration_policy": {"readonly": True}, + "resource_types": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "namespace": {"key": "namespace", "type": "str"}, + "registration_state": {"key": "registrationState", "type": "str"}, + "registration_policy": {"key": "registrationPolicy", "type": "str"}, + "resource_types": {"key": "resourceTypes", "type": "[ProviderResourceType]"}, + } + + def __init__(self, *, namespace: Optional[str] = None, **kwargs): + super(Provider, self).__init__(**kwargs) + self.id = None + self.namespace = namespace + self.registration_state = None + self.registration_policy = None + self.resource_types = None + + +class ProviderListResult(msrest.serialization.Model): + """List of resource providers. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of resource providers. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.Provider] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[Provider]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, *, value: Optional[List["Provider"]] = None, **kwargs): + super(ProviderListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ProviderResourceType(msrest.serialization.Model): + """Resource type managed by the resource provider. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param resource_type: The resource type. + :type resource_type: str + :param locations: The collection of locations where this resource type can be created. + :type locations: list[str] + :param aliases: The aliases that are supported by this resource type. + :type aliases: list[~azure.mgmt.resource.resources.v2020_06_01.models.Alias] + :param api_versions: The API version. + :type api_versions: list[str] + :ivar default_api_version: The default API version. + :vartype default_api_version: str + :ivar api_profiles: The API profiles for the resource provider. + :vartype api_profiles: list[~azure.mgmt.resource.resources.v2020_06_01.models.ApiProfile] + :param capabilities: The additional capabilities offered by this resource type. + :type capabilities: str + :param properties: The properties. + :type properties: dict[str, str] + """ + + _validation = { + "default_api_version": {"readonly": True}, + "api_profiles": {"readonly": True}, + } + + _attribute_map = { + "resource_type": {"key": "resourceType", "type": "str"}, + "locations": {"key": "locations", "type": "[str]"}, + "aliases": {"key": "aliases", "type": "[Alias]"}, + "api_versions": {"key": "apiVersions", "type": "[str]"}, + "default_api_version": {"key": "defaultApiVersion", "type": "str"}, + "api_profiles": {"key": "apiProfiles", "type": "[ApiProfile]"}, + "capabilities": {"key": "capabilities", "type": "str"}, + "properties": {"key": "properties", "type": "{str}"}, + } + + def __init__( + self, + *, + resource_type: Optional[str] = None, + locations: Optional[List[str]] = None, + aliases: Optional[List["Alias"]] = None, + api_versions: Optional[List[str]] = None, + capabilities: Optional[str] = None, + properties: Optional[Dict[str, str]] = None, + **kwargs + ): + super(ProviderResourceType, self).__init__(**kwargs) + self.resource_type = resource_type + self.locations = locations + self.aliases = aliases + self.api_versions = api_versions + self.default_api_version = None + self.api_profiles = None + self.capabilities = capabilities + self.properties = properties + + +class ResourceGroup(msrest.serialization.Model): + """Resource group information. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: The ID of the resource group. + :vartype id: str + :ivar name: The name of the resource group. + :vartype name: str + :ivar type: The type of the resource group. + :vartype type: str + :param properties: The resource group properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroupProperties + :param location: Required. The location of the resource group. It cannot be changed after the + resource group has been created. It must be one of the supported Azure locations. + :type location: str + :param managed_by: The ID of the resource that manages this resource group. + :type managed_by: str + :param tags: A set of tags. The tags attached to the resource group. + :type tags: dict[str, str] + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "location": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "properties": {"key": "properties", "type": "ResourceGroupProperties"}, + "location": {"key": "location", "type": "str"}, + "managed_by": {"key": "managedBy", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__( + self, + *, + location: str, + properties: Optional["ResourceGroupProperties"] = None, + managed_by: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + super(ResourceGroup, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.properties = properties + self.location = location + self.managed_by = managed_by + self.tags = tags + + +class ResourceGroupExportResult(msrest.serialization.Model): + """Resource group export result. + + :param template: The template content. + :type template: object + :param error: The template export error. + :type error: ~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse + """ + + _attribute_map = { + "template": {"key": "template", "type": "object"}, + "error": {"key": "error", "type": "ErrorResponse"}, + } + + def __init__(self, *, template: Optional[object] = None, error: Optional["ErrorResponse"] = None, **kwargs): + super(ResourceGroupExportResult, self).__init__(**kwargs) + self.template = template + self.error = error + + +class ResourceGroupFilter(msrest.serialization.Model): + """Resource group filter. + + :param tag_name: The tag name. + :type tag_name: str + :param tag_value: The tag value. + :type tag_value: str + """ + + _attribute_map = { + "tag_name": {"key": "tagName", "type": "str"}, + "tag_value": {"key": "tagValue", "type": "str"}, + } + + def __init__(self, *, tag_name: Optional[str] = None, tag_value: Optional[str] = None, **kwargs): + super(ResourceGroupFilter, self).__init__(**kwargs) + self.tag_name = tag_name + self.tag_value = tag_value + + +class ResourceGroupListResult(msrest.serialization.Model): + """List of resource groups. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of resource groups. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroup] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[ResourceGroup]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, *, value: Optional[List["ResourceGroup"]] = None, **kwargs): + super(ResourceGroupListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ResourceGroupPatchable(msrest.serialization.Model): + """Resource group information. + + :param name: The name of the resource group. + :type name: str + :param properties: The resource group properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroupProperties + :param managed_by: The ID of the resource that manages this resource group. + :type managed_by: str + :param tags: A set of tags. The tags attached to the resource group. + :type tags: dict[str, str] + """ + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "properties": {"key": "properties", "type": "ResourceGroupProperties"}, + "managed_by": {"key": "managedBy", "type": "str"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + properties: Optional["ResourceGroupProperties"] = None, + managed_by: Optional[str] = None, + tags: Optional[Dict[str, str]] = None, + **kwargs + ): + super(ResourceGroupPatchable, self).__init__(**kwargs) + self.name = name + self.properties = properties + self.managed_by = managed_by + self.tags = tags + + +class ResourceGroupProperties(msrest.serialization.Model): + """The resource group properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar provisioning_state: The provisioning state. + :vartype provisioning_state: str + """ + + _validation = { + "provisioning_state": {"readonly": True}, + } + + _attribute_map = { + "provisioning_state": {"key": "provisioningState", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ResourceGroupProperties, self).__init__(**kwargs) + self.provisioning_state = None + + +class ResourceListResult(msrest.serialization.Model): + """List of resource groups. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of resources. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.GenericResourceExpanded] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[GenericResourceExpanded]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, *, value: Optional[List["GenericResourceExpanded"]] = None, **kwargs): + super(ResourceListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class ResourceProviderOperationDisplayProperties(msrest.serialization.Model): + """Resource provider operation's display properties. + + :param publisher: Operation description. + :type publisher: str + :param provider: Operation provider. + :type provider: str + :param resource: Operation resource. + :type resource: str + :param operation: Resource provider operation. + :type operation: str + :param description: Operation description. + :type description: str + """ + + _attribute_map = { + "publisher": {"key": "publisher", "type": "str"}, + "provider": {"key": "provider", "type": "str"}, + "resource": {"key": "resource", "type": "str"}, + "operation": {"key": "operation", "type": "str"}, + "description": {"key": "description", "type": "str"}, + } + + def __init__( + self, + *, + publisher: Optional[str] = None, + provider: Optional[str] = None, + resource: Optional[str] = None, + operation: Optional[str] = None, + description: Optional[str] = None, + **kwargs + ): + super(ResourceProviderOperationDisplayProperties, self).__init__(**kwargs) + self.publisher = publisher + self.provider = provider + self.resource = resource + self.operation = operation + self.description = description + + +class ResourceReference(msrest.serialization.Model): + """The resource Id model. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The fully qualified resource Id. + :vartype id: str + """ + + _validation = { + "id": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + } + + def __init__(self, **kwargs): + super(ResourceReference, self).__init__(**kwargs) + self.id = None + + +class ResourcesMoveInfo(msrest.serialization.Model): + """Parameters of move resources. + + :param resources: The IDs of the resources. + :type resources: list[str] + :param target_resource_group: The target resource group. + :type target_resource_group: str + """ + + _attribute_map = { + "resources": {"key": "resources", "type": "[str]"}, + "target_resource_group": {"key": "targetResourceGroup", "type": "str"}, + } + + def __init__(self, *, resources: Optional[List[str]] = None, target_resource_group: Optional[str] = None, **kwargs): + super(ResourcesMoveInfo, self).__init__(**kwargs) + self.resources = resources + self.target_resource_group = target_resource_group + + +class ScopedDeployment(msrest.serialization.Model): + """Deployment operation parameters. + + All required parameters must be populated in order to send to Azure. + + :param location: Required. The location to store the deployment data. + :type location: str + :param properties: Required. The deployment properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentProperties + :param tags: A set of tags. Deployment tags. + :type tags: dict[str, str] + """ + + _validation = { + "location": {"required": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentProperties"}, + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__( + self, *, location: str, properties: "DeploymentProperties", tags: Optional[Dict[str, str]] = None, **kwargs + ): + super(ScopedDeployment, self).__init__(**kwargs) + self.location = location + self.properties = properties + self.tags = tags + + +class ScopedDeploymentWhatIf(msrest.serialization.Model): + """Deployment What-if operation parameters. + + All required parameters must be populated in order to send to Azure. + + :param location: Required. The location to store the deployment data. + :type location: str + :param properties: Required. The deployment properties. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentWhatIfProperties + """ + + _validation = { + "location": {"required": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "DeploymentWhatIfProperties"}, + } + + def __init__(self, *, location: str, properties: "DeploymentWhatIfProperties", **kwargs): + super(ScopedDeploymentWhatIf, self).__init__(**kwargs) + self.location = location + self.properties = properties + + +class Sku(msrest.serialization.Model): + """SKU for the resource. + + :param name: The SKU name. + :type name: str + :param tier: The SKU tier. + :type tier: str + :param size: The SKU size. + :type size: str + :param family: The SKU family. + :type family: str + :param model: The SKU model. + :type model: str + :param capacity: The SKU capacity. + :type capacity: int + """ + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "tier": {"key": "tier", "type": "str"}, + "size": {"key": "size", "type": "str"}, + "family": {"key": "family", "type": "str"}, + "model": {"key": "model", "type": "str"}, + "capacity": {"key": "capacity", "type": "int"}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + tier: Optional[str] = None, + size: Optional[str] = None, + family: Optional[str] = None, + model: Optional[str] = None, + capacity: Optional[int] = None, + **kwargs + ): + super(Sku, self).__init__(**kwargs) + self.name = name + self.tier = tier + self.size = size + self.family = family + self.model = model + self.capacity = capacity + + +class StatusMessage(msrest.serialization.Model): + """Operation status message object. + + :param status: Status of the deployment operation. + :type status: str + :param error: The error reported by the operation. + :type error: ~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse + """ + + _attribute_map = { + "status": {"key": "status", "type": "str"}, + "error": {"key": "error", "type": "ErrorResponse"}, + } + + def __init__(self, *, status: Optional[str] = None, error: Optional["ErrorResponse"] = None, **kwargs): + super(StatusMessage, self).__init__(**kwargs) + self.status = status + self.error = error + + +class SubResource(msrest.serialization.Model): + """Sub-resource. + + :param id: Resource ID. + :type id: str + """ + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + } + + def __init__(self, *, id: Optional[str] = None, **kwargs): + super(SubResource, self).__init__(**kwargs) + self.id = id + + +class TagCount(msrest.serialization.Model): + """Tag count. + + :param type: Type of count. + :type type: str + :param value: Value of count. + :type value: int + """ + + _attribute_map = { + "type": {"key": "type", "type": "str"}, + "value": {"key": "value", "type": "int"}, + } + + def __init__(self, *, type: Optional[str] = None, value: Optional[int] = None, **kwargs): + super(TagCount, self).__init__(**kwargs) + self.type = type + self.value = value + + +class TagDetails(msrest.serialization.Model): + """Tag details. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The tag name ID. + :vartype id: str + :param tag_name: The tag name. + :type tag_name: str + :param count: The total number of resources that use the resource tag. When a tag is initially + created and has no associated resources, the value is 0. + :type count: ~azure.mgmt.resource.resources.v2020_06_01.models.TagCount + :param values: The list of tag values. + :type values: list[~azure.mgmt.resource.resources.v2020_06_01.models.TagValue] + """ + + _validation = { + "id": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "tag_name": {"key": "tagName", "type": "str"}, + "count": {"key": "count", "type": "TagCount"}, + "values": {"key": "values", "type": "[TagValue]"}, + } + + def __init__( + self, + *, + tag_name: Optional[str] = None, + count: Optional["TagCount"] = None, + values: Optional[List["TagValue"]] = None, + **kwargs + ): + super(TagDetails, self).__init__(**kwargs) + self.id = None + self.tag_name = tag_name + self.count = count + self.values = values + + +class Tags(msrest.serialization.Model): + """A dictionary of name and value pairs. + + :param tags: A set of tags. Dictionary of :code:`<string>`. + :type tags: dict[str, str] + """ + + _attribute_map = { + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__(self, *, tags: Optional[Dict[str, str]] = None, **kwargs): + super(Tags, self).__init__(**kwargs) + self.tags = tags + + +class TagsListResult(msrest.serialization.Model): + """List of subscription tags. + + Variables are only populated by the server, and will be ignored when sending a request. + + :param value: An array of tags. + :type value: list[~azure.mgmt.resource.resources.v2020_06_01.models.TagDetails] + :ivar next_link: The URL to use for getting the next set of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[TagDetails]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, *, value: Optional[List["TagDetails"]] = None, **kwargs): + super(TagsListResult, self).__init__(**kwargs) + self.value = value + self.next_link = None + + +class TagsPatchResource(msrest.serialization.Model): + """Wrapper resource for tags patch API request only. + + :param operation: The operation type for the patch API. Possible values include: "Replace", + "Merge", "Delete". + :type operation: str or ~azure.mgmt.resource.resources.v2020_06_01.models.TagsPatchOperation + :param properties: The set of tags. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.Tags + """ + + _attribute_map = { + "operation": {"key": "operation", "type": "str"}, + "properties": {"key": "properties", "type": "Tags"}, + } + + def __init__( + self, + *, + operation: Optional[Union[str, "TagsPatchOperation"]] = None, + properties: Optional["Tags"] = None, + **kwargs + ): + super(TagsPatchResource, self).__init__(**kwargs) + self.operation = operation + self.properties = properties + + +class TagsResource(msrest.serialization.Model): + """Wrapper resource for tags API requests and responses. + + Variables are only populated by the server, and will be ignored when sending a request. + + All required parameters must be populated in order to send to Azure. + + :ivar id: The ID of the tags wrapper resource. + :vartype id: str + :ivar name: The name of the tags wrapper resource. + :vartype name: str + :ivar type: The type of the tags wrapper resource. + :vartype type: str + :param properties: Required. The set of tags. + :type properties: ~azure.mgmt.resource.resources.v2020_06_01.models.Tags + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "properties": {"key": "properties", "type": "Tags"}, + } + + def __init__(self, *, properties: "Tags", **kwargs): + super(TagsResource, self).__init__(**kwargs) + self.id = None + self.name = None + self.type = None + self.properties = properties + + +class TagValue(msrest.serialization.Model): + """Tag information. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The tag value ID. + :vartype id: str + :param tag_value: The tag value. + :type tag_value: str + :param count: The tag value count. + :type count: ~azure.mgmt.resource.resources.v2020_06_01.models.TagCount + """ + + _validation = { + "id": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "tag_value": {"key": "tagValue", "type": "str"}, + "count": {"key": "count", "type": "TagCount"}, + } + + def __init__(self, *, tag_value: Optional[str] = None, count: Optional["TagCount"] = None, **kwargs): + super(TagValue, self).__init__(**kwargs) + self.id = None + self.tag_value = tag_value + self.count = count + + +class TargetResource(msrest.serialization.Model): + """Target resource. + + :param id: The ID of the resource. + :type id: str + :param resource_name: The name of the resource. + :type resource_name: str + :param resource_type: The type of the resource. + :type resource_type: str + """ + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "resource_name": {"key": "resourceName", "type": "str"}, + "resource_type": {"key": "resourceType", "type": "str"}, + } + + def __init__( + self, + *, + id: Optional[str] = None, + resource_name: Optional[str] = None, + resource_type: Optional[str] = None, + **kwargs + ): + super(TargetResource, self).__init__(**kwargs) + self.id = id + self.resource_name = resource_name + self.resource_type = resource_type + + +class TemplateHashResult(msrest.serialization.Model): + """Result of the request to calculate template hash. It contains a string of minified template and its hash. + + :param minified_template: The minified template string. + :type minified_template: str + :param template_hash: The template hash. + :type template_hash: str + """ + + _attribute_map = { + "minified_template": {"key": "minifiedTemplate", "type": "str"}, + "template_hash": {"key": "templateHash", "type": "str"}, + } + + def __init__(self, *, minified_template: Optional[str] = None, template_hash: Optional[str] = None, **kwargs): + super(TemplateHashResult, self).__init__(**kwargs) + self.minified_template = minified_template + self.template_hash = template_hash + + +class TemplateLink(msrest.serialization.Model): + """Entity representing the reference to the template. + + :param uri: The URI of the template to deploy. Use either the uri or id property, but not both. + :type uri: str + :param id: The resource id of a Template Spec. Use either the id or uri property, but not both. + :type id: str + :param relative_path: Applicable only if this template link references a Template Spec. This + relativePath property can optionally be used to reference a Template Spec artifact by path. + :type relative_path: str + :param content_version: If included, must match the ContentVersion in the template. + :type content_version: str + """ + + _attribute_map = { + "uri": {"key": "uri", "type": "str"}, + "id": {"key": "id", "type": "str"}, + "relative_path": {"key": "relativePath", "type": "str"}, + "content_version": {"key": "contentVersion", "type": "str"}, + } + + def __init__( + self, + *, + uri: Optional[str] = None, + id: Optional[str] = None, + relative_path: Optional[str] = None, + content_version: Optional[str] = None, + **kwargs + ): + super(TemplateLink, self).__init__(**kwargs) + self.uri = uri + self.id = id + self.relative_path = relative_path + self.content_version = content_version + + +class WhatIfChange(msrest.serialization.Model): + """Information about a single resource change predicted by What-If operation. + + All required parameters must be populated in order to send to Azure. + + :param resource_id: Required. Resource ID. + :type resource_id: str + :param change_type: Required. Type of change that will be made to the resource when the + deployment is executed. Possible values include: "Create", "Delete", "Ignore", "Deploy", + "NoChange", "Modify". + :type change_type: str or ~azure.mgmt.resource.resources.v2020_06_01.models.ChangeType + :param before: The snapshot of the resource before the deployment is executed. + :type before: object + :param after: The predicted snapshot of the resource after the deployment is executed. + :type after: object + :param delta: The predicted changes to resource properties. + :type delta: list[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfPropertyChange] + """ + + _validation = { + "resource_id": {"required": True}, + "change_type": {"required": True}, + } + + _attribute_map = { + "resource_id": {"key": "resourceId", "type": "str"}, + "change_type": {"key": "changeType", "type": "str"}, + "before": {"key": "before", "type": "object"}, + "after": {"key": "after", "type": "object"}, + "delta": {"key": "delta", "type": "[WhatIfPropertyChange]"}, + } + + def __init__( + self, + *, + resource_id: str, + change_type: Union[str, "ChangeType"], + before: Optional[object] = None, + after: Optional[object] = None, + delta: Optional[List["WhatIfPropertyChange"]] = None, + **kwargs + ): + super(WhatIfChange, self).__init__(**kwargs) + self.resource_id = resource_id + self.change_type = change_type + self.before = before + self.after = after + self.delta = delta + + +class WhatIfOperationResult(msrest.serialization.Model): + """Result of the What-If operation. Contains a list of predicted changes and a URL link to get to the next set of results. + + :param status: Status of the What-If operation. + :type status: str + :param error: Error when What-If operation fails. + :type error: ~azure.mgmt.resource.resources.v2020_06_01.models.ErrorResponse + :param changes: List of resource changes predicted by What-If operation. + :type changes: list[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfChange] + """ + + _attribute_map = { + "status": {"key": "status", "type": "str"}, + "error": {"key": "error", "type": "ErrorResponse"}, + "changes": {"key": "properties.changes", "type": "[WhatIfChange]"}, + } + + def __init__( + self, + *, + status: Optional[str] = None, + error: Optional["ErrorResponse"] = None, + changes: Optional[List["WhatIfChange"]] = None, + **kwargs + ): + super(WhatIfOperationResult, self).__init__(**kwargs) + self.status = status + self.error = error + self.changes = changes + + +class WhatIfPropertyChange(msrest.serialization.Model): + """The predicted change to the resource property. + + All required parameters must be populated in order to send to Azure. + + :param path: Required. The path of the property. + :type path: str + :param property_change_type: Required. The type of property change. Possible values include: + "Create", "Delete", "Modify", "Array". + :type property_change_type: str or + ~azure.mgmt.resource.resources.v2020_06_01.models.PropertyChangeType + :param before: The value of the property before the deployment is executed. + :type before: object + :param after: The value of the property after the deployment is executed. + :type after: object + :param children: Nested property changes. + :type children: list[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfPropertyChange] + """ + + _validation = { + "path": {"required": True}, + "property_change_type": {"required": True}, + } + + _attribute_map = { + "path": {"key": "path", "type": "str"}, + "property_change_type": {"key": "propertyChangeType", "type": "str"}, + "before": {"key": "before", "type": "object"}, + "after": {"key": "after", "type": "object"}, + "children": {"key": "children", "type": "[WhatIfPropertyChange]"}, + } + + def __init__( + self, + *, + path: str, + property_change_type: Union[str, "PropertyChangeType"], + before: Optional[object] = None, + after: Optional[object] = None, + children: Optional[List["WhatIfPropertyChange"]] = None, + **kwargs + ): + super(WhatIfPropertyChange, self).__init__(**kwargs) + self.path = path + self.property_change_type = property_change_type + self.before = before + self.after = after + self.children = children diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_resource_management_client_enums.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_resource_management_client_enums.py new file mode 100644 index 00000000..d09b964d --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_resource_management_client_enums.py @@ -0,0 +1,146 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from enum import Enum +from azure.core import CaseInsensitiveEnumMeta + + +class AliasPathAttributes(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The attributes of the token that the alias path is referring to.""" + + NONE = "None" #: The token that the alias path is referring to has no attributes. + MODIFIABLE = ( + "Modifiable" #: The token that the alias path is referring to is modifiable by policies with 'modify' effect. + ) + + +class AliasPathTokenType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The type of the token that the alias path is referring to.""" + + NOT_SPECIFIED = "NotSpecified" #: The token type is not specified. + ANY = "Any" #: The token type can be anything. + STRING = "String" #: The token type is string. + OBJECT = "Object" #: The token type is object. + ARRAY = "Array" #: The token type is array. + INTEGER = "Integer" #: The token type is integer. + NUMBER = "Number" #: The token type is number. + BOOLEAN = "Boolean" #: The token type is boolean. + + +class AliasPatternType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The type of alias pattern""" + + NOT_SPECIFIED = "NotSpecified" #: NotSpecified is not allowed. + EXTRACT = "Extract" #: Extract is the only allowed value. + + +class AliasType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The type of the alias.""" + + NOT_SPECIFIED = "NotSpecified" #: Alias type is unknown (same as not providing alias type). + PLAIN_TEXT = "PlainText" #: Alias value is not secret. + MASK = "Mask" #: Alias value is secret. + + +class ChangeType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Type of change that will be made to the resource when the deployment is executed.""" + + CREATE = "Create" #: The resource does not exist in the current state but is present in the desired state. The resource will be created when the deployment is executed. + DELETE = "Delete" #: The resource exists in the current state and is missing from the desired state. The resource will be deleted when the deployment is executed. + IGNORE = "Ignore" #: The resource exists in the current state and is missing from the desired state. The resource will not be deployed or modified when the deployment is executed. + DEPLOY = "Deploy" #: The resource exists in the current state and the desired state and will be redeployed when the deployment is executed. The properties of the resource may or may not change. + NO_CHANGE = "NoChange" #: The resource exists in the current state and the desired state and will be redeployed when the deployment is executed. The properties of the resource will not change. + MODIFY = "Modify" #: The resource exists in the current state and the desired state and will be redeployed when the deployment is executed. The properties of the resource will change. + + +class DeploymentMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The mode that is used to deploy resources. This value can be either Incremental or Complete. In + Incremental mode, resources are deployed without deleting existing resources that are not + included in the template. In Complete mode, resources are deployed and existing resources in + the resource group that are not included in the template are deleted. Be careful when using + Complete mode as you may unintentionally delete resources. + """ + + INCREMENTAL = "Incremental" + COMPLETE = "Complete" + + +class OnErrorDeploymentType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The deployment on error behavior type. Possible values are LastSuccessful and + SpecificDeployment. + """ + + LAST_SUCCESSFUL = "LastSuccessful" + SPECIFIC_DEPLOYMENT = "SpecificDeployment" + + +class PropertyChangeType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The type of property change.""" + + CREATE = "Create" #: The property does not exist in the current state but is present in the desired state. The property will be created when the deployment is executed. + DELETE = "Delete" #: The property exists in the current state and is missing from the desired state. It will be deleted when the deployment is executed. + MODIFY = "Modify" #: The property exists in both current and desired state and is different. The value of the property will change when the deployment is executed. + ARRAY = "Array" #: The property is an array and contains nested changes. + + +class ProvisioningOperation(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The name of the current provisioning operation.""" + + NOT_SPECIFIED = "NotSpecified" #: The provisioning operation is not specified. + CREATE = "Create" #: The provisioning operation is create. + DELETE = "Delete" #: The provisioning operation is delete. + WAITING = "Waiting" #: The provisioning operation is waiting. + AZURE_ASYNC_OPERATION_WAITING = ( + "AzureAsyncOperationWaiting" #: The provisioning operation is waiting Azure async operation. + ) + RESOURCE_CACHE_WAITING = "ResourceCacheWaiting" #: The provisioning operation is waiting for resource cache. + ACTION = "Action" #: The provisioning operation is action. + READ = "Read" #: The provisioning operation is read. + EVALUATE_DEPLOYMENT_OUTPUT = "EvaluateDeploymentOutput" #: The provisioning operation is evaluate output. + DEPLOYMENT_CLEANUP = "DeploymentCleanup" #: The provisioning operation is cleanup. This operation is part of the 'complete' mode deployment. + + +class ProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Denotes the state of provisioning.""" + + NOT_SPECIFIED = "NotSpecified" + ACCEPTED = "Accepted" + RUNNING = "Running" + READY = "Ready" + CREATING = "Creating" + CREATED = "Created" + DELETING = "Deleting" + DELETED = "Deleted" + CANCELED = "Canceled" + FAILED = "Failed" + SUCCEEDED = "Succeeded" + UPDATING = "Updating" + + +class ResourceIdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The identity type.""" + + SYSTEM_ASSIGNED = "SystemAssigned" + USER_ASSIGNED = "UserAssigned" + SYSTEM_ASSIGNED_USER_ASSIGNED = "SystemAssigned, UserAssigned" + NONE = "None" + + +class TagsPatchOperation(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The operation type for the patch API.""" + + REPLACE = "Replace" #: The 'replace' option replaces the entire set of existing tags with a new set. + MERGE = "Merge" #: The 'merge' option allows adding tags with new names and updating the values of tags with existing names. + DELETE = "Delete" #: The 'delete' option allows selectively deleting tags based on given names or name/value pairs. + + +class WhatIfResultFormat(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The format of the What-If results""" + + RESOURCE_ID_ONLY = "ResourceIdOnly" + FULL_RESOURCE_PAYLOADS = "FullResourcePayloads" diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/__init__.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/__init__.py new file mode 100644 index 00000000..b96aa279 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/__init__.py @@ -0,0 +1,25 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- + +from ._operations import Operations +from ._deployments_operations import DeploymentsOperations +from ._providers_operations import ProvidersOperations +from ._resources_operations import ResourcesOperations +from ._resource_groups_operations import ResourceGroupsOperations +from ._tags_operations import TagsOperations +from ._deployment_operations_operations import DeploymentOperationsOperations + +__all__ = [ + "Operations", + "DeploymentsOperations", + "ProvidersOperations", + "ResourcesOperations", + "ResourceGroupsOperations", + "TagsOperations", + "DeploymentOperationsOperations", +] diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_deployment_operations_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_deployment_operations_operations.py new file mode 100644 index 00000000..18eaac3a --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_deployment_operations_operations.py @@ -0,0 +1,788 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.mgmt.core.exceptions import ARMErrorFormat + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar + + T = TypeVar("T") + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + + +class DeploymentOperationsOperations(object): + """DeploymentOperationsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def get_at_scope( + self, + scope, # type: str + deployment_name, # type: str + operation_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentOperation" + """Gets a deployments operation. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param operation_id: The ID of the operation to get. + :type operation_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentOperation, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperation"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "operationId": self._serialize.url("operation_id", operation_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentOperation", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}"} # type: ignore + + def list_at_scope( + self, + scope, # type: str + deployment_name, # type: str + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DeploymentOperationsListResult"] + """Gets all deployments operations for a deployment. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param top: The number of results to return. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentOperationsListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperationsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", + deployment_name, + "str", + max_length=64, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentOperationsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/operations"} # type: ignore + + def get_at_tenant_scope( + self, + deployment_name, # type: str + operation_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentOperation" + """Gets a deployments operation. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param operation_id: The ID of the operation to get. + :type operation_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentOperation, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperation"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "operationId": self._serialize.url("operation_id", operation_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentOperation", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}"} # type: ignore + + def list_at_tenant_scope( + self, + deployment_name, # type: str + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DeploymentOperationsListResult"] + """Gets all deployments operations for a deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param top: The number of results to return. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentOperationsListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperationsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", + deployment_name, + "str", + max_length=64, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentOperationsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/operations"} # type: ignore + + def get_at_management_group_scope( + self, + group_id, # type: str + deployment_name, # type: str + operation_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentOperation" + """Gets a deployments operation. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param operation_id: The ID of the operation to get. + :type operation_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentOperation, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperation"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "operationId": self._serialize.url("operation_id", operation_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentOperation", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}"} # type: ignore + + def list_at_management_group_scope( + self, + group_id, # type: str + deployment_name, # type: str + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DeploymentOperationsListResult"] + """Gets all deployments operations for a deployment. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param top: The number of results to return. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentOperationsListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperationsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", + deployment_name, + "str", + max_length=64, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentOperationsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations"} # type: ignore + + def get_at_subscription_scope( + self, + deployment_name, # type: str + operation_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentOperation" + """Gets a deployments operation. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param operation_id: The ID of the operation to get. + :type operation_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentOperation, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperation"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "operationId": self._serialize.url("operation_id", operation_id, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentOperation", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations/{operationId}"} # type: ignore + + def list_at_subscription_scope( + self, + deployment_name, # type: str + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DeploymentOperationsListResult"] + """Gets all deployments operations for a deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param top: The number of results to return. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentOperationsListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperationsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", + deployment_name, + "str", + max_length=64, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentOperationsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/operations"} # type: ignore + + def get( + self, + resource_group_name, # type: str + deployment_name, # type: str + operation_id, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentOperation" + """Gets a deployments operation. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param operation_id: The ID of the operation to get. + :type operation_id: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentOperation, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperation + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperation"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "operationId": self._serialize.url("operation_id", operation_id, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentOperation", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations/{operationId}"} # type: ignore + + def list( + self, + resource_group_name, # type: str + deployment_name, # type: str + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DeploymentOperationsListResult"] + """Gets all deployments operations for a deployment. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param top: The number of results to return. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentOperationsListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentOperationsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentOperationsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", + deployment_name, + "str", + max_length=64, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentOperationsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/deployments/{deploymentName}/operations"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_deployments_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_deployments_operations.py new file mode 100644 index 00000000..4bc01958 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_deployments_operations.py @@ -0,0 +1,3984 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.arm_polling import ARMPolling + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union + + T = TypeVar("T") + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + + +class DeploymentsOperations(object): + """DeploymentsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def _delete_at_scope_initial( + self, + scope, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_at_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_at_scope_initial.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def begin_delete_at_scope( + self, + scope, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Deletes a deployment from the deployment history. + + A template deployment that is currently running cannot be deleted. Deleting a template + deployment removes the associated deployment operations. This is an asynchronous operation that + returns a status of 202 until the template deployment is successfully deleted. The Location + response header contains the URI that is used to obtain the status of the process. While the + process is running, a call to the URI in the Location header returns a status of 202. When the + process finishes, the URI in the Location header returns a status of 204 on success. If the + asynchronous request failed, the URI in the Location header returns an error-level status code. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_at_scope_initial( + scope=scope, deployment_name=deployment_name, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def check_existence_at_scope( + self, + scope, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> bool + """Checks whether the deployment exists. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def _create_or_update_at_scope_initial( + self, + scope, # type: str + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExtended" + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_at_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_at_scope_initial.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def begin_create_or_update_at_scope( + self, + scope, # type: str + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.DeploymentExtended"] + """Deploys resources at a given scope. + + You can provide the template and parameters directly in the request or link to JSON files. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Additional parameters supplied to the operation. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either DeploymentExtended or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_at_scope_initial( + scope=scope, deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def get_at_scope( + self, + scope, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExtended" + """Gets a deployment. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExtended, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def cancel_at_scope( + self, + scope, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Cancels a currently running template deployment. + + You can cancel a deployment only if the provisioningState is Accepted or Running. After the + deployment is canceled, the provisioningState is set to Canceled. Canceling a template + deployment stops the currently running template deployment and leaves the resources partially + deployed. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.cancel_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + cancel_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"} # type: ignore + + def _validate_at_scope_initial( + self, + scope, # type: str + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.DeploymentValidateResult"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.DeploymentValidateResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_at_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 400]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if response.status_code == 400: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _validate_at_scope_initial.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + def begin_validate_at_scope( + self, + scope, # type: str + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.DeploymentValidateResult"] + """Validates whether the specified template is syntactically correct and will be accepted by Azure + Resource Manager.. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either DeploymentValidateResult or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentValidateResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentValidateResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._validate_at_scope_initial( + scope=scope, deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + def export_template_at_scope( + self, + scope, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExportResult" + """Exports the template used for specified deployment. + + :param scope: The resource scope. + :type scope: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExportResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExportResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExportResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.export_template_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + export_template_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate"} # type: ignore + + def list_at_scope( + self, + scope, # type: str + filter=None, # type: Optional[str] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DeploymentListResult"] + """Get all the deployments at the given scope. + + :param scope: The resource scope. + :type scope: str + :param filter: The filter to apply on the operation. For example, you can use + $filter=provisioningState eq '{state}'. + :type filter: str + :param top: The number of results to get. If null is passed, returns all deployments. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/deployments/"} # type: ignore + + def _delete_at_tenant_scope_initial( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_at_tenant_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_at_tenant_scope_initial.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def begin_delete_at_tenant_scope( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Deletes a deployment from the deployment history. + + A template deployment that is currently running cannot be deleted. Deleting a template + deployment removes the associated deployment operations. This is an asynchronous operation that + returns a status of 202 until the template deployment is successfully deleted. The Location + response header contains the URI that is used to obtain the status of the process. While the + process is running, a call to the URI in the Location header returns a status of 202. When the + process finishes, the URI in the Location header returns a status of 204 on success. If the + asynchronous request failed, the URI in the Location header returns an error-level status code. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_at_tenant_scope_initial( + deployment_name=deployment_name, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def check_existence_at_tenant_scope( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> bool + """Checks whether the deployment exists. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def _create_or_update_at_tenant_scope_initial( + self, + deployment_name, # type: str + parameters, # type: "models.ScopedDeployment" + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExtended" + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_at_tenant_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeployment") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_at_tenant_scope_initial.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def begin_create_or_update_at_tenant_scope( + self, + deployment_name, # type: str + parameters, # type: "models.ScopedDeployment" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.DeploymentExtended"] + """Deploys resources at tenant scope. + + You can provide the template and parameters directly in the request or link to JSON files. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Additional parameters supplied to the operation. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either DeploymentExtended or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_at_tenant_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def get_at_tenant_scope( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExtended" + """Gets a deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExtended, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def cancel_at_tenant_scope( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Cancels a currently running template deployment. + + You can cancel a deployment only if the provisioningState is Accepted or Running. After the + deployment is canceled, the provisioningState is set to Canceled. Canceling a template + deployment stops the currently running template deployment and leaves the resources partially + deployed. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.cancel_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + cancel_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"} # type: ignore + + def _validate_at_tenant_scope_initial( + self, + deployment_name, # type: str + parameters, # type: "models.ScopedDeployment" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.DeploymentValidateResult"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.DeploymentValidateResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_at_tenant_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeployment") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 400]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if response.status_code == 400: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _validate_at_tenant_scope_initial.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + def begin_validate_at_tenant_scope( + self, + deployment_name, # type: str + parameters, # type: "models.ScopedDeployment" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.DeploymentValidateResult"] + """Validates whether the specified template is syntactically correct and will be accepted by Azure + Resource Manager.. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either DeploymentValidateResult or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentValidateResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentValidateResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._validate_at_tenant_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + def _what_if_at_tenant_scope_initial( + self, + deployment_name, # type: str + parameters, # type: "models.ScopedDeploymentWhatIf" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.WhatIfOperationResult"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.WhatIfOperationResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._what_if_at_tenant_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeploymentWhatIf") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + _what_if_at_tenant_scope_initial.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + def begin_what_if_at_tenant_scope( + self, + deployment_name, # type: str + parameters, # type: "models.ScopedDeploymentWhatIf" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.WhatIfOperationResult"] + """Returns changes that will be made by the deployment if executed at the scope of the tenant + group. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeploymentWhatIf + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either WhatIfOperationResult or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfOperationResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.WhatIfOperationResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._what_if_at_tenant_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_what_if_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + def export_template_at_tenant_scope( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExportResult" + """Exports the template used for specified deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExportResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExportResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExportResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.export_template_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + export_template_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate"} # type: ignore + + def list_at_tenant_scope( + self, + filter=None, # type: Optional[str] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DeploymentListResult"] + """Get all the deployments at the tenant scope. + + :param filter: The filter to apply on the operation. For example, you can use + $filter=provisioningState eq '{state}'. + :type filter: str + :param top: The number of results to get. If null is passed, returns all deployments. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_tenant_scope.metadata["url"] # type: ignore + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_at_tenant_scope.metadata = {"url": "/providers/Microsoft.Resources/deployments/"} # type: ignore + + def _delete_at_management_group_scope_initial( + self, + group_id, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_at_management_group_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_at_management_group_scope_initial.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def begin_delete_at_management_group_scope( + self, + group_id, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Deletes a deployment from the deployment history. + + A template deployment that is currently running cannot be deleted. Deleting a template + deployment removes the associated deployment operations. This is an asynchronous operation that + returns a status of 202 until the template deployment is successfully deleted. The Location + response header contains the URI that is used to obtain the status of the process. While the + process is running, a call to the URI in the Location header returns a status of 202. When the + process finishes, the URI in the Location header returns a status of 204 on success. If the + asynchronous request failed, the URI in the Location header returns an error-level status code. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_at_management_group_scope_initial( + group_id=group_id, deployment_name=deployment_name, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def check_existence_at_management_group_scope( + self, + group_id, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> bool + """Checks whether the deployment exists. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def _create_or_update_at_management_group_scope_initial( + self, + group_id, # type: str + deployment_name, # type: str + parameters, # type: "models.ScopedDeployment" + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExtended" + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_at_management_group_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeployment") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_at_management_group_scope_initial.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def begin_create_or_update_at_management_group_scope( + self, + group_id, # type: str + deployment_name, # type: str + parameters, # type: "models.ScopedDeployment" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.DeploymentExtended"] + """Deploys resources at management group scope. + + You can provide the template and parameters directly in the request or link to JSON files. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Additional parameters supplied to the operation. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either DeploymentExtended or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_at_management_group_scope_initial( + group_id=group_id, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def get_at_management_group_scope( + self, + group_id, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExtended" + """Gets a deployment. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExtended, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def cancel_at_management_group_scope( + self, + group_id, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Cancels a currently running template deployment. + + You can cancel a deployment only if the provisioningState is Accepted or Running. After the + deployment is canceled, the provisioningState is set to Canceled. Canceling a template + deployment stops the currently running template deployment and leaves the resources partially + deployed. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.cancel_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + cancel_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"} # type: ignore + + def _validate_at_management_group_scope_initial( + self, + group_id, # type: str + deployment_name, # type: str + parameters, # type: "models.ScopedDeployment" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.DeploymentValidateResult"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.DeploymentValidateResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_at_management_group_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeployment") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 400]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if response.status_code == 400: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _validate_at_management_group_scope_initial.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + def begin_validate_at_management_group_scope( + self, + group_id, # type: str + deployment_name, # type: str + parameters, # type: "models.ScopedDeployment" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.DeploymentValidateResult"] + """Validates whether the specified template is syntactically correct and will be accepted by Azure + Resource Manager.. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either DeploymentValidateResult or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentValidateResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentValidateResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._validate_at_management_group_scope_initial( + group_id=group_id, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + def _what_if_at_management_group_scope_initial( + self, + group_id, # type: str + deployment_name, # type: str + parameters, # type: "models.ScopedDeploymentWhatIf" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.WhatIfOperationResult"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.WhatIfOperationResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._what_if_at_management_group_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ScopedDeploymentWhatIf") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + _what_if_at_management_group_scope_initial.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + def begin_what_if_at_management_group_scope( + self, + group_id, # type: str + deployment_name, # type: str + parameters, # type: "models.ScopedDeploymentWhatIf" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.WhatIfOperationResult"] + """Returns changes that will be made by the deployment if executed at the scope of the management + group. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ScopedDeploymentWhatIf + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either WhatIfOperationResult or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfOperationResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.WhatIfOperationResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._what_if_at_management_group_scope_initial( + group_id=group_id, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_what_if_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + def export_template_at_management_group_scope( + self, + group_id, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExportResult" + """Exports the template used for specified deployment. + + :param group_id: The management group ID. + :type group_id: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExportResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExportResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExportResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.export_template_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + export_template_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate"} # type: ignore + + def list_at_management_group_scope( + self, + group_id, # type: str + filter=None, # type: Optional[str] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DeploymentListResult"] + """Get all the deployments for a management group. + + :param group_id: The management group ID. + :type group_id: str + :param filter: The filter to apply on the operation. For example, you can use + $filter=provisioningState eq '{state}'. + :type filter: str + :param top: The number of results to get. If null is passed, returns all deployments. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_management_group_scope.metadata["url"] # type: ignore + path_format_arguments = { + "groupId": self._serialize.url("group_id", group_id, "str", max_length=90, min_length=1), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_at_management_group_scope.metadata = {"url": "/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/"} # type: ignore + + def _delete_at_subscription_scope_initial( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_at_subscription_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_at_subscription_scope_initial.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def begin_delete_at_subscription_scope( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Deletes a deployment from the deployment history. + + A template deployment that is currently running cannot be deleted. Deleting a template + deployment removes the associated deployment operations. This is an asynchronous operation that + returns a status of 202 until the template deployment is successfully deleted. The Location + response header contains the URI that is used to obtain the status of the process. While the + process is running, a call to the URI in the Location header returns a status of 202. When the + process finishes, the URI in the Location header returns a status of 204 on success. If the + asynchronous request failed, the URI in the Location header returns an error-level status code. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_at_subscription_scope_initial( + deployment_name=deployment_name, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def check_existence_at_subscription_scope( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> bool + """Checks whether the deployment exists. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def _create_or_update_at_subscription_scope_initial( + self, + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExtended" + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_at_subscription_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_at_subscription_scope_initial.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def begin_create_or_update_at_subscription_scope( + self, + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.DeploymentExtended"] + """Deploys resources at subscription scope. + + You can provide the template and parameters directly in the request or link to JSON files. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Additional parameters supplied to the operation. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either DeploymentExtended or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_at_subscription_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def get_at_subscription_scope( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExtended" + """Gets a deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExtended, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def cancel_at_subscription_scope( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Cancels a currently running template deployment. + + You can cancel a deployment only if the provisioningState is Accepted or Running. After the + deployment is canceled, the provisioningState is set to Canceled. Canceling a template + deployment stops the currently running template deployment and leaves the resources partially + deployed. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.cancel_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + cancel_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"} # type: ignore + + def _validate_at_subscription_scope_initial( + self, + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.DeploymentValidateResult"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.DeploymentValidateResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_at_subscription_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 400]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if response.status_code == 400: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _validate_at_subscription_scope_initial.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + def begin_validate_at_subscription_scope( + self, + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.DeploymentValidateResult"] + """Validates whether the specified template is syntactically correct and will be accepted by Azure + Resource Manager.. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either DeploymentValidateResult or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentValidateResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentValidateResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._validate_at_subscription_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + def _what_if_at_subscription_scope_initial( + self, + deployment_name, # type: str + parameters, # type: "models.DeploymentWhatIf" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.WhatIfOperationResult"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.WhatIfOperationResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._what_if_at_subscription_scope_initial.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "DeploymentWhatIf") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + _what_if_at_subscription_scope_initial.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + def begin_what_if_at_subscription_scope( + self, + deployment_name, # type: str + parameters, # type: "models.DeploymentWhatIf" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.WhatIfOperationResult"] + """Returns changes that will be made by the deployment if executed at the scope of the + subscription. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to What If. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentWhatIf + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either WhatIfOperationResult or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfOperationResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.WhatIfOperationResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._what_if_at_subscription_scope_initial( + deployment_name=deployment_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_what_if_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + def export_template_at_subscription_scope( + self, + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExportResult" + """Exports the template used for specified deployment. + + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExportResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExportResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExportResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.export_template_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + export_template_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate"} # type: ignore + + def list_at_subscription_scope( + self, + filter=None, # type: Optional[str] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DeploymentListResult"] + """Get all the deployments for a subscription. + + :param filter: The filter to apply on the operation. For example, you can use + $filter=provisioningState eq '{state}'. + :type filter: str + :param top: The number of results to get. If null is passed, returns all deployments. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_subscription_scope.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_at_subscription_scope.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/"} # type: ignore + + def _delete_initial( + self, + resource_group_name, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def begin_delete( + self, + resource_group_name, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Deletes a deployment from the deployment history. + + A template deployment that is currently running cannot be deleted. Deleting a template + deployment removes the associated deployment operations. Deleting a template deployment does + not affect the state of the resource group. This is an asynchronous operation that returns a + status of 202 until the template deployment is successfully deleted. The Location response + header contains the URI that is used to obtain the status of the process. While the process is + running, a call to the URI in the Location header returns a status of 202. When the process + finishes, the URI in the Location header returns a status of 204 on success. If the + asynchronous request failed, the URI in the Location header returns an error-level status code. + + :param resource_group_name: The name of the resource group with the deployment to delete. The + name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + deployment_name=deployment_name, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def check_existence( + self, + resource_group_name, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> bool + """Checks whether the deployment exists. + + :param resource_group_name: The name of the resource group with the deployment to check. The + name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def _create_or_update_initial( + self, + resource_group_name, # type: str + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExtended" + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def begin_create_or_update( + self, + resource_group_name, # type: str + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.DeploymentExtended"] + """Deploys resources to a resource group. + + You can provide the template and parameters directly in the request or link to JSON files. + + :param resource_group_name: The name of the resource group to deploy the resources to. The name + is case insensitive. The resource group must already exist. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Additional parameters supplied to the operation. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either DeploymentExtended or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def get( + self, + resource_group_name, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExtended" + """Gets a deployment. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExtended, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExtended + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExtended"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExtended", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}"} # type: ignore + + def cancel( + self, + resource_group_name, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Cancels a currently running template deployment. + + You can cancel a deployment only if the provisioningState is Accepted or Running. After the + deployment is canceled, the provisioningState is set to Canceled. Canceling a template + deployment stops the currently running template deployment and leaves the resource group + partially deployed. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.cancel.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + cancel.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/cancel"} # type: ignore + + def _validate_initial( + self, + resource_group_name, # type: str + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.DeploymentValidateResult"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.DeploymentValidateResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "Deployment") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 400]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if response.status_code == 400: + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _validate_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + def begin_validate( + self, + resource_group_name, # type: str + deployment_name, # type: str + parameters, # type: "models.Deployment" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.DeploymentValidateResult"] + """Validates whether the specified template is syntactically correct and will be accepted by Azure + Resource Manager.. + + :param resource_group_name: The name of the resource group the template will be deployed to. + The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.Deployment + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either DeploymentValidateResult or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentValidateResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentValidateResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._validate_initial( + resource_group_name=resource_group_name, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("DeploymentValidateResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/validate"} # type: ignore + + def _what_if_initial( + self, + resource_group_name, # type: str + deployment_name, # type: str + parameters, # type: "models.DeploymentWhatIf" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.WhatIfOperationResult"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.WhatIfOperationResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._what_if_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "DeploymentWhatIf") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + response_headers = {} + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Retry-After"] = self._deserialize("str", response.headers.get("Retry-After")) + + if cls: + return cls(pipeline_response, deserialized, response_headers) + + return deserialized + + _what_if_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + def begin_what_if( + self, + resource_group_name, # type: str + deployment_name, # type: str + parameters, # type: "models.DeploymentWhatIf" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.WhatIfOperationResult"] + """Returns changes that will be made by the deployment if executed at the scope of the resource + group. + + :param resource_group_name: The name of the resource group the template will be deployed to. + The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :param parameters: Parameters to validate. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentWhatIf + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either WhatIfOperationResult or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.WhatIfOperationResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.WhatIfOperationResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._what_if_initial( + resource_group_name=resource_group_name, + deployment_name=deployment_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("WhatIfOperationResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_what_if.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/whatIf"} # type: ignore + + def export_template( + self, + resource_group_name, # type: str + deployment_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.DeploymentExportResult" + """Exports the template used for specified deployment. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param deployment_name: The name of the deployment. + :type deployment_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: DeploymentExportResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentExportResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentExportResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.export_template.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "deploymentName": self._serialize.url( + "deployment_name", deployment_name, "str", max_length=64, min_length=1, pattern=r"^[-\w\._\(\)]+$" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("DeploymentExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + export_template.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}/exportTemplate"} # type: ignore + + def list_by_resource_group( + self, + resource_group_name, # type: str + filter=None, # type: Optional[str] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.DeploymentListResult"] + """Get all the deployments for a resource group. + + :param resource_group_name: The name of the resource group with the deployments to get. The + name is case insensitive. + :type resource_group_name: str + :param filter: The filter to apply on the operation. For example, you can use + $filter=provisioningState eq '{state}'. + :type filter: str + :param top: The number of results to get. If null is passed, returns all deployments. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either DeploymentListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.DeploymentListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.DeploymentListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_by_resource_group.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("DeploymentListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_by_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/"} # type: ignore + + def calculate_template_hash( + self, + template, # type: object + **kwargs # type: Any + ): + # type: (...) -> "models.TemplateHashResult" + """Calculate the hash of the given template. + + :param template: The template provided to calculate hash. + :type template: object + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TemplateHashResult, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TemplateHashResult + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TemplateHashResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.calculate_template_hash.metadata["url"] # type: ignore + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(template, "object") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("TemplateHashResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + calculate_template_hash.metadata = {"url": "/providers/Microsoft.Resources/calculateTemplateHash"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_operations.py new file mode 100644 index 00000000..20ca9256 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_operations.py @@ -0,0 +1,111 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.mgmt.core.exceptions import ARMErrorFormat + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar + + T = TypeVar("T") + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + + +class Operations(object): + """Operations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def list( + self, **kwargs # type: Any + ): + # type: (...) -> Iterable["models.OperationListResult"] + """Lists all of the available Microsoft.Resources REST API operations. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either OperationListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.OperationListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.OperationListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("OperationListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list.metadata = {"url": "/providers/Microsoft.Resources/operations"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_providers_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_providers_operations.py new file mode 100644 index 00000000..f3030c5b --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_providers_operations.py @@ -0,0 +1,437 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.mgmt.core.exceptions import ARMErrorFormat + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar + + T = TypeVar("T") + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + + +class ProvidersOperations(object): + """ProvidersOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def unregister( + self, + resource_provider_namespace, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.Provider" + """Unregister a subscription from a resource provider. + + :param resource_provider_namespace: The namespace of the resource provider to unregister. + :type resource_provider_namespace: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Provider, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.Provider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.Provider"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.unregister.metadata["url"] # type: ignore + path_format_arguments = { + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Provider", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + unregister.metadata = {"url": "/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/unregister"} # type: ignore + + def register( + self, + resource_provider_namespace, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.Provider" + """Registers a subscription with a resource provider. + + :param resource_provider_namespace: The namespace of the resource provider to register. + :type resource_provider_namespace: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Provider, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.Provider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.Provider"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.register.metadata["url"] # type: ignore + path_format_arguments = { + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.post(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Provider", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + register.metadata = {"url": "/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/register"} # type: ignore + + def list( + self, + top=None, # type: Optional[int] + expand=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.ProviderListResult"] + """Gets all resource providers for a subscription. + + :param top: The number of results to return. If null is passed returns all deployments. + :type top: int + :param expand: The properties to include in the results. For example, use &$expand=metadata in + the query string to retrieve resource provider metadata. To include property aliases in + response, use $expand=resourceTypes/aliases. + :type expand: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ProviderListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.ProviderListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ProviderListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ProviderListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list.metadata = {"url": "/subscriptions/{subscriptionId}/providers"} # type: ignore + + def list_at_tenant_scope( + self, + top=None, # type: Optional[int] + expand=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.ProviderListResult"] + """Gets all resource providers for the tenant. + + :param top: The number of results to return. If null is passed returns all providers. + :type top: int + :param expand: The properties to include in the results. For example, use &$expand=metadata in + the query string to retrieve resource provider metadata. To include property aliases in + response, use $expand=resourceTypes/aliases. + :type expand: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ProviderListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.ProviderListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ProviderListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_at_tenant_scope.metadata["url"] # type: ignore + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ProviderListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_at_tenant_scope.metadata = {"url": "/providers"} # type: ignore + + def get( + self, + resource_provider_namespace, # type: str + expand=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> "models.Provider" + """Gets the specified resource provider. + + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param expand: The $expand query parameter. For example, to include property aliases in + response, use $expand=resourceTypes/aliases. + :type expand: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Provider, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.Provider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.Provider"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get.metadata["url"] # type: ignore + path_format_arguments = { + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Provider", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {"url": "/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}"} # type: ignore + + def get_at_tenant_scope( + self, + resource_provider_namespace, # type: str + expand=None, # type: Optional[str] + **kwargs # type: Any + ): + # type: (...) -> "models.Provider" + """Gets the specified resource provider at the tenant level. + + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param expand: The $expand query parameter. For example, to include property aliases in + response, use $expand=resourceTypes/aliases. + :type expand: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: Provider, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.Provider + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.Provider"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_tenant_scope.metadata["url"] # type: ignore + path_format_arguments = { + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("Provider", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_tenant_scope.metadata = {"url": "/providers/{resourceProviderNamespace}"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_resource_groups_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_resource_groups_operations.py new file mode 100644 index 00000000..86556fbb --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_resource_groups_operations.py @@ -0,0 +1,627 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.arm_polling import ARMPolling + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union + + T = TypeVar("T") + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + + +class ResourceGroupsOperations(object): + """ResourceGroupsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def check_existence( + self, + resource_group_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> bool + """Checks whether a resource group exists. + + :param resource_group_name: The name of the resource group to check. The name is case + insensitive. + :type resource_group_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.check_existence.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + def create_or_update( + self, + resource_group_name, # type: str + parameters, # type: "models.ResourceGroup" + **kwargs # type: Any + ): + # type: (...) -> "models.ResourceGroup" + """Creates or updates a resource group. + + :param resource_group_name: The name of the resource group to create or update. Can include + alphanumeric, underscore, parentheses, hyphen, period (except at end), and Unicode characters + that match the allowed characters. + :type resource_group_name: str + :param parameters: Parameters supplied to the create or update a resource group. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroup + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ResourceGroup, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceGroup"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_or_update.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ResourceGroup") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("ResourceGroup", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("ResourceGroup", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + def _delete_initial( + self, + resource_group_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self._delete_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + def begin_delete( + self, + resource_group_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Deletes a resource group. + + When you delete a resource group, all of its resources are also deleted. Deleting a resource + group deletes all of its template deployments and currently stored operations. + + :param resource_group_name: The name of the resource group to delete. The name is case + insensitive. + :type resource_group_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial(resource_group_name=resource_group_name, cls=lambda x, y, z: x, **kwargs) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + def get( + self, + resource_group_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.ResourceGroup" + """Gets a resource group. + + :param resource_group_name: The name of the resource group to get. The name is case + insensitive. + :type resource_group_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ResourceGroup, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceGroup"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("ResourceGroup", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + def update( + self, + resource_group_name, # type: str + parameters, # type: "models.ResourceGroupPatchable" + **kwargs # type: Any + ): + # type: (...) -> "models.ResourceGroup" + """Updates a resource group. + + Resource groups can be updated through a simple PATCH operation to a group address. The format + of the request is the same as that for creating a resource group. If a field is unspecified, + the current value is retained. + + :param resource_group_name: The name of the resource group to update. The name is case + insensitive. + :type resource_group_name: str + :param parameters: Parameters supplied to update a resource group. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroupPatchable + :keyword callable cls: A custom type or function that will be passed the direct response + :return: ResourceGroup, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroup + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceGroup"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.update.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ResourceGroupPatchable") + body_content_kwargs["content"] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("ResourceGroup", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}"} # type: ignore + + def _export_template_initial( + self, + resource_group_name, # type: str + parameters, # type: "models.ExportTemplateRequest" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.ResourceGroupExportResult"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.ResourceGroupExportResult"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._export_template_initial.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ExportTemplateRequest") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("ResourceGroupExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _export_template_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate"} # type: ignore + + def begin_export_template( + self, + resource_group_name, # type: str + parameters, # type: "models.ExportTemplateRequest" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.ResourceGroupExportResult"] + """Captures the specified resource group as a template. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + :type resource_group_name: str + :param parameters: Parameters for exporting the template. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ExportTemplateRequest + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either ResourceGroupExportResult or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroupExportResult] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceGroupExportResult"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._export_template_initial( + resource_group_name=resource_group_name, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("ResourceGroupExportResult", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, lro_options={"final-state-via": "location"}, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_export_template.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/exportTemplate"} # type: ignore + + def list( + self, + filter=None, # type: Optional[str] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.ResourceGroupListResult"] + """Gets all the resource groups for a subscription. + + :param filter: The filter to apply on the operation.:code:`<br>`:code:`<br>`You can filter by + tag names and values. For example, to filter for a tag name and value, use $filter=tagName eq + 'tag1' and tagValue eq 'Value1'. + :type filter: str + :param top: The number of results to return. If null is passed, returns all resource groups. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ResourceGroupListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceGroupListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceGroupListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ResourceGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_resources_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_resources_operations.py new file mode 100644 index 00000000..ad148cd4 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_resources_operations.py @@ -0,0 +1,1565 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.arm_polling import ARMPolling + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar, Union + + T = TypeVar("T") + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + + +class ResourcesOperations(object): + """ResourcesOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def list_by_resource_group( + self, + resource_group_name, # type: str + filter=None, # type: Optional[str] + expand=None, # type: Optional[str] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.ResourceListResult"] + """Get all the resources for a resource group. + + :param resource_group_name: The resource group with the resources to get. + :type resource_group_name: str + :param filter: The filter to apply on the operation.:code:`<br>`:code:`<br>`The properties you + can use for eq (equals) or ne (not equals) are: location, resourceType, name, resourceGroup, + identity, identity/principalId, plan, plan/publisher, plan/product, plan/name, plan/version, + and plan/promotionCode.:code:`<br>`:code:`<br>`For example, to filter by a resource type, use: + $filter=resourceType eq 'Microsoft.Network/virtualNetworks':code:`<br>`:code:`<br>`You can use + substringof(value, property) in the filter. The properties you can use for substring are: name + and resourceGroup.:code:`<br>`:code:`<br>`For example, to get all resources with 'demo' + anywhere in the name, use: $filter=substringof('demo', name):code:`<br>`:code:`<br>`You can + link more than one substringof together by adding and/or operators.:code:`<br>`:code:`<br>`You + can filter by tag names and values. For example, to filter for a tag name and value, use + $filter=tagName eq 'tag1' and tagValue eq 'Value1'. When you filter by a tag name and value, + the tags for each resource are not returned in the results.:code:`<br>`:code:`<br>`You can use + some properties together when filtering. The combinations you can use are: substringof and/or + resourceType, plan and plan/publisher and plan/name, identity and identity/principalId. + :type filter: str + :param expand: Comma-separated list of additional properties to be included in the response. + Valid values include ``createdTime``\ , ``changedTime`` and ``provisioningState``. For example, + ``$expand=createdTime,changedTime``. + :type expand: str + :param top: The number of results to return. If null is passed, returns all resources. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ResourceListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list_by_resource_group.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ResourceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list_by_resource_group.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources"} # type: ignore + + def _move_resources_initial( + self, + source_resource_group_name, # type: str + parameters, # type: "models.ResourcesMoveInfo" + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._move_resources_initial.metadata["url"] # type: ignore + path_format_arguments = { + "sourceResourceGroupName": self._serialize.url( + "source_resource_group_name", + source_resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ResourcesMoveInfo") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _move_resources_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources"} # type: ignore + + def begin_move_resources( + self, + source_resource_group_name, # type: str + parameters, # type: "models.ResourcesMoveInfo" + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Moves resources from one resource group to another resource group. + + The resources to move must be in the same source resource group. The target resource group may + be in a different subscription. When moving resources, both the source group and the target + group are locked for the duration of the operation. Write and delete operations are blocked on + the groups until the move completes. + + :param source_resource_group_name: The name of the resource group containing the resources to + move. + :type source_resource_group_name: str + :param parameters: Parameters for moving resources. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourcesMoveInfo + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._move_resources_initial( + source_resource_group_name=source_resource_group_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_move_resources.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/moveResources"} # type: ignore + + def _validate_move_resources_initial( + self, + source_resource_group_name, # type: str + parameters, # type: "models.ResourcesMoveInfo" + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._validate_move_resources_initial.metadata["url"] # type: ignore + path_format_arguments = { + "sourceResourceGroupName": self._serialize.url( + "source_resource_group_name", + source_resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "ResourcesMoveInfo") + body_content_kwargs["content"] = body_content + request = self._client.post(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _validate_move_resources_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources"} # type: ignore + + def begin_validate_move_resources( + self, + source_resource_group_name, # type: str + parameters, # type: "models.ResourcesMoveInfo" + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Validates whether resources can be moved from one resource group to another resource group. + + This operation checks whether the specified resources can be moved to the target. The resources + to move must be in the same source resource group. The target resource group may be in a + different subscription. If validation succeeds, it returns HTTP response code 204 (no content). + If validation fails, it returns HTTP response code 409 (Conflict) with an error message. + Retrieve the URL in the Location header value to check the result of the long-running + operation. + + :param source_resource_group_name: The name of the resource group containing the resources to + validate for move. + :type source_resource_group_name: str + :param parameters: Parameters for moving resources. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.ResourcesMoveInfo + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._validate_move_resources_initial( + source_resource_group_name=source_resource_group_name, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_validate_move_resources.metadata = {"url": "/subscriptions/{subscriptionId}/resourceGroups/{sourceResourceGroupName}/validateMoveResources"} # type: ignore + + def list( + self, + filter=None, # type: Optional[str] + expand=None, # type: Optional[str] + top=None, # type: Optional[int] + **kwargs # type: Any + ): + # type: (...) -> Iterable["models.ResourceListResult"] + """Get all the resources in a subscription. + + :param filter: The filter to apply on the operation.:code:`<br>`:code:`<br>`The properties you + can use for eq (equals) or ne (not equals) are: location, resourceType, name, resourceGroup, + identity, identity/principalId, plan, plan/publisher, plan/product, plan/name, plan/version, + and plan/promotionCode.:code:`<br>`:code:`<br>`For example, to filter by a resource type, use: + $filter=resourceType eq 'Microsoft.Network/virtualNetworks':code:`<br>`:code:`<br>`You can use + substringof(value, property) in the filter. The properties you can use for substring are: name + and resourceGroup.:code:`<br>`:code:`<br>`For example, to get all resources with 'demo' + anywhere in the name, use: $filter=substringof('demo', name):code:`<br>`:code:`<br>`You can + link more than one substringof together by adding and/or operators.:code:`<br>`:code:`<br>`You + can filter by tag names and values. For example, to filter for a tag name and value, use + $filter=tagName eq 'tag1' and tagValue eq 'Value1'. When you filter by a tag name and value, + the tags for each resource are not returned in the results.:code:`<br>`:code:`<br>`You can use + some properties together when filtering. The combinations you can use are: substringof and/or + resourceType, plan and plan/publisher and plan/name, identity and identity/principalId. + :type filter: str + :param expand: Comma-separated list of additional properties to be included in the response. + Valid values include ``createdTime``\ , ``changedTime`` and ``provisioningState``. For example, + ``$expand=createdTime,changedTime``. + :type expand: str + :param top: The number of results to return. If null is passed, returns all resource groups. + :type top: int + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either ResourceListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.ResourceListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.ResourceListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + if filter is not None: + query_parameters["$filter"] = self._serialize.query("filter", filter, "str") + if expand is not None: + query_parameters["$expand"] = self._serialize.query("expand", expand, "str") + if top is not None: + query_parameters["$top"] = self._serialize.query("top", top, "int") + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ResourceListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list.metadata = {"url": "/subscriptions/{subscriptionId}/resources"} # type: ignore + + def check_existence( + self, + resource_group_name, # type: str + resource_provider_namespace, # type: str + parent_resource_path, # type: str + resource_type, # type: str + resource_name, # type: str + api_version, # type: str + **kwargs # type: Any + ): + # type: (...) -> bool + """Checks whether a resource exists. + + :param resource_group_name: The name of the resource group containing the resource to check. + The name is case insensitive. + :type resource_group_name: str + :param resource_provider_namespace: The resource provider of the resource to check. + :type resource_provider_namespace: str + :param parent_resource_path: The parent resource identity. + :type parent_resource_path: str + :param resource_type: The resource type. + :type resource_type: str + :param resource_name: The name of the resource to check whether it exists. + :type resource_name: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self.check_existence.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "parentResourcePath": self._serialize.url( + "parent_resource_path", parent_resource_path, "str", skip_quote=True + ), + "resourceType": self._serialize.url("resource_type", resource_type, "str", skip_quote=True), + "resourceName": self._serialize.url("resource_name", resource_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + def _delete_initial( + self, + resource_group_name, # type: str + resource_provider_namespace, # type: str + parent_resource_path, # type: str + resource_type, # type: str + resource_name, # type: str + api_version, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self._delete_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "parentResourcePath": self._serialize.url( + "parent_resource_path", parent_resource_path, "str", skip_quote=True + ), + "resourceType": self._serialize.url("resource_type", resource_type, "str", skip_quote=True), + "resourceName": self._serialize.url("resource_name", resource_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + def begin_delete( + self, + resource_group_name, # type: str + resource_provider_namespace, # type: str + parent_resource_path, # type: str + resource_type, # type: str + resource_name, # type: str + api_version, # type: str + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Deletes a resource. + + :param resource_group_name: The name of the resource group that contains the resource to + delete. The name is case insensitive. + :type resource_group_name: str + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param parent_resource_path: The parent resource identity. + :type parent_resource_path: str + :param resource_type: The resource type. + :type resource_type: str + :param resource_name: The name of the resource to delete. + :type resource_name: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + resource_provider_namespace=resource_provider_namespace, + parent_resource_path=parent_resource_path, + resource_type=resource_type, + resource_name=resource_name, + api_version=api_version, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + def _create_or_update_initial( + self, + resource_group_name, # type: str + resource_provider_namespace, # type: str + parent_resource_path, # type: str + resource_type, # type: str + resource_name, # type: str + api_version, # type: str + parameters, # type: "models.GenericResource" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.GenericResource"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.GenericResource"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "parentResourcePath": self._serialize.url( + "parent_resource_path", parent_resource_path, "str", skip_quote=True + ), + "resourceType": self._serialize.url("resource_type", resource_type, "str", skip_quote=True), + "resourceName": self._serialize.url("resource_name", resource_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "GenericResource") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + def begin_create_or_update( + self, + resource_group_name, # type: str + resource_provider_namespace, # type: str + parent_resource_path, # type: str + resource_type, # type: str + resource_name, # type: str + api_version, # type: str + parameters, # type: "models.GenericResource" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.GenericResource"] + """Creates a resource. + + :param resource_group_name: The name of the resource group for the resource. The name is case + insensitive. + :type resource_group_name: str + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param parent_resource_path: The parent resource identity. + :type parent_resource_path: str + :param resource_type: The resource type of the resource to create. + :type resource_type: str + :param resource_name: The name of the resource to create. + :type resource_name: str + :param api_version: The API version to use for the operation. + :type api_version: str + :param parameters: Parameters for creating or updating the resource. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either GenericResource or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_initial( + resource_group_name=resource_group_name, + resource_provider_namespace=resource_provider_namespace, + parent_resource_path=parent_resource_path, + resource_type=resource_type, + resource_name=resource_name, + api_version=api_version, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + def _update_initial( + self, + resource_group_name, # type: str + resource_provider_namespace, # type: str + parent_resource_path, # type: str + resource_type, # type: str + resource_name, # type: str + api_version, # type: str + parameters, # type: "models.GenericResource" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.GenericResource"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.GenericResource"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._update_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "parentResourcePath": self._serialize.url( + "parent_resource_path", parent_resource_path, "str", skip_quote=True + ), + "resourceType": self._serialize.url("resource_type", resource_type, "str", skip_quote=True), + "resourceName": self._serialize.url("resource_name", resource_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "GenericResource") + body_content_kwargs["content"] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_initial.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + def begin_update( + self, + resource_group_name, # type: str + resource_provider_namespace, # type: str + parent_resource_path, # type: str + resource_type, # type: str + resource_name, # type: str + api_version, # type: str + parameters, # type: "models.GenericResource" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.GenericResource"] + """Updates a resource. + + :param resource_group_name: The name of the resource group for the resource. The name is case + insensitive. + :type resource_group_name: str + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param parent_resource_path: The parent resource identity. + :type parent_resource_path: str + :param resource_type: The resource type of the resource to update. + :type resource_type: str + :param resource_name: The name of the resource to update. + :type resource_name: str + :param api_version: The API version to use for the operation. + :type api_version: str + :param parameters: Parameters for updating the resource. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either GenericResource or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_initial( + resource_group_name=resource_group_name, + resource_provider_namespace=resource_provider_namespace, + parent_resource_path=parent_resource_path, + resource_type=resource_type, + resource_name=resource_name, + api_version=api_version, + parameters=parameters, + cls=lambda x, y, z: x, + **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + def get( + self, + resource_group_name, # type: str + resource_provider_namespace, # type: str + parent_resource_path, # type: str + resource_type, # type: str + resource_name, # type: str + api_version, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.GenericResource" + """Gets a resource. + + :param resource_group_name: The name of the resource group containing the resource to get. The + name is case insensitive. + :type resource_group_name: str + :param resource_provider_namespace: The namespace of the resource provider. + :type resource_provider_namespace: str + :param parent_resource_path: The parent resource identity. + :type parent_resource_path: str + :param resource_type: The resource type of the resource. + :type resource_type: str + :param resource_name: The name of the resource to get. + :type resource_name: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: GenericResource, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self.get.metadata["url"] # type: ignore + path_format_arguments = { + "resourceGroupName": self._serialize.url( + "resource_group_name", + resource_group_name, + "str", + max_length=90, + min_length=1, + pattern=r"^[-\w\._\(\)]+$", + ), + "resourceProviderNamespace": self._serialize.url( + "resource_provider_namespace", resource_provider_namespace, "str" + ), + "parentResourcePath": self._serialize.url( + "parent_resource_path", parent_resource_path, "str", skip_quote=True + ), + "resourceType": self._serialize.url("resource_type", resource_type, "str", skip_quote=True), + "resourceName": self._serialize.url("resource_name", resource_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"} # type: ignore + + def check_existence_by_id( + self, + resource_id, # type: str + api_version, # type: str + **kwargs # type: Any + ): + # type: (...) -> bool + """Checks by ID whether a resource exists. + + :param resource_id: The fully qualified ID of the resource, including the resource name and + resource type. Use the format, /subscriptions/{guid}/resourceGroups/{resource-group- + name}/{resource-provider-namespace}/{resource-type}/{resource-name}. + :type resource_id: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: bool, or the result of cls(response) + :rtype: bool + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self.check_existence_by_id.metadata["url"] # type: ignore + path_format_arguments = { + "resourceId": self._serialize.url("resource_id", resource_id, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.head(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [204, 404]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + return 200 <= response.status_code <= 299 + + check_existence_by_id.metadata = {"url": "/{resourceId}"} # type: ignore + + def _delete_by_id_initial( + self, + resource_id, # type: str + api_version, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self._delete_by_id_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceId": self._serialize.url("resource_id", resource_id, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + _delete_by_id_initial.metadata = {"url": "/{resourceId}"} # type: ignore + + def begin_delete_by_id( + self, + resource_id, # type: str + api_version, # type: str + **kwargs # type: Any + ): + # type: (...) -> LROPoller[None] + """Deletes a resource by ID. + + :param resource_id: The fully qualified ID of the resource, including the resource name and + resource type. Use the format, /subscriptions/{guid}/resourceGroups/{resource-group- + name}/{resource-provider-namespace}/{resource-type}/{resource-name}. + :type resource_id: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either None or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[None] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType[None] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._delete_by_id_initial( + resource_id=resource_id, api_version=api_version, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + if cls: + return cls(pipeline_response, None, {}) + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_delete_by_id.metadata = {"url": "/{resourceId}"} # type: ignore + + def _create_or_update_by_id_initial( + self, + resource_id, # type: str + api_version, # type: str + parameters, # type: "models.GenericResource" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.GenericResource"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.GenericResource"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._create_or_update_by_id_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceId": self._serialize.url("resource_id", resource_id, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "GenericResource") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _create_or_update_by_id_initial.metadata = {"url": "/{resourceId}"} # type: ignore + + def begin_create_or_update_by_id( + self, + resource_id, # type: str + api_version, # type: str + parameters, # type: "models.GenericResource" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.GenericResource"] + """Create a resource by ID. + + :param resource_id: The fully qualified ID of the resource, including the resource name and + resource type. Use the format, /subscriptions/{guid}/resourceGroups/{resource-group- + name}/{resource-provider-namespace}/{resource-type}/{resource-name}. + :type resource_id: str + :param api_version: The API version to use for the operation. + :type api_version: str + :param parameters: Create or update resource parameters. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either GenericResource or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._create_or_update_by_id_initial( + resource_id=resource_id, api_version=api_version, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_create_or_update_by_id.metadata = {"url": "/{resourceId}"} # type: ignore + + def _update_by_id_initial( + self, + resource_id, # type: str + api_version, # type: str + parameters, # type: "models.GenericResource" + **kwargs # type: Any + ): + # type: (...) -> Optional["models.GenericResource"] + cls = kwargs.pop("cls", None) # type: ClsType[Optional["models.GenericResource"]] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self._update_by_id_initial.metadata["url"] # type: ignore + path_format_arguments = { + "resourceId": self._serialize.url("resource_id", resource_id, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "GenericResource") + body_content_kwargs["content"] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = None + if response.status_code == 200: + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + _update_by_id_initial.metadata = {"url": "/{resourceId}"} # type: ignore + + def begin_update_by_id( + self, + resource_id, # type: str + api_version, # type: str + parameters, # type: "models.GenericResource" + **kwargs # type: Any + ): + # type: (...) -> LROPoller["models.GenericResource"] + """Updates a resource by ID. + + :param resource_id: The fully qualified ID of the resource, including the resource name and + resource type. Use the format, /subscriptions/{guid}/resourceGroups/{resource-group- + name}/{resource-provider-namespace}/{resource-type}/{resource-name}. + :type resource_id: str + :param api_version: The API version to use for the operation. + :type api_version: str + :param parameters: Update resource parameters. + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :keyword callable cls: A custom type or function that will be passed the direct response + :keyword str continuation_token: A continuation token to restart a poller from a saved state. + :keyword polling: True for ARMPolling, False for no polling, or a + polling object for personal polling strategy + :paramtype polling: bool or ~azure.core.polling.PollingMethod + :keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present. + :return: An instance of LROPoller that returns either GenericResource or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + polling = kwargs.pop("polling", True) # type: Union[bool, PollingMethod] + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token = kwargs.pop("continuation_token", None) # type: Optional[str] + if cont_token is None: + raw_result = self._update_by_id_initial( + resource_id=resource_id, api_version=api_version, parameters=parameters, cls=lambda x, y, z: x, **kwargs + ) + + kwargs.pop("error_map", None) + kwargs.pop("content_type", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + return deserialized + + if polling is True: + polling_method = ARMPolling(lro_delay, **kwargs) + elif polling is False: + polling_method = NoPolling() + else: + polling_method = polling + if cont_token: + return LROPoller.from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + else: + return LROPoller(self._client, raw_result, get_long_running_output, polling_method) + + begin_update_by_id.metadata = {"url": "/{resourceId}"} # type: ignore + + def get_by_id( + self, + resource_id, # type: str + api_version, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.GenericResource" + """Gets a resource by ID. + + :param resource_id: The fully qualified ID of the resource, including the resource name and + resource type. Use the format, /subscriptions/{guid}/resourceGroups/{resource-group- + name}/{resource-provider-namespace}/{resource-type}/{resource-name}. + :type resource_id: str + :param api_version: The API version to use for the operation. + :type api_version: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: GenericResource, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.GenericResource + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.GenericResource"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + accept = "application/json" + + # Construct URL + url = self.get_by_id.metadata["url"] # type: ignore + path_format_arguments = { + "resourceId": self._serialize.url("resource_id", resource_id, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("GenericResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_by_id.metadata = {"url": "/{resourceId}"} # type: ignore diff --git a/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_tags_operations.py b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_tags_operations.py new file mode 100644 index 00000000..30445e7c --- /dev/null +++ b/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_tags_operations.py @@ -0,0 +1,600 @@ +# coding=utf-8 +# -------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See License.txt in the project root for license information. +# Code generated by Microsoft (R) AutoRest Code Generator. +# Changes may cause incorrect behavior and will be lost if the code is regenerated. +# -------------------------------------------------------------------------- +from typing import TYPE_CHECKING + +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.pipeline.transport import HttpRequest, HttpResponse +from azure.mgmt.core.exceptions import ARMErrorFormat + +from .. import models + +if TYPE_CHECKING: + # pylint: disable=unused-import,ungrouped-imports + from typing import Any, Callable, Dict, Iterable, Optional, TypeVar + + T = TypeVar("T") + ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + + +class TagsOperations(object): + """TagsOperations operations. + + You should not instantiate this class directly. Instead, you should create a Client instance that + instantiates it for you and attaches it as an attribute. + + :ivar models: Alias to model classes used in this operation group. + :type models: ~azure.mgmt.resource.resources.v2020_06_01.models + :param client: Client for service requests. + :param config: Configuration of service client. + :param serializer: An object model serializer. + :param deserializer: An object model deserializer. + """ + + models = models + + def __init__(self, client, config, serializer, deserializer): + self._client = client + self._serialize = serializer + self._deserialize = deserializer + self._config = config + + def delete_value( + self, + tag_name, # type: str + tag_value, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Deletes a predefined tag value for a predefined tag name. + + This operation allows deleting a value from the list of predefined values for an existing + predefined tag name. The value being deleted must not be in use as a tag value for the given + tag name for any resource. + + :param tag_name: The name of the tag. + :type tag_name: str + :param tag_value: The value of the tag to delete. + :type tag_value: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.delete_value.metadata["url"] # type: ignore + path_format_arguments = { + "tagName": self._serialize.url("tag_name", tag_name, "str"), + "tagValue": self._serialize.url("tag_value", tag_value, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete_value.metadata = {"url": "/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}"} # type: ignore + + def create_or_update_value( + self, + tag_name, # type: str + tag_value, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.TagValue" + """Creates a predefined value for a predefined tag name. + + This operation allows adding a value to the list of predefined values for an existing + predefined tag name. A tag value can have a maximum of 256 characters. + + :param tag_name: The name of the tag. + :type tag_name: str + :param tag_value: The value of the tag to create. + :type tag_value: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TagValue, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TagValue + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagValue"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.create_or_update_value.metadata["url"] # type: ignore + path_format_arguments = { + "tagName": self._serialize.url("tag_name", tag_name, "str"), + "tagValue": self._serialize.url("tag_value", tag_value, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.put(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("TagValue", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("TagValue", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update_value.metadata = {"url": "/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}"} # type: ignore + + def create_or_update( + self, + tag_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.TagDetails" + """Creates a predefined tag name. + + This operation allows adding a name to the list of predefined tag names for the given + subscription. A tag name can have a maximum of 512 characters and is case-insensitive. Tag + names cannot have the following prefixes which are reserved for Azure use: 'microsoft', + 'azure', 'windows'. + + :param tag_name: The name of the tag to create. + :type tag_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TagDetails, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TagDetails + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagDetails"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.create_or_update.metadata["url"] # type: ignore + path_format_arguments = { + "tagName": self._serialize.url("tag_name", tag_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.put(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if response.status_code == 200: + deserialized = self._deserialize("TagDetails", pipeline_response) + + if response.status_code == 201: + deserialized = self._deserialize("TagDetails", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update.metadata = {"url": "/subscriptions/{subscriptionId}/tagNames/{tagName}"} # type: ignore + + def delete( + self, + tag_name, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Deletes a predefined tag name. + + This operation allows deleting a name from the list of predefined tag names for the given + subscription. The name being deleted must not be in use as a tag name for any resource. All + predefined values for the given name must have already been deleted. + + :param tag_name: The name of the tag. + :type tag_name: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.delete.metadata["url"] # type: ignore + path_format_arguments = { + "tagName": self._serialize.url("tag_name", tag_name, "str"), + "subscriptionId": self._serialize.url("self._config.subscription_id", self._config.subscription_id, "str"), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200, 204]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete.metadata = {"url": "/subscriptions/{subscriptionId}/tagNames/{tagName}"} # type: ignore + + def list( + self, **kwargs # type: Any + ): + # type: (...) -> Iterable["models.TagsListResult"] + """Gets a summary of tag usage under the subscription. + + This operation performs a union of predefined tags, resource tags, resource group tags and + subscription tags, and returns a summary of usage for each tag name and value under the given + subscription. In case of a large number of tags, this operation may return a previously cached + result. + + :keyword callable cls: A custom type or function that will be passed the direct response + :return: An iterator like instance of either TagsListResult or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.resource.resources.v2020_06_01.models.TagsListResult] + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagsListResult"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + def prepare_request(next_link=None): + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + if not next_link: + # Construct URL + url = self.list.metadata["url"] # type: ignore + path_format_arguments = { + "subscriptionId": self._serialize.url( + "self._config.subscription_id", self._config.subscription_id, "str" + ), + } + url = self._client.format_url(url, **path_format_arguments) + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + request = self._client.get(url, query_parameters, header_parameters) + else: + url = next_link + query_parameters = {} # type: Dict[str, Any] + request = self._client.get(url, query_parameters, header_parameters) + return request + + def extract_data(pipeline_response): + deserialized = self._deserialize("TagsListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + request = prepare_request(next_link) + + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + list.metadata = {"url": "/subscriptions/{subscriptionId}/tagNames"} # type: ignore + + def create_or_update_at_scope( + self, + scope, # type: str + parameters, # type: "models.TagsResource" + **kwargs # type: Any + ): + # type: (...) -> "models.TagsResource" + """Creates or updates the entire set of tags on a resource or subscription. + + This operation allows adding or replacing the entire set of tags on the specified resource or + subscription. The specified entity can have a maximum of 50 tags. + + :param scope: The resource scope. + :type scope: str + :param parameters: + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.TagsResource + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TagsResource, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TagsResource + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagsResource"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.create_or_update_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "TagsResource") + body_content_kwargs["content"] = body_content + request = self._client.put(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("TagsResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + create_or_update_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/tags/default"} # type: ignore + + def update_at_scope( + self, + scope, # type: str + parameters, # type: "models.TagsPatchResource" + **kwargs # type: Any + ): + # type: (...) -> "models.TagsResource" + """Selectively updates the set of tags on a resource or subscription. + + This operation allows replacing, merging or selectively deleting tags on the specified resource + or subscription. The specified entity can have a maximum of 50 tags at the end of the + operation. The 'replace' option replaces the entire set of existing tags with a new set. The + 'merge' option allows adding tags with new names and updating the values of tags with existing + names. The 'delete' option allows selectively deleting tags based on given names or name/value + pairs. + + :param scope: The resource scope. + :type scope: str + :param parameters: + :type parameters: ~azure.mgmt.resource.resources.v2020_06_01.models.TagsPatchResource + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TagsResource, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TagsResource + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagsResource"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + content_type = kwargs.pop("content_type", "application/json") + accept = "application/json" + + # Construct URL + url = self.update_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Content-Type"] = self._serialize.header("content_type", content_type, "str") + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + body_content_kwargs = {} # type: Dict[str, Any] + body_content = self._serialize.body(parameters, "TagsPatchResource") + body_content_kwargs["content"] = body_content + request = self._client.patch(url, query_parameters, header_parameters, **body_content_kwargs) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("TagsResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + update_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/tags/default"} # type: ignore + + def get_at_scope( + self, + scope, # type: str + **kwargs # type: Any + ): + # type: (...) -> "models.TagsResource" + """Gets the entire set of tags on a resource or subscription. + + Gets the entire set of tags on a resource or subscription. + + :param scope: The resource scope. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: TagsResource, or the result of cls(response) + :rtype: ~azure.mgmt.resource.resources.v2020_06_01.models.TagsResource + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType["models.TagsResource"] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.get_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.get(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + deserialized = self._deserialize("TagsResource", pipeline_response) + + if cls: + return cls(pipeline_response, deserialized, {}) + + return deserialized + + get_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/tags/default"} # type: ignore + + def delete_at_scope( + self, + scope, # type: str + **kwargs # type: Any + ): + # type: (...) -> None + """Deletes the entire set of tags on a resource or subscription. + + Deletes the entire set of tags on a resource or subscription. + + :param scope: The resource scope. + :type scope: str + :keyword callable cls: A custom type or function that will be passed the direct response + :return: None, or the result of cls(response) + :rtype: None + :raises: ~azure.core.exceptions.HttpResponseError + """ + cls = kwargs.pop("cls", None) # type: ClsType[None] + error_map = {401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError} + error_map.update(kwargs.pop("error_map", {})) + api_version = "2020-06-01" + accept = "application/json" + + # Construct URL + url = self.delete_at_scope.metadata["url"] # type: ignore + path_format_arguments = { + "scope": self._serialize.url("scope", scope, "str", skip_quote=True), + } + url = self._client.format_url(url, **path_format_arguments) + + # Construct parameters + query_parameters = {} # type: Dict[str, Any] + query_parameters["api-version"] = self._serialize.query("api_version", api_version, "str") + + # Construct headers + header_parameters = {} # type: Dict[str, Any] + header_parameters["Accept"] = self._serialize.header("accept", accept, "str") + + request = self._client.delete(url, query_parameters, header_parameters) + pipeline_response = self._client._pipeline.run(request, stream=False, **kwargs) + response = pipeline_response.http_response + + if response.status_code not in [200]: + map_error(status_code=response.status_code, response=response, error_map=error_map) + raise HttpResponseError(response=response, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) + + delete_at_scope.metadata = {"url": "/{scope}/providers/Microsoft.Resources/tags/default"} # type: ignore |