aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor')
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/__init__.py5
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/__init__.py18
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/_configuration.py72
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/_resource_management_client.py95
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/__init__.py11
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/_configuration.py61
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/_resource_management_client.py85
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/__init__.py25
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_deployment_operations_operations.py738
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_deployments_operations.py3668
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_operations.py104
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_providers_operations.py405
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_resource_groups_operations.py585
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_resources_operations.py1487
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/aio/operations/_tags_operations.py553
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/flatten_json/__init__.py417
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/__init__.py252
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_models.py2235
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_models_py3.py2499
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/models/_resource_management_client_enums.py146
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/__init__.py25
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_deployment_operations_operations.py788
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_deployments_operations.py3984
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_operations.py111
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_providers_operations.py437
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_resource_groups_operations.py627
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_resources_operations.py1565
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/ml/_vendor/azure_resources/operations/_tags_operations.py600
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