From b3be9370a040f795816970db648f97a656fabc6e Mon Sep 17 00:00:00 2001 From: SDKAuto Date: Fri, 25 Apr 2025 08:25:45 +0000 Subject: [PATCH] CodeGen from PR 33888 in Azure/azure-rest-api-specs Merge 0d675641c296b5126c00403d01b5005a4b109330 into 03803e4637c4c2dfe8358336d69d9735e118457d --- .../azure-mgmt-azurearcdata/README.md | 55 +- .../azure-mgmt-azurearcdata/_meta.json | 10 +- .../azure/mgmt/azurearcdata/__init__.py | 12 +- .../_azure_arc_data_management_client.py | 88 +- .../azure/mgmt/azurearcdata/_configuration.py | 18 +- .../mgmt/azurearcdata/_utils/__init__.py | 6 + .../serialization.py} | 731 +- .../azure/mgmt/azurearcdata/_vendor.py | 27 - .../azure/mgmt/azurearcdata/aio/__init__.py | 12 +- .../aio/_azure_arc_data_management_client.py | 94 +- .../mgmt/azurearcdata/aio/_configuration.py | 18 +- .../azurearcdata/aio/operations/__init__.py | 32 +- ..._active_directory_connectors_operations.py | 241 +- .../_data_controllers_operations.py | 371 +- .../operations/_failover_groups_operations.py | 532 ++ .../aio/operations/_operations.py | 53 +- .../_postgres_instances_operations.py | 313 +- .../_sql_managed_instances_operations.py | 312 +- ...l_server_availability_groups_operations.py | 2009 +++++ .../_sql_server_databases_operations.py | 680 ++ .../_sql_server_esu_licenses_operations.py | 599 ++ .../_sql_server_instances_operations.py | 1232 ++- .../_sql_server_licenses_operations.py | 590 ++ .../mgmt/azurearcdata/models/__init__.py | 413 +- ..._azure_arc_data_management_client_enums.py | 402 + .../mgmt/azurearcdata/models/_models_py3.py | 7125 ++++++++++++++--- .../mgmt/azurearcdata/operations/__init__.py | 32 +- ..._active_directory_connectors_operations.py | 275 +- .../_data_controllers_operations.py | 419 +- .../operations/_failover_groups_operations.py | 666 ++ .../azurearcdata/operations/_operations.py | 58 +- .../_postgres_instances_operations.py | 361 +- .../_sql_managed_instances_operations.py | 360 +- ...l_server_availability_groups_operations.py | 2502 ++++++ .../_sql_server_databases_operations.py | 839 ++ .../_sql_server_esu_licenses_operations.py | 796 ++ .../_sql_server_instances_operations.py | 1463 +++- .../_sql_server_licenses_operations.py | 773 ++ .../add_databases_to_availability_group.py | 45 + ...te_or_update_active_directory_connector.py | 4 +- ...pdate_arc_sql_server_availability_group.py | 79 + ...reate_or_update_arc_sql_server_database.py | 83 + .../create_or_update_data_controller.py | 4 +- .../create_or_update_failover_group.py | 50 + .../create_or_update_managed_instance_link.py | 76 + .../create_or_update_postgres_instance.py | 4 +- .../create_or_update_sql_managed_instance.py | 22 +- ...create_or_update_sql_server_esu_license.py | 54 + .../create_or_update_sql_server_instance.py | 37 +- .../create_or_update_sql_server_license.py | 54 + .../create_sql_server_availability_group.py | 94 + ...l_server_distributed_availability_group.py | 62 + .../delete_active_directory_connector.py | 7 +- ...elete_arc_sql_server_availability_group.py | 43 + .../delete_arc_sql_server_database.py | 43 + .../delete_data_controller.py | 7 +- .../delete_failover_group.py | 43 + .../delete_postgres_instance.py | 7 +- .../delete_sql_managed_instance.py | 7 +- .../delete_sql_server_esu_license.py | 42 + .../delete_sql_server_instance.py | 7 +- .../delete_sql_server_license.py | 42 + ...lover_arc_sql_server_availability_group.py | 44 + .../generated_samples/failover_mi_link.py | 47 + ...lover_arc_sql_server_availability_group.py | 44 + .../get_active_directory_connector.py | 4 +- .../get_arc_sql_server_availability_group.py | 44 + .../get_arc_sql_server_database.py | 44 + .../generated_samples/get_data_controller.py | 4 +- .../generated_samples/get_failover_group.py | 44 + .../get_postgres_instance.py | 4 +- .../get_sql_managed_instance.py | 4 +- .../get_sql_server_esu_license.py | 43 + .../get_sql_server_instance.py | 4 +- .../get_sql_server_instance_jobs_status.py | 43 + ...stance_managed_instance_link_assessment.py | 49 + .../get_sql_server_instance_telemetry.py | 48 + .../get_sql_server_license.py | 43 + ...a_controller_active_directory_connector.py | 4 +- .../list_by_resource_group_data_controller.py | 4 +- ...ist_by_resource_group_postgres_instance.py | 4 +- ..._by_resource_group_sql_managed_instance.py | 4 +- ...y_resource_group_sql_server_esu_license.py | 43 + ...t_by_resource_group_sql_server_instance.py | 4 +- ...st_by_resource_group_sql_server_license.py | 43 + ..._by_sql_managed_instance_failover_group.py | 44 + ..._sql_server_instance_availability_group.py | 44 + .../list_by_sql_server_instance_database.py | 44 + .../generated_samples/list_operation.py | 4 +- .../list_subscription_data_controller.py | 4 +- .../list_subscription_postgres_instance.py | 4 +- .../list_subscription_sql_managed_instance.py | 4 +- ...ist_subscription_sql_server_esu_license.py | 41 + .../list_subscription_sql_server_instance.py | 4 +- .../list_subscription_sql_server_license.py | 41 + .../post_upgrade_sql_server_instance.py | 43 + .../pre_upgrade_sql_server_instance.py | 43 + ...emove_databases_from_availability_group.py | 45 + ...igration_assessment_sql_server_instance.py | 43 + ...pdate_arc_sql_server_availability_group.py | 45 + .../update_data_controller.py | 4 +- .../update_postgres_instance.py | 4 +- .../update_sql_managed_instance.py | 4 +- .../update_sql_server_database.py | 45 + .../update_sql_server_esu_license.py | 47 + .../update_sql_server_instance.py | 8 +- .../update_sql_server_license.py | 44 + .../view_arc_sql_server_availability_group.py | 44 + .../generated_tests/conftest.py | 41 + ..._active_directory_connectors_operations.py | 106 + ...e_directory_connectors_operations_async.py | 111 + ..._management_data_controllers_operations.py | 163 + ...ement_data_controllers_operations_async.py | 170 + ...a_management_failover_groups_operations.py | 97 + ...gement_failover_groups_operations_async.py | 102 + ...st_azure_arc_data_management_operations.py | 29 + ...re_arc_data_management_operations_async.py | 30 + ...anagement_postgres_instances_operations.py | 131 + ...ent_postgres_instances_operations_async.py | 136 + ...gement_sql_managed_instances_operations.py | 146 + ..._sql_managed_instances_operations_async.py | 153 + ...l_server_availability_groups_operations.py | 513 ++ ...er_availability_groups_operations_async.py | 526 ++ ...agement_sql_server_databases_operations.py | 215 + ...t_sql_server_databases_operations_async.py | 220 + ...ment_sql_server_esu_licenses_operations.py | 128 + ...ql_server_esu_licenses_operations_async.py | 129 + ...agement_sql_server_instances_operations.py | 410 + ...t_sql_server_instances_operations_async.py | 425 + ...nagement_sql_server_licenses_operations.py | 126 + ...nt_sql_server_licenses_operations_async.py | 127 + .../azure-mgmt-azurearcdata/setup.py | 85 +- 132 files changed, 27232 insertions(+), 3794 deletions(-) create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_utils/__init__.py rename sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/{_serialization.py => _utils/serialization.py} (77%) delete mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_vendor.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_failover_groups_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_availability_groups_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_databases_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_esu_licenses_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_licenses_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_failover_groups_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_availability_groups_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_databases_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_esu_licenses_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_licenses_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/add_databases_to_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_arc_sql_server_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_arc_sql_server_database.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_failover_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_managed_instance_link.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_esu_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_sql_server_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_sql_server_distributed_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_arc_sql_server_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_arc_sql_server_database.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_failover_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_esu_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/failover_arc_sql_server_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/failover_mi_link.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/force_failover_arc_sql_server_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_arc_sql_server_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_arc_sql_server_database.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_failover_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_esu_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_jobs_status.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_managed_instance_link_assessment.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_telemetry.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_esu_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_managed_instance_failover_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_server_instance_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_server_instance_database.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_esu_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/post_upgrade_sql_server_instance.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/pre_upgrade_sql_server_instance.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/remove_databases_from_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/run_migration_assessment_sql_server_instance.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_arc_sql_server_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_database.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_esu_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_license.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/view_arc_sql_server_availability_group.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/conftest.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_active_directory_connectors_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_active_directory_connectors_operations_async.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_data_controllers_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_data_controllers_operations_async.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_failover_groups_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_failover_groups_operations_async.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_operations_async.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_postgres_instances_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_postgres_instances_operations_async.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_managed_instances_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_managed_instances_operations_async.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_availability_groups_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_availability_groups_operations_async.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_databases_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_databases_operations_async.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_esu_licenses_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_esu_licenses_operations_async.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_instances_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_instances_operations_async.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_licenses_operations.py create mode 100644 sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_licenses_operations_async.py diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/README.md b/sdk/azurearcdata/azure-mgmt-azurearcdata/README.md index 3e1bd634a508..468de500b448 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/README.md +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/README.md @@ -1,28 +1,61 @@ # Microsoft Azure SDK for Python This is the Microsoft Azure Azure Arc Data Management Client Library. -This package has been tested with Python 3.7+. +This package has been tested with Python 3.9+. For a more complete view of Azure libraries, see the [azure sdk python release](https://aka.ms/azsdk/python/all). ## _Disclaimer_ _Azure SDK Python packages support for Python 2.7 has ended 01 January 2022. For more information and questions, please refer to https://github.com/Azure/azure-sdk-for-python/issues/20691_ -# Usage +## Getting started +### Prerequisites -To learn how to use this package, see the [quickstart guide](https://aka.ms/azsdk/python/mgmt) - -For docs and references, see [Python SDK References](https://docs.microsoft.com/python/api/overview/azure/) -Code samples for this package can be found at [Azure Arc Data Management](https://docs.microsoft.com/samples/browse/?languages=python&term=Getting%20started%20-%20Managing&terms=Getting%20started%20-%20Managing) on docs.microsoft.com. -Additional code samples for different Azure services are available at [Samples Repo](https://aka.ms/azsdk/python/mgmt/samples) +- Python 3.9+ is required to use this package. +- [Azure subscription](https://azure.microsoft.com/free/) +### Install the package -# Provide Feedback +```bash +pip install azure-mgmt-azurearcdata +pip install azure-identity +``` -If you encounter any bugs or have suggestions, please file an issue in the -[Issues](https://github.com/Azure/azure-sdk-for-python/issues) -section of the project. +### Authentication + +By default, [Azure Active Directory](https://aka.ms/awps/aad) token authentication depends on correct configuration of the following environment variables. + +- `AZURE_CLIENT_ID` for Azure client ID. +- `AZURE_TENANT_ID` for Azure tenant ID. +- `AZURE_CLIENT_SECRET` for Azure client secret. + +In addition, Azure subscription ID can be configured via environment variable `AZURE_SUBSCRIPTION_ID`. + +With above configuration, client can be authenticated by following code: + +```python +from azure.identity import DefaultAzureCredential +from azure.mgmt.azurearcdata import AzureArcDataManagementClient +import os +sub_id = os.getenv("AZURE_SUBSCRIPTION_ID") +client = AzureArcDataManagementClient(credential=DefaultAzureCredential(), subscription_id=sub_id) +``` +## Examples +Code samples for this package can be found at: +- [Search Azure Arc Data Management](https://docs.microsoft.com/samples/browse/?languages=python&term=Getting%20started%20-%20Managing&terms=Getting%20started%20-%20Managing) on docs.microsoft.com +- [Azure Python Mgmt SDK Samples Repo](https://aka.ms/azsdk/python/mgmt/samples) + + +## Troubleshooting + +## Next steps + +## Provide Feedback + +If you encounter any bugs or have suggestions, please file an issue in the +[Issues](https://github.com/Azure/azure-sdk-for-python/issues) +section of the project. diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/_meta.json b/sdk/azurearcdata/azure-mgmt-azurearcdata/_meta.json index f285b3b3d35a..1353f5c074a9 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/_meta.json +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/_meta.json @@ -1,11 +1,11 @@ { - "commit": "be6cd9ccfcb6ba08c1c206627026eabfbff31fc1", + "commit": "4c6d0481729ff095999f4edf219bd68f9347d719", "repository_url": "https://github.com/Azure/azure-rest-api-specs", - "autorest": "3.9.2", + "autorest": "3.10.2", "use": [ - "@autorest/python@6.2.7", - "@autorest/modelerfour@4.24.3" + "@autorest/python@6.34.1", + "@autorest/modelerfour@4.27.0" ], - "autorest_command": "autorest specification/azurearcdata/resource-manager/readme.md --generate-sample=True --include-x-ms-examples-original-file=True --python --python-sdks-folder=/home/vsts/work/1/azure-sdk-for-python/sdk --use=@autorest/python@6.2.7 --use=@autorest/modelerfour@4.24.3 --version=3.9.2 --version-tolerant=False", + "autorest_command": "autorest specification/azurearcdata/resource-manager/readme.md --generate-sample=True --generate-test=True --include-x-ms-examples-original-file=True --python --python-sdks-folder=/mnt/vss/_work/1/s/azure-sdk-for-python/sdk --use=@autorest/python@6.34.1 --use=@autorest/modelerfour@4.27.0 --version=3.10.2 --version-tolerant=False", "readme": "specification/azurearcdata/resource-manager/readme.md" } \ No newline at end of file diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/__init__.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/__init__.py index fdb269c5216e..ebf96b3e77ec 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/__init__.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/__init__.py @@ -5,15 +5,21 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +# pylint: disable=wrong-import-position -from ._azure_arc_data_management_client import AzureArcDataManagementClient +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._azure_arc_data_management_client import AzureArcDataManagementClient # type: ignore from ._version import VERSION __version__ = VERSION try: from ._patch import __all__ as _patch_all - from ._patch import * # pylint: disable=unused-wildcard-import + from ._patch import * except ImportError: _patch_all = [] from ._patch import patch_sdk as _patch_sdk @@ -21,6 +27,6 @@ __all__ = [ "AzureArcDataManagementClient", ] -__all__.extend([p for p in _patch_all if p not in __all__]) +__all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore _patch_sdk() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_azure_arc_data_management_client.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_azure_arc_data_management_client.py index 2968503221e6..fdf5912da5a1 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_azure_arc_data_management_client.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_azure_arc_data_management_client.py @@ -7,29 +7,38 @@ # -------------------------------------------------------------------------- from copy import deepcopy -from typing import Any, TYPE_CHECKING +from typing import Any, Optional, TYPE_CHECKING, cast +from typing_extensions import Self +from azure.core.pipeline import policies from azure.core.rest import HttpRequest, HttpResponse +from azure.core.settings import settings from azure.mgmt.core import ARMPipelineClient +from azure.mgmt.core.policies import ARMAutoResourceProviderRegistrationPolicy +from azure.mgmt.core.tools import get_arm_endpoints from . import models as _models from ._configuration import AzureArcDataManagementClientConfiguration -from ._serialization import Deserializer, Serializer +from ._utils.serialization import Deserializer, Serializer from .operations import ( ActiveDirectoryConnectorsOperations, DataControllersOperations, + FailoverGroupsOperations, Operations, PostgresInstancesOperations, SqlManagedInstancesOperations, + SqlServerAvailabilityGroupsOperations, + SqlServerDatabasesOperations, + SqlServerEsuLicensesOperations, SqlServerInstancesOperations, + SqlServerLicensesOperations, ) if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials import TokenCredential -class AzureArcDataManagementClient: # pylint: disable=client-accepts-api-version-keyword +class AzureArcDataManagementClient: # pylint: disable=too-many-instance-attributes """The AzureArcData management API provides a RESTful set of web APIs to manage Azure Data Services on Azure Arc Resources. @@ -38,8 +47,12 @@ class AzureArcDataManagementClient: # pylint: disable=client-accepts-api-versio :ivar sql_managed_instances: SqlManagedInstancesOperations operations :vartype sql_managed_instances: azure.mgmt.azurearcdata.operations.SqlManagedInstancesOperations + :ivar failover_groups: FailoverGroupsOperations operations + :vartype failover_groups: azure.mgmt.azurearcdata.operations.FailoverGroupsOperations :ivar sql_server_instances: SqlServerInstancesOperations operations :vartype sql_server_instances: azure.mgmt.azurearcdata.operations.SqlServerInstancesOperations + :ivar sql_server_licenses: SqlServerLicensesOperations operations + :vartype sql_server_licenses: azure.mgmt.azurearcdata.operations.SqlServerLicensesOperations :ivar data_controllers: DataControllersOperations operations :vartype data_controllers: azure.mgmt.azurearcdata.operations.DataControllersOperations :ivar active_directory_connectors: ActiveDirectoryConnectorsOperations operations @@ -47,13 +60,21 @@ class AzureArcDataManagementClient: # pylint: disable=client-accepts-api-versio azure.mgmt.azurearcdata.operations.ActiveDirectoryConnectorsOperations :ivar postgres_instances: PostgresInstancesOperations operations :vartype postgres_instances: azure.mgmt.azurearcdata.operations.PostgresInstancesOperations + :ivar sql_server_availability_groups: SqlServerAvailabilityGroupsOperations operations + :vartype sql_server_availability_groups: + azure.mgmt.azurearcdata.operations.SqlServerAvailabilityGroupsOperations + :ivar sql_server_databases: SqlServerDatabasesOperations operations + :vartype sql_server_databases: azure.mgmt.azurearcdata.operations.SqlServerDatabasesOperations + :ivar sql_server_esu_licenses: SqlServerEsuLicensesOperations operations + :vartype sql_server_esu_licenses: + azure.mgmt.azurearcdata.operations.SqlServerEsuLicensesOperations :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials.TokenCredential :param subscription_id: The ID of the Azure subscription. Required. :type subscription_id: str - :param base_url: Service URL. Default value is "https://management.azure.com". + :param base_url: Service URL. Default value is None. :type base_url: str - :keyword api_version: Api Version. Default value is "2022-03-01-preview". Note that overriding + :keyword api_version: Api Version. Default value is "2025-03-01-preview". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str :keyword int polling_interval: Default waiting time between two polls for LRO operations if no @@ -61,16 +82,36 @@ class AzureArcDataManagementClient: # pylint: disable=client-accepts-api-versio """ def __init__( - self, - credential: "TokenCredential", - subscription_id: str, - base_url: str = "https://management.azure.com", - **kwargs: Any + self, credential: "TokenCredential", subscription_id: str, base_url: Optional[str] = None, **kwargs: Any ) -> None: + _cloud = kwargs.pop("cloud_setting", None) or settings.current.azure_cloud # type: ignore + _endpoints = get_arm_endpoints(_cloud) + if not base_url: + base_url = _endpoints["resource_manager"] + credential_scopes = kwargs.pop("credential_scopes", _endpoints["credential_scopes"]) self._config = AzureArcDataManagementClientConfiguration( - credential=credential, subscription_id=subscription_id, **kwargs + credential=credential, subscription_id=subscription_id, credential_scopes=credential_scopes, **kwargs ) - self._client = ARMPipelineClient(base_url=base_url, config=self._config, **kwargs) + + _policies = kwargs.pop("policies", None) + if _policies is None: + _policies = [ + policies.RequestIdPolicy(**kwargs), + self._config.headers_policy, + self._config.user_agent_policy, + self._config.proxy_policy, + policies.ContentDecodePolicy(**kwargs), + ARMAutoResourceProviderRegistrationPolicy(), + self._config.redirect_policy, + self._config.retry_policy, + self._config.authentication_policy, + self._config.custom_hook_policy, + self._config.logging_policy, + policies.DistributedTracingPolicy(**kwargs), + policies.SensitiveHeaderCleanupPolicy(**kwargs) if self._config.redirect_policy else None, + self._config.http_logging_policy, + ] + self._client: ARMPipelineClient = ARMPipelineClient(base_url=cast(str, base_url), policies=_policies, **kwargs) client_models = {k: v for k, v in _models.__dict__.items() if isinstance(v, type)} self._serialize = Serializer(client_models) @@ -80,9 +121,13 @@ def __init__( self.sql_managed_instances = SqlManagedInstancesOperations( self._client, self._config, self._serialize, self._deserialize ) + self.failover_groups = FailoverGroupsOperations(self._client, self._config, self._serialize, self._deserialize) self.sql_server_instances = SqlServerInstancesOperations( self._client, self._config, self._serialize, self._deserialize ) + self.sql_server_licenses = SqlServerLicensesOperations( + self._client, self._config, self._serialize, self._deserialize + ) self.data_controllers = DataControllersOperations( self._client, self._config, self._serialize, self._deserialize ) @@ -92,8 +137,17 @@ def __init__( self.postgres_instances = PostgresInstancesOperations( self._client, self._config, self._serialize, self._deserialize ) + self.sql_server_availability_groups = SqlServerAvailabilityGroupsOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.sql_server_databases = SqlServerDatabasesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.sql_server_esu_licenses = SqlServerEsuLicensesOperations( + self._client, self._config, self._serialize, self._deserialize + ) - def _send_request(self, request: HttpRequest, **kwargs: Any) -> HttpResponse: + def _send_request(self, request: HttpRequest, *, stream: bool = False, **kwargs: Any) -> HttpResponse: """Runs the network request through the client's chained policies. >>> from azure.core.rest import HttpRequest @@ -113,14 +167,14 @@ def _send_request(self, request: HttpRequest, **kwargs: Any) -> HttpResponse: request_copy = deepcopy(request) request_copy.url = self._client.format_url(request_copy.url) - return self._client.send_request(request_copy, **kwargs) + return self._client.send_request(request_copy, stream=stream, **kwargs) # type: ignore def close(self) -> None: self._client.close() - def __enter__(self) -> "AzureArcDataManagementClient": + def __enter__(self) -> Self: self._client.__enter__() return self - def __exit__(self, *exc_details) -> None: + def __exit__(self, *exc_details: Any) -> None: self._client.__exit__(*exc_details) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_configuration.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_configuration.py index d50ca5314a38..1cf1e686544a 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_configuration.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_configuration.py @@ -6,26 +6,18 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys from typing import Any, TYPE_CHECKING -from azure.core.configuration import Configuration from azure.core.pipeline import policies from azure.mgmt.core.policies import ARMChallengeAuthenticationPolicy, ARMHttpLoggingPolicy from ._version import VERSION -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports - if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials import TokenCredential -class AzureArcDataManagementClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes +class AzureArcDataManagementClientConfiguration: # pylint: disable=too-many-instance-attributes,name-too-long """Configuration for AzureArcDataManagementClient. Note that all parameters used to create this instance are saved as instance @@ -35,14 +27,13 @@ class AzureArcDataManagementClientConfiguration(Configuration): # pylint: disab :type credential: ~azure.core.credentials.TokenCredential :param subscription_id: The ID of the Azure subscription. Required. :type subscription_id: str - :keyword api_version: Api Version. Default value is "2022-03-01-preview". Note that overriding + :keyword api_version: Api Version. Default value is "2025-03-01-preview". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str """ def __init__(self, credential: "TokenCredential", subscription_id: str, **kwargs: Any) -> None: - super(AzureArcDataManagementClientConfiguration, self).__init__(**kwargs) - api_version: Literal["2022-03-01-preview"] = kwargs.pop("api_version", "2022-03-01-preview") + api_version: str = kwargs.pop("api_version", "2025-03-01-preview") if credential is None: raise ValueError("Parameter 'credential' must not be None.") @@ -54,6 +45,7 @@ def __init__(self, credential: "TokenCredential", subscription_id: str, **kwargs self.api_version = api_version self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) kwargs.setdefault("sdk_moniker", "mgmt-azurearcdata/{}".format(VERSION)) + self.polling_interval = kwargs.get("polling_interval", 30) self._configure(**kwargs) def _configure(self, **kwargs: Any) -> None: @@ -62,9 +54,9 @@ def _configure(self, **kwargs: Any) -> None: 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.retry_policy = kwargs.get("retry_policy") or policies.RetryPolicy(**kwargs) self.authentication_policy = kwargs.get("authentication_policy") if self.credential and not self.authentication_policy: self.authentication_policy = ARMChallengeAuthenticationPolicy( diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_utils/__init__.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_utils/__init__.py new file mode 100644 index 000000000000..0af9b28f6607 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_utils/__init__.py @@ -0,0 +1,6 @@ +# -------------------------------------------------------------------------- +# 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. +# -------------------------------------------------------------------------- diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_serialization.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_utils/serialization.py similarity index 77% rename from sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_serialization.py rename to sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_utils/serialization.py index 2c170e28dbca..f5187701d7be 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_serialization.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_utils/serialization.py @@ -1,30 +1,12 @@ +# pylint: disable=line-too-long,useless-suppression,too-many-lines +# coding=utf-8 # -------------------------------------------------------------------------- -# # Copyright (c) Microsoft Corporation. All rights reserved. -# -# The MIT License (MIT) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the ""Software""), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -# +# 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. # -------------------------------------------------------------------------- -# pylint: skip-file # pyright: reportUnnecessaryTypeIgnoreComment=false from base64 import b64decode, b64encode @@ -38,7 +20,19 @@ import re import sys import codecs -from typing import Optional, Union, AnyStr, IO, Mapping +from typing import ( + Dict, + Any, + cast, + Optional, + Union, + AnyStr, + IO, + Mapping, + Callable, + MutableMapping, + List, +) try: from urllib import quote # type: ignore @@ -47,13 +41,15 @@ import xml.etree.ElementTree as ET import isodate # type: ignore +from typing_extensions import Self -from typing import Dict, Any, cast - -from azure.core.exceptions import DeserializationError, SerializationError, raise_with_traceback +from azure.core.exceptions import DeserializationError, SerializationError +from azure.core.serialization import NULL as CoreNull _BOM = codecs.BOM_UTF8.decode(encoding="utf-8") +JSON = MutableMapping[str, Any] + class RawDeserializer: @@ -74,6 +70,8 @@ def deserialize_from_text(cls, data: Optional[Union[AnyStr, IO]], content_type: :param data: Input, could be bytes or stream (will be decoded with UTF8) or text :type data: str or bytes or IO :param str content_type: The content type. + :return: The deserialized data. + :rtype: object """ if hasattr(data, "read"): # Assume a stream @@ -95,7 +93,7 @@ def deserialize_from_text(cls, data: Optional[Union[AnyStr, IO]], content_type: try: return json.loads(data_as_str) except ValueError as err: - raise DeserializationError("JSON is invalid: {}".format(err), err) + raise DeserializationError("JSON is invalid: {}".format(err), err) from err elif "xml" in (content_type or []): try: @@ -107,7 +105,7 @@ def deserialize_from_text(cls, data: Optional[Union[AnyStr, IO]], content_type: pass return ET.fromstring(data_as_str) # nosec - except ET.ParseError: + except ET.ParseError as err: # It might be because the server has an issue, and returned JSON with # content-type XML.... # So let's try a JSON load, and if it's still broken @@ -126,7 +124,9 @@ def _json_attemp(data): # The function hack is because Py2.7 messes up with exception # context otherwise. _LOGGER.critical("Wasn't XML not JSON, failing") - raise_with_traceback(DeserializationError, "XML is invalid") + raise DeserializationError("XML is invalid") from err + elif content_type.startswith("text/"): + return data_as_str raise DeserializationError("Cannot deserialize content-type: {}".format(content_type)) @classmethod @@ -136,6 +136,11 @@ def deserialize_from_http_generics(cls, body_bytes: Optional[Union[AnyStr, IO]], Use bytes and headers to NOT use any requests/aiohttp or whatever specific implementation. Headers will tested for "content-type" + + :param bytes body_bytes: The body of the response. + :param dict headers: The headers of the response. + :returns: The deserialized data. + :rtype: object """ # Try to use content-type from headers if available content_type = None @@ -153,13 +158,6 @@ def deserialize_from_http_generics(cls, body_bytes: Optional[Union[AnyStr, IO]], return None -try: - basestring # type: ignore - unicode_str = unicode # type: ignore -except NameError: - basestring = str - unicode_str = str - _LOGGER = logging.getLogger(__name__) try: @@ -167,80 +165,31 @@ def deserialize_from_http_generics(cls, body_bytes: Optional[Union[AnyStr, IO]], except NameError: _long_type = int - -class UTC(datetime.tzinfo): - """Time Zone info for handling UTC""" - - def utcoffset(self, dt): - """UTF offset for UTC is 0.""" - return datetime.timedelta(0) - - def tzname(self, dt): - """Timestamp representation.""" - return "Z" - - def dst(self, dt): - """No daylight saving for UTC.""" - return datetime.timedelta(hours=1) - - -try: - from datetime import timezone as _FixedOffset # type: ignore -except ImportError: # Python 2.7 - - class _FixedOffset(datetime.tzinfo): # type: ignore - """Fixed offset in minutes east from UTC. - Copy/pasted from Python doc - :param datetime.timedelta offset: offset in timedelta format - """ - - def __init__(self, offset): - self.__offset = offset - - def utcoffset(self, dt): - return self.__offset - - def tzname(self, dt): - return str(self.__offset.total_seconds() / 3600) - - def __repr__(self): - return "".format(self.tzname(None)) - - def dst(self, dt): - return datetime.timedelta(0) - - def __getinitargs__(self): - return (self.__offset,) - - -try: - from datetime import timezone - - TZ_UTC = timezone.utc -except ImportError: - TZ_UTC = UTC() # type: ignore +TZ_UTC = datetime.timezone.utc _FLATTEN = re.compile(r"(? None: + self.additional_properties: Optional[Dict[str, Any]] = {} + for k in kwargs: # pylint: disable=consider-using-dict-items if k not in self._attribute_map: _LOGGER.warning("%s is not a known attribute of class %s and will be ignored", k, self.__class__) elif k in self._validation and self._validation[k].get("readonly", False): @@ -287,25 +243,35 @@ def __init__(self, **kwargs): else: setattr(self, k, kwargs[k]) - def __eq__(self, other): - """Compare objects by comparing all attributes.""" + def __eq__(self, other: Any) -> bool: + """Compare objects by comparing all attributes. + + :param object other: The object to compare + :returns: True if objects are equal + :rtype: bool + """ if isinstance(other, self.__class__): return self.__dict__ == other.__dict__ return False - def __ne__(self, other): - """Compare objects by comparing all attributes.""" + def __ne__(self, other: Any) -> bool: + """Compare objects by comparing all attributes. + + :param object other: The object to compare + :returns: True if objects are not equal + :rtype: bool + """ return not self.__eq__(other) - def __str__(self): + def __str__(self) -> str: return str(self.__dict__) @classmethod - def enable_additional_properties_sending(cls): + def enable_additional_properties_sending(cls) -> None: cls._attribute_map["additional_properties"] = {"key": "", "type": "{object}"} @classmethod - def is_xml_model(cls): + def is_xml_model(cls) -> bool: try: cls._xml_map # type: ignore except AttributeError: @@ -314,7 +280,11 @@ def is_xml_model(cls): @classmethod def _create_xml_node(cls): - """Create XML node.""" + """Create XML node. + + :returns: The XML node + :rtype: xml.etree.ElementTree.Element + """ try: xml_map = cls._xml_map # type: ignore except AttributeError: @@ -322,8 +292,8 @@ def _create_xml_node(cls): return _create_xml_node(xml_map.get("name", cls.__name__), xml_map.get("prefix", None), xml_map.get("ns", None)) - def serialize(self, keep_readonly=False, **kwargs): - """Return the JSON that would be sent to azure from this model. + def serialize(self, keep_readonly: bool = False, **kwargs: Any) -> JSON: + """Return the JSON that would be sent to server from this model. This is an alias to `as_dict(full_restapi_key_transformer, keep_readonly=False)`. @@ -334,10 +304,17 @@ def serialize(self, keep_readonly=False, **kwargs): :rtype: dict """ serializer = Serializer(self._infer_class_models()) - return serializer._serialize(self, keep_readonly=keep_readonly, **kwargs) + return serializer._serialize( # type: ignore # pylint: disable=protected-access + self, keep_readonly=keep_readonly, **kwargs + ) - def as_dict(self, keep_readonly=True, key_transformer=attribute_transformer, **kwargs): - """Return a dict that can be JSONify using json.dump. + def as_dict( + self, + keep_readonly: bool = True, + key_transformer: Callable[[str, Dict[str, Any], Any], Any] = attribute_transformer, + **kwargs: Any + ) -> JSON: + """Return a dict that can be serialized using json.dump. Advanced usage might optionally use a callback as parameter: @@ -363,12 +340,15 @@ def my_key_transformer(key, attr_desc, value): If you want XML serialization, you can pass the kwargs is_xml=True. + :param bool keep_readonly: If you want to serialize the readonly attributes :param function key_transformer: A key transformer function. :returns: A dict JSON compatible object :rtype: dict """ serializer = Serializer(self._infer_class_models()) - return serializer._serialize(self, key_transformer=key_transformer, keep_readonly=keep_readonly, **kwargs) + return serializer._serialize( # type: ignore # pylint: disable=protected-access + self, key_transformer=key_transformer, keep_readonly=keep_readonly, **kwargs + ) @classmethod def _infer_class_models(cls): @@ -378,25 +358,31 @@ def _infer_class_models(cls): client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)} if cls.__name__ not in client_models: raise ValueError("Not Autorest generated code") - except Exception: + except Exception: # pylint: disable=broad-exception-caught # Assume it's not Autorest generated (tests?). Add ourselves as dependencies. client_models = {cls.__name__: cls} return client_models @classmethod - def deserialize(cls, data, content_type=None): + def deserialize(cls, data: Any, content_type: Optional[str] = None) -> Self: """Parse a str using the RestAPI syntax and return a model. :param str data: A str using RestAPI structure. JSON by default. :param str content_type: JSON by default, set application/xml if XML. :returns: An instance of this model - :raises: DeserializationError if something went wrong + :raises DeserializationError: if something went wrong + :rtype: Self """ deserializer = Deserializer(cls._infer_class_models()) - return deserializer(cls.__name__, data, content_type=content_type) + return deserializer(cls.__name__, data, content_type=content_type) # type: ignore @classmethod - def from_dict(cls, data, key_extractors=None, content_type=None): + def from_dict( + cls, + data: Any, + key_extractors: Optional[Callable[[str, Dict[str, Any], Any], Any]] = None, + content_type: Optional[str] = None, + ) -> Self: """Parse a dict using given key extractor return a model. By default consider key @@ -404,13 +390,15 @@ def from_dict(cls, data, key_extractors=None, content_type=None): and last_rest_key_case_insensitive_extractor) :param dict data: A dict using RestAPI structure + :param function key_extractors: A key extractor function. :param str content_type: JSON by default, set application/xml if XML. :returns: An instance of this model - :raises: DeserializationError if something went wrong + :raises DeserializationError: if something went wrong + :rtype: Self """ deserializer = Deserializer(cls._infer_class_models()) - deserializer.key_extractors = ( - [ + deserializer.key_extractors = ( # type: ignore + [ # type: ignore attribute_key_case_insensitive_extractor, rest_key_case_insensitive_extractor, last_rest_key_case_insensitive_extractor, @@ -418,7 +406,7 @@ def from_dict(cls, data, key_extractors=None, content_type=None): if key_extractors is None else key_extractors ) - return deserializer(cls.__name__, data, content_type=content_type) + return deserializer(cls.__name__, data, content_type=content_type) # type: ignore @classmethod def _flatten_subtype(cls, key, objects): @@ -426,21 +414,25 @@ def _flatten_subtype(cls, key, objects): return {} result = dict(cls._subtype_map[key]) for valuetype in cls._subtype_map[key].values(): - result.update(objects[valuetype]._flatten_subtype(key, objects)) + result.update(objects[valuetype]._flatten_subtype(key, objects)) # pylint: disable=protected-access return result @classmethod def _classify(cls, response, objects): """Check the class _subtype_map for any child classes. We want to ignore any inherited _subtype_maps. - Remove the polymorphic key from the initial data. + + :param dict response: The initial data + :param dict objects: The class objects + :returns: The class to be used + :rtype: class """ for subtype_key in cls.__dict__.get("_subtype_map", {}).keys(): subtype_value = None if not isinstance(response, ET.Element): rest_api_response_key = cls._get_rest_key_parts(subtype_key)[-1] - subtype_value = response.pop(rest_api_response_key, None) or response.pop(subtype_key, None) + subtype_value = response.get(rest_api_response_key, None) or response.get(subtype_key, None) else: subtype_value = xml_key_extractor(subtype_key, cls._attribute_map[subtype_key], response) if subtype_value: @@ -479,11 +471,13 @@ def _decode_attribute_map_key(key): inside the received data. :param str key: A key string from the generated code + :returns: The decoded key + :rtype: str """ return key.replace("\\.", ".") -class Serializer(object): +class Serializer: # pylint: disable=too-many-public-methods """Request object model serializer.""" basic_types = {str: "str", int: "int", bool: "bool", float: "float"} @@ -518,7 +512,7 @@ class Serializer(object): "multiple": lambda x, y: x % y != 0, } - def __init__(self, classes=None): + def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: self.serialize_type = { "iso-8601": Serializer.serialize_iso, "rfc-1123": Serializer.serialize_rfc, @@ -534,17 +528,20 @@ def __init__(self, classes=None): "[]": self.serialize_iter, "{}": self.serialize_dict, } - self.dependencies = dict(classes) if classes else {} + self.dependencies: Dict[str, type] = dict(classes) if classes else {} self.key_transformer = full_restapi_key_transformer self.client_side_validation = True - def _serialize(self, target_obj, data_type=None, **kwargs): + def _serialize( # pylint: disable=too-many-nested-blocks, too-many-branches, too-many-statements, too-many-locals + self, target_obj, data_type=None, **kwargs + ): """Serialize data into a string according to type. - :param target_obj: The data to be serialized. + :param object target_obj: The data to be serialized. :param str data_type: The type to be serialized from. :rtype: str, dict - :raises: SerializationError if serialization fails. + :raises SerializationError: if serialization fails. + :returns: The serialized data. """ key_transformer = kwargs.get("key_transformer", self.key_transformer) keep_readonly = kwargs.get("keep_readonly", False) @@ -570,12 +567,14 @@ def _serialize(self, target_obj, data_type=None, **kwargs): serialized = {} if is_xml_model_serialization: - serialized = target_obj._create_xml_node() + serialized = target_obj._create_xml_node() # pylint: disable=protected-access try: - attributes = target_obj._attribute_map + attributes = target_obj._attribute_map # pylint: disable=protected-access for attr, attr_desc in attributes.items(): attr_name = attr - if not keep_readonly and target_obj._validation.get(attr_name, {}).get("readonly", False): + if not keep_readonly and target_obj._validation.get( # pylint: disable=protected-access + attr_name, {} + ).get("readonly", False): continue if attr_name == "additional_properties" and attr_desc["key"] == "": @@ -602,7 +601,7 @@ def _serialize(self, target_obj, data_type=None, **kwargs): if xml_desc.get("attr", False): if xml_ns: ET.register_namespace(xml_prefix, xml_ns) - xml_name = "{}{}".format(xml_ns, xml_name) + xml_name = "{{{}}}{}".format(xml_ns, xml_name) serialized.set(xml_name, new_attr) # type: ignore continue if xml_desc.get("text", False): @@ -611,7 +610,8 @@ def _serialize(self, target_obj, data_type=None, **kwargs): if isinstance(new_attr, list): serialized.extend(new_attr) # type: ignore elif isinstance(new_attr, ET.Element): - # If the down XML has no XML/Name, we MUST replace the tag with the local tag. But keeping the namespaces. + # If the down XML has no XML/Name, + # we MUST replace the tag with the local tag. But keeping the namespaces. if "name" not in getattr(orig_attr, "_xml_map", {}): splitted_tag = new_attr.tag.split("}") if len(splitted_tag) == 2: # Namespace @@ -622,12 +622,11 @@ def _serialize(self, target_obj, data_type=None, **kwargs): else: # That's a basic type # Integrate namespace if necessary local_node = _create_xml_node(xml_name, xml_prefix, xml_ns) - local_node.text = unicode_str(new_attr) + local_node.text = str(new_attr) serialized.append(local_node) # type: ignore else: # JSON for k in reversed(keys): # type: ignore - unflattened = {k: new_attr} - new_attr = unflattened + new_attr = {k: new_attr} _new_attr = new_attr _serialized = serialized @@ -636,28 +635,29 @@ def _serialize(self, target_obj, data_type=None, **kwargs): _serialized.update(_new_attr) # type: ignore _new_attr = _new_attr[k] # type: ignore _serialized = _serialized[k] - except ValueError: - continue + except ValueError as err: + if isinstance(err, SerializationError): + raise except (AttributeError, KeyError, TypeError) as err: msg = "Attribute {} in object {} cannot be serialized.\n{}".format(attr_name, class_name, str(target_obj)) - raise_with_traceback(SerializationError, msg, err) - else: - return serialized + raise SerializationError(msg) from err + return serialized def body(self, data, data_type, **kwargs): """Serialize data intended for a request body. - :param data: The data to be serialized. + :param object data: The data to be serialized. :param str data_type: The type to be serialized from. :rtype: dict - :raises: SerializationError if serialization fails. - :raises: ValueError if data is None + :raises SerializationError: if serialization fails. + :raises ValueError: if data is None + :returns: The serialized request body """ # Just in case this is a dict - internal_data_type = data_type.strip("[]{}") - internal_data_type = self.dependencies.get(internal_data_type, None) + internal_data_type_str = data_type.strip("[]{}") + internal_data_type = self.dependencies.get(internal_data_type_str, None) try: is_xml_model_serialization = kwargs["is_xml"] except KeyError: @@ -681,20 +681,22 @@ def body(self, data, data_type, **kwargs): attribute_key_case_insensitive_extractor, last_rest_key_case_insensitive_extractor, ] - data = deserializer._deserialize(data_type, data) + data = deserializer._deserialize(data_type, data) # pylint: disable=protected-access except DeserializationError as err: - raise_with_traceback(SerializationError, "Unable to build a model: " + str(err), err) + raise SerializationError("Unable to build a model: " + str(err)) from err return self._serialize(data, data_type, **kwargs) def url(self, name, data, data_type, **kwargs): """Serialize data intended for a URL path. - :param data: The data to be serialized. + :param str name: The name of the URL path parameter. + :param object data: The data to be serialized. :param str data_type: The type to be serialized from. :rtype: str - :raises: TypeError if serialization fails. - :raises: ValueError if data is None + :returns: The serialized URL path + :raises TypeError: if serialization fails. + :raises ValueError: if data is None """ try: output = self.serialize_data(data, data_type, **kwargs) @@ -703,30 +705,30 @@ def url(self, name, data, data_type, **kwargs): if kwargs.get("skip_quote") is True: output = str(output) + output = output.replace("{", quote("{")).replace("}", quote("}")) else: output = quote(str(output), safe="") - except SerializationError: - raise TypeError("{} must be type {}.".format(name, data_type)) - else: - return output + except SerializationError as exc: + raise TypeError("{} must be type {}.".format(name, data_type)) from exc + return output def query(self, name, data, data_type, **kwargs): """Serialize data intended for a URL query. - :param data: The data to be serialized. + :param str name: The name of the query parameter. + :param object data: The data to be serialized. :param str data_type: The type to be serialized from. - :rtype: str - :raises: TypeError if serialization fails. - :raises: ValueError if data is None + :rtype: str, list + :raises TypeError: if serialization fails. + :raises ValueError: if data is None + :returns: The serialized query parameter """ try: # Treat the list aside, since we don't want to encode the div separator if data_type.startswith("["): internal_data_type = data_type[1:-1] - data = [self.serialize_data(d, internal_data_type, **kwargs) if d is not None else "" for d in data] - if not kwargs.get("skip_quote", False): - data = [quote(str(d), safe="") for d in data] - return str(self.serialize_iter(data, internal_data_type, **kwargs)) + do_quote = not kwargs.get("skip_quote", False) + return self.serialize_iter(data, internal_data_type, do_quote=do_quote, **kwargs) # Not a list, regular serialization output = self.serialize_data(data, data_type, **kwargs) @@ -736,19 +738,20 @@ def query(self, name, data, data_type, **kwargs): output = str(output) else: output = quote(str(output), safe="") - except SerializationError: - raise TypeError("{} must be type {}.".format(name, data_type)) - else: - return str(output) + except SerializationError as exc: + raise TypeError("{} must be type {}.".format(name, data_type)) from exc + return str(output) def header(self, name, data, data_type, **kwargs): """Serialize data intended for a request header. - :param data: The data to be serialized. + :param str name: The name of the header. + :param object data: The data to be serialized. :param str data_type: The type to be serialized from. :rtype: str - :raises: TypeError if serialization fails. - :raises: ValueError if data is None + :raises TypeError: if serialization fails. + :raises ValueError: if data is None + :returns: The serialized header """ try: if data_type in ["[str]"]: @@ -757,30 +760,31 @@ def header(self, name, data, data_type, **kwargs): output = self.serialize_data(data, data_type, **kwargs) if data_type == "bool": output = json.dumps(output) - except SerializationError: - raise TypeError("{} must be type {}.".format(name, data_type)) - else: - return str(output) + except SerializationError as exc: + raise TypeError("{} must be type {}.".format(name, data_type)) from exc + return str(output) def serialize_data(self, data, data_type, **kwargs): """Serialize generic data according to supplied data type. - :param data: The data to be serialized. + :param object data: The data to be serialized. :param str data_type: The type to be serialized from. - :param bool required: Whether it's essential that the data not be - empty or None - :raises: AttributeError if required data is None. - :raises: ValueError if data is None - :raises: SerializationError if serialization fails. + :raises AttributeError: if required data is None. + :raises ValueError: if data is None + :raises SerializationError: if serialization fails. + :returns: The serialized data. + :rtype: str, int, float, bool, dict, list """ if data is None: raise ValueError("No value for given attribute") try: + if data is CoreNull: + return None if data_type in self.basic_types.values(): return self.serialize_basic(data, data_type, **kwargs) - elif data_type in self.serialize_type: + if data_type in self.serialize_type: return self.serialize_type[data_type](data, **kwargs) # If dependencies is empty, try with current data class @@ -795,12 +799,11 @@ def serialize_data(self, data, data_type, **kwargs): except (ValueError, TypeError) as err: msg = "Unable to serialize value: {!r} as type: {!r}." - raise_with_traceback(SerializationError, msg.format(data, data_type), err) - else: - return self._serialize(data, **kwargs) + raise SerializationError(msg.format(data, data_type)) from err + return self._serialize(data, **kwargs) @classmethod - def _get_custom_serializers(cls, data_type, **kwargs): + def _get_custom_serializers(cls, data_type, **kwargs): # pylint: disable=inconsistent-return-statements custom_serializer = kwargs.get("basic_types_serializers", {}).get(data_type) if custom_serializer: return custom_serializer @@ -816,23 +819,26 @@ def serialize_basic(cls, data, data_type, **kwargs): - basic_types_serializers dict[str, callable] : If set, use the callable as serializer - is_xml bool : If set, use xml_basic_types_serializers - :param data: Object to be serialized. + :param obj data: Object to be serialized. :param str data_type: Type of object in the iterable. + :rtype: str, int, float, bool + :return: serialized object """ custom_serializer = cls._get_custom_serializers(data_type, **kwargs) if custom_serializer: return custom_serializer(data) if data_type == "str": return cls.serialize_unicode(data) - return eval(data_type)(data) # nosec + return eval(data_type)(data) # nosec # pylint: disable=eval-used @classmethod def serialize_unicode(cls, data): """Special handling for serializing unicode strings in Py2. Encode to UTF-8 if unicode, otherwise handle as a str. - :param data: Object to be serialized. + :param str data: Object to be serialized. :rtype: str + :return: serialized object """ try: # If I received an enum, return its value return data.value @@ -846,8 +852,7 @@ def serialize_unicode(cls, data): return data except NameError: return str(data) - else: - return str(data) + return str(data) def serialize_iter(self, data, iter_type, div=None, **kwargs): """Serialize iterable. @@ -857,13 +862,13 @@ def serialize_iter(self, data, iter_type, div=None, **kwargs): serialization_ctxt['type'] should be same as data_type. - is_xml bool : If set, serialize as XML - :param list attr: Object to be serialized. + :param list data: Object to be serialized. :param str iter_type: Type of object in the iterable. - :param bool required: Whether the objects in the iterable must - not be None or empty. :param str div: If set, this str will be used to combine the elements in the iterable into a combined string. Default is 'None'. + Defaults to False. :rtype: list, str + :return: serialized iterable """ if isinstance(data, str): raise SerializationError("Refuse str type as a valid iter type.") @@ -875,9 +880,14 @@ def serialize_iter(self, data, iter_type, div=None, **kwargs): for d in data: try: serialized.append(self.serialize_data(d, iter_type, **kwargs)) - except ValueError: + except ValueError as err: + if isinstance(err, SerializationError): + raise serialized.append(None) + if kwargs.get("do_quote", False): + serialized = ["" if s is None else quote(str(s), safe="") for s in serialized] + if div: serialized = ["" if s is None else str(s) for s in serialized] serialized = div.join(serialized) @@ -913,16 +923,17 @@ def serialize_dict(self, attr, dict_type, **kwargs): :param dict attr: Object to be serialized. :param str dict_type: Type of object in the dictionary. - :param bool required: Whether the objects in the dictionary must - not be None or empty. :rtype: dict + :return: serialized dictionary """ serialization_ctxt = kwargs.get("serialization_ctxt", {}) serialized = {} for key, value in attr.items(): try: serialized[self.serialize_unicode(key)] = self.serialize_data(value, dict_type, **kwargs) - except ValueError: + except ValueError as err: + if isinstance(err, SerializationError): + raise serialized[self.serialize_unicode(key)] = None if "xml" in serialization_ctxt: @@ -937,7 +948,7 @@ def serialize_dict(self, attr, dict_type, **kwargs): return serialized - def serialize_object(self, attr, **kwargs): + def serialize_object(self, attr, **kwargs): # pylint: disable=too-many-return-statements """Serialize a generic object. This will be handled as a dictionary. If object passed in is not a basic type (str, int, float, dict, list) it will simply be @@ -945,6 +956,7 @@ def serialize_object(self, attr, **kwargs): :param dict attr: Object to be serialized. :rtype: dict or str + :return: serialized object """ if attr is None: return None @@ -955,7 +967,7 @@ def serialize_object(self, attr, **kwargs): return self.serialize_basic(attr, self.basic_types[obj_type], **kwargs) if obj_type is _long_type: return self.serialize_long(attr) - if obj_type is unicode_str: + if obj_type is str: return self.serialize_unicode(attr) if obj_type is datetime.datetime: return self.serialize_iso(attr) @@ -969,7 +981,7 @@ def serialize_object(self, attr, **kwargs): return self.serialize_decimal(attr) # If it's a model or I know this dependency, serialize as a Model - elif obj_type in self.dependencies.values() or isinstance(attr, Model): + if obj_type in self.dependencies.values() or isinstance(attr, Model): return self._serialize(attr) if obj_type == dict: @@ -1000,56 +1012,61 @@ def serialize_enum(attr, enum_obj=None): try: enum_obj(result) # type: ignore return result - except ValueError: + except ValueError as exc: for enum_value in enum_obj: # type: ignore if enum_value.value.lower() == str(attr).lower(): return enum_value.value error = "{!r} is not valid value for enum {!r}" - raise SerializationError(error.format(attr, enum_obj)) + raise SerializationError(error.format(attr, enum_obj)) from exc @staticmethod - def serialize_bytearray(attr, **kwargs): + def serialize_bytearray(attr, **kwargs): # pylint: disable=unused-argument """Serialize bytearray into base-64 string. - :param attr: Object to be serialized. + :param str attr: Object to be serialized. :rtype: str + :return: serialized base64 """ return b64encode(attr).decode() @staticmethod - def serialize_base64(attr, **kwargs): + def serialize_base64(attr, **kwargs): # pylint: disable=unused-argument """Serialize str into base-64 string. - :param attr: Object to be serialized. + :param str attr: Object to be serialized. :rtype: str + :return: serialized base64 """ encoded = b64encode(attr).decode("ascii") return encoded.strip("=").replace("+", "-").replace("/", "_") @staticmethod - def serialize_decimal(attr, **kwargs): + def serialize_decimal(attr, **kwargs): # pylint: disable=unused-argument """Serialize Decimal object to float. - :param attr: Object to be serialized. + :param decimal attr: Object to be serialized. :rtype: float + :return: serialized decimal """ return float(attr) @staticmethod - def serialize_long(attr, **kwargs): + def serialize_long(attr, **kwargs): # pylint: disable=unused-argument """Serialize long (Py2) or int (Py3). - :param attr: Object to be serialized. + :param int attr: Object to be serialized. :rtype: int/long + :return: serialized long """ return _long_type(attr) @staticmethod - def serialize_date(attr, **kwargs): + def serialize_date(attr, **kwargs): # pylint: disable=unused-argument """Serialize Date object into ISO-8601 formatted string. :param Date attr: Object to be serialized. :rtype: str + :return: serialized date """ if isinstance(attr, str): attr = isodate.parse_date(attr) @@ -1057,11 +1074,12 @@ def serialize_date(attr, **kwargs): return t @staticmethod - def serialize_time(attr, **kwargs): + def serialize_time(attr, **kwargs): # pylint: disable=unused-argument """Serialize Time object into ISO-8601 formatted string. :param datetime.time attr: Object to be serialized. :rtype: str + :return: serialized time """ if isinstance(attr, str): attr = isodate.parse_time(attr) @@ -1071,30 +1089,32 @@ def serialize_time(attr, **kwargs): return t @staticmethod - def serialize_duration(attr, **kwargs): + def serialize_duration(attr, **kwargs): # pylint: disable=unused-argument """Serialize TimeDelta object into ISO-8601 formatted string. :param TimeDelta attr: Object to be serialized. :rtype: str + :return: serialized duration """ if isinstance(attr, str): attr = isodate.parse_duration(attr) return isodate.duration_isoformat(attr) @staticmethod - def serialize_rfc(attr, **kwargs): + def serialize_rfc(attr, **kwargs): # pylint: disable=unused-argument """Serialize Datetime object into RFC-1123 formatted string. :param Datetime attr: Object to be serialized. :rtype: str - :raises: TypeError if format invalid. + :raises TypeError: if format invalid. + :return: serialized rfc """ try: if not attr.tzinfo: _LOGGER.warning("Datetime with no tzinfo will be considered UTC.") utc = attr.utctimetuple() - except AttributeError: - raise TypeError("RFC1123 object must be valid Datetime object.") + except AttributeError as exc: + raise TypeError("RFC1123 object must be valid Datetime object.") from exc return "{}, {:02} {} {:04} {:02}:{:02}:{:02} GMT".format( Serializer.days[utc.tm_wday], @@ -1107,12 +1127,13 @@ def serialize_rfc(attr, **kwargs): ) @staticmethod - def serialize_iso(attr, **kwargs): + def serialize_iso(attr, **kwargs): # pylint: disable=unused-argument """Serialize Datetime object into ISO-8601 formatted string. :param Datetime attr: Object to be serialized. :rtype: str - :raises: SerializationError if format invalid. + :raises SerializationError: if format invalid. + :return: serialized iso """ if isinstance(attr, str): attr = isodate.parse_datetime(attr) @@ -1132,19 +1153,20 @@ def serialize_iso(attr, **kwargs): return date + microseconds + "Z" except (ValueError, OverflowError) as err: msg = "Unable to serialize datetime object." - raise_with_traceback(SerializationError, msg, err) + raise SerializationError(msg) from err except AttributeError as err: msg = "ISO-8601 object must be valid Datetime object." - raise_with_traceback(TypeError, msg, err) + raise TypeError(msg) from err @staticmethod - def serialize_unix(attr, **kwargs): + def serialize_unix(attr, **kwargs): # pylint: disable=unused-argument """Serialize Datetime object into IntTime format. This is represented as seconds. :param Datetime attr: Object to be serialized. :rtype: int - :raises: SerializationError if format invalid + :raises SerializationError: if format invalid + :return: serialied unix """ if isinstance(attr, int): return attr @@ -1152,16 +1174,17 @@ def serialize_unix(attr, **kwargs): if not attr.tzinfo: _LOGGER.warning("Datetime with no tzinfo will be considered UTC.") return int(calendar.timegm(attr.utctimetuple())) - except AttributeError: - raise TypeError("Unix time object must be valid Datetime object.") + except AttributeError as exc: + raise TypeError("Unix time object must be valid Datetime object.") from exc -def rest_key_extractor(attr, attr_desc, data): +def rest_key_extractor(attr, attr_desc, data): # pylint: disable=unused-argument key = attr_desc["key"] working_data = data while "." in key: - dict_keys = _FLATTEN.split(key) + # Need the cast, as for some reasons "split" is typed as list[str | Any] + dict_keys = cast(List[str], _FLATTEN.split(key)) if len(dict_keys) == 1: key = _decode_attribute_map_key(dict_keys[0]) break @@ -1170,14 +1193,15 @@ def rest_key_extractor(attr, attr_desc, data): if working_data is None: # If at any point while following flatten JSON path see None, it means # that all properties under are None as well - # https://github.com/Azure/msrest-for-python/issues/197 return None key = ".".join(dict_keys[1:]) return working_data.get(key) -def rest_key_case_insensitive_extractor(attr, attr_desc, data): +def rest_key_case_insensitive_extractor( # pylint: disable=unused-argument, inconsistent-return-statements + attr, attr_desc, data +): key = attr_desc["key"] working_data = data @@ -1191,7 +1215,6 @@ def rest_key_case_insensitive_extractor(attr, attr_desc, data): if working_data is None: # If at any point while following flatten JSON path see None, it means # that all properties under are None as well - # https://github.com/Azure/msrest-for-python/issues/197 return None key = ".".join(dict_keys[1:]) @@ -1199,17 +1222,29 @@ def rest_key_case_insensitive_extractor(attr, attr_desc, data): return attribute_key_case_insensitive_extractor(key, None, working_data) -def last_rest_key_extractor(attr, attr_desc, data): - """Extract the attribute in "data" based on the last part of the JSON path key.""" +def last_rest_key_extractor(attr, attr_desc, data): # pylint: disable=unused-argument + """Extract the attribute in "data" based on the last part of the JSON path key. + + :param str attr: The attribute to extract + :param dict attr_desc: The attribute description + :param dict data: The data to extract from + :rtype: object + :returns: The extracted attribute + """ key = attr_desc["key"] dict_keys = _FLATTEN.split(key) return attribute_key_extractor(dict_keys[-1], None, data) -def last_rest_key_case_insensitive_extractor(attr, attr_desc, data): +def last_rest_key_case_insensitive_extractor(attr, attr_desc, data): # pylint: disable=unused-argument """Extract the attribute in "data" based on the last part of the JSON path key. This is the case insensitive version of "last_rest_key_extractor" + :param str attr: The attribute to extract + :param dict attr_desc: The attribute description + :param dict data: The data to extract from + :rtype: object + :returns: The extracted attribute """ key = attr_desc["key"] dict_keys = _FLATTEN.split(key) @@ -1242,11 +1277,11 @@ def _extract_name_from_internal_type(internal_type): xml_name = internal_type_xml_map.get("name", internal_type.__name__) xml_ns = internal_type_xml_map.get("ns", None) if xml_ns: - xml_name = "{}{}".format(xml_ns, xml_name) + xml_name = "{{{}}}{}".format(xml_ns, xml_name) return xml_name -def xml_key_extractor(attr, attr_desc, data): +def xml_key_extractor(attr, attr_desc, data): # pylint: disable=unused-argument,too-many-return-statements if isinstance(data, dict): return None @@ -1266,7 +1301,7 @@ def xml_key_extractor(attr, attr_desc, data): # Integrate namespace if necessary xml_ns = xml_desc.get("ns", internal_type_xml_map.get("ns", None)) if xml_ns: - xml_name = "{}{}".format(xml_ns, xml_name) + xml_name = "{{{}}}{}".format(xml_ns, xml_name) # If it's an attribute, that's simple if xml_desc.get("attr", False): @@ -1298,22 +1333,21 @@ def xml_key_extractor(attr, attr_desc, data): if is_iter_type: if is_wrapped: return None # is_wrapped no node, we want None - else: - return [] # not wrapped, assume empty list + return [] # not wrapped, assume empty list return None # Assume it's not there, maybe an optional node. # If is_iter_type and not wrapped, return all found children if is_iter_type: if not is_wrapped: return children - else: # Iter and wrapped, should have found one node only (the wrap one) - if len(children) != 1: - raise DeserializationError( - "Tried to deserialize an array not wrapped, and found several nodes '{}'. Maybe you should declare this array as wrapped?".format( - xml_name - ) + # Iter and wrapped, should have found one node only (the wrap one) + if len(children) != 1: + raise DeserializationError( + "Tried to deserialize an array not wrapped, and found several nodes '{}'. Maybe you should declare this array as wrapped?".format( + xml_name ) - return list(children[0]) # Might be empty list and that's ok. + ) + return list(children[0]) # Might be empty list and that's ok. # Here it's not a itertype, we should have found one element only or empty if len(children) > 1: @@ -1321,7 +1355,7 @@ def xml_key_extractor(attr, attr_desc, data): return children[0] -class Deserializer(object): +class Deserializer: """Response object model deserializer. :param dict classes: Class type dictionary for deserializing complex types. @@ -1330,9 +1364,9 @@ class Deserializer(object): basic_types = {str: "str", int: "int", bool: "bool", float: "float"} - valid_date = re.compile(r"\d{4}[-]\d{2}[-]\d{2}T\d{2}:\d{2}:\d{2}" r"\.?\d*Z?[-+]?[\d{2}]?:?[\d{2}]?") + valid_date = re.compile(r"\d{4}[-]\d{2}[-]\d{2}T\d{2}:\d{2}:\d{2}\.?\d*Z?[-+]?[\d{2}]?:?[\d{2}]?") - def __init__(self, classes=None): + def __init__(self, classes: Optional[Mapping[str, type]] = None) -> None: self.deserialize_type = { "iso-8601": Deserializer.deserialize_iso, "rfc-1123": Deserializer.deserialize_rfc, @@ -1352,7 +1386,7 @@ def __init__(self, classes=None): "duration": (isodate.Duration, datetime.timedelta), "iso-8601": (datetime.datetime), } - self.dependencies = dict(classes) if classes else {} + self.dependencies: Dict[str, type] = dict(classes) if classes else {} self.key_extractors = [rest_key_extractor, xml_key_extractor] # Additional properties only works if the "rest_key_extractor" is used to # extract the keys. Making it to work whatever the key extractor is too much @@ -1368,27 +1402,29 @@ def __call__(self, target_obj, response_data, content_type=None): :param str target_obj: Target data type to deserialize to. :param requests.Response response_data: REST response object. :param str content_type: Swagger "produces" if available. - :raises: DeserializationError if deserialization fails. + :raises DeserializationError: if deserialization fails. :return: Deserialized object. + :rtype: object """ data = self._unpack_content(response_data, content_type) return self._deserialize(target_obj, data) - def _deserialize(self, target_obj, data): + def _deserialize(self, target_obj, data): # pylint: disable=inconsistent-return-statements """Call the deserializer on a model. Data needs to be already deserialized as JSON or XML ElementTree :param str target_obj: Target data type to deserialize to. :param object data: Object to deserialize. - :raises: DeserializationError if deserialization fails. + :raises DeserializationError: if deserialization fails. :return: Deserialized object. + :rtype: object """ # This is already a model, go recursive just in case if hasattr(data, "_attribute_map"): constants = [name for name, config in getattr(data, "_validation", {}).items() if config.get("constant")] try: - for attr, mapconfig in data._attribute_map.items(): + for attr, mapconfig in data._attribute_map.items(): # pylint: disable=protected-access if attr in constants: continue value = getattr(data, attr) @@ -1405,15 +1441,15 @@ def _deserialize(self, target_obj, data): response, class_name = self._classify_target(target_obj, data) - if isinstance(response, basestring): + if isinstance(response, str): return self.deserialize_data(data, response) - elif isinstance(response, type) and issubclass(response, Enum): + if isinstance(response, type) and issubclass(response, Enum): return self.deserialize_enum(data, response) - if data is None: + if data is None or data is CoreNull: return data try: - attributes = response._attribute_map # type: ignore + attributes = response._attribute_map # type: ignore # pylint: disable=protected-access d_attrs = {} for attr, attr_desc in attributes.items(): # Check empty string. If it's not empty, someone has a real "additionalProperties"... @@ -1442,10 +1478,9 @@ def _deserialize(self, target_obj, data): d_attrs[attr] = value except (AttributeError, TypeError, KeyError) as err: msg = "Unable to deserialize to object: " + class_name # type: ignore - raise_with_traceback(DeserializationError, msg, err) - else: - additional_properties = self._build_additional_properties(attributes, data) - return self._instantiate_model(response, d_attrs, additional_properties) + raise DeserializationError(msg) from err + additional_properties = self._build_additional_properties(attributes, data) + return self._instantiate_model(response, d_attrs, additional_properties) def _build_additional_properties(self, attribute_map, data): if not self.additional_properties_detection: @@ -1471,22 +1506,24 @@ def _classify_target(self, target, data): Once classification has been determined, initialize object. :param str target: The target object type to deserialize to. - :param str/dict data: The response data to deseralize. + :param str/dict data: The response data to deserialize. + :return: The classified target object and its class name. + :rtype: tuple """ if target is None: return None, None - if isinstance(target, basestring): + if isinstance(target, str): try: target = self.dependencies[target] except KeyError: return target, target try: - target = target._classify(data, self.dependencies) + target = target._classify(data, self.dependencies) # type: ignore # pylint: disable=protected-access except AttributeError: pass # Target is not a Model, no classify - return target, target.__class__.__name__ + return target, target.__class__.__name__ # type: ignore def failsafe_deserialize(self, target_obj, data, content_type=None): """Ignores any errors encountered in deserialization, @@ -1496,12 +1533,14 @@ def failsafe_deserialize(self, target_obj, data, content_type=None): a deserialization error. :param str target_obj: The target object type to deserialize to. - :param str/dict data: The response data to deseralize. + :param str/dict data: The response data to deserialize. :param str content_type: Swagger "produces" if available. + :return: Deserialized object. + :rtype: object """ try: return self(target_obj, data, content_type=content_type) - except: + except: # pylint: disable=bare-except _LOGGER.debug( "Ran into a deserialization error. Ignoring since this is failsafe deserialization", exc_info=True ) @@ -1519,10 +1558,12 @@ def _unpack_content(raw_data, content_type=None): If raw_data is something else, bypass all logic and return it directly. - :param raw_data: Data to be processed. - :param content_type: How to parse if raw_data is a string/bytes. + :param obj raw_data: Data to be processed. + :param str content_type: How to parse if raw_data is a string/bytes. :raises JSONDecodeError: If JSON is requested and parsing is impossible. :raises UnicodeDecodeError: If bytes is not UTF8 + :rtype: object + :return: Unpacked content. """ # Assume this is enough to detect a Pipeline Response without importing it context = getattr(raw_data, "context", {}) @@ -1539,31 +1580,42 @@ def _unpack_content(raw_data, content_type=None): if hasattr(raw_data, "_content_consumed"): return RawDeserializer.deserialize_from_http_generics(raw_data.text, raw_data.headers) - if isinstance(raw_data, (basestring, bytes)) or hasattr(raw_data, "read"): + if isinstance(raw_data, (str, bytes)) or hasattr(raw_data, "read"): return RawDeserializer.deserialize_from_text(raw_data, content_type) # type: ignore return raw_data def _instantiate_model(self, response, attrs, additional_properties=None): """Instantiate a response model passing in deserialized args. - :param response: The response model class. - :param d_attrs: The deserialized response attributes. + :param Response response: The response model class. + :param dict attrs: The deserialized response attributes. + :param dict additional_properties: Additional properties to be set. + :rtype: Response + :return: The instantiated response model. """ if callable(response): subtype = getattr(response, "_subtype_map", {}) try: - readonly = [k for k, v in response._validation.items() if v.get("readonly")] - const = [k for k, v in response._validation.items() if v.get("constant")] + readonly = [ + k + for k, v in response._validation.items() # pylint: disable=protected-access # type: ignore + if v.get("readonly") + ] + const = [ + k + for k, v in response._validation.items() # pylint: disable=protected-access # type: ignore + if v.get("constant") + ] kwargs = {k: v for k, v in attrs.items() if k not in subtype and k not in readonly + const} response_obj = response(**kwargs) for attr in readonly: setattr(response_obj, attr, attrs.get(attr)) if additional_properties: - response_obj.additional_properties = additional_properties + response_obj.additional_properties = additional_properties # type: ignore return response_obj except TypeError as err: msg = "Unable to deserialize {} into model {}. ".format(kwargs, response) # type: ignore - raise DeserializationError(msg + str(err)) + raise DeserializationError(msg + str(err)) from err else: try: for attr, value in attrs.items(): @@ -1572,15 +1624,16 @@ def _instantiate_model(self, response, attrs, additional_properties=None): except Exception as exp: msg = "Unable to populate response model. " msg += "Type: {}, Error: {}".format(type(response), exp) - raise DeserializationError(msg) + raise DeserializationError(msg) from exp - def deserialize_data(self, data, data_type): + def deserialize_data(self, data, data_type): # pylint: disable=too-many-return-statements """Process data for deserialization according to data type. :param str data: The response string to be deserialized. :param str data_type: The type to deserialize to. - :raises: DeserializationError if deserialization fails. + :raises DeserializationError: if deserialization fails. :return: Deserialized object. + :rtype: object """ if data is None: return data @@ -1594,7 +1647,11 @@ def deserialize_data(self, data, data_type): if isinstance(data, self.deserialize_expected_types.get(data_type, tuple())): return data - is_a_text_parsing_type = lambda x: x not in ["object", "[]", r"{}"] + is_a_text_parsing_type = lambda x: x not in [ # pylint: disable=unnecessary-lambda-assignment + "object", + "[]", + r"{}", + ] if isinstance(data, ET.Element) and is_a_text_parsing_type(data_type) and not data.text: return None data_val = self.deserialize_type[data_type](data) @@ -1613,15 +1670,15 @@ def deserialize_data(self, data, data_type): except (ValueError, TypeError, AttributeError) as err: msg = "Unable to deserialize response data." msg += " Data: {}, {}".format(data, data_type) - raise_with_traceback(DeserializationError, msg, err) - else: - return self._deserialize(obj_type, data) + raise DeserializationError(msg) from err + return self._deserialize(obj_type, data) def deserialize_iter(self, attr, iter_type): """Deserialize an iterable. :param list attr: Iterable to be deserialized. :param str iter_type: The type of object in the iterable. + :return: Deserialized iterable. :rtype: list """ if attr is None: @@ -1638,6 +1695,7 @@ def deserialize_dict(self, attr, dict_type): :param dict/list attr: Dictionary to be deserialized. Also accepts a list of key, value pairs. :param str dict_type: The object type of the items in the dictionary. + :return: Deserialized dictionary. :rtype: dict """ if isinstance(attr, list): @@ -1648,20 +1706,21 @@ def deserialize_dict(self, attr, dict_type): attr = {el.tag: el.text for el in attr} return {k: self.deserialize_data(v, dict_type) for k, v in attr.items()} - def deserialize_object(self, attr, **kwargs): + def deserialize_object(self, attr, **kwargs): # pylint: disable=too-many-return-statements """Deserialize a generic object. This will be handled as a dictionary. :param dict attr: Dictionary to be deserialized. + :return: Deserialized object. :rtype: dict - :raises: TypeError if non-builtin datatype encountered. + :raises TypeError: if non-builtin datatype encountered. """ if attr is None: return None if isinstance(attr, ET.Element): # Do no recurse on XML, just return the tree as-is return attr - if isinstance(attr, basestring): + if isinstance(attr, str): return self.deserialize_basic(attr, "str") obj_type = type(attr) if obj_type in self.basic_types: @@ -1687,11 +1746,10 @@ def deserialize_object(self, attr, **kwargs): pass return deserialized - else: - error = "Cannot deserialize generic object with type: " - raise TypeError(error + str(obj_type)) + error = "Cannot deserialize generic object with type: " + raise TypeError(error + str(obj_type)) - def deserialize_basic(self, attr, data_type): + def deserialize_basic(self, attr, data_type): # pylint: disable=too-many-return-statements """Deserialize basic builtin data type from string. Will attempt to convert to str, int, float and bool. This function will also accept '1', '0', 'true' and 'false' as @@ -1699,8 +1757,9 @@ def deserialize_basic(self, attr, data_type): :param str attr: response string to be deserialized. :param str data_type: deserialization data type. + :return: Deserialized basic type. :rtype: str, int, float or bool - :raises: TypeError if string format is not valid. + :raises TypeError: if string format is not valid. """ # If we're here, data is supposed to be a basic type. # If it's still an XML node, take the text @@ -1710,24 +1769,23 @@ def deserialize_basic(self, attr, data_type): if data_type == "str": # None or '', node is empty string. return "" - else: - # None or '', node with a strong type is None. - # Don't try to model "empty bool" or "empty int" - return None + # None or '', node with a strong type is None. + # Don't try to model "empty bool" or "empty int" + return None if data_type == "bool": if attr in [True, False, 1, 0]: return bool(attr) - elif isinstance(attr, basestring): + if isinstance(attr, str): if attr.lower() in ["true", "1"]: return True - elif attr.lower() in ["false", "0"]: + if attr.lower() in ["false", "0"]: return False raise TypeError("Invalid boolean value: {}".format(attr)) if data_type == "str": return self.deserialize_unicode(attr) - return eval(data_type)(attr) # nosec + return eval(data_type)(attr) # nosec # pylint: disable=eval-used @staticmethod def deserialize_unicode(data): @@ -1735,6 +1793,7 @@ def deserialize_unicode(data): as a string. :param str data: response string to be deserialized. + :return: Deserialized string. :rtype: str or unicode """ # We might be here because we have an enum modeled as string, @@ -1748,8 +1807,7 @@ def deserialize_unicode(data): return data except NameError: return str(data) - else: - return str(data) + return str(data) @staticmethod def deserialize_enum(data, enum_obj): @@ -1761,6 +1819,7 @@ def deserialize_enum(data, enum_obj): :param str data: Response string to be deserialized. If this value is None or invalid it will be returned as-is. :param Enum enum_obj: Enum object to deserialize to. + :return: Deserialized enum object. :rtype: Enum """ if isinstance(data, enum_obj) or data is None: @@ -1769,12 +1828,11 @@ def deserialize_enum(data, enum_obj): data = data.value if isinstance(data, int): # Workaround. We might consider remove it in the future. - # https://github.com/Azure/azure-rest-api-specs/issues/141 try: return list(enum_obj.__members__.values())[data] - except IndexError: + except IndexError as exc: error = "{!r} is not a valid index for enum {!r}" - raise DeserializationError(error.format(data, enum_obj)) + raise DeserializationError(error.format(data, enum_obj)) from exc try: return enum_obj(str(data)) except ValueError: @@ -1790,8 +1848,9 @@ def deserialize_bytearray(attr): """Deserialize string into bytearray. :param str attr: response string to be deserialized. + :return: Deserialized bytearray :rtype: bytearray - :raises: TypeError if string format invalid. + :raises TypeError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text @@ -1802,8 +1861,9 @@ def deserialize_base64(attr): """Deserialize base64 encoded string into string. :param str attr: response string to be deserialized. + :return: Deserialized base64 string :rtype: bytearray - :raises: TypeError if string format invalid. + :raises TypeError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text @@ -1817,24 +1877,26 @@ def deserialize_decimal(attr): """Deserialize string into Decimal object. :param str attr: response string to be deserialized. - :rtype: Decimal - :raises: DeserializationError if string format invalid. + :return: Deserialized decimal + :raises DeserializationError: if string format invalid. + :rtype: decimal """ if isinstance(attr, ET.Element): attr = attr.text try: - return decimal.Decimal(attr) # type: ignore + return decimal.Decimal(str(attr)) # type: ignore except decimal.DecimalException as err: msg = "Invalid decimal {}".format(attr) - raise_with_traceback(DeserializationError, msg, err) + raise DeserializationError(msg) from err @staticmethod def deserialize_long(attr): """Deserialize string into long (Py2) or int (Py3). :param str attr: response string to be deserialized. + :return: Deserialized int :rtype: long or int - :raises: ValueError if string format invalid. + :raises ValueError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text @@ -1845,8 +1907,9 @@ def deserialize_duration(attr): """Deserialize ISO-8601 formatted string into TimeDelta object. :param str attr: response string to be deserialized. + :return: Deserialized duration :rtype: TimeDelta - :raises: DeserializationError if string format invalid. + :raises DeserializationError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text @@ -1854,32 +1917,33 @@ def deserialize_duration(attr): duration = isodate.parse_duration(attr) except (ValueError, OverflowError, AttributeError) as err: msg = "Cannot deserialize duration object." - raise_with_traceback(DeserializationError, msg, err) - else: - return duration + raise DeserializationError(msg) from err + return duration @staticmethod def deserialize_date(attr): """Deserialize ISO-8601 formatted string into Date object. :param str attr: response string to be deserialized. + :return: Deserialized date :rtype: Date - :raises: DeserializationError if string format invalid. + :raises DeserializationError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text if re.search(r"[^\W\d_]", attr, re.I + re.U): # type: ignore raise DeserializationError("Date must have only digits and -. Received: %s" % attr) # This must NOT use defaultmonth/defaultday. Using None ensure this raises an exception. - return isodate.parse_date(attr, defaultmonth=None, defaultday=None) + return isodate.parse_date(attr, defaultmonth=0, defaultday=0) @staticmethod def deserialize_time(attr): """Deserialize ISO-8601 formatted string into time object. :param str attr: response string to be deserialized. + :return: Deserialized time :rtype: datetime.time - :raises: DeserializationError if string format invalid. + :raises DeserializationError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text @@ -1892,31 +1956,32 @@ def deserialize_rfc(attr): """Deserialize RFC-1123 formatted string into Datetime object. :param str attr: response string to be deserialized. + :return: Deserialized RFC datetime :rtype: Datetime - :raises: DeserializationError if string format invalid. + :raises DeserializationError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text try: parsed_date = email.utils.parsedate_tz(attr) # type: ignore date_obj = datetime.datetime( - *parsed_date[:6], tzinfo=_FixedOffset(datetime.timedelta(minutes=(parsed_date[9] or 0) / 60)) + *parsed_date[:6], tzinfo=datetime.timezone(datetime.timedelta(minutes=(parsed_date[9] or 0) / 60)) ) if not date_obj.tzinfo: date_obj = date_obj.astimezone(tz=TZ_UTC) except ValueError as err: msg = "Cannot deserialize to rfc datetime object." - raise_with_traceback(DeserializationError, msg, err) - else: - return date_obj + raise DeserializationError(msg) from err + return date_obj @staticmethod def deserialize_iso(attr): """Deserialize ISO-8601 formatted string into Datetime object. :param str attr: response string to be deserialized. + :return: Deserialized ISO datetime :rtype: Datetime - :raises: DeserializationError if string format invalid. + :raises DeserializationError: if string format invalid. """ if isinstance(attr, ET.Element): attr = attr.text @@ -1943,9 +2008,8 @@ def deserialize_iso(attr): raise OverflowError("Hit max or min date") except (ValueError, OverflowError, AttributeError) as err: msg = "Cannot deserialize datetime object." - raise_with_traceback(DeserializationError, msg, err) - else: - return date_obj + raise DeserializationError(msg) from err + return date_obj @staticmethod def deserialize_unix(attr): @@ -1953,15 +2017,16 @@ def deserialize_unix(attr): This is represented as seconds. :param int attr: Object to be serialized. + :return: Deserialized datetime :rtype: Datetime - :raises: DeserializationError if format invalid + :raises DeserializationError: if format invalid """ if isinstance(attr, ET.Element): attr = int(attr.text) # type: ignore try: + attr = int(attr) date_obj = datetime.datetime.fromtimestamp(attr, TZ_UTC) except ValueError as err: msg = "Cannot deserialize to unix datetime object." - raise_with_traceback(DeserializationError, msg, err) - else: - return date_obj + raise DeserializationError(msg) from err + return date_obj diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_vendor.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_vendor.py deleted file mode 100644 index 9aad73fc743e..000000000000 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/_vendor.py +++ /dev/null @@ -1,27 +0,0 @@ -# -------------------------------------------------------------------------- -# 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 azure.core.pipeline.transport import HttpRequest - - -def _convert_request(request, files=None): - data = request.content if not files else None - request = HttpRequest(method=request.method, url=request.url, headers=request.headers, data=data) - if files: - request.set_formdata_body(files) - return request - - -def _format_url_section(template, **kwargs): - components = template.split("/") - while components: - try: - return template.format(**kwargs) - except KeyError as key: - formatted_components = template.split("/") - components = [c for c in formatted_components if "{}".format(key.args[0]) not in c] - template = "/".join(components) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/__init__.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/__init__.py index b5a655a5eeda..c24b5c678748 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/__init__.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/__init__.py @@ -5,12 +5,18 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +# pylint: disable=wrong-import-position -from ._azure_arc_data_management_client import AzureArcDataManagementClient +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._azure_arc_data_management_client import AzureArcDataManagementClient # type: ignore try: from ._patch import __all__ as _patch_all - from ._patch import * # pylint: disable=unused-wildcard-import + from ._patch import * except ImportError: _patch_all = [] from ._patch import patch_sdk as _patch_sdk @@ -18,6 +24,6 @@ __all__ = [ "AzureArcDataManagementClient", ] -__all__.extend([p for p in _patch_all if p not in __all__]) +__all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore _patch_sdk() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/_azure_arc_data_management_client.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/_azure_arc_data_management_client.py index 36f94989212b..477f2ed68a9e 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/_azure_arc_data_management_client.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/_azure_arc_data_management_client.py @@ -7,29 +7,38 @@ # -------------------------------------------------------------------------- from copy import deepcopy -from typing import Any, Awaitable, TYPE_CHECKING +from typing import Any, Awaitable, Optional, TYPE_CHECKING, cast +from typing_extensions import Self +from azure.core.pipeline import policies from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.core.settings import settings from azure.mgmt.core import AsyncARMPipelineClient +from azure.mgmt.core.policies import AsyncARMAutoResourceProviderRegistrationPolicy +from azure.mgmt.core.tools import get_arm_endpoints from .. import models as _models -from .._serialization import Deserializer, Serializer +from .._utils.serialization import Deserializer, Serializer from ._configuration import AzureArcDataManagementClientConfiguration from .operations import ( ActiveDirectoryConnectorsOperations, DataControllersOperations, + FailoverGroupsOperations, Operations, PostgresInstancesOperations, SqlManagedInstancesOperations, + SqlServerAvailabilityGroupsOperations, + SqlServerDatabasesOperations, + SqlServerEsuLicensesOperations, SqlServerInstancesOperations, + SqlServerLicensesOperations, ) if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials_async import AsyncTokenCredential -class AzureArcDataManagementClient: # pylint: disable=client-accepts-api-version-keyword +class AzureArcDataManagementClient: # pylint: disable=too-many-instance-attributes """The AzureArcData management API provides a RESTful set of web APIs to manage Azure Data Services on Azure Arc Resources. @@ -38,9 +47,14 @@ class AzureArcDataManagementClient: # pylint: disable=client-accepts-api-versio :ivar sql_managed_instances: SqlManagedInstancesOperations operations :vartype sql_managed_instances: azure.mgmt.azurearcdata.aio.operations.SqlManagedInstancesOperations + :ivar failover_groups: FailoverGroupsOperations operations + :vartype failover_groups: azure.mgmt.azurearcdata.aio.operations.FailoverGroupsOperations :ivar sql_server_instances: SqlServerInstancesOperations operations :vartype sql_server_instances: azure.mgmt.azurearcdata.aio.operations.SqlServerInstancesOperations + :ivar sql_server_licenses: SqlServerLicensesOperations operations + :vartype sql_server_licenses: + azure.mgmt.azurearcdata.aio.operations.SqlServerLicensesOperations :ivar data_controllers: DataControllersOperations operations :vartype data_controllers: azure.mgmt.azurearcdata.aio.operations.DataControllersOperations :ivar active_directory_connectors: ActiveDirectoryConnectorsOperations operations @@ -48,13 +62,22 @@ class AzureArcDataManagementClient: # pylint: disable=client-accepts-api-versio azure.mgmt.azurearcdata.aio.operations.ActiveDirectoryConnectorsOperations :ivar postgres_instances: PostgresInstancesOperations operations :vartype postgres_instances: azure.mgmt.azurearcdata.aio.operations.PostgresInstancesOperations + :ivar sql_server_availability_groups: SqlServerAvailabilityGroupsOperations operations + :vartype sql_server_availability_groups: + azure.mgmt.azurearcdata.aio.operations.SqlServerAvailabilityGroupsOperations + :ivar sql_server_databases: SqlServerDatabasesOperations operations + :vartype sql_server_databases: + azure.mgmt.azurearcdata.aio.operations.SqlServerDatabasesOperations + :ivar sql_server_esu_licenses: SqlServerEsuLicensesOperations operations + :vartype sql_server_esu_licenses: + azure.mgmt.azurearcdata.aio.operations.SqlServerEsuLicensesOperations :param credential: Credential needed for the client to connect to Azure. Required. :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The ID of the Azure subscription. Required. :type subscription_id: str - :param base_url: Service URL. Default value is "https://management.azure.com". + :param base_url: Service URL. Default value is None. :type base_url: str - :keyword api_version: Api Version. Default value is "2022-03-01-preview". Note that overriding + :keyword api_version: Api Version. Default value is "2025-03-01-preview". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str :keyword int polling_interval: Default waiting time between two polls for LRO operations if no @@ -62,16 +85,38 @@ class AzureArcDataManagementClient: # pylint: disable=client-accepts-api-versio """ def __init__( - self, - credential: "AsyncTokenCredential", - subscription_id: str, - base_url: str = "https://management.azure.com", - **kwargs: Any + self, credential: "AsyncTokenCredential", subscription_id: str, base_url: Optional[str] = None, **kwargs: Any ) -> None: + _cloud = kwargs.pop("cloud_setting", None) or settings.current.azure_cloud # type: ignore + _endpoints = get_arm_endpoints(_cloud) + if not base_url: + base_url = _endpoints["resource_manager"] + credential_scopes = kwargs.pop("credential_scopes", _endpoints["credential_scopes"]) self._config = AzureArcDataManagementClientConfiguration( - credential=credential, subscription_id=subscription_id, **kwargs + credential=credential, subscription_id=subscription_id, credential_scopes=credential_scopes, **kwargs + ) + + _policies = kwargs.pop("policies", None) + if _policies is None: + _policies = [ + policies.RequestIdPolicy(**kwargs), + self._config.headers_policy, + self._config.user_agent_policy, + self._config.proxy_policy, + policies.ContentDecodePolicy(**kwargs), + AsyncARMAutoResourceProviderRegistrationPolicy(), + self._config.redirect_policy, + self._config.retry_policy, + self._config.authentication_policy, + self._config.custom_hook_policy, + self._config.logging_policy, + policies.DistributedTracingPolicy(**kwargs), + policies.SensitiveHeaderCleanupPolicy(**kwargs) if self._config.redirect_policy else None, + self._config.http_logging_policy, + ] + self._client: AsyncARMPipelineClient = AsyncARMPipelineClient( + base_url=cast(str, base_url), policies=_policies, **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) @@ -81,9 +126,13 @@ def __init__( self.sql_managed_instances = SqlManagedInstancesOperations( self._client, self._config, self._serialize, self._deserialize ) + self.failover_groups = FailoverGroupsOperations(self._client, self._config, self._serialize, self._deserialize) self.sql_server_instances = SqlServerInstancesOperations( self._client, self._config, self._serialize, self._deserialize ) + self.sql_server_licenses = SqlServerLicensesOperations( + self._client, self._config, self._serialize, self._deserialize + ) self.data_controllers = DataControllersOperations( self._client, self._config, self._serialize, self._deserialize ) @@ -93,8 +142,19 @@ def __init__( self.postgres_instances = PostgresInstancesOperations( self._client, self._config, self._serialize, self._deserialize ) + self.sql_server_availability_groups = SqlServerAvailabilityGroupsOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.sql_server_databases = SqlServerDatabasesOperations( + self._client, self._config, self._serialize, self._deserialize + ) + self.sql_server_esu_licenses = SqlServerEsuLicensesOperations( + self._client, self._config, self._serialize, self._deserialize + ) - def _send_request(self, request: HttpRequest, **kwargs: Any) -> Awaitable[AsyncHttpResponse]: + def _send_request( + self, request: HttpRequest, *, stream: bool = False, **kwargs: Any + ) -> Awaitable[AsyncHttpResponse]: """Runs the network request through the client's chained policies. >>> from azure.core.rest import HttpRequest @@ -114,14 +174,14 @@ def _send_request(self, request: HttpRequest, **kwargs: Any) -> Awaitable[AsyncH request_copy = deepcopy(request) request_copy.url = self._client.format_url(request_copy.url) - return self._client.send_request(request_copy, **kwargs) + return self._client.send_request(request_copy, stream=stream, **kwargs) # type: ignore async def close(self) -> None: await self._client.close() - async def __aenter__(self) -> "AzureArcDataManagementClient": + async def __aenter__(self) -> Self: await self._client.__aenter__() return self - async def __aexit__(self, *exc_details) -> None: + async def __aexit__(self, *exc_details: Any) -> None: await self._client.__aexit__(*exc_details) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/_configuration.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/_configuration.py index 5d04c84f178a..51dd5a2e3b4e 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/_configuration.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/_configuration.py @@ -6,26 +6,18 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys 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, AsyncARMChallengeAuthenticationPolicy from .._version import VERSION -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports - if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports from azure.core.credentials_async import AsyncTokenCredential -class AzureArcDataManagementClientConfiguration(Configuration): # pylint: disable=too-many-instance-attributes +class AzureArcDataManagementClientConfiguration: # pylint: disable=too-many-instance-attributes,name-too-long """Configuration for AzureArcDataManagementClient. Note that all parameters used to create this instance are saved as instance @@ -35,14 +27,13 @@ class AzureArcDataManagementClientConfiguration(Configuration): # pylint: disab :type credential: ~azure.core.credentials_async.AsyncTokenCredential :param subscription_id: The ID of the Azure subscription. Required. :type subscription_id: str - :keyword api_version: Api Version. Default value is "2022-03-01-preview". Note that overriding + :keyword api_version: Api Version. Default value is "2025-03-01-preview". Note that overriding this default value may result in unsupported behavior. :paramtype api_version: str """ def __init__(self, credential: "AsyncTokenCredential", subscription_id: str, **kwargs: Any) -> None: - super(AzureArcDataManagementClientConfiguration, self).__init__(**kwargs) - api_version: Literal["2022-03-01-preview"] = kwargs.pop("api_version", "2022-03-01-preview") + api_version: str = kwargs.pop("api_version", "2025-03-01-preview") if credential is None: raise ValueError("Parameter 'credential' must not be None.") @@ -54,6 +45,7 @@ def __init__(self, credential: "AsyncTokenCredential", subscription_id: str, **k self.api_version = api_version self.credential_scopes = kwargs.pop("credential_scopes", ["https://management.azure.com/.default"]) kwargs.setdefault("sdk_moniker", "mgmt-azurearcdata/{}".format(VERSION)) + self.polling_interval = kwargs.get("polling_interval", 30) self._configure(**kwargs) def _configure(self, **kwargs: Any) -> None: @@ -62,9 +54,9 @@ def _configure(self, **kwargs: Any) -> None: 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.retry_policy = kwargs.get("retry_policy") or policies.AsyncRetryPolicy(**kwargs) self.authentication_policy = kwargs.get("authentication_policy") if self.credential and not self.authentication_policy: self.authentication_policy = AsyncARMChallengeAuthenticationPolicy( diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/__init__.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/__init__.py index 86245dd95097..932bd07931c2 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/__init__.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/__init__.py @@ -5,25 +5,41 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +# pylint: disable=wrong-import-position -from ._operations import Operations -from ._sql_managed_instances_operations import SqlManagedInstancesOperations -from ._sql_server_instances_operations import SqlServerInstancesOperations -from ._data_controllers_operations import DataControllersOperations -from ._active_directory_connectors_operations import ActiveDirectoryConnectorsOperations -from ._postgres_instances_operations import PostgresInstancesOperations +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._operations import Operations # type: ignore +from ._sql_managed_instances_operations import SqlManagedInstancesOperations # type: ignore +from ._failover_groups_operations import FailoverGroupsOperations # type: ignore +from ._sql_server_instances_operations import SqlServerInstancesOperations # type: ignore +from ._sql_server_licenses_operations import SqlServerLicensesOperations # type: ignore +from ._data_controllers_operations import DataControllersOperations # type: ignore +from ._active_directory_connectors_operations import ActiveDirectoryConnectorsOperations # type: ignore +from ._postgres_instances_operations import PostgresInstancesOperations # type: ignore +from ._sql_server_availability_groups_operations import SqlServerAvailabilityGroupsOperations # type: ignore +from ._sql_server_databases_operations import SqlServerDatabasesOperations # type: ignore +from ._sql_server_esu_licenses_operations import SqlServerEsuLicensesOperations # type: ignore from ._patch import __all__ as _patch_all -from ._patch import * # pylint: disable=unused-wildcard-import +from ._patch import * from ._patch import patch_sdk as _patch_sdk __all__ = [ "Operations", "SqlManagedInstancesOperations", + "FailoverGroupsOperations", "SqlServerInstancesOperations", + "SqlServerLicensesOperations", "DataControllersOperations", "ActiveDirectoryConnectorsOperations", "PostgresInstancesOperations", + "SqlServerAvailabilityGroupsOperations", + "SqlServerDatabasesOperations", + "SqlServerEsuLicensesOperations", ] -__all__.extend([p for p in _patch_all if p not in __all__]) +__all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore _patch_sdk() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_active_directory_connectors_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_active_directory_connectors_operations.py index 0572c8d99806..df08648ec262 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_active_directory_connectors_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_active_directory_connectors_operations.py @@ -1,4 +1,3 @@ -# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,10 +5,12 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +from collections.abc import MutableMapping +from io import IOBase +from typing import Any, AsyncIterable, AsyncIterator, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload import urllib.parse +from azure.core import AsyncPipelineClient from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ( ClientAuthenticationError, @@ -17,12 +18,13 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict @@ -30,18 +32,15 @@ from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models -from ..._vendor import _convert_request +from ..._utils.serialization import Deserializer, Serializer from ...operations._active_directory_connectors_operations import ( build_create_request, build_delete_request, build_get_request, build_list_request, ) +from .._configuration import AzureArcDataManagementClientConfiguration -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -60,10 +59,12 @@ class ActiveDirectoryConnectorsOperations: def __init__(self, *args, **kwargs) -> None: input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list( @@ -77,7 +78,6 @@ def list( :type resource_group_name: str :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ActiveDirectoryConnectorResource or the result of cls(response) :rtype: @@ -87,12 +87,10 @@ def list( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ActiveDirectoryConnectorListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -103,17 +101,15 @@ def list( def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -125,13 +121,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("ActiveDirectoryConnectorListResult", pipeline_response) @@ -141,10 +136,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -157,19 +153,15 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors" - } - async def _create_initial( self, resource_group_name: str, data_controller_name: str, active_directory_connector_name: str, - active_directory_connector_resource: Union[_models.ActiveDirectoryConnectorResource, IO], + active_directory_connector_resource: Union[_models.ActiveDirectoryConnectorResource, IO[bytes]], **kwargs: Any - ) -> _models.ActiveDirectoryConnectorResource: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -180,21 +172,19 @@ async def _create_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.ActiveDirectoryConnectorResource] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(active_directory_connector_resource, (IO, bytes)): + if isinstance(active_directory_connector_resource, (IOBase, bytes)): _content = active_directory_connector_resource else: _json = self._serialize.body(active_directory_connector_resource, "ActiveDirectoryConnectorResource") - request = build_create_request( + _request = build_create_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, active_directory_connector_name=active_directory_connector_name, @@ -203,39 +193,35 @@ async def _create_initial( content_type=content_type, json=_json, content=_content, - template_url=self._create_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 201]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - _create_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}" - } - @overload async def begin_create( self, @@ -262,14 +248,6 @@ async def begin_create( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 ActiveDirectoryConnectorResource or the result of cls(response) :rtype: @@ -283,7 +261,7 @@ async def begin_create( resource_group_name: str, data_controller_name: str, active_directory_connector_name: str, - active_directory_connector_resource: IO, + active_directory_connector_resource: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -298,18 +276,10 @@ async def begin_create( Required. :type active_directory_connector_name: str :param active_directory_connector_resource: desc. Required. - :type active_directory_connector_resource: IO + :type active_directory_connector_resource: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 ActiveDirectoryConnectorResource or the result of cls(response) :rtype: @@ -323,7 +293,7 @@ async def begin_create( resource_group_name: str, data_controller_name: str, active_directory_connector_name: str, - active_directory_connector_resource: Union[_models.ActiveDirectoryConnectorResource, IO], + active_directory_connector_resource: Union[_models.ActiveDirectoryConnectorResource, IO[bytes]], **kwargs: Any ) -> AsyncLROPoller[_models.ActiveDirectoryConnectorResource]: """Creates or replaces an Active Directory connector resource. @@ -335,21 +305,10 @@ async def begin_create( :param active_directory_connector_name: The name of the Active Directory connector instance. Required. :type active_directory_connector_name: str - :param active_directory_connector_resource: desc. Is either a model type or a IO type. - Required. + :param active_directory_connector_resource: desc. Is either a ActiveDirectoryConnectorResource + type or a IO[bytes] type. Required. :type active_directory_connector_resource: - ~azure.mgmt.azurearcdata.models.ActiveDirectoryConnectorResource or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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. + ~azure.mgmt.azurearcdata.models.ActiveDirectoryConnectorResource or IO[bytes] :return: An instance of AsyncLROPoller that returns either ActiveDirectoryConnectorResource or the result of cls(response) :rtype: @@ -359,9 +318,7 @@ async def begin_create( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.ActiveDirectoryConnectorResource] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) @@ -380,12 +337,13 @@ async def begin_create( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response) + deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -398,22 +356,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.ActiveDirectoryConnectorResource].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}" - } + return AsyncLROPoller[_models.ActiveDirectoryConnectorResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - async def _delete_initial( # pylint: disable=inconsistent-return-statements + async def _delete_initial( self, resource_group_name: str, data_controller_name: str, active_directory_connector_name: str, **kwargs: Any - ) -> None: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -424,41 +380,43 @@ async def _delete_initial( # pylint: disable=inconsistent-return-statements _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) - cls: ClsType[None] = kwargs.pop("cls", None) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, active_directory_connector_name=active_directory_connector_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self._delete_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}" - } + return deserialized # type: ignore @distributed_trace_async async def begin_delete( @@ -473,14 +431,6 @@ async def begin_delete( :param active_directory_connector_name: The name of the Active Directory connector instance. Required. :type active_directory_connector_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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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: @@ -488,15 +438,13 @@ async def begin_delete( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = await self._delete_initial( # type: ignore + raw_result = await self._delete_initial( resource_group_name=resource_group_name, data_controller_name=data_controller_name, active_directory_connector_name=active_directory_connector_name, @@ -506,11 +454,12 @@ async def begin_delete( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, None, {}) # type: ignore if polling is True: polling_method: AsyncPollingMethod = cast(AsyncPollingMethod, AsyncARMPolling(lro_delay, **kwargs)) @@ -519,17 +468,13 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_delete.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}" - } + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore @distributed_trace_async async def get( @@ -544,12 +489,11 @@ async def get( :param active_directory_connector_name: The name of the Active Directory connector instance. Required. :type active_directory_connector_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ActiveDirectoryConnectorResource or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.ActiveDirectoryConnectorResource :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -560,26 +504,23 @@ async def get( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ActiveDirectoryConnectorResource] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, active_directory_connector_name=active_directory_connector_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -589,13 +530,9 @@ async def get( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response) + deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}" - } + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_data_controllers_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_data_controllers_operations.py index 15667f01a721..e3e21fe15fcb 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_data_controllers_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_data_controllers_operations.py @@ -1,4 +1,3 @@ -# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,10 +5,12 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +from collections.abc import MutableMapping +from io import IOBase +from typing import Any, AsyncIterable, AsyncIterator, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload import urllib.parse +from azure.core import AsyncPipelineClient from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ( ClientAuthenticationError, @@ -17,12 +18,13 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict @@ -30,7 +32,7 @@ from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models -from ..._vendor import _convert_request +from ..._utils.serialization import Deserializer, Serializer from ...operations._data_controllers_operations import ( build_delete_data_controller_request, build_get_data_controller_request, @@ -39,11 +41,8 @@ build_patch_data_controller_request, build_put_data_controller_request, ) +from .._configuration import AzureArcDataManagementClientConfiguration -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -62,10 +61,12 @@ class DataControllersOperations: def __init__(self, *args, **kwargs) -> None: input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list_in_subscription(self, **kwargs: Any) -> AsyncIterable["_models.DataControllerResource"]: @@ -73,7 +74,6 @@ def list_in_subscription(self, **kwargs: Any) -> AsyncIterable["_models.DataCont List dataController resources in the subscription. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either DataControllerResource or the result of cls(response) :rtype: @@ -83,12 +83,10 @@ def list_in_subscription(self, **kwargs: Any) -> AsyncIterable["_models.DataCont _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.PageOfDataControllerResource] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -99,15 +97,13 @@ def list_in_subscription(self, **kwargs: Any) -> AsyncIterable["_models.DataCont def prepare_request(next_link=None): if not next_link: - request = build_list_in_subscription_request( + _request = build_list_in_subscription_request( subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_in_subscription.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -119,13 +115,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("PageOfDataControllerResource", pipeline_response) @@ -135,10 +130,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -151,10 +147,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list_in_subscription.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.AzureArcData/dataControllers" - } - @distributed_trace def list_in_group(self, resource_group_name: str, **kwargs: Any) -> AsyncIterable["_models.DataControllerResource"]: """List dataController resources in the resource group. @@ -163,7 +155,6 @@ def list_in_group(self, resource_group_name: str, **kwargs: Any) -> AsyncIterabl :param resource_group_name: The name of the Azure resource group. Required. :type resource_group_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either DataControllerResource or the result of cls(response) :rtype: @@ -173,12 +164,10 @@ def list_in_group(self, resource_group_name: str, **kwargs: Any) -> AsyncIterabl _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.PageOfDataControllerResource] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -189,16 +178,14 @@ def list_in_group(self, resource_group_name: str, **kwargs: Any) -> AsyncIterabl def prepare_request(next_link=None): if not next_link: - request = build_list_in_group_request( + _request = build_list_in_group_request( resource_group_name=resource_group_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_in_group.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -210,13 +197,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("PageOfDataControllerResource", pipeline_response) @@ -226,10 +212,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -242,18 +229,14 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list_in_group.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers" - } - async def _put_data_controller_initial( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: Union[_models.DataControllerResource, IO], + data_controller_resource: Union[_models.DataControllerResource, IO[bytes]], **kwargs: Any - ) -> _models.DataControllerResource: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -264,21 +247,19 @@ async def _put_data_controller_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.DataControllerResource] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(data_controller_resource, (IO, bytes)): + if isinstance(data_controller_resource, (IOBase, bytes)): _content = data_controller_resource else: _json = self._serialize.body(data_controller_resource, "DataControllerResource") - request = build_put_data_controller_request( + _request = build_put_data_controller_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, subscription_id=self._config.subscription_id, @@ -286,39 +267,35 @@ async def _put_data_controller_initial( content_type=content_type, json=_json, content=_content, - template_url=self._put_data_controller_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 201]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("DataControllerResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("DataControllerResource", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - _put_data_controller_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } - @overload async def begin_put_data_controller( self, @@ -340,14 +317,6 @@ async def begin_put_data_controller( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 DataControllerResource or the result of cls(response) :rtype: @@ -360,7 +329,7 @@ async def begin_put_data_controller( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: IO, + data_controller_resource: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -372,18 +341,10 @@ async def begin_put_data_controller( :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str :param data_controller_resource: desc. Required. - :type data_controller_resource: IO + :type data_controller_resource: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 DataControllerResource or the result of cls(response) :rtype: @@ -396,7 +357,7 @@ async def begin_put_data_controller( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: Union[_models.DataControllerResource, IO], + data_controller_resource: Union[_models.DataControllerResource, IO[bytes]], **kwargs: Any ) -> AsyncLROPoller[_models.DataControllerResource]: """Creates or replaces a dataController resource. @@ -405,19 +366,10 @@ async def begin_put_data_controller( :type resource_group_name: str :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str - :param data_controller_resource: desc. Is either a model type or a IO type. Required. - :type data_controller_resource: ~azure.mgmt.azurearcdata.models.DataControllerResource or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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. + :param data_controller_resource: desc. Is either a DataControllerResource type or a IO[bytes] + type. Required. + :type data_controller_resource: ~azure.mgmt.azurearcdata.models.DataControllerResource or + IO[bytes] :return: An instance of AsyncLROPoller that returns either DataControllerResource or the result of cls(response) :rtype: @@ -427,9 +379,7 @@ async def begin_put_data_controller( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.DataControllerResource] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) @@ -447,12 +397,13 @@ async def begin_put_data_controller( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("DataControllerResource", pipeline_response) + deserialized = self._deserialize("DataControllerResource", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -465,22 +416,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.DataControllerResource].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_put_data_controller.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return AsyncLROPoller[_models.DataControllerResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - async def _delete_data_controller_initial( # pylint: disable=inconsistent-return-statements + async def _delete_data_controller_initial( self, resource_group_name: str, data_controller_name: str, **kwargs: Any - ) -> None: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -491,40 +440,42 @@ async def _delete_data_controller_initial( # pylint: disable=inconsistent-retur _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) - cls: ClsType[None] = kwargs.pop("cls", None) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_delete_data_controller_request( + _request = build_delete_data_controller_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self._delete_data_controller_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - _delete_data_controller_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return deserialized # type: ignore @distributed_trace_async async def begin_delete_data_controller( @@ -536,14 +487,6 @@ async def begin_delete_data_controller( :type resource_group_name: str :param data_controller_name: The name of the data controller. Required. :type data_controller_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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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: @@ -551,15 +494,13 @@ async def begin_delete_data_controller( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = await self._delete_data_controller_initial( # type: ignore + raw_result = await self._delete_data_controller_initial( resource_group_name=resource_group_name, data_controller_name=data_controller_name, api_version=api_version, @@ -568,11 +509,12 @@ async def begin_delete_data_controller( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, None, {}) # type: ignore if polling is True: polling_method: AsyncPollingMethod = cast(AsyncPollingMethod, AsyncARMPolling(lro_delay, **kwargs)) @@ -581,17 +523,13 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_delete_data_controller.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore @distributed_trace_async async def get_data_controller( @@ -603,12 +541,11 @@ async def get_data_controller( :type resource_group_name: str :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: DataControllerResource or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.DataControllerResource :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -619,25 +556,22 @@ async def get_data_controller( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.DataControllerResource] = kwargs.pop("cls", None) - request = build_get_data_controller_request( + _request = build_get_data_controller_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get_data_controller.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -647,25 +581,21 @@ async def get_data_controller( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("DataControllerResource", pipeline_response) + deserialized = self._deserialize("DataControllerResource", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get_data_controller.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return deserialized # type: ignore async def _patch_data_controller_initial( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: Union[_models.DataControllerUpdate, IO], + data_controller_resource: Union[_models.DataControllerUpdate, IO[bytes]], **kwargs: Any - ) -> Optional[_models.DataControllerResource]: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -676,21 +606,19 @@ async def _patch_data_controller_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Optional[_models.DataControllerResource]] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(data_controller_resource, (IO, bytes)): + if isinstance(data_controller_resource, (IOBase, bytes)): _content = data_controller_resource else: _json = self._serialize.body(data_controller_resource, "DataControllerUpdate") - request = build_patch_data_controller_request( + _request = build_patch_data_controller_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, subscription_id=self._config.subscription_id, @@ -698,36 +626,34 @@ async def _patch_data_controller_initial( content_type=content_type, json=_json, content=_content, - template_url=self._patch_data_controller_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None - if response.status_code == 200: - deserialized = self._deserialize("DataControllerResource", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - _patch_data_controller_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return deserialized # type: ignore @overload async def begin_patch_data_controller( @@ -750,14 +676,6 @@ async def begin_patch_data_controller( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 DataControllerResource or the result of cls(response) :rtype: @@ -770,7 +688,7 @@ async def begin_patch_data_controller( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: IO, + data_controller_resource: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -782,18 +700,10 @@ async def begin_patch_data_controller( :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str :param data_controller_resource: The update data controller resource. Required. - :type data_controller_resource: IO + :type data_controller_resource: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 DataControllerResource or the result of cls(response) :rtype: @@ -806,7 +716,7 @@ async def begin_patch_data_controller( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: Union[_models.DataControllerUpdate, IO], + data_controller_resource: Union[_models.DataControllerUpdate, IO[bytes]], **kwargs: Any ) -> AsyncLROPoller[_models.DataControllerResource]: """Updates a dataController resource. @@ -815,20 +725,10 @@ async def begin_patch_data_controller( :type resource_group_name: str :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str - :param data_controller_resource: The update data controller resource. Is either a model type or - a IO type. Required. - :type data_controller_resource: ~azure.mgmt.azurearcdata.models.DataControllerUpdate or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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. + :param data_controller_resource: The update data controller resource. Is either a + DataControllerUpdate type or a IO[bytes] type. Required. + :type data_controller_resource: ~azure.mgmt.azurearcdata.models.DataControllerUpdate or + IO[bytes] :return: An instance of AsyncLROPoller that returns either DataControllerResource or the result of cls(response) :rtype: @@ -838,9 +738,7 @@ async def begin_patch_data_controller( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.DataControllerResource] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) @@ -858,12 +756,13 @@ async def begin_patch_data_controller( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("DataControllerResource", pipeline_response) + deserialized = self._deserialize("DataControllerResource", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -876,14 +775,12 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.DataControllerResource].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_patch_data_controller.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return AsyncLROPoller[_models.DataControllerResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_failover_groups_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_failover_groups_operations.py new file mode 100644 index 000000000000..52d27e54710a --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_failover_groups_operations.py @@ -0,0 +1,532 @@ +# 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 collections.abc import MutableMapping +from io import IOBase +from typing import Any, AsyncIterable, AsyncIterator, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +import urllib.parse + +from azure.core import AsyncPipelineClient +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling + +from ... import models as _models +from ..._utils.serialization import Deserializer, Serializer +from ...operations._failover_groups_operations import ( + build_create_request, + build_delete_request, + build_get_request, + build_list_request, +) +from .._configuration import AzureArcDataManagementClientConfiguration + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class FailoverGroupsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.azurearcdata.aio.AzureArcDataManagementClient`'s + :attr:`failover_groups` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list( + self, resource_group_name: str, sql_managed_instance_name: str, **kwargs: Any + ) -> AsyncIterable["_models.FailoverGroupResource"]: + """List the failover groups associated with the given sql managed instance. + + List the failover groups associated with the given sql managed instance. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :return: An iterator like instance of either FailoverGroupResource or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.FailoverGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.FailoverGroupListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("FailoverGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + async def _create_initial( + self, + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + failover_group_resource: Union[_models.FailoverGroupResource, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(failover_group_resource, (IOBase, bytes)): + _content = failover_group_resource + else: + _json = self._serialize.body(failover_group_resource, "FailoverGroupResource") + + _request = build_create_request( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + failover_group_name=failover_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_create( + self, + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + failover_group_resource: _models.FailoverGroupResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.FailoverGroupResource]: + """Creates or replaces a failover group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :param failover_group_name: The name of the Failover Group. Required. + :type failover_group_name: str + :param failover_group_resource: desc. Required. + :type failover_group_resource: ~azure.mgmt.azurearcdata.models.FailoverGroupResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either FailoverGroupResource or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.FailoverGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create( + self, + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + failover_group_resource: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.FailoverGroupResource]: + """Creates or replaces a failover group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :param failover_group_name: The name of the Failover Group. Required. + :type failover_group_name: str + :param failover_group_resource: desc. Required. + :type failover_group_resource: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either FailoverGroupResource or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.FailoverGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_create( + self, + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + failover_group_resource: Union[_models.FailoverGroupResource, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.FailoverGroupResource]: + """Creates or replaces a failover group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :param failover_group_name: The name of the Failover Group. Required. + :type failover_group_name: str + :param failover_group_resource: desc. Is either a FailoverGroupResource type or a IO[bytes] + type. Required. + :type failover_group_resource: ~azure.mgmt.azurearcdata.models.FailoverGroupResource or + IO[bytes] + :return: An instance of AsyncLROPoller that returns either FailoverGroupResource or the result + of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.FailoverGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.FailoverGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._create_initial( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + failover_group_name=failover_group_name, + failover_group_resource=failover_group_resource, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("FailoverGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, + AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.FailoverGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.FailoverGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _delete_initial( + self, resource_group_name: str, sql_managed_instance_name: str, failover_group_name: str, **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + _request = build_delete_request( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + failover_group_name=failover_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def begin_delete( + self, resource_group_name: str, sql_managed_instance_name: str, failover_group_name: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes a failover group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :param failover_group_name: The name of the Failover Group. Required. + :type failover_group_name: str + :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: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + failover_group_name=failover_group_name, + api_version=api_version, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + if polling is True: + polling_method: AsyncPollingMethod = cast(AsyncPollingMethod, AsyncARMPolling(lro_delay, **kwargs)) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + @distributed_trace_async + async def get( + self, resource_group_name: str, sql_managed_instance_name: str, failover_group_name: str, **kwargs: Any + ) -> _models.FailoverGroupResource: + """Retrieves a failover group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :param failover_group_name: The name of the Failover Group. Required. + :type failover_group_name: str + :return: FailoverGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.FailoverGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.FailoverGroupResource] = kwargs.pop("cls", None) + + _request = build_get_request( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + failover_group_name=failover_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("FailoverGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_operations.py index 8fe91a4c361c..117f035f5471 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_operations.py @@ -1,4 +1,3 @@ -# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,10 +5,11 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys +from collections.abc import MutableMapping from typing import Any, AsyncIterable, Callable, Dict, Optional, TypeVar import urllib.parse +from azure.core import AsyncPipelineClient from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ( ClientAuthenticationError, @@ -20,20 +20,16 @@ map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from ... import models as _models -from ..._vendor import _convert_request +from ..._utils.serialization import Deserializer, Serializer from ...operations._operations import build_list_request +from .._configuration import AzureArcDataManagementClientConfiguration -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -52,16 +48,17 @@ class Operations: def __init__(self, *args, **kwargs) -> None: input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list(self, **kwargs: Any) -> AsyncIterable["_models.Operation"]: """Lists all of the available Azure Data Services on Azure Arc API operations. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either Operation or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.Operation] :raises ~azure.core.exceptions.HttpResponseError: @@ -69,12 +66,10 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.Operation"]: _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.OperationListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -85,14 +80,12 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.Operation"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -104,13 +97,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("OperationListResult", pipeline_response) @@ -120,10 +112,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -135,5 +128,3 @@ async def get_next(next_link=None): return pipeline_response return AsyncItemPaged(get_next, extract_data) - - list.metadata = {"url": "/providers/Microsoft.AzureArcData/operations"} diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_postgres_instances_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_postgres_instances_operations.py index a344352c7389..ff0f7545fdb5 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_postgres_instances_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_postgres_instances_operations.py @@ -1,4 +1,3 @@ -# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,10 +5,12 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +from collections.abc import MutableMapping +from io import IOBase +from typing import Any, AsyncIterable, AsyncIterator, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload import urllib.parse +from azure.core import AsyncPipelineClient from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ( ClientAuthenticationError, @@ -17,12 +18,13 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict @@ -30,7 +32,7 @@ from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models -from ..._vendor import _convert_request +from ..._utils.serialization import Deserializer, Serializer from ...operations._postgres_instances_operations import ( build_create_request, build_delete_request, @@ -39,11 +41,8 @@ build_list_request, build_update_request, ) +from .._configuration import AzureArcDataManagementClientConfiguration -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -62,10 +61,12 @@ class PostgresInstancesOperations: def __init__(self, *args, **kwargs) -> None: input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list(self, **kwargs: Any) -> AsyncIterable["_models.PostgresInstance"]: @@ -73,7 +74,6 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.PostgresInstance"]: List postgres Instance resources in the subscription. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either PostgresInstance or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.PostgresInstance] @@ -82,12 +82,10 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.PostgresInstance"]: _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.PostgresInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -98,15 +96,13 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.PostgresInstance"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -118,13 +114,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("PostgresInstanceListResult", pipeline_response) @@ -134,10 +129,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -150,8 +146,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.AzureArcData/postgresInstances"} - @distributed_trace def list_by_resource_group( self, resource_group_name: str, **kwargs: Any @@ -162,7 +156,6 @@ def list_by_resource_group( :param resource_group_name: The name of the Azure resource group. Required. :type resource_group_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either PostgresInstance or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.PostgresInstance] @@ -171,12 +164,10 @@ def list_by_resource_group( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.PostgresInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -187,16 +178,14 @@ def list_by_resource_group( def prepare_request(next_link=None): if not next_link: - request = build_list_by_resource_group_request( + _request = build_list_by_resource_group_request( resource_group_name=resource_group_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_resource_group.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -208,13 +197,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("PostgresInstanceListResult", pipeline_response) @@ -224,10 +212,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -240,10 +229,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list_by_resource_group.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances" - } - @distributed_trace_async async def get( self, resource_group_name: str, postgres_instance_name: str, **kwargs: Any @@ -254,12 +239,11 @@ async def get( :type resource_group_name: str :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: PostgresInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.PostgresInstance :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -270,25 +254,22 @@ async def get( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.PostgresInstance] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( resource_group_name=resource_group_name, postgres_instance_name=postgres_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -298,25 +279,21 @@ async def get( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("PostgresInstance", pipeline_response) + deserialized = self._deserialize("PostgresInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } + return deserialized # type: ignore async def _create_initial( self, resource_group_name: str, postgres_instance_name: str, - resource: Union[_models.PostgresInstance, IO], + resource: Union[_models.PostgresInstance, IO[bytes]], **kwargs: Any - ) -> _models.PostgresInstance: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -327,21 +304,19 @@ async def _create_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.PostgresInstance] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(resource, (IO, bytes)): + if isinstance(resource, (IOBase, bytes)): _content = resource else: _json = self._serialize.body(resource, "PostgresInstance") - request = build_create_request( + _request = build_create_request( resource_group_name=resource_group_name, postgres_instance_name=postgres_instance_name, subscription_id=self._config.subscription_id, @@ -349,39 +324,35 @@ async def _create_initial( content_type=content_type, json=_json, content=_content, - template_url=self._create_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 201]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("PostgresInstance", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("PostgresInstance", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - _create_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } - @overload async def begin_create( self, @@ -403,14 +374,6 @@ async def begin_create( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 PostgresInstance or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.PostgresInstance] @@ -422,7 +385,7 @@ async def begin_create( self, resource_group_name: str, postgres_instance_name: str, - resource: IO, + resource: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -434,18 +397,10 @@ async def begin_create( :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_name: str :param resource: The postgres instance. Required. - :type resource: IO + :type resource: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 PostgresInstance or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.PostgresInstance] @@ -457,7 +412,7 @@ async def begin_create( self, resource_group_name: str, postgres_instance_name: str, - resource: Union[_models.PostgresInstance, IO], + resource: Union[_models.PostgresInstance, IO[bytes]], **kwargs: Any ) -> AsyncLROPoller[_models.PostgresInstance]: """Creates or replaces a postgres Instance resource. @@ -466,19 +421,9 @@ async def begin_create( :type resource_group_name: str :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_name: str - :param resource: The postgres instance. Is either a model type or a IO type. Required. - :type resource: ~azure.mgmt.azurearcdata.models.PostgresInstance or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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. + :param resource: The postgres instance. Is either a PostgresInstance type or a IO[bytes] type. + Required. + :type resource: ~azure.mgmt.azurearcdata.models.PostgresInstance or IO[bytes] :return: An instance of AsyncLROPoller that returns either PostgresInstance or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.PostgresInstance] @@ -487,9 +432,7 @@ async def begin_create( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.PostgresInstance] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) @@ -507,12 +450,13 @@ async def begin_create( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("PostgresInstance", pipeline_response) + deserialized = self._deserialize("PostgresInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -525,22 +469,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.PostgresInstance].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } + return AsyncLROPoller[_models.PostgresInstance]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - async def _delete_initial( # pylint: disable=inconsistent-return-statements + async def _delete_initial( self, resource_group_name: str, postgres_instance_name: str, **kwargs: Any - ) -> None: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -551,40 +493,42 @@ async def _delete_initial( # pylint: disable=inconsistent-return-statements _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) - cls: ClsType[None] = kwargs.pop("cls", None) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( resource_group_name=resource_group_name, postgres_instance_name=postgres_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self._delete_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } + return deserialized # type: ignore @distributed_trace_async async def begin_delete( @@ -596,14 +540,6 @@ async def begin_delete( :type resource_group_name: str :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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: @@ -611,15 +547,13 @@ async def begin_delete( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = await self._delete_initial( # type: ignore + raw_result = await self._delete_initial( resource_group_name=resource_group_name, postgres_instance_name=postgres_instance_name, api_version=api_version, @@ -628,11 +562,12 @@ async def begin_delete( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, None, {}) # type: ignore if polling is True: polling_method: AsyncPollingMethod = cast(AsyncPollingMethod, AsyncARMPolling(lro_delay, **kwargs)) @@ -641,17 +576,13 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_delete.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore @overload async def update( @@ -674,7 +605,6 @@ async def update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: PostgresInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.PostgresInstance :raises ~azure.core.exceptions.HttpResponseError: @@ -685,7 +615,7 @@ async def update( self, resource_group_name: str, postgres_instance_name: str, - parameters: IO, + parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -697,11 +627,10 @@ async def update( :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_name: str :param parameters: The Postgres Instance. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: PostgresInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.PostgresInstance :raises ~azure.core.exceptions.HttpResponseError: @@ -712,7 +641,7 @@ async def update( self, resource_group_name: str, postgres_instance_name: str, - parameters: Union[_models.PostgresInstanceUpdate, IO], + parameters: Union[_models.PostgresInstanceUpdate, IO[bytes]], **kwargs: Any ) -> _models.PostgresInstance: """Updates a postgres Instance resource. @@ -721,17 +650,14 @@ async def update( :type resource_group_name: str :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_name: str - :param parameters: The Postgres Instance. Is either a model type or a IO type. Required. - :type parameters: ~azure.mgmt.azurearcdata.models.PostgresInstanceUpdate or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + :param parameters: The Postgres Instance. Is either a PostgresInstanceUpdate type or a + IO[bytes] type. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.PostgresInstanceUpdate or IO[bytes] :return: PostgresInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.PostgresInstance :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -742,21 +668,19 @@ async def update( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.PostgresInstance] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(parameters, (IO, bytes)): + if isinstance(parameters, (IOBase, bytes)): _content = parameters else: _json = self._serialize.body(parameters, "PostgresInstanceUpdate") - request = build_update_request( + _request = build_update_request( resource_group_name=resource_group_name, postgres_instance_name=postgres_instance_name, subscription_id=self._config.subscription_id, @@ -764,15 +688,14 @@ async def update( content_type=content_type, json=_json, content=_content, - template_url=self.update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -782,13 +705,9 @@ async def update( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("PostgresInstance", pipeline_response) + deserialized = self._deserialize("PostgresInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_managed_instances_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_managed_instances_operations.py index 929405aa8d10..0e9721c11229 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_managed_instances_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_managed_instances_operations.py @@ -1,4 +1,3 @@ -# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,10 +5,12 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +from collections.abc import MutableMapping +from io import IOBase +from typing import Any, AsyncIterable, AsyncIterator, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload import urllib.parse +from azure.core import AsyncPipelineClient from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ( ClientAuthenticationError, @@ -17,12 +18,13 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict @@ -30,7 +32,7 @@ from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models -from ..._vendor import _convert_request +from ..._utils.serialization import Deserializer, Serializer from ...operations._sql_managed_instances_operations import ( build_create_request, build_delete_request, @@ -39,11 +41,8 @@ build_list_request, build_update_request, ) +from .._configuration import AzureArcDataManagementClientConfiguration -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -62,10 +61,12 @@ class SqlManagedInstancesOperations: def __init__(self, *args, **kwargs) -> None: input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list(self, **kwargs: Any) -> AsyncIterable["_models.SqlManagedInstance"]: @@ -73,7 +74,6 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.SqlManagedInstance"]: List sqlManagedInstance resources in the subscription. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either SqlManagedInstance or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.SqlManagedInstance] @@ -82,12 +82,10 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.SqlManagedInstance"]: _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlManagedInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -98,15 +96,13 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.SqlManagedInstance"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -118,13 +114,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("SqlManagedInstanceListResult", pipeline_response) @@ -134,10 +129,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -150,8 +146,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.AzureArcData/sqlManagedInstances"} - @distributed_trace def list_by_resource_group( self, resource_group_name: str, **kwargs: Any @@ -162,7 +156,6 @@ def list_by_resource_group( :param resource_group_name: The name of the Azure resource group. Required. :type resource_group_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either SqlManagedInstance or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.SqlManagedInstance] @@ -171,12 +164,10 @@ def list_by_resource_group( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlManagedInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -187,16 +178,14 @@ def list_by_resource_group( def prepare_request(next_link=None): if not next_link: - request = build_list_by_resource_group_request( + _request = build_list_by_resource_group_request( resource_group_name=resource_group_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_resource_group.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -208,13 +197,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("SqlManagedInstanceListResult", pipeline_response) @@ -224,10 +212,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -240,10 +229,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list_by_resource_group.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances" - } - @distributed_trace_async async def get( self, resource_group_name: str, sql_managed_instance_name: str, **kwargs: Any @@ -254,12 +239,11 @@ async def get( :type resource_group_name: str :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: SqlManagedInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.SqlManagedInstance :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -270,25 +254,22 @@ async def get( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlManagedInstance] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( resource_group_name=resource_group_name, sql_managed_instance_name=sql_managed_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -298,25 +279,21 @@ async def get( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("SqlManagedInstance", pipeline_response) + deserialized = self._deserialize("SqlManagedInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } + return deserialized # type: ignore async def _create_initial( self, resource_group_name: str, sql_managed_instance_name: str, - sql_managed_instance: Union[_models.SqlManagedInstance, IO], + sql_managed_instance: Union[_models.SqlManagedInstance, IO[bytes]], **kwargs: Any - ) -> _models.SqlManagedInstance: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -327,21 +304,19 @@ async def _create_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.SqlManagedInstance] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(sql_managed_instance, (IO, bytes)): + if isinstance(sql_managed_instance, (IOBase, bytes)): _content = sql_managed_instance else: _json = self._serialize.body(sql_managed_instance, "SqlManagedInstance") - request = build_create_request( + _request = build_create_request( resource_group_name=resource_group_name, sql_managed_instance_name=sql_managed_instance_name, subscription_id=self._config.subscription_id, @@ -349,39 +324,35 @@ async def _create_initial( content_type=content_type, json=_json, content=_content, - template_url=self._create_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 201]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("SqlManagedInstance", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("SqlManagedInstance", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - _create_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } - @overload async def begin_create( self, @@ -403,14 +374,6 @@ async def begin_create( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 SqlManagedInstance or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlManagedInstance] @@ -422,7 +385,7 @@ async def begin_create( self, resource_group_name: str, sql_managed_instance_name: str, - sql_managed_instance: IO, + sql_managed_instance: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -434,18 +397,10 @@ async def begin_create( :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_name: str :param sql_managed_instance: The SQL Managed Instance to be created or updated. Required. - :type sql_managed_instance: IO + :type sql_managed_instance: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 SqlManagedInstance or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlManagedInstance] @@ -457,7 +412,7 @@ async def begin_create( self, resource_group_name: str, sql_managed_instance_name: str, - sql_managed_instance: Union[_models.SqlManagedInstance, IO], + sql_managed_instance: Union[_models.SqlManagedInstance, IO[bytes]], **kwargs: Any ) -> AsyncLROPoller[_models.SqlManagedInstance]: """Creates or replaces a SQL Managed Instance resource. @@ -467,19 +422,8 @@ async def begin_create( :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_name: str :param sql_managed_instance: The SQL Managed Instance to be created or updated. Is either a - model type or a IO type. Required. - :type sql_managed_instance: ~azure.mgmt.azurearcdata.models.SqlManagedInstance or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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. + SqlManagedInstance type or a IO[bytes] type. Required. + :type sql_managed_instance: ~azure.mgmt.azurearcdata.models.SqlManagedInstance or IO[bytes] :return: An instance of AsyncLROPoller that returns either SqlManagedInstance or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlManagedInstance] @@ -488,9 +432,7 @@ async def begin_create( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.SqlManagedInstance] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) @@ -508,12 +450,13 @@ async def begin_create( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("SqlManagedInstance", pipeline_response) + deserialized = self._deserialize("SqlManagedInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -526,22 +469,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.SqlManagedInstance].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } + return AsyncLROPoller[_models.SqlManagedInstance]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - async def _delete_initial( # pylint: disable=inconsistent-return-statements + async def _delete_initial( self, resource_group_name: str, sql_managed_instance_name: str, **kwargs: Any - ) -> None: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -552,40 +493,42 @@ async def _delete_initial( # pylint: disable=inconsistent-return-statements _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) - cls: ClsType[None] = kwargs.pop("cls", None) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( resource_group_name=resource_group_name, sql_managed_instance_name=sql_managed_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self._delete_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } + return deserialized # type: ignore @distributed_trace_async async def begin_delete( @@ -597,14 +540,6 @@ async def begin_delete( :type resource_group_name: str :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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: @@ -612,15 +547,13 @@ async def begin_delete( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = await self._delete_initial( # type: ignore + raw_result = await self._delete_initial( resource_group_name=resource_group_name, sql_managed_instance_name=sql_managed_instance_name, api_version=api_version, @@ -629,11 +562,12 @@ async def begin_delete( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, None, {}) # type: ignore if polling is True: polling_method: AsyncPollingMethod = cast(AsyncPollingMethod, AsyncARMPolling(lro_delay, **kwargs)) @@ -642,17 +576,13 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_delete.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore @overload async def update( @@ -675,7 +605,6 @@ async def update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: SqlManagedInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.SqlManagedInstance :raises ~azure.core.exceptions.HttpResponseError: @@ -686,7 +615,7 @@ async def update( self, resource_group_name: str, sql_managed_instance_name: str, - parameters: IO, + parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -698,11 +627,10 @@ async def update( :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_name: str :param parameters: The SQL Managed Instance. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: SqlManagedInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.SqlManagedInstance :raises ~azure.core.exceptions.HttpResponseError: @@ -713,7 +641,7 @@ async def update( self, resource_group_name: str, sql_managed_instance_name: str, - parameters: Union[_models.SqlManagedInstanceUpdate, IO], + parameters: Union[_models.SqlManagedInstanceUpdate, IO[bytes]], **kwargs: Any ) -> _models.SqlManagedInstance: """Updates a SQL Managed Instance resource. @@ -722,17 +650,14 @@ async def update( :type resource_group_name: str :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_name: str - :param parameters: The SQL Managed Instance. Is either a model type or a IO type. Required. - :type parameters: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceUpdate or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + :param parameters: The SQL Managed Instance. Is either a SqlManagedInstanceUpdate type or a + IO[bytes] type. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceUpdate or IO[bytes] :return: SqlManagedInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.SqlManagedInstance :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -743,21 +668,19 @@ async def update( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.SqlManagedInstance] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(parameters, (IO, bytes)): + if isinstance(parameters, (IOBase, bytes)): _content = parameters else: _json = self._serialize.body(parameters, "SqlManagedInstanceUpdate") - request = build_update_request( + _request = build_update_request( resource_group_name=resource_group_name, sql_managed_instance_name=sql_managed_instance_name, subscription_id=self._config.subscription_id, @@ -765,15 +688,14 @@ async def update( content_type=content_type, json=_json, content=_content, - template_url=self.update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -783,13 +705,9 @@ async def update( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("SqlManagedInstance", pipeline_response) + deserialized = self._deserialize("SqlManagedInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_availability_groups_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_availability_groups_operations.py new file mode 100644 index 000000000000..6e94e56219a9 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_availability_groups_operations.py @@ -0,0 +1,2009 @@ +# pylint: disable=too-many-lines +# 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 collections.abc import MutableMapping +from io import IOBase +from typing import Any, AsyncIterable, AsyncIterator, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +import urllib.parse + +from azure.core import AsyncPipelineClient +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling + +from ... import models as _models +from ..._utils.serialization import Deserializer, Serializer +from ...operations._sql_server_availability_groups_operations import ( + build_add_databases_request, + build_create_availability_group_request, + build_create_distributed_availability_group_request, + build_create_managed_instance_link_request, + build_create_request, + build_delete_request, + build_detail_view_request, + build_failover_mi_link_request, + build_failover_request, + build_force_failover_allow_data_loss_request, + build_get_request, + build_list_request, + build_remove_databases_request, + build_update_request, +) +from .._configuration import AzureArcDataManagementClientConfiguration + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class SqlServerAvailabilityGroupsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.azurearcdata.aio.AzureArcDataManagementClient`'s + :attr:`sql_server_availability_groups` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @overload + async def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_resource: _models.SqlServerAvailabilityGroupResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Creates or replaces an Arc Sql Server Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_resource: The request body for availability group + resource. Required. + :type sql_server_availability_group_resource: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_resource: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Creates or replaces an Arc Sql Server Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_resource: The request body for availability group + resource. Required. + :type sql_server_availability_group_resource: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_resource: Union[_models.SqlServerAvailabilityGroupResource, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Creates or replaces an Arc Sql Server Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_resource: The request body for availability group + resource. Is either a SqlServerAvailabilityGroupResource type or a IO[bytes] type. Required. + :type sql_server_availability_group_resource: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource or IO[bytes] + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_availability_group_resource, (IOBase, bytes)): + _content = sql_server_availability_group_resource + else: + _json = self._serialize.body(sql_server_availability_group_resource, "SqlServerAvailabilityGroupResource") + + _request = build_create_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _delete_initial( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + _request = build_delete_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def begin_delete( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes an Arc Sql Server availability group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :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: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + api_version=api_version, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + if polling is True: + polling_method: AsyncPollingMethod = cast(AsyncPollingMethod, AsyncARMPolling(lro_delay, **kwargs)) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + @distributed_trace_async + async def get( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Retrieves an Arc Sql Server availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + _request = build_get_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _update_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_update: Union[_models.SqlServerAvailabilityGroupUpdate, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_availability_group_update, (IOBase, bytes)): + _content = sql_server_availability_group_update + else: + _json = self._serialize.body(sql_server_availability_group_update, "SqlServerAvailabilityGroupUpdate") + + _request = build_update_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_update: _models.SqlServerAvailabilityGroupUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Updates an existing Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_update: The requested server availability group resource + state. Required. + :type sql_server_availability_group_update: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupUpdate + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_update: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Updates an existing Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_update: The requested server availability group resource + state. Required. + :type sql_server_availability_group_update: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_update: Union[_models.SqlServerAvailabilityGroupUpdate, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Updates an existing Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_update: The requested server availability group resource + state. Is either a SqlServerAvailabilityGroupUpdate type or a IO[bytes] type. Required. + :type sql_server_availability_group_update: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupUpdate or IO[bytes] + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._update_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + sql_server_availability_group_update=sql_server_availability_group_update, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, + AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.SqlServerAvailabilityGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @distributed_trace_async + async def detail_view( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Retrieves detailed properties of the Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + _request = build_detail_view_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def failover( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request manual failover of the availability group to this server. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + _request = build_failover_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def force_failover_allow_data_loss( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request forced failover of the availability group to this server. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + _request = build_force_failover_allow_data_loss_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _create_availability_group_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_ag_configuration: Union[_models.AvailabilityGroupCreateUpdateConfiguration, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(create_ag_configuration, (IOBase, bytes)): + _content = create_ag_configuration + else: + _json = self._serialize.body(create_ag_configuration, "AvailabilityGroupCreateUpdateConfiguration") + + _request = build_create_availability_group_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_create_availability_group( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_ag_configuration: _models.AvailabilityGroupCreateUpdateConfiguration, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_ag_configuration: The configuration for the new SQL Server availability group + resource. Required. + :type create_ag_configuration: + ~azure.mgmt.azurearcdata.models.AvailabilityGroupCreateUpdateConfiguration + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_availability_group( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_ag_configuration: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_ag_configuration: The configuration for the new SQL Server availability group + resource. Required. + :type create_ag_configuration: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_create_availability_group( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_ag_configuration: Union[_models.AvailabilityGroupCreateUpdateConfiguration, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_ag_configuration: The configuration for the new SQL Server availability group + resource. Is either a AvailabilityGroupCreateUpdateConfiguration type or a IO[bytes] type. + Required. + :type create_ag_configuration: + ~azure.mgmt.azurearcdata.models.AvailabilityGroupCreateUpdateConfiguration or IO[bytes] + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._create_availability_group_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + create_ag_configuration=create_ag_configuration, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, + AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.SqlServerAvailabilityGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _create_distributed_availability_group_initial( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + create_dag_configuration: Union[_models.DistributedAvailabilityGroupCreateUpdateConfiguration, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(create_dag_configuration, (IOBase, bytes)): + _content = create_dag_configuration + else: + _json = self._serialize.body( + create_dag_configuration, "DistributedAvailabilityGroupCreateUpdateConfiguration" + ) + + _request = build_create_distributed_availability_group_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_create_distributed_availability_group( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + create_dag_configuration: _models.DistributedAvailabilityGroupCreateUpdateConfiguration, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server distributed availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_dag_configuration: The configuration for the new SQL Server availability group + resource. Required. + :type create_dag_configuration: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateConfiguration + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_distributed_availability_group( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + create_dag_configuration: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server distributed availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_dag_configuration: The configuration for the new SQL Server availability group + resource. Required. + :type create_dag_configuration: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_create_distributed_availability_group( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + create_dag_configuration: Union[_models.DistributedAvailabilityGroupCreateUpdateConfiguration, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server distributed availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_dag_configuration: The configuration for the new SQL Server availability group + resource. Is either a DistributedAvailabilityGroupCreateUpdateConfiguration type or a IO[bytes] + type. Required. + :type create_dag_configuration: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateConfiguration or + IO[bytes] + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._create_distributed_availability_group_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + create_dag_configuration=create_dag_configuration, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, + AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.SqlServerAvailabilityGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _create_managed_instance_link_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_managed_instance_link_configuration: Union[ + _models.ManagedInstanceLinkCreateUpdateConfiguration, IO[bytes] + ], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(create_managed_instance_link_configuration, (IOBase, bytes)): + _content = create_managed_instance_link_configuration + else: + _json = self._serialize.body( + create_managed_instance_link_configuration, "ManagedInstanceLinkCreateUpdateConfiguration" + ) + + _request = build_create_managed_instance_link_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_create_managed_instance_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_managed_instance_link_configuration: _models.ManagedInstanceLinkCreateUpdateConfiguration, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create an Managed Instance Link. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_managed_instance_link_configuration: The configuration for the new Managed + Instance Link resource. Required. + :type create_managed_instance_link_configuration: + ~azure.mgmt.azurearcdata.models.ManagedInstanceLinkCreateUpdateConfiguration + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_create_managed_instance_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_managed_instance_link_configuration: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create an Managed Instance Link. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_managed_instance_link_configuration: The configuration for the new Managed + Instance Link resource. Required. + :type create_managed_instance_link_configuration: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_create_managed_instance_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_managed_instance_link_configuration: Union[ + _models.ManagedInstanceLinkCreateUpdateConfiguration, IO[bytes] + ], + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create an Managed Instance Link. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_managed_instance_link_configuration: The configuration for the new Managed + Instance Link resource. Is either a ManagedInstanceLinkCreateUpdateConfiguration type or a + IO[bytes] type. Required. + :type create_managed_instance_link_configuration: + ~azure.mgmt.azurearcdata.models.ManagedInstanceLinkCreateUpdateConfiguration or IO[bytes] + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._create_managed_instance_link_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + create_managed_instance_link_configuration=create_managed_instance_link_configuration, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, + AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.SqlServerAvailabilityGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @overload + async def add_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: _models.Databases, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request adding database(s) to an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to add to the SQL Server availability group resource. + Required. + :type databases: ~azure.mgmt.azurearcdata.models.Databases + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def add_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request adding database(s) to an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to add to the SQL Server availability group resource. + Required. + :type databases: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def add_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: Union[_models.Databases, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request adding database(s) to an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to add to the SQL Server availability group resource. Is + either a Databases type or a IO[bytes] type. Required. + :type databases: ~azure.mgmt.azurearcdata.models.Databases or IO[bytes] + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(databases, (IOBase, bytes)): + _content = databases + else: + _json = self._serialize.body(databases, "Databases") + + _request = build_add_databases_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _failover_mi_link_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + managed_instance_resource_id: Union[_models.FailoverMiLinkResourceId, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(managed_instance_resource_id, (IOBase, bytes)): + _content = managed_instance_resource_id + else: + _json = self._serialize.body(managed_instance_resource_id, "FailoverMiLinkResourceId") + + _request = build_failover_mi_link_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_failover_mi_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + managed_instance_resource_id: _models.FailoverMiLinkResourceId, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Request failover of Arc Sql Server to Azure Managed Instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param managed_instance_resource_id: The azure resource identifier for the Sql Managed + Instance. Required. + :type managed_instance_resource_id: ~azure.mgmt.azurearcdata.models.FailoverMiLinkResourceId + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_failover_mi_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + managed_instance_resource_id: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Request failover of Arc Sql Server to Azure Managed Instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param managed_instance_resource_id: The azure resource identifier for the Sql Managed + Instance. Required. + :type managed_instance_resource_id: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_failover_mi_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + managed_instance_resource_id: Union[_models.FailoverMiLinkResourceId, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]: + """Request failover of Arc Sql Server to Azure Managed Instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param managed_instance_resource_id: The azure resource identifier for the Sql Managed + Instance. Is either a FailoverMiLinkResourceId type or a IO[bytes] type. Required. + :type managed_instance_resource_id: ~azure.mgmt.azurearcdata.models.FailoverMiLinkResourceId or + IO[bytes] + :return: An instance of AsyncLROPoller that returns either SqlServerAvailabilityGroupResource + or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._failover_mi_link_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + managed_instance_resource_id=managed_instance_resource_id, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, + AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.SqlServerAvailabilityGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.SqlServerAvailabilityGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @overload + async def remove_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: _models.Databases, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request removing database(s) from an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to remove from the SQL Server availability group resource. + Required. + :type databases: ~azure.mgmt.azurearcdata.models.Databases + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def remove_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request removing database(s) from an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to remove from the SQL Server availability group resource. + Required. + :type databases: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def remove_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: Union[_models.Databases, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request removing database(s) from an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to remove from the SQL Server availability group resource. + Is either a Databases type or a IO[bytes] type. Required. + :type databases: ~azure.mgmt.azurearcdata.models.Databases or IO[bytes] + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(databases, (IOBase, bytes)): + _content = databases + else: + _json = self._serialize.body(databases, "Databases") + + _request = build_remove_databases_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def list( + self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any + ) -> AsyncIterable["_models.SqlServerAvailabilityGroupResource"]: + """List the availability group associated with the given Arc Sql Server. + + List the availability group associated with the given Arc Sql Server. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :return: An iterator like instance of either SqlServerAvailabilityGroupResource or the result + of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.ArcSqlServerAvailabilityGroupListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ArcSqlServerAvailabilityGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_databases_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_databases_operations.py new file mode 100644 index 000000000000..a085aaced193 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_databases_operations.py @@ -0,0 +1,680 @@ +# 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 collections.abc import MutableMapping +from io import IOBase +from typing import Any, AsyncIterable, AsyncIterator, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +import urllib.parse + +from azure.core import AsyncPipelineClient +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling + +from ... import models as _models +from ..._utils.serialization import Deserializer, Serializer +from ...operations._sql_server_databases_operations import ( + build_create_request, + build_delete_request, + build_get_request, + build_list_request, + build_update_request, +) +from .._configuration import AzureArcDataManagementClientConfiguration + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class SqlServerDatabasesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.azurearcdata.aio.AzureArcDataManagementClient`'s + :attr:`sql_server_databases` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @overload + async def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_resource: _models.SqlServerDatabaseResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerDatabaseResource: + """Creates or replaces an Arc Sql Server Database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_resource: The request body for database resource. Required. + :type sql_server_database_resource: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerDatabaseResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_resource: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerDatabaseResource: + """Creates or replaces an Arc Sql Server Database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_resource: The request body for database resource. Required. + :type sql_server_database_resource: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerDatabaseResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_resource: Union[_models.SqlServerDatabaseResource, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerDatabaseResource: + """Creates or replaces an Arc Sql Server Database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_resource: The request body for database resource. Is either a + SqlServerDatabaseResource type or a IO[bytes] type. Required. + :type sql_server_database_resource: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + or IO[bytes] + :return: SqlServerDatabaseResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerDatabaseResource] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_database_resource, (IOBase, bytes)): + _content = sql_server_database_resource + else: + _json = self._serialize.body(sql_server_database_resource, "SqlServerDatabaseResource") + + _request = build_create_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerDatabaseResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _delete_initial( + self, resource_group_name: str, sql_server_instance_name: str, database_name: str, **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + _request = build_delete_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def begin_delete( + self, resource_group_name: str, sql_server_instance_name: str, database_name: str, **kwargs: Any + ) -> AsyncLROPoller[None]: + """Deletes an Arc Sql Server database resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :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: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._delete_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + api_version=api_version, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + if polling is True: + polling_method: AsyncPollingMethod = cast(AsyncPollingMethod, AsyncARMPolling(lro_delay, **kwargs)) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + @distributed_trace_async + async def get( + self, resource_group_name: str, sql_server_instance_name: str, database_name: str, **kwargs: Any + ) -> _models.SqlServerDatabaseResource: + """Retrieves an Arc Sql Server database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :return: SqlServerDatabaseResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerDatabaseResource] = kwargs.pop("cls", None) + + _request = build_get_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerDatabaseResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _update_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_update: Union[_models.SqlServerDatabaseUpdate, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_database_update, (IOBase, bytes)): + _content = sql_server_database_update + else: + _json = self._serialize.body(sql_server_database_update, "SqlServerDatabaseUpdate") + + _request = build_update_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_update: _models.SqlServerDatabaseUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerDatabaseResource]: + """Updates an existing database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_update: The requested database resource state. Required. + :type sql_server_database_update: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseUpdate + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerDatabaseResource or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_update: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerDatabaseResource]: + """Updates an existing database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_update: The requested database resource state. Required. + :type sql_server_database_update: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either SqlServerDatabaseResource or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_update: Union[_models.SqlServerDatabaseUpdate, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerDatabaseResource]: + """Updates an existing database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_update: The requested database resource state. Is either a + SqlServerDatabaseUpdate type or a IO[bytes] type. Required. + :type sql_server_database_update: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseUpdate or + IO[bytes] + :return: An instance of AsyncLROPoller that returns either SqlServerDatabaseResource or the + result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerDatabaseResource] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._update_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + sql_server_database_update=sql_server_database_update, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerDatabaseResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, + AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.SqlServerDatabaseResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.SqlServerDatabaseResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @distributed_trace + def list( + self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any + ) -> AsyncIterable["_models.SqlServerDatabaseResource"]: + """List the databases associated with the given Arc Sql Server. + + List the databases associated with the given Arc Sql Server. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :return: An iterator like instance of either SqlServerDatabaseResource or the result of + cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.ArcSqlServerDatabaseListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("ArcSqlServerDatabaseListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_esu_licenses_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_esu_licenses_operations.py new file mode 100644 index 000000000000..ca04fbcf44e3 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_esu_licenses_operations.py @@ -0,0 +1,599 @@ +# 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 collections.abc import MutableMapping +from io import IOBase +from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, overload +import urllib.parse + +from azure.core import AsyncPipelineClient +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from ... import models as _models +from ..._utils.serialization import Deserializer, Serializer +from ...operations._sql_server_esu_licenses_operations import ( + build_create_request, + build_delete_request, + build_get_request, + build_list_by_resource_group_request, + build_list_request, + build_update_request, +) +from .._configuration import AzureArcDataManagementClientConfiguration + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class SqlServerEsuLicensesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.azurearcdata.aio.AzureArcDataManagementClient`'s + :attr:`sql_server_esu_licenses` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, **kwargs: Any) -> AsyncIterable["_models.SqlServerEsuLicense"]: + """List sqlServerEsuLicense resources in the subscription. + + List sqlServerEsuLicense resources in the subscription. + + :return: An iterator like instance of either SqlServerEsuLicense or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.SqlServerEsuLicense] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerEsuLicenseListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SqlServerEsuLicenseListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @distributed_trace + def list_by_resource_group( + self, resource_group_name: str, **kwargs: Any + ) -> AsyncIterable["_models.SqlServerEsuLicense"]: + """List sqlServerEsuLicense resources in the resource group. + + Gets all sqlServerEsuLicenses in a resource group. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :return: An iterator like instance of either SqlServerEsuLicense or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.SqlServerEsuLicense] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerEsuLicenseListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SqlServerEsuLicenseListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @distributed_trace_async + async def get( + self, resource_group_name: str, sql_server_esu_license_name: str, **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Retrieves a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerEsuLicense] = kwargs.pop("cls", None) + + _request = build_get_request( + resource_group_name=resource_group_name, + sql_server_esu_license_name=sql_server_esu_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerEsuLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def create( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + sql_server_esu_license: _models.SqlServerEsuLicense, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Creates or replaces a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param sql_server_esu_license: The SQL Server ESU license to be created or updated. Required. + :type sql_server_esu_license: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + sql_server_esu_license: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Creates or replaces a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param sql_server_esu_license: The SQL Server ESU license to be created or updated. Required. + :type sql_server_esu_license: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + sql_server_esu_license: Union[_models.SqlServerEsuLicense, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Creates or replaces a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param sql_server_esu_license: The SQL Server ESU license to be created or updated. Is either a + SqlServerEsuLicense type or a IO[bytes] type. Required. + :type sql_server_esu_license: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense or IO[bytes] + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerEsuLicense] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_esu_license, (IOBase, bytes)): + _content = sql_server_esu_license + else: + _json = self._serialize.body(sql_server_esu_license, "SqlServerEsuLicense") + + _request = build_create_request( + resource_group_name=resource_group_name, + sql_server_esu_license_name=sql_server_esu_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerEsuLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def delete(self, resource_group_name: str, sql_server_esu_license_name: str, **kwargs: Any) -> None: + """Deletes a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :return: None or the result of cls(response) + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_delete_request( + resource_group_name=resource_group_name, + sql_server_esu_license_name=sql_server_esu_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @overload + async def update( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + parameters: _models.SqlServerEsuLicenseUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Updates a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param parameters: The SQL Server ESU license. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicenseUpdate + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def update( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Updates a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param parameters: The SQL Server ESU license. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def update( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + parameters: Union[_models.SqlServerEsuLicenseUpdate, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Updates a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param parameters: The SQL Server ESU license. Is either a SqlServerEsuLicenseUpdate type or a + IO[bytes] type. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicenseUpdate or IO[bytes] + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerEsuLicense] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _json = self._serialize.body(parameters, "SqlServerEsuLicenseUpdate") + + _request = build_update_request( + resource_group_name=resource_group_name, + sql_server_esu_license_name=sql_server_esu_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerEsuLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_instances_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_instances_operations.py index 34c79c8c6cd8..52dceebc3a46 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_instances_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_instances_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=line-too-long,useless-suppression,too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,10 +6,12 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys -from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload +from collections.abc import MutableMapping +from io import IOBase +from typing import Any, AsyncIterable, AsyncIterator, Callable, Dict, IO, Optional, TypeVar, Union, cast, overload import urllib.parse +from azure.core import AsyncPipelineClient from azure.core.async_paging import AsyncItemPaged, AsyncList from azure.core.exceptions import ( ClientAuthenticationError, @@ -17,12 +19,13 @@ ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import AsyncHttpResponse from azure.core.polling import AsyncLROPoller, AsyncNoPolling, AsyncPollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import AsyncHttpResponse, HttpRequest from azure.core.tracing.decorator import distributed_trace from azure.core.tracing.decorator_async import distributed_trace_async from azure.core.utils import case_insensitive_dict @@ -30,20 +33,23 @@ from azure.mgmt.core.polling.async_arm_polling import AsyncARMPolling from ... import models as _models -from ..._vendor import _convert_request +from ..._utils.serialization import Deserializer, Serializer from ...operations._sql_server_instances_operations import ( build_create_request, build_delete_request, + build_get_jobs_status_request, build_get_request, + build_get_telemetry_request, build_list_by_resource_group_request, build_list_request, + build_post_upgrade_request, + build_pre_upgrade_request, + build_run_managed_instance_link_assessment_request, + build_run_migration_assessment_request, build_update_request, ) +from .._configuration import AzureArcDataManagementClientConfiguration -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] @@ -62,10 +68,12 @@ class SqlServerInstancesOperations: def __init__(self, *args, **kwargs) -> None: input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list(self, **kwargs: Any) -> AsyncIterable["_models.SqlServerInstance"]: @@ -73,7 +81,6 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.SqlServerInstance"]: List sqlServerInstance resources in the subscription. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either SqlServerInstance or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.SqlServerInstance] @@ -82,12 +89,10 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.SqlServerInstance"]: _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlServerInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -98,15 +103,13 @@ def list(self, **kwargs: Any) -> AsyncIterable["_models.SqlServerInstance"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -118,13 +121,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("SqlServerInstanceListResult", pipeline_response) @@ -134,10 +136,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -150,8 +153,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.AzureArcData/sqlServerInstances"} - @distributed_trace def list_by_resource_group( self, resource_group_name: str, **kwargs: Any @@ -162,7 +163,6 @@ def list_by_resource_group( :param resource_group_name: The name of the Azure resource group. Required. :type resource_group_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either SqlServerInstance or the result of cls(response) :rtype: ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.SqlServerInstance] @@ -171,12 +171,10 @@ def list_by_resource_group( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlServerInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -187,16 +185,14 @@ def list_by_resource_group( def prepare_request(next_link=None): if not next_link: - request = build_list_by_resource_group_request( + _request = build_list_by_resource_group_request( resource_group_name=resource_group_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_resource_group.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -208,13 +204,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request async def extract_data(pipeline_response): deserialized = self._deserialize("SqlServerInstanceListResult", pipeline_response) @@ -224,10 +219,11 @@ async def extract_data(pipeline_response): return deserialized.next_link or None, AsyncList(list_of_elem) async def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -240,10 +236,6 @@ async def get_next(next_link=None): return AsyncItemPaged(get_next, extract_data) - list_by_resource_group.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances" - } - @distributed_trace_async async def get( self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any @@ -254,12 +246,11 @@ async def get( :type resource_group_name: str :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: SqlServerInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -270,25 +261,22 @@ async def get( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( resource_group_name=resource_group_name, sql_server_instance_name=sql_server_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -298,25 +286,21 @@ async def get( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("SqlServerInstance", pipeline_response) + deserialized = self._deserialize("SqlServerInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } + return deserialized # type: ignore async def _create_initial( self, resource_group_name: str, sql_server_instance_name: str, - sql_server_instance: Union[_models.SqlServerInstance, IO], + sql_server_instance: Union[_models.SqlServerInstance, IO[bytes]], **kwargs: Any - ) -> _models.SqlServerInstance: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -327,21 +311,19 @@ async def _create_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(sql_server_instance, (IO, bytes)): + if isinstance(sql_server_instance, (IOBase, bytes)): _content = sql_server_instance else: _json = self._serialize.body(sql_server_instance, "SqlServerInstance") - request = build_create_request( + _request = build_create_request( resource_group_name=resource_group_name, sql_server_instance_name=sql_server_instance_name, subscription_id=self._config.subscription_id, @@ -349,39 +331,35 @@ async def _create_initial( content_type=content_type, json=_json, content=_content, - template_url=self._create_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 201]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("SqlServerInstance", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("SqlServerInstance", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - _create_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } - @overload async def begin_create( self, @@ -403,14 +381,6 @@ async def begin_create( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 SqlServerInstance or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] @@ -422,7 +392,7 @@ async def begin_create( self, resource_group_name: str, sql_server_instance_name: str, - sql_server_instance: IO, + sql_server_instance: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -434,18 +404,10 @@ async def begin_create( :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_name: str :param sql_server_instance: The SQL Server Instance to be created or updated. Required. - :type sql_server_instance: IO + :type sql_server_instance: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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 SqlServerInstance or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] @@ -457,7 +419,7 @@ async def begin_create( self, resource_group_name: str, sql_server_instance_name: str, - sql_server_instance: Union[_models.SqlServerInstance, IO], + sql_server_instance: Union[_models.SqlServerInstance, IO[bytes]], **kwargs: Any ) -> AsyncLROPoller[_models.SqlServerInstance]: """Creates or replaces a SQL Server Instance resource. @@ -466,20 +428,9 @@ async def begin_create( :type resource_group_name: str :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_name: str - :param sql_server_instance: The SQL Server Instance to be created or updated. Is either a model - type or a IO type. Required. - :type sql_server_instance: ~azure.mgmt.azurearcdata.models.SqlServerInstance or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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. + :param sql_server_instance: The SQL Server Instance to be created or updated. Is either a + SqlServerInstance type or a IO[bytes] type. Required. + :type sql_server_instance: ~azure.mgmt.azurearcdata.models.SqlServerInstance or IO[bytes] :return: An instance of AsyncLROPoller that returns either SqlServerInstance or the result of cls(response) :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] @@ -488,9 +439,7 @@ async def begin_create( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) @@ -508,12 +457,13 @@ async def begin_create( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("SqlServerInstance", pipeline_response) + deserialized = self._deserialize("SqlServerInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -526,22 +476,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[_models.SqlServerInstance].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } + return AsyncLROPoller[_models.SqlServerInstance]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - async def _delete_initial( # pylint: disable=inconsistent-return-statements + async def _delete_initial( self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any - ) -> None: - error_map = { + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -552,40 +500,42 @@ async def _delete_initial( # pylint: disable=inconsistent-return-statements _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) - cls: ClsType[None] = kwargs.pop("cls", None) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( resource_group_name=resource_group_name, sql_server_instance_name=sql_server_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self._delete_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } + return deserialized # type: ignore @distributed_trace_async async def begin_delete( @@ -597,14 +547,6 @@ async def begin_delete( :type resource_group_name: str :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_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: By default, your polling method will be AsyncARMPolling. Pass in False for - this operation to not poll, or pass in your own initialized polling object for a 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: @@ -612,15 +554,13 @@ async def begin_delete( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = await self._delete_initial( # type: ignore + raw_result = await self._delete_initial( resource_group_name=resource_group_name, sql_server_instance_name=sql_server_instance_name, api_version=api_version, @@ -629,11 +569,12 @@ async def begin_delete( params=_params, **kwargs ) + await raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, None, {}) # type: ignore if polling is True: polling_method: AsyncPollingMethod = cast(AsyncPollingMethod, AsyncARMPolling(lro_delay, **kwargs)) @@ -642,20 +583,87 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return AsyncLROPoller.from_continuation_token( + return AsyncLROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return AsyncLROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore + return AsyncLROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + async def _update_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + parameters: Union[_models.SqlServerInstanceUpdate, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _json = self._serialize.body(parameters, "SqlServerInstanceUpdate") + + _request = build_update_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) - begin_delete.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore @overload - async def update( + async def begin_update( self, resource_group_name: str, sql_server_instance_name: str, @@ -663,7 +671,7 @@ async def update( *, content_type: str = "application/json", **kwargs: Any - ) -> _models.SqlServerInstance: + ) -> AsyncLROPoller[_models.SqlServerInstance]: """Updates a SQL Server Instance resource. :param resource_group_name: The name of the Azure resource group. Required. @@ -675,22 +683,22 @@ async def update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SqlServerInstance or the result of cls(response) - :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance + :return: An instance of AsyncLROPoller that returns either SqlServerInstance or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] :raises ~azure.core.exceptions.HttpResponseError: """ @overload - async def update( + async def begin_update( self, resource_group_name: str, sql_server_instance_name: str, - parameters: IO, + parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> _models.SqlServerInstance: + ) -> AsyncLROPoller[_models.SqlServerInstance]: """Updates a SQL Server Instance resource. :param resource_group_name: The name of the Azure resource group. Required. @@ -698,41 +706,96 @@ async def update( :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_name: str :param parameters: The SQL Server Instance. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SqlServerInstance or the result of cls(response) - :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance + :return: An instance of AsyncLROPoller that returns either SqlServerInstance or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace_async - async def update( + async def begin_update( self, resource_group_name: str, sql_server_instance_name: str, - parameters: Union[_models.SqlServerInstanceUpdate, IO], + parameters: Union[_models.SqlServerInstanceUpdate, IO[bytes]], **kwargs: Any - ) -> _models.SqlServerInstance: + ) -> AsyncLROPoller[_models.SqlServerInstance]: """Updates a SQL Server Instance resource. :param resource_group_name: The name of the Azure resource group. Required. :type resource_group_name: str :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_name: str - :param parameters: The SQL Server Instance. Is either a model type or a IO type. Required. - :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerInstanceUpdate or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SqlServerInstance or the result of cls(response) - :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance + :param parameters: The SQL Server Instance. Is either a SqlServerInstanceUpdate type or a + IO[bytes] type. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerInstanceUpdate or IO[bytes] + :return: An instance of AsyncLROPoller that returns either SqlServerInstance or the result of + cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._update_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerInstance", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, + AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[_models.SqlServerInstance].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.SqlServerInstance]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + async def _get_telemetry_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_telemetry_request: Union[_models.SqlServerInstanceTelemetryRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -743,21 +806,19 @@ async def update( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(parameters, (IO, bytes)): - _content = parameters + if isinstance(sql_server_instance_telemetry_request, (IOBase, bytes)): + _content = sql_server_instance_telemetry_request else: - _json = self._serialize.body(parameters, "SqlServerInstanceUpdate") + _json = self._serialize.body(sql_server_instance_telemetry_request, "SqlServerInstanceTelemetryRequest") - request = build_update_request( + _request = build_get_telemetry_request( resource_group_name=resource_group_name, sql_server_instance_name=sql_server_instance_name, subscription_id=self._config.subscription_id, @@ -765,31 +826,778 @@ async def update( content_type=content_type, json=_json, content=_content, - template_url=self.update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response - if response.status_code not in [200]: + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("SqlServerInstance", pipeline_response) + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_get_telemetry( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_telemetry_request: _models.SqlServerInstanceTelemetryRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[AsyncIterable[List[str]]]: + """Retrieves SQL Server instance telemetry. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_telemetry_request: Contains the parameters to get SQL Server + instance telemetry. Required. + :type sql_server_instance_telemetry_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceTelemetryRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns an iterator like instance of either + SqlServerInstanceTelemetryResponse or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.core.async_paging.AsyncItemPaged[list[str]]] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_get_telemetry( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_telemetry_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[AsyncIterable[List[str]]]: + """Retrieves SQL Server instance telemetry. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_telemetry_request: Contains the parameters to get SQL Server + instance telemetry. Required. + :type sql_server_instance_telemetry_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns an iterator like instance of either + SqlServerInstanceTelemetryResponse or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.core.async_paging.AsyncItemPaged[list[str]]] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_get_telemetry( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_telemetry_request: Union[_models.SqlServerInstanceTelemetryRequest, IO[bytes]], + **kwargs: Any + ) -> AsyncLROPoller[AsyncIterable[List[str]]]: + """Retrieves SQL Server instance telemetry. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_telemetry_request: Contains the parameters to get SQL Server + instance telemetry. Is either a SqlServerInstanceTelemetryRequest type or a IO[bytes] type. + Required. + :type sql_server_instance_telemetry_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceTelemetryRequest or IO[bytes] + :return: An instance of LROPoller that returns an iterator like instance of either + SqlServerInstanceTelemetryResponse or the result of cls(response) + :rtype: ~azure.core.polling.AsyncLROPoller[~azure.core.async_paging.AsyncItemPaged[list[str]]] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerInstanceTelemetryResponse] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_instance_telemetry_request, (IOBase, bytes)): + _content = sql_server_instance_telemetry_request + else: + _json = self._serialize.body(sql_server_instance_telemetry_request, "SqlServerInstanceTelemetryRequest") + + def prepare_request(next_link=None): + if not next_link: + + _request = build_get_telemetry_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SqlServerInstanceTelemetryResponse", pipeline_response.http_response) + list_of_elem = deserialized.rows + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) - return deserialized + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response - update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._get_telemetry_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + sql_server_instance_telemetry_request=sql_server_instance_telemetry_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + async def internal_get_next(next_link=None): + if next_link is None: + return pipeline_response + return await get_next(next_link) + + return AsyncItemPaged(internal_get_next, extract_data) + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, + AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[AsyncIterable[List[str]]].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[AsyncIterable[List[str]]]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @distributed_trace_async + async def run_migration_assessment( + self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any + ) -> _models.SqlServerInstanceRunMigrationAssessmentResponse: + """Runs migration assessment for SQL Server instance. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :return: SqlServerInstanceRunMigrationAssessmentResponse or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstanceRunMigrationAssessmentResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerInstanceRunMigrationAssessmentResponse] = kwargs.pop("cls", None) + + _request = build_run_migration_assessment_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize( + "SqlServerInstanceRunMigrationAssessmentResponse", pipeline_response.http_response + ) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def get_jobs_status( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_jobs_status_request: Optional[_models.SqlServerInstanceJobsStatusRequest] = None, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerInstanceJobsStatusResponse: + """Gets jobs status details for sql arc resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_jobs_status_request: Contains the parameters to get SQL Server + instance agent jobs status. Default value is None. + :type sql_server_instance_jobs_status_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceJobsStatusRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerInstanceJobsStatusResponse or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstanceJobsStatusResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def get_jobs_status( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_jobs_status_request: Optional[IO[bytes]] = None, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerInstanceJobsStatusResponse: + """Gets jobs status details for sql arc resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_jobs_status_request: Contains the parameters to get SQL Server + instance agent jobs status. Default value is None. + :type sql_server_instance_jobs_status_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerInstanceJobsStatusResponse or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstanceJobsStatusResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def get_jobs_status( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_jobs_status_request: Optional[ + Union[_models.SqlServerInstanceJobsStatusRequest, IO[bytes]] + ] = None, + **kwargs: Any + ) -> _models.SqlServerInstanceJobsStatusResponse: + """Gets jobs status details for sql arc resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_jobs_status_request: Contains the parameters to get SQL Server + instance agent jobs status. Is either a SqlServerInstanceJobsStatusRequest type or a IO[bytes] + type. Default value is None. + :type sql_server_instance_jobs_status_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceJobsStatusRequest or IO[bytes] + :return: SqlServerInstanceJobsStatusResponse or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstanceJobsStatusResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerInstanceJobsStatusResponse] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_instance_jobs_status_request, (IOBase, bytes)): + _content = sql_server_instance_jobs_status_request + else: + if sql_server_instance_jobs_status_request is not None: + _json = self._serialize.body( + sql_server_instance_jobs_status_request, "SqlServerInstanceJobsStatusRequest" + ) + else: + _json = None + + _request = build_get_jobs_status_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerInstanceJobsStatusResponse", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def pre_upgrade( + self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any + ) -> _models.SqlServerInstance: + """Request Upgrade Permission before upgrading. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :return: SqlServerInstance or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) + + _request = build_pre_upgrade_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerInstance", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def post_upgrade( + self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any + ) -> _models.SqlServerInstance: + """Clean up after upgrading. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :return: SqlServerInstance or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) + + _request = build_post_upgrade_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerInstance", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + async def _run_managed_instance_link_assessment_initial( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_managed_instance_link_assessment_request: Union[ + _models.SqlServerInstanceManagedInstanceLinkAssessmentRequest, IO[bytes] + ], + **kwargs: Any + ) -> AsyncIterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[AsyncIterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_instance_managed_instance_link_assessment_request, (IOBase, bytes)): + _content = sql_server_instance_managed_instance_link_assessment_request + else: + _json = self._serialize.body( + sql_server_instance_managed_instance_link_assessment_request, + "SqlServerInstanceManagedInstanceLinkAssessmentRequest", + ) + + _request = build_run_managed_instance_link_assessment_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + await response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + async def begin_run_managed_instance_link_assessment( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_managed_instance_link_assessment_request: _models.SqlServerInstanceManagedInstanceLinkAssessmentRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse]: + """Runs Managed Instance Link assessment for SQL Server instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_managed_instance_link_assessment_request: Contains the parameters to + run SQL Server instance MI link assessment. Required. + :type sql_server_instance_managed_instance_link_assessment_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessmentRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + SqlServerInstanceManagedInstanceLinkAssessmentResponse or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessmentResponse] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def begin_run_managed_instance_link_assessment( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_managed_instance_link_assessment_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse]: + """Runs Managed Instance Link assessment for SQL Server instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_managed_instance_link_assessment_request: Contains the parameters to + run SQL Server instance MI link assessment. Required. + :type sql_server_instance_managed_instance_link_assessment_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of AsyncLROPoller that returns either + SqlServerInstanceManagedInstanceLinkAssessmentResponse or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessmentResponse] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def begin_run_managed_instance_link_assessment( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_managed_instance_link_assessment_request: Union[ + _models.SqlServerInstanceManagedInstanceLinkAssessmentRequest, IO[bytes] + ], + **kwargs: Any + ) -> AsyncLROPoller[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse]: + """Runs Managed Instance Link assessment for SQL Server instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_managed_instance_link_assessment_request: Contains the parameters to + run SQL Server instance MI link assessment. Is either a + SqlServerInstanceManagedInstanceLinkAssessmentRequest type or a IO[bytes] type. Required. + :type sql_server_instance_managed_instance_link_assessment_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessmentRequest or + IO[bytes] + :return: An instance of AsyncLROPoller that returns either + SqlServerInstanceManagedInstanceLinkAssessmentResponse or the result of cls(response) + :rtype: + ~azure.core.polling.AsyncLROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessmentResponse] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse] = kwargs.pop("cls", None) + polling: Union[bool, AsyncPollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = await self._run_managed_instance_link_assessment_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + sql_server_instance_managed_instance_link_assessment_request=sql_server_instance_managed_instance_link_assessment_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + await raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "SqlServerInstanceManagedInstanceLinkAssessmentResponse", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: AsyncPollingMethod = cast( + AsyncPollingMethod, + AsyncARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs), + ) + elif polling is False: + polling_method = cast(AsyncPollingMethod, AsyncNoPolling()) + else: + polling_method = polling + if cont_token: + return AsyncLROPoller[ + _models.SqlServerInstanceManagedInstanceLinkAssessmentResponse + ].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return AsyncLROPoller[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_licenses_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_licenses_operations.py new file mode 100644 index 000000000000..a2f1d8c6fee8 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/aio/operations/_sql_server_licenses_operations.py @@ -0,0 +1,590 @@ +# 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 collections.abc import MutableMapping +from io import IOBase +from typing import Any, AsyncIterable, Callable, Dict, IO, Optional, TypeVar, Union, overload +import urllib.parse + +from azure.core import AsyncPipelineClient +from azure.core.async_paging import AsyncItemPaged, AsyncList +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.pipeline import PipelineResponse +from azure.core.rest import AsyncHttpResponse, HttpRequest +from azure.core.tracing.decorator import distributed_trace +from azure.core.tracing.decorator_async import distributed_trace_async +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from ... import models as _models +from ..._utils.serialization import Deserializer, Serializer +from ...operations._sql_server_licenses_operations import ( + build_create_request, + build_delete_request, + build_get_request, + build_list_by_resource_group_request, + build_list_request, + build_update_request, +) +from .._configuration import AzureArcDataManagementClientConfiguration + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, AsyncHttpResponse], T, Dict[str, Any]], Any]] + + +class SqlServerLicensesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.azurearcdata.aio.AzureArcDataManagementClient`'s + :attr:`sql_server_licenses` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs) -> None: + input_args = list(args) + self._client: AsyncPipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, **kwargs: Any) -> AsyncIterable["_models.SqlServerLicense"]: + """List sqlServerLicense resources in the subscription. + + List sqlServerLicense resources in the subscription. + + :return: An iterator like instance of either SqlServerLicense or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.SqlServerLicense] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerLicenseListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SqlServerLicenseListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @distributed_trace + def list_by_resource_group( + self, resource_group_name: str, **kwargs: Any + ) -> AsyncIterable["_models.SqlServerLicense"]: + """List sqlServerLicense resources in the resource group. + + Gets all sqlServerLicenses in a resource group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :return: An iterator like instance of either SqlServerLicense or the result of cls(response) + :rtype: + ~azure.core.async_paging.AsyncItemPaged[~azure.mgmt.azurearcdata.models.SqlServerLicense] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerLicenseListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + async def extract_data(pipeline_response): + deserialized = self._deserialize("SqlServerLicenseListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, AsyncList(list_of_elem) + + async def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return AsyncItemPaged(get_next, extract_data) + + @distributed_trace_async + async def get( + self, resource_group_name: str, sql_server_license_name: str, **kwargs: Any + ) -> _models.SqlServerLicense: + """Retrieves a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerLicense] = kwargs.pop("cls", None) + + _request = build_get_request( + resource_group_name=resource_group_name, + sql_server_license_name=sql_server_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + async def create( + self, + resource_group_name: str, + sql_server_license_name: str, + sql_server_license: _models.SqlServerLicense, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerLicense: + """Creates or replaces a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param sql_server_license: The SQL Server license to be created or updated. Required. + :type sql_server_license: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def create( + self, + resource_group_name: str, + sql_server_license_name: str, + sql_server_license: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerLicense: + """Creates or replaces a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param sql_server_license: The SQL Server license to be created or updated. Required. + :type sql_server_license: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def create( + self, + resource_group_name: str, + sql_server_license_name: str, + sql_server_license: Union[_models.SqlServerLicense, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerLicense: + """Creates or replaces a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param sql_server_license: The SQL Server license to be created or updated. Is either a + SqlServerLicense type or a IO[bytes] type. Required. + :type sql_server_license: ~azure.mgmt.azurearcdata.models.SqlServerLicense or IO[bytes] + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerLicense] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_license, (IOBase, bytes)): + _content = sql_server_license + else: + _json = self._serialize.body(sql_server_license, "SqlServerLicense") + + _request = build_create_request( + resource_group_name=resource_group_name, + sql_server_license_name=sql_server_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace_async + async def delete(self, resource_group_name: str, sql_server_license_name: str, **kwargs: Any) -> None: + """Deletes a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :return: None or the result of cls(response) + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_delete_request( + resource_group_name=resource_group_name, + sql_server_license_name=sql_server_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @overload + async def update( + self, + resource_group_name: str, + sql_server_license_name: str, + parameters: _models.SqlServerLicenseUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerLicense: + """Updates a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param parameters: The SQL Server license. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerLicenseUpdate + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + async def update( + self, + resource_group_name: str, + sql_server_license_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerLicense: + """Updates a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param parameters: The SQL Server license. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace_async + async def update( + self, + resource_group_name: str, + sql_server_license_name: str, + parameters: Union[_models.SqlServerLicenseUpdate, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerLicense: + """Updates a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param parameters: The SQL Server license. Is either a SqlServerLicenseUpdate type or a + IO[bytes] type. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerLicenseUpdate or IO[bytes] + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerLicense] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _json = self._serialize.body(parameters, "SqlServerLicenseUpdate") + + _request = build_update_request( + resource_group_name=resource_group_name, + sql_server_license_name=sql_server_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = await self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/__init__.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/__init__.py index 1b63e4fb2b7e..74e126cf895a 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/__init__.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/__init__.py @@ -5,73 +5,219 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +# pylint: disable=wrong-import-position -from ._models_py3 import ActiveDirectoryConnectorDNSDetails -from ._models_py3 import ActiveDirectoryConnectorDomainDetails -from ._models_py3 import ActiveDirectoryConnectorListResult -from ._models_py3 import ActiveDirectoryConnectorProperties -from ._models_py3 import ActiveDirectoryConnectorResource -from ._models_py3 import ActiveDirectoryConnectorSpec -from ._models_py3 import ActiveDirectoryConnectorStatus -from ._models_py3 import ActiveDirectoryDomainController -from ._models_py3 import ActiveDirectoryDomainControllers -from ._models_py3 import ActiveDirectoryInformation -from ._models_py3 import BasicLoginInformation -from ._models_py3 import CommonSku -from ._models_py3 import DataControllerProperties -from ._models_py3 import DataControllerResource -from ._models_py3 import DataControllerUpdate -from ._models_py3 import ErrorResponse -from ._models_py3 import ErrorResponseBody -from ._models_py3 import ExtendedLocation -from ._models_py3 import K8SResourceRequirements -from ._models_py3 import K8SScheduling -from ._models_py3 import K8SSchedulingOptions -from ._models_py3 import KeytabInformation -from ._models_py3 import LogAnalyticsWorkspaceConfig -from ._models_py3 import OnPremiseProperty -from ._models_py3 import Operation -from ._models_py3 import OperationDisplay -from ._models_py3 import OperationListResult -from ._models_py3 import PageOfDataControllerResource -from ._models_py3 import PostgresInstance -from ._models_py3 import PostgresInstanceListResult -from ._models_py3 import PostgresInstanceProperties -from ._models_py3 import PostgresInstanceSku -from ._models_py3 import PostgresInstanceUpdate -from ._models_py3 import ProxyResource -from ._models_py3 import Resource -from ._models_py3 import SqlManagedInstance -from ._models_py3 import SqlManagedInstanceK8SRaw -from ._models_py3 import SqlManagedInstanceK8SSpec -from ._models_py3 import SqlManagedInstanceListResult -from ._models_py3 import SqlManagedInstanceProperties -from ._models_py3 import SqlManagedInstanceSku -from ._models_py3 import SqlManagedInstanceUpdate -from ._models_py3 import SqlServerInstance -from ._models_py3 import SqlServerInstanceListResult -from ._models_py3 import SqlServerInstanceProperties -from ._models_py3 import SqlServerInstanceUpdate -from ._models_py3 import SystemData -from ._models_py3 import TrackedResource -from ._models_py3 import UploadServicePrincipal -from ._models_py3 import UploadWatermark +from typing import TYPE_CHECKING -from ._azure_arc_data_management_client_enums import AccountProvisioningMode -from ._azure_arc_data_management_client_enums import ArcSqlManagedInstanceLicenseType -from ._azure_arc_data_management_client_enums import ArcSqlServerLicenseType -from ._azure_arc_data_management_client_enums import ConnectionStatus -from ._azure_arc_data_management_client_enums import CreatedByType -from ._azure_arc_data_management_client_enums import DefenderStatus -from ._azure_arc_data_management_client_enums import EditionType -from ._azure_arc_data_management_client_enums import ExtendedLocationTypes -from ._azure_arc_data_management_client_enums import HostType -from ._azure_arc_data_management_client_enums import Infrastructure -from ._azure_arc_data_management_client_enums import OperationOrigin -from ._azure_arc_data_management_client_enums import SqlManagedInstanceSkuTier -from ._azure_arc_data_management_client_enums import SqlVersion +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + + +from ._models_py3 import ( # type: ignore + ActiveDirectoryConnectorDNSDetails, + ActiveDirectoryConnectorDomainDetails, + ActiveDirectoryConnectorListResult, + ActiveDirectoryConnectorProperties, + ActiveDirectoryConnectorResource, + ActiveDirectoryConnectorSpec, + ActiveDirectoryConnectorStatus, + ActiveDirectoryDomainController, + ActiveDirectoryDomainControllers, + ActiveDirectoryInformation, + ArcSqlServerAvailabilityGroupListResult, + ArcSqlServerDatabaseListResult, + Authentication, + AvailabilityGroupConfigure, + AvailabilityGroupCreateUpdateConfiguration, + AvailabilityGroupCreateUpdateReplicaConfiguration, + AvailabilityGroupInfo, + AvailabilityGroupState, + BackgroundJob, + BackupPolicy, + BasicLoginInformation, + ClientConnection, + CommonSku, + DBMEndpoint, + DataBaseMigration, + DataBaseMigrationAssessment, + DataControllerProperties, + DataControllerResource, + DataControllerUpdate, + DatabaseAssessmentsItem, + Databases, + DistributedAvailabilityGroupCreateUpdateAvailabilityGroupCertificateConfiguration, + DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration, + DistributedAvailabilityGroupCreateUpdateConfiguration, + EntraAuthentication, + ErrorAdditionalInfo, + ErrorDetail, + ErrorResponse, + ExtendedLocation, + FailoverCluster, + FailoverGroupListResult, + FailoverGroupProperties, + FailoverGroupResource, + FailoverGroupSpec, + FailoverMiLinkResourceId, + HostIPAddressInformation, + K8SActiveDirectory, + K8SActiveDirectoryConnector, + K8SNetworkSettings, + K8SResourceRequirements, + K8SScheduling, + K8SSchedulingOptions, + K8SSecurity, + K8SSettings, + K8StransparentDataEncryption, + KeytabInformation, + LogAnalyticsWorkspaceConfig, + ManagedInstanceLinkCreateUpdateConfiguration, + MiLinkCreateUpdateConfiguration, + Migration, + MigrationAssessment, + Monitoring, + OnPremiseProperty, + Operation, + OperationDisplay, + OperationListResult, + PageOfDataControllerResource, + PostgresInstance, + PostgresInstanceListResult, + PostgresInstanceProperties, + PostgresInstanceSku, + PostgresInstanceUpdate, + ProxyResource, + Resource, + ResourceAutoGenerated, + SequencerAction, + ServerAssessmentsItem, + ServerAssessmentsPropertiesItemsItem, + SkuRecommendationResults, + SkuRecommendationResultsAzureSqlDatabase, + SkuRecommendationResultsAzureSqlDatabaseTargetSku, + SkuRecommendationResultsAzureSqlDatabaseTargetSkuCategory, + SkuRecommendationResultsAzureSqlManagedInstance, + SkuRecommendationResultsAzureSqlManagedInstanceTargetSku, + SkuRecommendationResultsAzureSqlManagedInstanceTargetSkuCategory, + SkuRecommendationResultsAzureSqlVirtualMachine, + SkuRecommendationResultsAzureSqlVirtualMachineTargetSku, + SkuRecommendationResultsAzureSqlVirtualMachineTargetSkuCategory, + SkuRecommendationResultsMonthlyCost, + SkuRecommendationSummary, + SqlAvailabilityGroupDatabaseReplicaResourceProperties, + SqlAvailabilityGroupDhcpListenerProperties, + SqlAvailabilityGroupIpV4AddressesAndMasksPropertiesItem, + SqlAvailabilityGroupReplicaResourceProperties, + SqlAvailabilityGroupStaticIPListenerProperties, + SqlManagedInstance, + SqlManagedInstanceK8SRaw, + SqlManagedInstanceK8SSpec, + SqlManagedInstanceListResult, + SqlManagedInstanceProperties, + SqlManagedInstanceSku, + SqlManagedInstanceUpdate, + SqlServerAvailabilityGroupResource, + SqlServerAvailabilityGroupResourceProperties, + SqlServerAvailabilityGroupResourcePropertiesDatabases, + SqlServerAvailabilityGroupResourcePropertiesReplicas, + SqlServerAvailabilityGroupUpdate, + SqlServerDatabaseResource, + SqlServerDatabaseResourceProperties, + SqlServerDatabaseResourcePropertiesBackupInformation, + SqlServerDatabaseResourcePropertiesDatabaseOptions, + SqlServerDatabaseUpdate, + SqlServerEsuLicense, + SqlServerEsuLicenseListResult, + SqlServerEsuLicenseProperties, + SqlServerEsuLicenseUpdate, + SqlServerEsuLicenseUpdateProperties, + SqlServerInstance, + SqlServerInstanceJobStatus, + SqlServerInstanceJobsStatusRequest, + SqlServerInstanceJobsStatusResponse, + SqlServerInstanceListResult, + SqlServerInstanceManagedInstanceLinkAssessment, + SqlServerInstanceManagedInstanceLinkAssessmentRequest, + SqlServerInstanceManagedInstanceLinkAssessmentResponse, + SqlServerInstanceProperties, + SqlServerInstanceRunMigrationAssessmentResponse, + SqlServerInstanceTelemetryColumn, + SqlServerInstanceTelemetryRequest, + SqlServerInstanceTelemetryResponse, + SqlServerInstanceUpdate, + SqlServerInstanceUpdateProperties, + SqlServerLicense, + SqlServerLicenseListResult, + SqlServerLicenseProperties, + SqlServerLicenseUpdate, + SqlServerLicenseUpdateProperties, + SystemData, + TargetReadiness, + TrackedResource, + TrackedResourceAutoGenerated, + UploadServicePrincipal, + UploadWatermark, +) + +from ._azure_arc_data_management_client_enums import ( # type: ignore + AccountProvisioningMode, + ActivationState, + AggregationType, + AlwaysOnRole, + ArcSqlManagedInstanceLicenseType, + ArcSqlServerAvailabilityMode, + ArcSqlServerFailoverMode, + ArcSqlServerLicenseType, + AssessmentCategory, + AssessmentStatus, + AutomatedBackupPreference, + AzureManagedInstanceRole, + BillingPlan, + ClusterType, + ConnectionAuth, + ConnectionStatus, + CreatedByType, + DatabaseCreateMode, + DatabaseState, + DbFailover, + DefenderStatus, + DifferentialBackupHours, + DtcSupport, + EditionType, + EncryptionAlgorithm, + ExecutionState, + ExtendedLocationTypes, + FailoverGroupPartnerSyncMode, + FailureConditionLevel, + HostType, + IdentityType, + Infrastructure, + InstanceFailoverGroupRole, + JobStatus, + LastExecutionStatus, + LicenseCategory, + Mode, + OperationOrigin, + PrimaryAllowConnections, + ProvisioningState, + RecommendationStatus, + RecoveryMode, + ReplicationPartnerType, + Result, + Role, + ScopeType, + SecondaryAllowConnections, + SeedingMode, + SequencerState, + ServiceType, + SqlManagedInstanceSkuTier, + SqlServerInstanceTelemetryColumnType, + SqlVersion, + State, + Version, +) from ._patch import __all__ as _patch_all -from ._patch import * # pylint: disable=unused-wildcard-import +from ._patch import * from ._patch import patch_sdk as _patch_sdk __all__ = [ @@ -85,19 +231,58 @@ "ActiveDirectoryDomainController", "ActiveDirectoryDomainControllers", "ActiveDirectoryInformation", + "ArcSqlServerAvailabilityGroupListResult", + "ArcSqlServerDatabaseListResult", + "Authentication", + "AvailabilityGroupConfigure", + "AvailabilityGroupCreateUpdateConfiguration", + "AvailabilityGroupCreateUpdateReplicaConfiguration", + "AvailabilityGroupInfo", + "AvailabilityGroupState", + "BackgroundJob", + "BackupPolicy", "BasicLoginInformation", + "ClientConnection", "CommonSku", + "DBMEndpoint", + "DataBaseMigration", + "DataBaseMigrationAssessment", "DataControllerProperties", "DataControllerResource", "DataControllerUpdate", + "DatabaseAssessmentsItem", + "Databases", + "DistributedAvailabilityGroupCreateUpdateAvailabilityGroupCertificateConfiguration", + "DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration", + "DistributedAvailabilityGroupCreateUpdateConfiguration", + "EntraAuthentication", + "ErrorAdditionalInfo", + "ErrorDetail", "ErrorResponse", - "ErrorResponseBody", "ExtendedLocation", + "FailoverCluster", + "FailoverGroupListResult", + "FailoverGroupProperties", + "FailoverGroupResource", + "FailoverGroupSpec", + "FailoverMiLinkResourceId", + "HostIPAddressInformation", + "K8SActiveDirectory", + "K8SActiveDirectoryConnector", + "K8SNetworkSettings", "K8SResourceRequirements", "K8SScheduling", "K8SSchedulingOptions", + "K8SSecurity", + "K8SSettings", + "K8StransparentDataEncryption", "KeytabInformation", "LogAnalyticsWorkspaceConfig", + "ManagedInstanceLinkCreateUpdateConfiguration", + "MiLinkCreateUpdateConfiguration", + "Migration", + "MigrationAssessment", + "Monitoring", "OnPremiseProperty", "Operation", "OperationDisplay", @@ -110,6 +295,27 @@ "PostgresInstanceUpdate", "ProxyResource", "Resource", + "ResourceAutoGenerated", + "SequencerAction", + "ServerAssessmentsItem", + "ServerAssessmentsPropertiesItemsItem", + "SkuRecommendationResults", + "SkuRecommendationResultsAzureSqlDatabase", + "SkuRecommendationResultsAzureSqlDatabaseTargetSku", + "SkuRecommendationResultsAzureSqlDatabaseTargetSkuCategory", + "SkuRecommendationResultsAzureSqlManagedInstance", + "SkuRecommendationResultsAzureSqlManagedInstanceTargetSku", + "SkuRecommendationResultsAzureSqlManagedInstanceTargetSkuCategory", + "SkuRecommendationResultsAzureSqlVirtualMachine", + "SkuRecommendationResultsAzureSqlVirtualMachineTargetSku", + "SkuRecommendationResultsAzureSqlVirtualMachineTargetSkuCategory", + "SkuRecommendationResultsMonthlyCost", + "SkuRecommendationSummary", + "SqlAvailabilityGroupDatabaseReplicaResourceProperties", + "SqlAvailabilityGroupDhcpListenerProperties", + "SqlAvailabilityGroupIpV4AddressesAndMasksPropertiesItem", + "SqlAvailabilityGroupReplicaResourceProperties", + "SqlAvailabilityGroupStaticIPListenerProperties", "SqlManagedInstance", "SqlManagedInstanceK8SRaw", "SqlManagedInstanceK8SSpec", @@ -117,27 +323,102 @@ "SqlManagedInstanceProperties", "SqlManagedInstanceSku", "SqlManagedInstanceUpdate", + "SqlServerAvailabilityGroupResource", + "SqlServerAvailabilityGroupResourceProperties", + "SqlServerAvailabilityGroupResourcePropertiesDatabases", + "SqlServerAvailabilityGroupResourcePropertiesReplicas", + "SqlServerAvailabilityGroupUpdate", + "SqlServerDatabaseResource", + "SqlServerDatabaseResourceProperties", + "SqlServerDatabaseResourcePropertiesBackupInformation", + "SqlServerDatabaseResourcePropertiesDatabaseOptions", + "SqlServerDatabaseUpdate", + "SqlServerEsuLicense", + "SqlServerEsuLicenseListResult", + "SqlServerEsuLicenseProperties", + "SqlServerEsuLicenseUpdate", + "SqlServerEsuLicenseUpdateProperties", "SqlServerInstance", + "SqlServerInstanceJobStatus", + "SqlServerInstanceJobsStatusRequest", + "SqlServerInstanceJobsStatusResponse", "SqlServerInstanceListResult", + "SqlServerInstanceManagedInstanceLinkAssessment", + "SqlServerInstanceManagedInstanceLinkAssessmentRequest", + "SqlServerInstanceManagedInstanceLinkAssessmentResponse", "SqlServerInstanceProperties", + "SqlServerInstanceRunMigrationAssessmentResponse", + "SqlServerInstanceTelemetryColumn", + "SqlServerInstanceTelemetryRequest", + "SqlServerInstanceTelemetryResponse", "SqlServerInstanceUpdate", + "SqlServerInstanceUpdateProperties", + "SqlServerLicense", + "SqlServerLicenseListResult", + "SqlServerLicenseProperties", + "SqlServerLicenseUpdate", + "SqlServerLicenseUpdateProperties", "SystemData", + "TargetReadiness", "TrackedResource", + "TrackedResourceAutoGenerated", "UploadServicePrincipal", "UploadWatermark", "AccountProvisioningMode", + "ActivationState", + "AggregationType", + "AlwaysOnRole", "ArcSqlManagedInstanceLicenseType", + "ArcSqlServerAvailabilityMode", + "ArcSqlServerFailoverMode", "ArcSqlServerLicenseType", + "AssessmentCategory", + "AssessmentStatus", + "AutomatedBackupPreference", + "AzureManagedInstanceRole", + "BillingPlan", + "ClusterType", + "ConnectionAuth", "ConnectionStatus", "CreatedByType", + "DatabaseCreateMode", + "DatabaseState", + "DbFailover", "DefenderStatus", + "DifferentialBackupHours", + "DtcSupport", "EditionType", + "EncryptionAlgorithm", + "ExecutionState", "ExtendedLocationTypes", + "FailoverGroupPartnerSyncMode", + "FailureConditionLevel", "HostType", + "IdentityType", "Infrastructure", + "InstanceFailoverGroupRole", + "JobStatus", + "LastExecutionStatus", + "LicenseCategory", + "Mode", "OperationOrigin", + "PrimaryAllowConnections", + "ProvisioningState", + "RecommendationStatus", + "RecoveryMode", + "ReplicationPartnerType", + "Result", + "Role", + "ScopeType", + "SecondaryAllowConnections", + "SeedingMode", + "SequencerState", + "ServiceType", "SqlManagedInstanceSkuTier", + "SqlServerInstanceTelemetryColumnType", "SqlVersion", + "State", + "Version", ] -__all__.extend([p for p in _patch_all if p not in __all__]) +__all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore _patch_sdk() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/_azure_arc_data_management_client_enums.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/_azure_arc_data_management_client_enums.py index 8133d9dc267d..4cd2cfafe4e3 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/_azure_arc_data_management_client_enums.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/_azure_arc_data_management_client_enums.py @@ -17,6 +17,32 @@ class AccountProvisioningMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): MANUAL = "manual" +class ActivationState(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The activation state of the license.""" + + ACTIVATED = "Activated" + DEACTIVATED = "Deactivated" + + +class AggregationType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The aggregation type to use for the numerical columns in the dataset.""" + + AVERAGE = "Average" + MINIMUM = "Minimum" + MAXIMUM = "Maximum" + SUM = "Sum" + COUNT = "Count" + + +class AlwaysOnRole(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The role of the SQL Server, based on availability.""" + + NONE = "None" + FAILOVER_CLUSTER_INSTANCE = "FailoverClusterInstance" + FAILOVER_CLUSTER_NODE = "FailoverClusterNode" + AVAILABILITY_GROUP_REPLICA = "AvailabilityGroupReplica" + + class ArcSqlManagedInstanceLicenseType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The license type to apply for this managed instance.""" @@ -25,6 +51,24 @@ class ArcSqlManagedInstanceLicenseType(str, Enum, metaclass=CaseInsensitiveEnumM DISASTER_RECOVERY = "DisasterRecovery" +class ArcSqlServerAvailabilityMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Property that determines whether a given availability replica can run in synchronous-commit + mode. + """ + + SYNCHRONOUS_COMMIT = "SYNCHRONOUS_COMMIT" + ASYNCHRONOUS_COMMIT = "ASYNCHRONOUS_COMMIT" + + +class ArcSqlServerFailoverMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Property to set the failover mode of the availability group replica.""" + + AUTOMATIC = "AUTOMATIC" + MANUAL = "MANUAL" + EXTERNAL = "EXTERNAL" + NONE = "NONE" + + class ArcSqlServerLicenseType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """SQL Server license type.""" @@ -37,6 +81,71 @@ class ArcSqlServerLicenseType(str, Enum, metaclass=CaseInsensitiveEnumMeta): PAID = "Paid" +class AssessmentCategory(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The category of the requirement.""" + + SQL_SERVER = "SQLServer" + MANAGED_INSTANCE = "ManagedInstance" + MANAGED_INSTANCE_CROSS_VALIDATION = "ManagedInstanceCrossValidation" + DAG = "Dag" + CERTIFICATES = "Certificates" + + +class AssessmentStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The status of the requirement.""" + + SUCCESS = "Success" + WARNING = "Warning" + FAILURE = "Failure" + + +class AutomatedBackupPreference(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Preferred replica for running automated backups.""" + + PRIMARY = "PRIMARY" + SECONDARY_ONLY = "SECONDARY_ONLY" + SECONDARY = "SECONDARY" + NONE = "NONE" + + +class AzureManagedInstanceRole(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The role of managed instance in a distributed availability group, can be Primary or Secondary.""" + + PRIMARY = "Primary" + SECONDARY = "Secondary" + + +class BillingPlan(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """SQL Server ESU license type.""" + + PAYG = "PAYG" + PAID = "Paid" + + +class ClusterType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Set to WSFC when availability group is on a failover cluster instance on a Windows Server + failover cluster. Set to NONE when availability group not using WSFC for cluster coordination. + """ + + WSFC = "WSFC" + NONE = "NONE" + + +class ConnectionAuth(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The endpoint connection authentication type(s).""" + + WINDOWS_NTLM = "Windows_NTLM" + WINDOWS_KERBEROS = "Windows_Kerberos" + WINDOWS_NEGOTIATE = "Windows_Negotiate" + CERTIFICATE = "Certificate" + WINDOWS_NTLM_CERTIFICATE = "Windows_NTLM_Certificate" + WINDOWS_KERBEROS_CERTIFICATE = "Windows_Kerberos_Certificate" + WINDOWS_NEGOTIATE_CERTIFICATE = "Windows_Negotiate_Certificate" + CERTIFICATE_WINDOWS_NTLM = "Certificate_Windows_NTLM" + CERTIFICATE_WINDOWS_KERBEROS = "Certificate_Windows_Kerberos" + CERTIFICATE_WINDOWS_NEGOTIATE = "Certificate_Windows_Negotiate" + + class ConnectionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The cloud connectivity status.""" @@ -55,6 +164,36 @@ class CreatedByType(str, Enum, metaclass=CaseInsensitiveEnumMeta): KEY = "Key" +class DatabaseCreateMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Database create mode. PointInTimeRestore: Create a database by restoring a point in time backup + of an existing database. sourceDatabaseId and restorePointInTime must be specified. + """ + + DEFAULT = "Default" + POINT_IN_TIME_RESTORE = "PointInTimeRestore" + + +class DatabaseState(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """State of the database.""" + + ONLINE = "Online" + RESTORING = "Restoring" + RECOVERING = "Recovering" + RECOVERY_PENDING = "RecoveryPending" + SUSPECT = "Suspect" + EMERGENCY = "Emergency" + OFFLINE = "Offline" + COPYING = "Copying" + OFFLINE_SECONDARY = "OfflineSecondary" + + +class DbFailover(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Specifies whether the availability group supports failover for database health conditions.""" + + ON = "ON" + OFF = "OFF" + + class DefenderStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Status of Azure Defender.""" @@ -63,6 +202,20 @@ class DefenderStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): UNKNOWN = "Unknown" +class DifferentialBackupHours(int, Enum, metaclass=CaseInsensitiveEnumMeta): + """The differential backup interval in hours.""" + + TWELVE = 12 + TWENTY_FOUR = 24 + + +class DtcSupport(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Specifies whether DTC support has been enabled for this availability group.""" + + PER_DB = "PER_DB" + NONE = "NONE" + + class EditionType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """SQL Server edition.""" @@ -72,6 +225,28 @@ class EditionType(str, Enum, metaclass=CaseInsensitiveEnumMeta): WEB = "Web" DEVELOPER = "Developer" EXPRESS = "Express" + BUSINESS_INTELLIGENCE = "Business Intelligence" + + +class EncryptionAlgorithm(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The encryption algorithm(s) used by the endpoint.""" + + NONE = "NONE" + RC4 = "RC4" + AES = "AES" + NONE_RC4 = "NONE, RC4" + NONE_AES = "NONE, AES" + RC4_AES = "RC4, AES" + AES_RC4 = "AES, RC4" + NONE_RC4_AES = "NONE, RC4, AES" + NONE_AES_RC4 = "NONE, AES, RC4" + + +class ExecutionState(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The execution state of the background job.""" + + WAITING = "Waiting" + RUNNING = "Running" class ExtendedLocationTypes(str, Enum, metaclass=CaseInsensitiveEnumMeta): @@ -80,6 +255,24 @@ class ExtendedLocationTypes(str, Enum, metaclass=CaseInsensitiveEnumMeta): CUSTOM_LOCATION = "CustomLocation" +class FailoverGroupPartnerSyncMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The partner sync mode of the SQL managed instance.""" + + ASYNC = "async" + SYNC = "sync" + ASYNC_ENUM = "async" + + +class FailureConditionLevel(int, Enum, metaclass=CaseInsensitiveEnumMeta): + """User-defined failure condition level under which an automatic failover must be triggered.""" + + ONE = 1 + TWO = 2 + THREE = 3 + FOUR = 4 + FIVE = 5 + + class HostType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """Type of host for Azure Arc SQL Server.""" @@ -98,6 +291,15 @@ class HostType(str, Enum, metaclass=CaseInsensitiveEnumMeta): OTHER = "Other" +class IdentityType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The method used for Entra authentication.""" + + SYSTEM_ASSIGNED_MANAGED_IDENTITY = "SystemAssignedManagedIdentity" + """System Assigned Managed Identity""" + USER_ASSIGNED_MANAGED_IDENTITY = "UserAssignedManagedIdentity" + """User Assigned Managed Identity""" + + class Infrastructure(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The infrastructure the data controller is running on.""" @@ -109,6 +311,52 @@ class Infrastructure(str, Enum, metaclass=CaseInsensitiveEnumMeta): OTHER = "other" +class InstanceFailoverGroupRole(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The role of the SQL managed instance in this failover group.""" + + PRIMARY = "primary" + SECONDARY = "secondary" + FORCE_PRIMARY_ALLOW_DATA_LOSS = "force-primary-allow-data-loss" + FORCE_SECONDARY = "force-secondary" + + +class JobStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The status of the job.""" + + NOT_STARTED = "NotStarted" + IN_PROGRESS = "InProgress" + SUCCEEDED = "Succeeded" + FAILED = "Failed" + + +class LastExecutionStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The last execution status of the background job.""" + + SUCCEEDED = "Succeeded" + COMPLETED = "Completed" + FAILED = "Failed" + FAULTED = "Faulted" + POSTPONED = "Postponed" + RESCHEDULED = "Rescheduled" + + +class LicenseCategory(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """This property represents the choice between SQL Server Core and ESU licenses.""" + + CORE = "Core" + + +class Mode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Mode of authentication in SqlServer.""" + + MIXED = "Mixed" + """Mixed mode authentication for SQL Server which includes windows and SQL Authentication.""" + WINDOWS = "Windows" + """Windows Authentication for SQL Server.""" + UNDEFINED = "Undefined" + """Used for scenarios were the mode cannot be determined.""" + + class OperationOrigin(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The intended executor of the operation.""" @@ -116,6 +364,125 @@ class OperationOrigin(str, Enum, metaclass=CaseInsensitiveEnumMeta): SYSTEM = "system" +class PrimaryAllowConnections(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Whether the primary replica should allow all connections or only READ_WRITE connections + (disallowing ReadOnly connections). + """ + + ALL = "ALL" + READ_WRITE = "READ_WRITE" + + +class ProvisioningState(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The provisioning state of the failover group resource.""" + + SUCCEEDED = "Succeeded" + FAILED = "Failed" + CANCELED = "Canceled" + ACCEPTED = "Accepted" + + +class RecommendationStatus(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The target recommendation Status for this database.""" + + NOT_READY = "NotReady" + READY = "Ready" + UNKNOWN = "Unknown" + + +class RecoveryMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Status of the database.""" + + FULL = "Full" + BULK_LOGGED = "Bulk-logged" + SIMPLE = "Simple" + + +class ReplicationPartnerType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """ReplicationPartnerType.""" + + SQL_SERVER = "SQLServer" + AZURE_SQLVM = "AzureSQLVM" + AZURE_SQL_MANAGED_INSTANCE = "AzureSQLManagedInstance" + UNKNOWN = "Unknown" + + +class Result(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The result of the sequencer action.""" + + NOT_COMPLETED = "NotCompleted" + SUCCEEDED = "Succeeded" + FAILED = "Failed" + TIMED_OUT = "TimedOut" + SKIPPED = "Skipped" + + +class Role(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Mirroring Role.""" + + NONE = "NONE" + PARTNER = "PARTNER" + WITNESS = "WITNESS" + ALL = "ALL" + + +class ScopeType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The Azure scope to which the license will apply.""" + + TENANT = "Tenant" + SUBSCRIPTION = "Subscription" + RESOURCE_GROUP = "ResourceGroup" + + +class SecondaryAllowConnections(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Whether the secondary replica should allow all connections, no connections, or only ReadOnly + connections. + """ + + NO = "NO" + ALL = "ALL" + READ_ONLY = "READ_ONLY" + + +class SeedingMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Specifies how the secondary replica will be initially seeded. AUTOMATIC enables direct seeding. + This method will seed the secondary replica over the network. This method does not require you + to backup and restore a copy of the primary database on the replica. MANUAL specifies manual + seeding (default). This method requires you to create a backup of the database on the primary + replica and manually restore that backup on the secondary replica. + """ + + AUTOMATIC = "AUTOMATIC" + MANUAL = "MANUAL" + + +class SequencerState(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The state of the sequencer action.""" + + NOT_STARTED = "NotStarted" + WAITING_PREDECESSORS = "WaitingPredecessors" + EXECUTING_ACTION = "ExecutingAction" + CREATING_SUCCESSORS = "CreatingSuccessors" + COMPLETED = "Completed" + + +class ServiceType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """Indicates if the resource represents a SQL Server engine or a SQL Server component service + installed on the host. + """ + + ENGINE = "Engine" + """SQL Server Database Services.""" + SSRS = "SSRS" + """SQL Server Reporting Services.""" + SSAS = "SSAS" + """SQL Server Analysis Services.""" + SSIS = "SSIS" + """SQL Server Integration Services.""" + PBIRS = "PBIRS" + """Power BI Report Server.""" + + class SqlManagedInstanceSkuTier(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The pricing tier for the instance.""" @@ -123,6 +490,20 @@ class SqlManagedInstanceSkuTier(str, Enum, metaclass=CaseInsensitiveEnumMeta): BUSINESS_CRITICAL = "BusinessCritical" +class SqlServerInstanceTelemetryColumnType(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The type of the telemetry column.""" + + BOOL = "bool" + DATETIME = "datetime" + INT = "int" + LONG = "long" + DOUBLE = "double" + STRING = "string" + GUID = "guid" + TIMESPAN = "timespan" + INT_ENUM = "int" + + class SqlVersion(str, Enum, metaclass=CaseInsensitiveEnumMeta): """SQL Server version.""" @@ -133,3 +514,24 @@ class SqlVersion(str, Enum, metaclass=CaseInsensitiveEnumMeta): SQL_SERVER2019 = "SQL Server 2019" SQL_SERVER2022 = "SQL Server 2022" UNKNOWN = "Unknown" + + +class State(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The activation state of the license.""" + + INACTIVE = "Inactive" + ACTIVE = "Active" + TERMINATED = "Terminated" + ENABLED = "Enabled" + DISABLED = "Disabled" + DELETED = "Deleted" + COMPLETED = "Completed" + FAULTED = "Faulted" + SUSPENDED = "Suspended" + + +class Version(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The SQL Server version the license covers.""" + + SQL_SERVER2012 = "SQL Server 2012" + SQL_SERVER2014 = "SQL Server 2014" diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/_models_py3.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/_models_py3.py index 6b59ffc45dca..e6d4f21669e2 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/_models_py3.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/models/_models_py3.py @@ -1,5 +1,5 @@ +# pylint: disable=line-too-long,useless-suppression,too-many-lines # coding=utf-8 -# pylint: disable=too-many-lines # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. @@ -7,31 +7,21 @@ # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +from collections.abc import MutableMapping import datetime -import sys -from typing import Any, Dict, List, Optional, TYPE_CHECKING, Union +from typing import Any, Dict, List, Literal, Optional, TYPE_CHECKING, Union -from .. import _serialization - -if sys.version_info >= (3, 9): - from collections.abc import MutableMapping -else: - from typing import MutableMapping # type: ignore # pylint: disable=ungrouped-imports -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports +from .._utils import serialization as _serialization if TYPE_CHECKING: - # pylint: disable=unused-import,ungrouped-imports from .. import models as _models -JSON = MutableMapping[str, Any] # pylint: disable=unsubscriptable-object +JSON = MutableMapping[str, Any] class ActiveDirectoryConnectorDNSDetails(_serialization.Model): """DNS server details. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar domain_name: DNS domain name for which DNS lookups should be forwarded to the Active Directory DNS servers. @@ -63,8 +53,8 @@ def __init__( domain_name: Optional[str] = None, replicas: int = 1, prefer_k8_s_dns_for_ptr_lookups: bool = True, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword domain_name: DNS domain name for which DNS lookups should be forwarded to the Active Directory DNS servers. @@ -87,7 +77,7 @@ def __init__( class ActiveDirectoryConnectorDomainDetails(_serialization.Model): """Active Directory domain details. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar realm: Name (uppercase) of the Active Directory domain that this AD connector will be associated with. Required. @@ -101,13 +91,12 @@ class ActiveDirectoryConnectorDomainDetails(_serialization.Model): :ivar ou_distinguished_name: The distinguished name of the Active Directory Organizational Unit. :vartype ou_distinguished_name: str - :ivar domain_controllers: null. Required. + :ivar domain_controllers: null. :vartype domain_controllers: ~azure.mgmt.azurearcdata.models.ActiveDirectoryDomainControllers """ _validation = { "realm": {"required": True}, - "domain_controllers": {"required": True}, } _attribute_map = { @@ -122,12 +111,12 @@ def __init__( self, *, realm: str, - domain_controllers: "_models.ActiveDirectoryDomainControllers", netbios_domain_name: Optional[str] = None, service_account_provisioning: Union[str, "_models.AccountProvisioningMode"] = "manual", ou_distinguished_name: Optional[str] = None, - **kwargs - ): + domain_controllers: Optional["_models.ActiveDirectoryDomainControllers"] = None, + **kwargs: Any + ) -> None: """ :keyword realm: Name (uppercase) of the Active Directory domain that this AD connector will be associated with. Required. @@ -141,7 +130,7 @@ def __init__( :keyword ou_distinguished_name: The distinguished name of the Active Directory Organizational Unit. :paramtype ou_distinguished_name: str - :keyword domain_controllers: null. Required. + :keyword domain_controllers: null. :paramtype domain_controllers: ~azure.mgmt.azurearcdata.models.ActiveDirectoryDomainControllers """ super().__init__(**kwargs) @@ -173,11 +162,11 @@ class ActiveDirectoryConnectorListResult(_serialization.Model): "next_link": {"key": "nextLink", "type": "str"}, } - def __init__(self, **kwargs): + def __init__(self, **kwargs: Any) -> None: """ """ super().__init__(**kwargs) - self.value = None - self.next_link = None + self.value: Optional[List["_models.ActiveDirectoryConnectorResource"]] = None + self.next_link: Optional[str] = None class ActiveDirectoryConnectorProperties(_serialization.Model): @@ -185,7 +174,7 @@ class ActiveDirectoryConnectorProperties(_serialization.Model): 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. + All required parameters must be populated in order to send to server. :ivar domain_service_account_login_information: Username and password for domain service account authentication. @@ -220,8 +209,8 @@ def __init__( spec: "_models.ActiveDirectoryConnectorSpec", domain_service_account_login_information: Optional["_models.BasicLoginInformation"] = None, status: Optional["_models.ActiveDirectoryConnectorStatus"] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword domain_service_account_login_information: Username and password for domain service account authentication. @@ -234,7 +223,7 @@ def __init__( """ super().__init__(**kwargs) self.domain_service_account_login_information = domain_service_account_login_information - self.provisioning_state = None + self.provisioning_state: Optional[str] = None self.spec = spec self.status = status @@ -271,17 +260,18 @@ class Resource(_serialization.Model): "system_data": {"key": "systemData", "type": "SystemData"}, } - def __init__(self, **kwargs): + def __init__(self, **kwargs: Any) -> None: """ """ super().__init__(**kwargs) - self.id = None - self.name = None - self.type = None - self.system_data = None + self.id: Optional[str] = None + self.name: Optional[str] = None + self.type: Optional[str] = None + self.system_data: Optional["_models.SystemData"] = None class ProxyResource(Resource): - """The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location. + """The resource model definition for a Azure Resource Manager proxy resource. It will not have + tags and a location. Variables are only populated by the server, and will be ignored when sending a request. @@ -298,31 +288,13 @@ class ProxyResource(Resource): :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData """ - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - } - - def __init__(self, **kwargs): - """ """ - super().__init__(**kwargs) - class ActiveDirectoryConnectorResource(ProxyResource): """Active directory connector resource. 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. + All required parameters must be populated in order to send to server. :ivar id: Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. @@ -355,7 +327,7 @@ class ActiveDirectoryConnectorResource(ProxyResource): "properties": {"key": "properties", "type": "ActiveDirectoryConnectorProperties"}, } - def __init__(self, *, properties: "_models.ActiveDirectoryConnectorProperties", **kwargs): + def __init__(self, *, properties: "_models.ActiveDirectoryConnectorProperties", **kwargs: Any) -> None: """ :keyword properties: null. Required. :paramtype properties: ~azure.mgmt.azurearcdata.models.ActiveDirectoryConnectorProperties @@ -367,7 +339,7 @@ def __init__(self, *, properties: "_models.ActiveDirectoryConnectorProperties", class ActiveDirectoryConnectorSpec(_serialization.Model): """The specifications of the AD Kubernetes resource. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar active_directory: null. Required. :vartype active_directory: @@ -391,8 +363,8 @@ def __init__( *, active_directory: "_models.ActiveDirectoryConnectorDomainDetails", dns: "_models.ActiveDirectoryConnectorDNSDetails", - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword active_directory: null. Required. :paramtype active_directory: @@ -410,7 +382,7 @@ class ActiveDirectoryConnectorStatus(_serialization.Model): :ivar additional_properties: Unmatched properties from the message are deserialized to this collection. - :vartype additional_properties: dict[str, JSON] + :vartype additional_properties: dict[str, any] :ivar last_update_time: The time that the custom resource was last updated. :vartype last_update_time: str :ivar observed_generation: The version of the replicaSet associated with the AD connector @@ -430,16 +402,16 @@ class ActiveDirectoryConnectorStatus(_serialization.Model): def __init__( self, *, - additional_properties: Optional[Dict[str, JSON]] = None, + additional_properties: Optional[Dict[str, Any]] = None, last_update_time: Optional[str] = None, observed_generation: Optional[int] = None, state: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword additional_properties: Unmatched properties from the message are deserialized to this collection. - :paramtype additional_properties: dict[str, JSON] + :paramtype additional_properties: dict[str, any] :keyword last_update_time: The time that the custom resource was last updated. :paramtype last_update_time: str :keyword observed_generation: The version of the replicaSet associated with the AD connector @@ -458,7 +430,7 @@ def __init__( class ActiveDirectoryDomainController(_serialization.Model): """Information about a domain controller in the AD domain. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar hostname: Fully-qualified domain name of a domain controller in the AD domain. Required. :vartype hostname: str @@ -472,7 +444,7 @@ class ActiveDirectoryDomainController(_serialization.Model): "hostname": {"key": "hostname", "type": "str"}, } - def __init__(self, *, hostname: str, **kwargs): + def __init__(self, *, hostname: str, **kwargs: Any) -> None: """ :keyword hostname: Fully-qualified domain name of a domain controller in the AD domain. Required. @@ -483,7 +455,8 @@ def __init__(self, *, hostname: str, **kwargs): class ActiveDirectoryDomainControllers(_serialization.Model): - """Details about the Active Directory domain controllers associated with this AD connector instance. + """Details about the Active Directory domain controllers associated with this AD connector + instance. :ivar primary_domain_controller: Information about the Primary Domain Controller (PDC) in the AD domain. @@ -507,8 +480,8 @@ def __init__( *, primary_domain_controller: Optional["_models.ActiveDirectoryDomainController"] = None, secondary_domain_controllers: Optional[List["_models.ActiveDirectoryDomainController"]] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword primary_domain_controller: Information about the Primary Domain Controller (PDC) in the AD domain. @@ -535,7 +508,7 @@ class ActiveDirectoryInformation(_serialization.Model): "keytab_information": {"key": "keytabInformation", "type": "KeytabInformation"}, } - def __init__(self, *, keytab_information: Optional["_models.KeytabInformation"] = None, **kwargs): + def __init__(self, *, keytab_information: Optional["_models.KeytabInformation"] = None, **kwargs: Any) -> None: """ :keyword keytab_information: Keytab information that is used for the Sql Managed Instance when Active Directory authentication is used. @@ -545,6 +518,930 @@ def __init__(self, *, keytab_information: Optional["_models.KeytabInformation"] self.keytab_information = keytab_information +class ArcSqlServerAvailabilityGroupListResult(_serialization.Model): + """A list of Arc Sql Server Availability Groups. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Array of Arc Sql Server Availability Groups. + :vartype value: list[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ + + _validation = { + "value": {"readonly": True}, + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[SqlServerAvailabilityGroupResource]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.value: Optional[List["_models.SqlServerAvailabilityGroupResource"]] = None + self.next_link: Optional[str] = None + + +class ArcSqlServerDatabaseListResult(_serialization.Model): + """A list of Arc Sql Server database. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Array of Arc Sql Server database. + :vartype value: list[~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ + + _validation = { + "value": {"readonly": True}, + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[SqlServerDatabaseResource]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.value: Optional[List["_models.SqlServerDatabaseResource"]] = None + self.next_link: Optional[str] = None + + +class Authentication(_serialization.Model): + """Authentication related configuration for the SQL Server Instance. + + :ivar mode: Mode of authentication in SqlServer. Known values are: "Mixed", "Windows", and + "Undefined". + :vartype mode: str or ~azure.mgmt.azurearcdata.models.Mode + :ivar sql_server_entra_identity: Entra Authentication configuration for the SQL Server + Instance. + :vartype sql_server_entra_identity: list[~azure.mgmt.azurearcdata.models.EntraAuthentication] + """ + + _attribute_map = { + "mode": {"key": "mode", "type": "str"}, + "sql_server_entra_identity": {"key": "sqlServerEntraIdentity", "type": "[EntraAuthentication]"}, + } + + def __init__( + self, + *, + mode: Optional[Union[str, "_models.Mode"]] = None, + sql_server_entra_identity: Optional[List["_models.EntraAuthentication"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword mode: Mode of authentication in SqlServer. Known values are: "Mixed", "Windows", and + "Undefined". + :paramtype mode: str or ~azure.mgmt.azurearcdata.models.Mode + :keyword sql_server_entra_identity: Entra Authentication configuration for the SQL Server + Instance. + :paramtype sql_server_entra_identity: list[~azure.mgmt.azurearcdata.models.EntraAuthentication] + """ + super().__init__(**kwargs) + self.mode = mode + self.sql_server_entra_identity = sql_server_entra_identity + + +class AvailabilityGroupConfigure(_serialization.Model): + """The specifications of the availability group replica configuration. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar endpoint_name: Name of the mirroring endpoint URL. + :vartype endpoint_name: str + :ivar endpoint_url: Mirroring endpoint URL of availability group replica. + :vartype endpoint_url: str + :ivar endpoint_authentication_mode: Permitted authentication modes for the mirroring endpoint. + Known values are: "Windows_NTLM", "Windows_Kerberos", "Windows_Negotiate", "Certificate", + "Windows_NTLM_Certificate", "Windows_Kerberos_Certificate", "Windows_Negotiate_Certificate", + "Certificate_Windows_NTLM", "Certificate_Windows_Kerberos", and + "Certificate_Windows_Negotiate". + :vartype endpoint_authentication_mode: str or ~azure.mgmt.azurearcdata.models.ConnectionAuth + :ivar certificate_name: Name of certificate to use for authentication. Required if any + CERTIFICATE authentication modes are specified. + :vartype certificate_name: str + :ivar endpoint_connect_login: The login which will connect to the mirroring endpoint. + :vartype endpoint_connect_login: str + :ivar availability_mode: Property that determines whether a given availability replica can run + in synchronous-commit mode. Known values are: "SYNCHRONOUS_COMMIT" and "ASYNCHRONOUS_COMMIT". + :vartype availability_mode: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerAvailabilityMode + :ivar availability_mode_description: The Availability Synchronization mode of the availability + group replica. + :vartype availability_mode_description: str + :ivar failover_mode: Property to set the failover mode of the availability group replica. Known + values are: "AUTOMATIC", "MANUAL", "EXTERNAL", and "NONE". + :vartype failover_mode: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerFailoverMode + :ivar failover_mode_description: The failover mode of the availability group replica. + :vartype failover_mode_description: str + :ivar session_timeout: The time-out period of availability group session replica, in seconds. + :vartype session_timeout: int + :ivar primary_allow_connections: Whether the primary replica should allow all connections or + only READ_WRITE connections (disallowing ReadOnly connections). Known values are: "ALL" and + "READ_WRITE". + :vartype primary_allow_connections: str or + ~azure.mgmt.azurearcdata.models.PrimaryAllowConnections + :ivar primary_role_allow_connections_description: Whether the availability allows all + connections or only read-write connections. + :vartype primary_role_allow_connections_description: str + :ivar secondary_allow_connections: Whether the secondary replica should allow all connections, + no connections, or only ReadOnly connections. Known values are: "NO", "ALL", and "READ_ONLY". + :vartype secondary_allow_connections: str or + ~azure.mgmt.azurearcdata.models.SecondaryAllowConnections + :ivar secondary_role_allow_connections_description: Whether an availability replica that is + performing the secondary role (that is, a secondary replica) can accept connections from + clients. + :vartype secondary_role_allow_connections_description: str + :ivar replica_create_date: Date that the replica was created. + :vartype replica_create_date: ~datetime.datetime + :ivar replica_modify_date: Date that the replica was modified. + :vartype replica_modify_date: ~datetime.datetime + :ivar backup_priority: Represents the user-specified priority for performing backups on this + replica relative to the other replicas in the same availability group. + :vartype backup_priority: int + :ivar read_only_routing_url: Connectivity endpoint (URL) of the read only availability replica. + :vartype read_only_routing_url: str + :ivar read_write_routing_url: Connectivity endpoint (URL) of the read write availability + replica. + :vartype read_write_routing_url: str + :ivar seeding_mode: Specifies how the secondary replica will be initially seeded. AUTOMATIC + enables direct seeding. This method will seed the secondary replica over the network. This + method does not require you to backup and restore a copy of the primary database on the + replica. MANUAL specifies manual seeding (default). This method requires you to create a backup + of the database on the primary replica and manually restore that backup on the secondary + replica. Known values are: "AUTOMATIC" and "MANUAL". + :vartype seeding_mode: str or ~azure.mgmt.azurearcdata.models.SeedingMode + :ivar seeding_mode_description: Describes seeding mode. + :vartype seeding_mode_description: str + """ + + _validation = { + "availability_mode_description": {"readonly": True}, + "failover_mode_description": {"readonly": True}, + "primary_role_allow_connections_description": {"readonly": True}, + "secondary_role_allow_connections_description": {"readonly": True}, + "replica_create_date": {"readonly": True}, + "replica_modify_date": {"readonly": True}, + "seeding_mode_description": {"readonly": True}, + } + + _attribute_map = { + "endpoint_name": {"key": "endpointName", "type": "str"}, + "endpoint_url": {"key": "endpointUrl", "type": "str"}, + "endpoint_authentication_mode": {"key": "endpointAuthenticationMode", "type": "str"}, + "certificate_name": {"key": "certificateName", "type": "str"}, + "endpoint_connect_login": {"key": "endpointConnectLogin", "type": "str"}, + "availability_mode": {"key": "availabilityMode", "type": "str"}, + "availability_mode_description": {"key": "availabilityModeDescription", "type": "str"}, + "failover_mode": {"key": "failoverMode", "type": "str"}, + "failover_mode_description": {"key": "failoverModeDescription", "type": "str"}, + "session_timeout": {"key": "sessionTimeout", "type": "int"}, + "primary_allow_connections": {"key": "primaryAllowConnections", "type": "str"}, + "primary_role_allow_connections_description": {"key": "primaryRoleAllowConnectionsDescription", "type": "str"}, + "secondary_allow_connections": {"key": "secondaryAllowConnections", "type": "str"}, + "secondary_role_allow_connections_description": { + "key": "secondaryRoleAllowConnectionsDescription", + "type": "str", + }, + "replica_create_date": {"key": "replicaCreateDate", "type": "iso-8601"}, + "replica_modify_date": {"key": "replicaModifyDate", "type": "iso-8601"}, + "backup_priority": {"key": "backupPriority", "type": "int"}, + "read_only_routing_url": {"key": "readOnlyRoutingUrl", "type": "str"}, + "read_write_routing_url": {"key": "readWriteRoutingUrl", "type": "str"}, + "seeding_mode": {"key": "seedingMode", "type": "str"}, + "seeding_mode_description": {"key": "seedingModeDescription", "type": "str"}, + } + + def __init__( + self, + *, + endpoint_name: Optional[str] = None, + endpoint_url: Optional[str] = None, + endpoint_authentication_mode: Optional[Union[str, "_models.ConnectionAuth"]] = None, + certificate_name: Optional[str] = None, + endpoint_connect_login: Optional[str] = None, + availability_mode: Optional[Union[str, "_models.ArcSqlServerAvailabilityMode"]] = None, + failover_mode: Optional[Union[str, "_models.ArcSqlServerFailoverMode"]] = None, + session_timeout: Optional[int] = None, + primary_allow_connections: Optional[Union[str, "_models.PrimaryAllowConnections"]] = None, + secondary_allow_connections: Optional[Union[str, "_models.SecondaryAllowConnections"]] = None, + backup_priority: Optional[int] = None, + read_only_routing_url: Optional[str] = None, + read_write_routing_url: Optional[str] = None, + seeding_mode: Optional[Union[str, "_models.SeedingMode"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword endpoint_name: Name of the mirroring endpoint URL. + :paramtype endpoint_name: str + :keyword endpoint_url: Mirroring endpoint URL of availability group replica. + :paramtype endpoint_url: str + :keyword endpoint_authentication_mode: Permitted authentication modes for the mirroring + endpoint. Known values are: "Windows_NTLM", "Windows_Kerberos", "Windows_Negotiate", + "Certificate", "Windows_NTLM_Certificate", "Windows_Kerberos_Certificate", + "Windows_Negotiate_Certificate", "Certificate_Windows_NTLM", "Certificate_Windows_Kerberos", + and "Certificate_Windows_Negotiate". + :paramtype endpoint_authentication_mode: str or ~azure.mgmt.azurearcdata.models.ConnectionAuth + :keyword certificate_name: Name of certificate to use for authentication. Required if any + CERTIFICATE authentication modes are specified. + :paramtype certificate_name: str + :keyword endpoint_connect_login: The login which will connect to the mirroring endpoint. + :paramtype endpoint_connect_login: str + :keyword availability_mode: Property that determines whether a given availability replica can + run in synchronous-commit mode. Known values are: "SYNCHRONOUS_COMMIT" and + "ASYNCHRONOUS_COMMIT". + :paramtype availability_mode: str or + ~azure.mgmt.azurearcdata.models.ArcSqlServerAvailabilityMode + :keyword failover_mode: Property to set the failover mode of the availability group replica. + Known values are: "AUTOMATIC", "MANUAL", "EXTERNAL", and "NONE". + :paramtype failover_mode: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerFailoverMode + :keyword session_timeout: The time-out period of availability group session replica, in + seconds. + :paramtype session_timeout: int + :keyword primary_allow_connections: Whether the primary replica should allow all connections or + only READ_WRITE connections (disallowing ReadOnly connections). Known values are: "ALL" and + "READ_WRITE". + :paramtype primary_allow_connections: str or + ~azure.mgmt.azurearcdata.models.PrimaryAllowConnections + :keyword secondary_allow_connections: Whether the secondary replica should allow all + connections, no connections, or only ReadOnly connections. Known values are: "NO", "ALL", and + "READ_ONLY". + :paramtype secondary_allow_connections: str or + ~azure.mgmt.azurearcdata.models.SecondaryAllowConnections + :keyword backup_priority: Represents the user-specified priority for performing backups on this + replica relative to the other replicas in the same availability group. + :paramtype backup_priority: int + :keyword read_only_routing_url: Connectivity endpoint (URL) of the read only availability + replica. + :paramtype read_only_routing_url: str + :keyword read_write_routing_url: Connectivity endpoint (URL) of the read write availability + replica. + :paramtype read_write_routing_url: str + :keyword seeding_mode: Specifies how the secondary replica will be initially seeded. AUTOMATIC + enables direct seeding. This method will seed the secondary replica over the network. This + method does not require you to backup and restore a copy of the primary database on the + replica. MANUAL specifies manual seeding (default). This method requires you to create a backup + of the database on the primary replica and manually restore that backup on the secondary + replica. Known values are: "AUTOMATIC" and "MANUAL". + :paramtype seeding_mode: str or ~azure.mgmt.azurearcdata.models.SeedingMode + """ + super().__init__(**kwargs) + self.endpoint_name = endpoint_name + self.endpoint_url = endpoint_url + self.endpoint_authentication_mode = endpoint_authentication_mode + self.certificate_name = certificate_name + self.endpoint_connect_login = endpoint_connect_login + self.availability_mode = availability_mode + self.availability_mode_description: Optional[str] = None + self.failover_mode = failover_mode + self.failover_mode_description: Optional[str] = None + self.session_timeout = session_timeout + self.primary_allow_connections = primary_allow_connections + self.primary_role_allow_connections_description: Optional[str] = None + self.secondary_allow_connections = secondary_allow_connections + self.secondary_role_allow_connections_description: Optional[str] = None + self.replica_create_date: Optional[datetime.datetime] = None + self.replica_modify_date: Optional[datetime.datetime] = None + self.backup_priority = backup_priority + self.read_only_routing_url = read_only_routing_url + self.read_write_routing_url = read_write_routing_url + self.seeding_mode = seeding_mode + self.seeding_mode_description: Optional[str] = None + + +class AvailabilityGroupCreateUpdateConfiguration(_serialization.Model): # pylint: disable=name-too-long + """Options used in creating an availability group. + + :ivar availability_group_name: Name of the availability group. + :vartype availability_group_name: str + :ivar replicas: List of availability group replicas. + :vartype replicas: + list[~azure.mgmt.azurearcdata.models.AvailabilityGroupCreateUpdateReplicaConfiguration] + :ivar databases: List of databases to include in the availability group. + :vartype databases: list[str] + :ivar automated_backup_preference: Preferred replica for running automated backups. Known + values are: "PRIMARY", "SECONDARY_ONLY", "SECONDARY", and "NONE". + :vartype automated_backup_preference: str or + ~azure.mgmt.azurearcdata.models.AutomatedBackupPreference + :ivar failure_condition_level: User-defined failure condition level under which an automatic + failover must be triggered. Known values are: 1, 2, 3, 4, and 5. + :vartype failure_condition_level: int or ~azure.mgmt.azurearcdata.models.FailureConditionLevel + :ivar health_check_timeout: Wait time (in milliseconds) for the sp_server_diagnostics system + stored procedure to return server-health information, before the server instance is assumed to + be slow or not responding. + :vartype health_check_timeout: int + :ivar db_failover: Specifies whether the availability group supports failover for database + health conditions. Known values are: "ON" and "OFF". + :vartype db_failover: str or ~azure.mgmt.azurearcdata.models.DbFailover + :ivar dtc_support: Specifies whether DTC support has been enabled for this availability group. + Known values are: "PER_DB" and "NONE". + :vartype dtc_support: str or ~azure.mgmt.azurearcdata.models.DtcSupport + :ivar required_synchronized_secondaries_to_commit: The number of secondary replicas that must + be in a synchronized state for a commit to complete. + :vartype required_synchronized_secondaries_to_commit: int + :ivar cluster_type: Set to WSFC when availability group is on a failover cluster instance on a + Windows Server failover cluster. Set to NONE when availability group not using WSFC for cluster + coordination. Known values are: "WSFC" and "NONE". + :vartype cluster_type: str or ~azure.mgmt.azurearcdata.models.ClusterType + :ivar listener: The listener for the sql server availability group. + :vartype listener: + ~azure.mgmt.azurearcdata.models.SqlAvailabilityGroupStaticIPListenerProperties + """ + + _attribute_map = { + "availability_group_name": {"key": "availabilityGroupName", "type": "str"}, + "replicas": {"key": "replicas", "type": "[AvailabilityGroupCreateUpdateReplicaConfiguration]"}, + "databases": {"key": "databases", "type": "[str]"}, + "automated_backup_preference": {"key": "automatedBackupPreference", "type": "str"}, + "failure_condition_level": {"key": "failureConditionLevel", "type": "int"}, + "health_check_timeout": {"key": "healthCheckTimeout", "type": "int"}, + "db_failover": {"key": "dbFailover", "type": "str"}, + "dtc_support": {"key": "dtcSupport", "type": "str"}, + "required_synchronized_secondaries_to_commit": { + "key": "requiredSynchronizedSecondariesToCommit", + "type": "int", + }, + "cluster_type": {"key": "clusterType", "type": "str"}, + "listener": {"key": "listener", "type": "SqlAvailabilityGroupStaticIPListenerProperties"}, + } + + def __init__( + self, + *, + availability_group_name: Optional[str] = None, + replicas: Optional[List["_models.AvailabilityGroupCreateUpdateReplicaConfiguration"]] = None, + databases: Optional[List[str]] = None, + automated_backup_preference: Optional[Union[str, "_models.AutomatedBackupPreference"]] = None, + failure_condition_level: Optional[Union[int, "_models.FailureConditionLevel"]] = None, + health_check_timeout: Optional[int] = None, + db_failover: Optional[Union[str, "_models.DbFailover"]] = None, + dtc_support: Optional[Union[str, "_models.DtcSupport"]] = None, + required_synchronized_secondaries_to_commit: Optional[int] = None, + cluster_type: Optional[Union[str, "_models.ClusterType"]] = None, + listener: Optional["_models.SqlAvailabilityGroupStaticIPListenerProperties"] = None, + **kwargs: Any + ) -> None: + """ + :keyword availability_group_name: Name of the availability group. + :paramtype availability_group_name: str + :keyword replicas: List of availability group replicas. + :paramtype replicas: + list[~azure.mgmt.azurearcdata.models.AvailabilityGroupCreateUpdateReplicaConfiguration] + :keyword databases: List of databases to include in the availability group. + :paramtype databases: list[str] + :keyword automated_backup_preference: Preferred replica for running automated backups. Known + values are: "PRIMARY", "SECONDARY_ONLY", "SECONDARY", and "NONE". + :paramtype automated_backup_preference: str or + ~azure.mgmt.azurearcdata.models.AutomatedBackupPreference + :keyword failure_condition_level: User-defined failure condition level under which an automatic + failover must be triggered. Known values are: 1, 2, 3, 4, and 5. + :paramtype failure_condition_level: int or + ~azure.mgmt.azurearcdata.models.FailureConditionLevel + :keyword health_check_timeout: Wait time (in milliseconds) for the sp_server_diagnostics system + stored procedure to return server-health information, before the server instance is assumed to + be slow or not responding. + :paramtype health_check_timeout: int + :keyword db_failover: Specifies whether the availability group supports failover for database + health conditions. Known values are: "ON" and "OFF". + :paramtype db_failover: str or ~azure.mgmt.azurearcdata.models.DbFailover + :keyword dtc_support: Specifies whether DTC support has been enabled for this availability + group. Known values are: "PER_DB" and "NONE". + :paramtype dtc_support: str or ~azure.mgmt.azurearcdata.models.DtcSupport + :keyword required_synchronized_secondaries_to_commit: The number of secondary replicas that + must be in a synchronized state for a commit to complete. + :paramtype required_synchronized_secondaries_to_commit: int + :keyword cluster_type: Set to WSFC when availability group is on a failover cluster instance on + a Windows Server failover cluster. Set to NONE when availability group not using WSFC for + cluster coordination. Known values are: "WSFC" and "NONE". + :paramtype cluster_type: str or ~azure.mgmt.azurearcdata.models.ClusterType + :keyword listener: The listener for the sql server availability group. + :paramtype listener: + ~azure.mgmt.azurearcdata.models.SqlAvailabilityGroupStaticIPListenerProperties + """ + super().__init__(**kwargs) + self.availability_group_name = availability_group_name + self.replicas = replicas + self.databases = databases + self.automated_backup_preference = automated_backup_preference + self.failure_condition_level = failure_condition_level + self.health_check_timeout = health_check_timeout + self.db_failover = db_failover + self.dtc_support = dtc_support + self.required_synchronized_secondaries_to_commit = required_synchronized_secondaries_to_commit + self.cluster_type = cluster_type + self.listener = listener + + +class AvailabilityGroupCreateUpdateReplicaConfiguration(_serialization.Model): # pylint: disable=name-too-long + """The specifications of the availability group replica configuration. + + :ivar server_instance: the server instance hosting the replica. + :vartype server_instance: str + :ivar endpoint_name: Name of the database mirroring endpoint URL for the availability group + replica. + :vartype endpoint_name: str + :ivar endpoint_url: Database mirroring endpoint URL of availability group replica. + :vartype endpoint_url: str + :ivar endpoint_authentication_mode: Permitted authentication modes for the mirroring endpoint. + Known values are: "Windows_NTLM", "Windows_Kerberos", "Windows_Negotiate", "Certificate", + "Windows_NTLM_Certificate", "Windows_Kerberos_Certificate", "Windows_Negotiate_Certificate", + "Certificate_Windows_NTLM", "Certificate_Windows_Kerberos", and + "Certificate_Windows_Negotiate". + :vartype endpoint_authentication_mode: str or ~azure.mgmt.azurearcdata.models.ConnectionAuth + :ivar certificate_name: Name of certificate to use for authentication. Required if any + CERTIFICATE authentication modes are specified. + :vartype certificate_name: str + :ivar endpoint_connect_login: The login which will connect to the mirroring endpoint. + :vartype endpoint_connect_login: str + :ivar availability_mode: Property that determines whether a given availability replica can run + in synchronous-commit mode. Known values are: "SYNCHRONOUS_COMMIT" and "ASYNCHRONOUS_COMMIT". + :vartype availability_mode: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerAvailabilityMode + :ivar failover_mode: Property to set the failover mode of the availability group replica. Known + values are: "AUTOMATIC", "MANUAL", "EXTERNAL", and "NONE". + :vartype failover_mode: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerFailoverMode + :ivar seeding_mode: Specifies how the secondary replica will be initially seeded. AUTOMATIC + enables direct seeding. This method will seed the secondary replica over the network. This + method does not require you to backup and restore a copy of the primary database on the + replica. MANUAL specifies manual seeding (default). This method requires you to create a backup + of the database on the primary replica and manually restore that backup on the secondary + replica. Known values are: "AUTOMATIC" and "MANUAL". + :vartype seeding_mode: str or ~azure.mgmt.azurearcdata.models.SeedingMode + :ivar backup_priority: Represents the user-specified priority for performing backups on this + replica relative to the other replicas in the same availability group. + :vartype backup_priority: int + :ivar secondary_role_allow_connections: Whether the secondary replica should allow all + connections, no connections, or only ReadOnly connections. Known values are: "NO", "ALL", and + "READ_ONLY". + :vartype secondary_role_allow_connections: str or + ~azure.mgmt.azurearcdata.models.SecondaryAllowConnections + :ivar secondary_role_read_only_routing_url: Connectivity endpoint (URL) of the read only + availability replica. + :vartype secondary_role_read_only_routing_url: str + :ivar primary_role_allow_connections: Whether the primary replica should allow all connections + or only READ_WRITE connections (disallowing ReadOnly connections). Known values are: "ALL" and + "READ_WRITE". + :vartype primary_role_allow_connections: str or + ~azure.mgmt.azurearcdata.models.PrimaryAllowConnections + :ivar primary_role_read_only_routing_list: List of read only routing URLs. + :vartype primary_role_read_only_routing_list: list[str] + :ivar session_timeout: The time-out period of availability group session replica, in seconds. + :vartype session_timeout: int + """ + + _attribute_map = { + "server_instance": {"key": "serverInstance", "type": "str"}, + "endpoint_name": {"key": "endpointName", "type": "str"}, + "endpoint_url": {"key": "endpointUrl", "type": "str"}, + "endpoint_authentication_mode": {"key": "endpointAuthenticationMode", "type": "str"}, + "certificate_name": {"key": "certificateName", "type": "str"}, + "endpoint_connect_login": {"key": "endpointConnectLogin", "type": "str"}, + "availability_mode": {"key": "availabilityMode", "type": "str"}, + "failover_mode": {"key": "failoverMode", "type": "str"}, + "seeding_mode": {"key": "seedingMode", "type": "str"}, + "backup_priority": {"key": "backupPriority", "type": "int"}, + "secondary_role_allow_connections": {"key": "secondaryRoleAllowConnections", "type": "str"}, + "secondary_role_read_only_routing_url": {"key": "secondaryRoleReadOnlyRoutingUrl", "type": "str"}, + "primary_role_allow_connections": {"key": "primaryRoleAllowConnections", "type": "str"}, + "primary_role_read_only_routing_list": {"key": "primaryRoleReadOnlyRoutingList", "type": "[str]"}, + "session_timeout": {"key": "sessionTimeout", "type": "int"}, + } + + def __init__( + self, + *, + server_instance: Optional[str] = None, + endpoint_name: Optional[str] = None, + endpoint_url: Optional[str] = None, + endpoint_authentication_mode: Optional[Union[str, "_models.ConnectionAuth"]] = None, + certificate_name: Optional[str] = None, + endpoint_connect_login: Optional[str] = None, + availability_mode: Optional[Union[str, "_models.ArcSqlServerAvailabilityMode"]] = None, + failover_mode: Optional[Union[str, "_models.ArcSqlServerFailoverMode"]] = None, + seeding_mode: Optional[Union[str, "_models.SeedingMode"]] = None, + backup_priority: Optional[int] = None, + secondary_role_allow_connections: Optional[Union[str, "_models.SecondaryAllowConnections"]] = None, + secondary_role_read_only_routing_url: Optional[str] = None, + primary_role_allow_connections: Optional[Union[str, "_models.PrimaryAllowConnections"]] = None, + primary_role_read_only_routing_list: Optional[List[str]] = None, + session_timeout: Optional[int] = None, + **kwargs: Any + ) -> None: + """ + :keyword server_instance: the server instance hosting the replica. + :paramtype server_instance: str + :keyword endpoint_name: Name of the database mirroring endpoint URL for the availability group + replica. + :paramtype endpoint_name: str + :keyword endpoint_url: Database mirroring endpoint URL of availability group replica. + :paramtype endpoint_url: str + :keyword endpoint_authentication_mode: Permitted authentication modes for the mirroring + endpoint. Known values are: "Windows_NTLM", "Windows_Kerberos", "Windows_Negotiate", + "Certificate", "Windows_NTLM_Certificate", "Windows_Kerberos_Certificate", + "Windows_Negotiate_Certificate", "Certificate_Windows_NTLM", "Certificate_Windows_Kerberos", + and "Certificate_Windows_Negotiate". + :paramtype endpoint_authentication_mode: str or ~azure.mgmt.azurearcdata.models.ConnectionAuth + :keyword certificate_name: Name of certificate to use for authentication. Required if any + CERTIFICATE authentication modes are specified. + :paramtype certificate_name: str + :keyword endpoint_connect_login: The login which will connect to the mirroring endpoint. + :paramtype endpoint_connect_login: str + :keyword availability_mode: Property that determines whether a given availability replica can + run in synchronous-commit mode. Known values are: "SYNCHRONOUS_COMMIT" and + "ASYNCHRONOUS_COMMIT". + :paramtype availability_mode: str or + ~azure.mgmt.azurearcdata.models.ArcSqlServerAvailabilityMode + :keyword failover_mode: Property to set the failover mode of the availability group replica. + Known values are: "AUTOMATIC", "MANUAL", "EXTERNAL", and "NONE". + :paramtype failover_mode: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerFailoverMode + :keyword seeding_mode: Specifies how the secondary replica will be initially seeded. AUTOMATIC + enables direct seeding. This method will seed the secondary replica over the network. This + method does not require you to backup and restore a copy of the primary database on the + replica. MANUAL specifies manual seeding (default). This method requires you to create a backup + of the database on the primary replica and manually restore that backup on the secondary + replica. Known values are: "AUTOMATIC" and "MANUAL". + :paramtype seeding_mode: str or ~azure.mgmt.azurearcdata.models.SeedingMode + :keyword backup_priority: Represents the user-specified priority for performing backups on this + replica relative to the other replicas in the same availability group. + :paramtype backup_priority: int + :keyword secondary_role_allow_connections: Whether the secondary replica should allow all + connections, no connections, or only ReadOnly connections. Known values are: "NO", "ALL", and + "READ_ONLY". + :paramtype secondary_role_allow_connections: str or + ~azure.mgmt.azurearcdata.models.SecondaryAllowConnections + :keyword secondary_role_read_only_routing_url: Connectivity endpoint (URL) of the read only + availability replica. + :paramtype secondary_role_read_only_routing_url: str + :keyword primary_role_allow_connections: Whether the primary replica should allow all + connections or only READ_WRITE connections (disallowing ReadOnly connections). Known values + are: "ALL" and "READ_WRITE". + :paramtype primary_role_allow_connections: str or + ~azure.mgmt.azurearcdata.models.PrimaryAllowConnections + :keyword primary_role_read_only_routing_list: List of read only routing URLs. + :paramtype primary_role_read_only_routing_list: list[str] + :keyword session_timeout: The time-out period of availability group session replica, in + seconds. + :paramtype session_timeout: int + """ + super().__init__(**kwargs) + self.server_instance = server_instance + self.endpoint_name = endpoint_name + self.endpoint_url = endpoint_url + self.endpoint_authentication_mode = endpoint_authentication_mode + self.certificate_name = certificate_name + self.endpoint_connect_login = endpoint_connect_login + self.availability_mode = availability_mode + self.failover_mode = failover_mode + self.seeding_mode = seeding_mode + self.backup_priority = backup_priority + self.secondary_role_allow_connections = secondary_role_allow_connections + self.secondary_role_read_only_routing_url = secondary_role_read_only_routing_url + self.primary_role_allow_connections = primary_role_allow_connections + self.primary_role_read_only_routing_list = primary_role_read_only_routing_list + self.session_timeout = session_timeout + + +class AvailabilityGroupInfo(_serialization.Model): + """The specifications of the availability group state. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar failure_condition_level: User-defined failure condition level under which an automatic + failover must be triggered. + :vartype failure_condition_level: int + :ivar health_check_timeout: Wait time (in milliseconds) for the sp_server_diagnostics system + stored procedure to return server-health information, before the server instance is assumed to + be slow or not responding. + :vartype health_check_timeout: int + :ivar automated_backup_preference_description: Preferred location for performing backups on the + availability databases in this availability group. + :vartype automated_backup_preference_description: str + :ivar version: SQL Server availability group current version. + :vartype version: int + :ivar basic_features: Specifies whether this is a basic availability group. + :vartype basic_features: bool + :ivar dtc_support: Specifies whether DTC support has been enabled for this availability group. + :vartype dtc_support: bool + :ivar db_failover: Specifies whether the availability group supports failover for database + health conditions. + :vartype db_failover: bool + :ivar is_distributed: Specifies whether this is a distributed availability group. + :vartype is_distributed: bool + :ivar cluster_type_description: SQL Server availability group cluster type description. + :vartype cluster_type_description: str + :ivar required_synchronized_secondaries_to_commit: The number of secondary replicas that must + be in a synchronized state for a commit to complete. + :vartype required_synchronized_secondaries_to_commit: int + :ivar is_contained: SQL Server availability group contained system databases. + :vartype is_contained: bool + :ivar primary_replica: Name of the server instance that is hosting the current primary replica. + :vartype primary_replica: str + :ivar primary_recovery_health_description: Indicates the recovery health of the primary + replica. + :vartype primary_recovery_health_description: str + :ivar secondary_recovery_health_description: Indicates the recovery health of a secondary + replica. + :vartype secondary_recovery_health_description: str + :ivar synchronization_health_description: Reflects a roll-up of the synchronization health of + all availability replicas in the availability group. + :vartype synchronization_health_description: str + :ivar replication_partner_type: Known values are: "SQLServer", "AzureSQLVM", + "AzureSQLManagedInstance", and "Unknown". + :vartype replication_partner_type: str or + ~azure.mgmt.azurearcdata.models.ReplicationPartnerType + :ivar listener: The listener for the sql server availability group. + :vartype listener: + ~azure.mgmt.azurearcdata.models.SqlAvailabilityGroupStaticIPListenerProperties + """ + + _validation = { + "automated_backup_preference_description": {"readonly": True}, + "version": {"readonly": True}, + "cluster_type_description": {"readonly": True}, + "primary_replica": {"readonly": True}, + "primary_recovery_health_description": {"readonly": True}, + "secondary_recovery_health_description": {"readonly": True}, + "synchronization_health_description": {"readonly": True}, + "replication_partner_type": {"readonly": True}, + } + + _attribute_map = { + "failure_condition_level": {"key": "failureConditionLevel", "type": "int"}, + "health_check_timeout": {"key": "healthCheckTimeout", "type": "int"}, + "automated_backup_preference_description": {"key": "automatedBackupPreferenceDescription", "type": "str"}, + "version": {"key": "version", "type": "int"}, + "basic_features": {"key": "basicFeatures", "type": "bool"}, + "dtc_support": {"key": "dtcSupport", "type": "bool"}, + "db_failover": {"key": "dbFailover", "type": "bool"}, + "is_distributed": {"key": "isDistributed", "type": "bool"}, + "cluster_type_description": {"key": "clusterTypeDescription", "type": "str"}, + "required_synchronized_secondaries_to_commit": { + "key": "requiredSynchronizedSecondariesToCommit", + "type": "int", + }, + "is_contained": {"key": "isContained", "type": "bool"}, + "primary_replica": {"key": "primaryReplica", "type": "str"}, + "primary_recovery_health_description": {"key": "primaryRecoveryHealthDescription", "type": "str"}, + "secondary_recovery_health_description": {"key": "secondaryRecoveryHealthDescription", "type": "str"}, + "synchronization_health_description": {"key": "synchronizationHealthDescription", "type": "str"}, + "replication_partner_type": {"key": "replicationPartnerType", "type": "str"}, + "listener": {"key": "listener", "type": "SqlAvailabilityGroupStaticIPListenerProperties"}, + } + + def __init__( + self, + *, + failure_condition_level: Optional[int] = None, + health_check_timeout: Optional[int] = None, + basic_features: Optional[bool] = None, + dtc_support: Optional[bool] = None, + db_failover: Optional[bool] = None, + is_distributed: Optional[bool] = None, + required_synchronized_secondaries_to_commit: Optional[int] = None, + is_contained: Optional[bool] = None, + listener: Optional["_models.SqlAvailabilityGroupStaticIPListenerProperties"] = None, + **kwargs: Any + ) -> None: + """ + :keyword failure_condition_level: User-defined failure condition level under which an automatic + failover must be triggered. + :paramtype failure_condition_level: int + :keyword health_check_timeout: Wait time (in milliseconds) for the sp_server_diagnostics system + stored procedure to return server-health information, before the server instance is assumed to + be slow or not responding. + :paramtype health_check_timeout: int + :keyword basic_features: Specifies whether this is a basic availability group. + :paramtype basic_features: bool + :keyword dtc_support: Specifies whether DTC support has been enabled for this availability + group. + :paramtype dtc_support: bool + :keyword db_failover: Specifies whether the availability group supports failover for database + health conditions. + :paramtype db_failover: bool + :keyword is_distributed: Specifies whether this is a distributed availability group. + :paramtype is_distributed: bool + :keyword required_synchronized_secondaries_to_commit: The number of secondary replicas that + must be in a synchronized state for a commit to complete. + :paramtype required_synchronized_secondaries_to_commit: int + :keyword is_contained: SQL Server availability group contained system databases. + :paramtype is_contained: bool + :keyword listener: The listener for the sql server availability group. + :paramtype listener: + ~azure.mgmt.azurearcdata.models.SqlAvailabilityGroupStaticIPListenerProperties + """ + super().__init__(**kwargs) + self.failure_condition_level = failure_condition_level + self.health_check_timeout = health_check_timeout + self.automated_backup_preference_description: Optional[str] = None + self.version: Optional[int] = None + self.basic_features = basic_features + self.dtc_support = dtc_support + self.db_failover = db_failover + self.is_distributed = is_distributed + self.cluster_type_description: Optional[str] = None + self.required_synchronized_secondaries_to_commit = required_synchronized_secondaries_to_commit + self.is_contained = is_contained + self.primary_replica: Optional[str] = None + self.primary_recovery_health_description: Optional[str] = None + self.secondary_recovery_health_description: Optional[str] = None + self.synchronization_health_description: Optional[str] = None + self.replication_partner_type: Optional[Union[str, "_models.ReplicationPartnerType"]] = None + self.listener = listener + + +class AvailabilityGroupState(_serialization.Model): + """The specifications of the availability group state. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar availability_group_replica_role: Current Always On availability groups role of the + availability group replica. + :vartype availability_group_replica_role: str + :ivar operational_state_description: Current operational state of the availability group + replica. + :vartype operational_state_description: str + :ivar recovery_health_description: Recovery health of the availability group replica. + :vartype recovery_health_description: str + :ivar synchronization_health_description: Reflects a rollup of the database synchronization + state (synchronization_state) of all joined availability databases (also known as replicas) and + the availability mode of the replica (synchronous-commit or asynchronous-commit mode). The + rollup will reflect the least healthy accumulated state the databases on the replica. + :vartype synchronization_health_description: str + :ivar connected_state_description: Whether a secondary replica is currently connected to the + primary replica. + :vartype connected_state_description: str + :ivar last_connect_error_description: Text description of the last connection error of the + availability group replica. + :vartype last_connect_error_description: str + :ivar last_connect_error_timestamp: Date and time timestamp indicating when the last connect + error occurred. + :vartype last_connect_error_timestamp: ~datetime.datetime + """ + + _validation = { + "availability_group_replica_role": {"readonly": True}, + "operational_state_description": {"readonly": True}, + "recovery_health_description": {"readonly": True}, + "synchronization_health_description": {"readonly": True}, + "connected_state_description": {"readonly": True}, + "last_connect_error_description": {"readonly": True}, + "last_connect_error_timestamp": {"readonly": True}, + } + + _attribute_map = { + "availability_group_replica_role": {"key": "availabilityGroupReplicaRole", "type": "str"}, + "operational_state_description": {"key": "operationalStateDescription", "type": "str"}, + "recovery_health_description": {"key": "recoveryHealthDescription", "type": "str"}, + "synchronization_health_description": {"key": "synchronizationHealthDescription", "type": "str"}, + "connected_state_description": {"key": "connectedStateDescription", "type": "str"}, + "last_connect_error_description": {"key": "lastConnectErrorDescription", "type": "str"}, + "last_connect_error_timestamp": {"key": "lastConnectErrorTimestamp", "type": "iso-8601"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.availability_group_replica_role: Optional[str] = None + self.operational_state_description: Optional[str] = None + self.recovery_health_description: Optional[str] = None + self.synchronization_health_description: Optional[str] = None + self.connected_state_description: Optional[str] = None + self.last_connect_error_description: Optional[str] = None + self.last_connect_error_timestamp: Optional[datetime.datetime] = None + + +class BackgroundJob(_serialization.Model): + """The background job details. + + :ivar state: The state of the background job. Known values are: "Inactive", "Active", + "Terminated", "Enabled", "Disabled", "Deleted", "Completed", "Faulted", and "Suspended". + :vartype state: str or ~azure.mgmt.azurearcdata.models.State + :ivar execution_state: The execution state of the background job. Known values are: "Waiting" + and "Running". + :vartype execution_state: str or ~azure.mgmt.azurearcdata.models.ExecutionState + :ivar start_time: The start time of the background job. + :vartype start_time: ~datetime.datetime + :ivar end_time: The end time of the background job. + :vartype end_time: ~datetime.datetime + :ivar last_execution_status: The last execution status of the background job. Known values are: + "Succeeded", "Completed", "Failed", "Faulted", "Postponed", and "Rescheduled". + :vartype last_execution_status: str or ~azure.mgmt.azurearcdata.models.LastExecutionStatus + :ivar last_execution_time: The last execution time of the background job. + :vartype last_execution_time: ~datetime.datetime + """ + + _attribute_map = { + "state": {"key": "state", "type": "str"}, + "execution_state": {"key": "executionState", "type": "str"}, + "start_time": {"key": "startTime", "type": "iso-8601"}, + "end_time": {"key": "endTime", "type": "iso-8601"}, + "last_execution_status": {"key": "lastExecutionStatus", "type": "str"}, + "last_execution_time": {"key": "lastExecutionTime", "type": "iso-8601"}, + } + + def __init__( + self, + *, + state: Optional[Union[str, "_models.State"]] = None, + execution_state: Optional[Union[str, "_models.ExecutionState"]] = None, + start_time: Optional[datetime.datetime] = None, + end_time: Optional[datetime.datetime] = None, + last_execution_status: Optional[Union[str, "_models.LastExecutionStatus"]] = None, + last_execution_time: Optional[datetime.datetime] = None, + **kwargs: Any + ) -> None: + """ + :keyword state: The state of the background job. Known values are: "Inactive", "Active", + "Terminated", "Enabled", "Disabled", "Deleted", "Completed", "Faulted", and "Suspended". + :paramtype state: str or ~azure.mgmt.azurearcdata.models.State + :keyword execution_state: The execution state of the background job. Known values are: + "Waiting" and "Running". + :paramtype execution_state: str or ~azure.mgmt.azurearcdata.models.ExecutionState + :keyword start_time: The start time of the background job. + :paramtype start_time: ~datetime.datetime + :keyword end_time: The end time of the background job. + :paramtype end_time: ~datetime.datetime + :keyword last_execution_status: The last execution status of the background job. Known values + are: "Succeeded", "Completed", "Failed", "Faulted", "Postponed", and "Rescheduled". + :paramtype last_execution_status: str or ~azure.mgmt.azurearcdata.models.LastExecutionStatus + :keyword last_execution_time: The last execution time of the background job. + :paramtype last_execution_time: ~datetime.datetime + """ + super().__init__(**kwargs) + self.state = state + self.execution_state = execution_state + self.start_time = start_time + self.end_time = end_time + self.last_execution_status = last_execution_status + self.last_execution_time = last_execution_time + + +class BackupPolicy(_serialization.Model): + """The backup profile for the SQL server. + + :ivar retention_period_days: The retention period for all the databases in this managed + instance. + :vartype retention_period_days: int + :ivar full_backup_days: The value indicating days between full backups. + :vartype full_backup_days: int + :ivar differential_backup_hours: The differential backup interval in hours. Known values are: + 12 and 24. + :vartype differential_backup_hours: int or + ~azure.mgmt.azurearcdata.models.DifferentialBackupHours + :ivar transaction_log_backup_minutes: The value indicating minutes between transaction log + backups. + :vartype transaction_log_backup_minutes: int + """ + + _validation = { + "retention_period_days": {"maximum": 35, "minimum": 0}, + "full_backup_days": {"maximum": 7, "minimum": 0}, + "transaction_log_backup_minutes": {"maximum": 60, "minimum": 0}, + } + + _attribute_map = { + "retention_period_days": {"key": "retentionPeriodDays", "type": "int"}, + "full_backup_days": {"key": "fullBackupDays", "type": "int"}, + "differential_backup_hours": {"key": "differentialBackupHours", "type": "int"}, + "transaction_log_backup_minutes": {"key": "transactionLogBackupMinutes", "type": "int"}, + } + + def __init__( + self, + *, + retention_period_days: Optional[int] = None, + full_backup_days: Optional[int] = None, + differential_backup_hours: Optional[Union[int, "_models.DifferentialBackupHours"]] = None, + transaction_log_backup_minutes: Optional[int] = None, + **kwargs: Any + ) -> None: + """ + :keyword retention_period_days: The retention period for all the databases in this managed + instance. + :paramtype retention_period_days: int + :keyword full_backup_days: The value indicating days between full backups. + :paramtype full_backup_days: int + :keyword differential_backup_hours: The differential backup interval in hours. Known values + are: 12 and 24. + :paramtype differential_backup_hours: int or + ~azure.mgmt.azurearcdata.models.DifferentialBackupHours + :keyword transaction_log_backup_minutes: The value indicating minutes between transaction log + backups. + :paramtype transaction_log_backup_minutes: int + """ + super().__init__(**kwargs) + self.retention_period_days = retention_period_days + self.full_backup_days = full_backup_days + self.differential_backup_hours = differential_backup_hours + self.transaction_log_backup_minutes = transaction_log_backup_minutes + + class BasicLoginInformation(_serialization.Model): """Username and password for basic login authentication. @@ -559,7 +1456,7 @@ class BasicLoginInformation(_serialization.Model): "password": {"key": "password", "type": "str"}, } - def __init__(self, *, username: Optional[str] = None, password: Optional[str] = None, **kwargs): + def __init__(self, *, username: Optional[str] = None, password: Optional[str] = None, **kwargs: Any) -> None: """ :keyword username: Login username. :paramtype username: str @@ -571,10 +1468,30 @@ def __init__(self, *, username: Optional[str] = None, password: Optional[str] = self.password = password +class ClientConnection(_serialization.Model): + """Client connection related configuration. + + :ivar enabled: Indicates if client connection is enabled for this SQL Server instance. + :vartype enabled: bool + """ + + _attribute_map = { + "enabled": {"key": "enabled", "type": "bool"}, + } + + def __init__(self, *, enabled: Optional[bool] = None, **kwargs: Any) -> None: + """ + :keyword enabled: Indicates if client connection is enabled for this SQL Server instance. + :paramtype enabled: bool + """ + super().__init__(**kwargs) + self.enabled = enabled + + class CommonSku(_serialization.Model): """The resource model definition representing SKU for ARM resources. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. :ivar name: The name of the SKU. It is typically a letter+number code. Required. :vartype name: str @@ -612,8 +1529,8 @@ def __init__( size: Optional[str] = None, family: Optional[str] = None, capacity: Optional[int] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword name: The name of the SKU. It is typically a letter+number code. Required. :paramtype name: str @@ -638,7 +1555,128 @@ def __init__( self.capacity = capacity -class DataControllerProperties(_serialization.Model): # pylint: disable=too-many-instance-attributes +class DatabaseAssessmentsItem(_serialization.Model): + """DatabaseAssessmentsItem. + + :ivar applies_to_migration_target_platform: + :vartype applies_to_migration_target_platform: str + :ivar feature_id: + :vartype feature_id: str + :ivar issue_category: + :vartype issue_category: str + :ivar more_information: + :vartype more_information: str + """ + + _attribute_map = { + "applies_to_migration_target_platform": {"key": "appliesToMigrationTargetPlatform", "type": "str"}, + "feature_id": {"key": "featureId", "type": "str"}, + "issue_category": {"key": "issueCategory", "type": "str"}, + "more_information": {"key": "moreInformation", "type": "str"}, + } + + def __init__( + self, + *, + applies_to_migration_target_platform: Optional[str] = None, + feature_id: Optional[str] = None, + issue_category: Optional[str] = None, + more_information: Optional[str] = None, + **kwargs: Any + ) -> None: + """ + :keyword applies_to_migration_target_platform: + :paramtype applies_to_migration_target_platform: str + :keyword feature_id: + :paramtype feature_id: str + :keyword issue_category: + :paramtype issue_category: str + :keyword more_information: + :paramtype more_information: str + """ + super().__init__(**kwargs) + self.applies_to_migration_target_platform = applies_to_migration_target_platform + self.feature_id = feature_id + self.issue_category = issue_category + self.more_information = more_information + + +class DataBaseMigration(_serialization.Model): + """Migration related configuration. + + :ivar assessment: Migration assessments related configuration. + :vartype assessment: ~azure.mgmt.azurearcdata.models.DataBaseMigrationAssessment + """ + + _attribute_map = { + "assessment": {"key": "assessment", "type": "DataBaseMigrationAssessment"}, + } + + def __init__(self, *, assessment: Optional["_models.DataBaseMigrationAssessment"] = None, **kwargs: Any) -> None: + """ + :keyword assessment: Migration assessments related configuration. + :paramtype assessment: ~azure.mgmt.azurearcdata.models.DataBaseMigrationAssessment + """ + super().__init__(**kwargs) + self.assessment = assessment + + +class DataBaseMigrationAssessment(_serialization.Model): + """The migration assessment related configuration. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar assessment_upload_time: The time when Migration Assessment Report upload was last + performed. + :vartype assessment_upload_time: ~datetime.datetime + :ivar database_assessments: Issues and warnings impacting the migration of Database to + particular Azure Migration Target. + :vartype database_assessments: list[~azure.mgmt.azurearcdata.models.DatabaseAssessmentsItem] + :ivar target_readiness: The target readiness for migration for this database. + :vartype target_readiness: ~azure.mgmt.azurearcdata.models.TargetReadiness + """ + + _validation = { + "assessment_upload_time": {"readonly": True}, + "database_assessments": {"readonly": True}, + "target_readiness": {"readonly": True}, + } + + _attribute_map = { + "assessment_upload_time": {"key": "assessmentUploadTime", "type": "iso-8601"}, + "database_assessments": {"key": "databaseAssessments", "type": "[DatabaseAssessmentsItem]"}, + "target_readiness": {"key": "targetReadiness", "type": "TargetReadiness"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.assessment_upload_time: Optional[datetime.datetime] = None + self.database_assessments: Optional[List["_models.DatabaseAssessmentsItem"]] = None + self.target_readiness: Optional["_models.TargetReadiness"] = None + + +class Databases(_serialization.Model): + """List of database names. + + :ivar values: List of database names. + :vartype values: list[str] + """ + + _attribute_map = { + "values": {"key": "values", "type": "[str]"}, + } + + def __init__(self, *, values: Optional[List[str]] = None, **kwargs: Any) -> None: + """ + :keyword values: List of database names. + :paramtype values: list[str] + """ + super().__init__(**kwargs) + self.values = values + + +class DataControllerProperties(_serialization.Model): """The data controller properties. Variables are only populated by the server, and will be ignored when sending a request. @@ -715,8 +1753,8 @@ def __init__( upload_service_principal: Optional["_models.UploadServicePrincipal"] = None, cluster_id: Optional[str] = None, extension_id: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword infrastructure: The infrastructure the data controller is running on. Known values are: "azure", "gcp", "aws", "alibaba", "onpremises", and "other". @@ -764,17 +1802,18 @@ def __init__( self.logs_dashboard_credential = logs_dashboard_credential self.log_analytics_workspace_config = log_analytics_workspace_config self.upload_service_principal = upload_service_principal - self.provisioning_state = None + self.provisioning_state: Optional[str] = None self.cluster_id = cluster_id self.extension_id = extension_id class TrackedResource(Resource): - """The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location'. + """The resource model definition for an Azure Resource Manager tracked top level resource which + has 'tags' and a 'location'. 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. + All required parameters must be populated in order to send to server. :ivar id: Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. @@ -810,7 +1849,7 @@ class TrackedResource(Resource): "location": {"key": "location", "type": "str"}, } - def __init__(self, *, location: str, tags: Optional[Dict[str, str]] = None, **kwargs): + def __init__(self, *, location: str, tags: Optional[Dict[str, str]] = None, **kwargs: Any) -> None: """ :keyword tags: Resource tags. :paramtype tags: dict[str, str] @@ -827,7 +1866,7 @@ class DataControllerResource(TrackedResource): 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. + All required parameters must be populated in order to send to server. :ivar id: Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. @@ -877,8 +1916,8 @@ def __init__( properties: "_models.DataControllerProperties", tags: Optional[Dict[str, str]] = None, extended_location: Optional["_models.ExtendedLocation"] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword tags: Resource tags. :paramtype tags: dict[str, str] @@ -913,8 +1952,8 @@ def __init__( *, tags: Optional[Dict[str, str]] = None, properties: Optional["_models.DataControllerProperties"] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword tags: Resource tags. :paramtype tags: dict[str, str] @@ -926,76 +1965,355 @@ def __init__( self.properties = properties -class ErrorResponse(_serialization.Model): - """An error response from the Azure Data on Azure Arc service. +class DBMEndpoint(_serialization.Model): + """Database mirroring endpoint related properties. + + Variables are only populated by the server, and will be ignored when sending a request. - :ivar error: null. - :vartype error: ~azure.mgmt.azurearcdata.models.ErrorResponseBody + :ivar endpoint_name: Name of the database mirroring endpoint. + :vartype endpoint_name: str + :ivar role: Mirroring Role. Known values are: "NONE", "PARTNER", "WITNESS", and "ALL". + :vartype role: str or ~azure.mgmt.azurearcdata.models.Role + :ivar is_encryption_enabled: Is Encryption enabled. + :vartype is_encryption_enabled: bool + :ivar encryption_algorithm: Encryption Algorithm. Known values are: "NONE", "RC4", "AES", + "NONE, RC4", "NONE, AES", "RC4, AES", "AES, RC4", "NONE, RC4, AES", and "NONE, AES, RC4". + :vartype encryption_algorithm: str or ~azure.mgmt.azurearcdata.models.EncryptionAlgorithm + :ivar connection_auth: The type of connection authentication required for connections to this + endpoint. Known values are: "Windows_NTLM", "Windows_Kerberos", "Windows_Negotiate", + "Certificate", "Windows_NTLM_Certificate", "Windows_Kerberos_Certificate", + "Windows_Negotiate_Certificate", "Certificate_Windows_NTLM", "Certificate_Windows_Kerberos", + and "Certificate_Windows_Negotiate". + :vartype connection_auth: str or ~azure.mgmt.azurearcdata.models.ConnectionAuth + :ivar port: The port number that the endpoint is listening on. + :vartype port: int + :ivar is_dynamic_port: Is the port number dynamically assigned. + :vartype is_dynamic_port: bool + :ivar ip_address: Listener IP address. + :vartype ip_address: str + :ivar certificate_name: Name of the certificate. + :vartype certificate_name: str """ + _validation = { + "endpoint_name": {"readonly": True}, + "role": {"readonly": True}, + "is_encryption_enabled": {"readonly": True}, + "encryption_algorithm": {"readonly": True}, + "connection_auth": {"readonly": True}, + "port": {"readonly": True}, + "is_dynamic_port": {"readonly": True}, + "ip_address": {"readonly": True}, + "certificate_name": {"readonly": True}, + } + _attribute_map = { - "error": {"key": "error", "type": "ErrorResponseBody"}, + "endpoint_name": {"key": "endpointName", "type": "str"}, + "role": {"key": "role", "type": "str"}, + "is_encryption_enabled": {"key": "isEncryptionEnabled", "type": "bool"}, + "encryption_algorithm": {"key": "encryptionAlgorithm", "type": "str"}, + "connection_auth": {"key": "connectionAuth", "type": "str"}, + "port": {"key": "port", "type": "int"}, + "is_dynamic_port": {"key": "isDynamicPort", "type": "bool"}, + "ip_address": {"key": "ipAddress", "type": "str"}, + "certificate_name": {"key": "certificateName", "type": "str"}, } - def __init__(self, *, error: Optional["_models.ErrorResponseBody"] = None, **kwargs): - """ - :keyword error: null. - :paramtype error: ~azure.mgmt.azurearcdata.models.ErrorResponseBody - """ + def __init__(self, **kwargs: Any) -> None: + """ """ super().__init__(**kwargs) - self.error = error - - -class ErrorResponseBody(_serialization.Model): - """An error response from the Batch service. - - :ivar code: An identifier for the error. Codes are invariant and are intended to be consumed - programmatically. - :vartype code: str - :ivar message: A message describing the error, intended to be suitable for display in a user - interface. - :vartype message: str - :ivar target: The target of the particular error. For example, the name of the property in - error. - :vartype target: str - :ivar details: A list of additional details about the error. - :vartype details: list[~azure.mgmt.azurearcdata.models.ErrorResponseBody] + self.endpoint_name: Optional[str] = None + self.role: Optional[Union[str, "_models.Role"]] = None + self.is_encryption_enabled: Optional[bool] = None + self.encryption_algorithm: Optional[Union[str, "_models.EncryptionAlgorithm"]] = None + self.connection_auth: Optional[Union[str, "_models.ConnectionAuth"]] = None + self.port: Optional[int] = None + self.is_dynamic_port: Optional[bool] = None + self.ip_address: Optional[str] = None + self.certificate_name: Optional[str] = None + + +class DistributedAvailabilityGroupCreateUpdateAvailabilityGroupCertificateConfiguration( + _serialization.Model +): # pylint: disable=name-too-long + """The availability group certificate configuration. + + :ivar certificate_name: Name of the certificate. + :vartype certificate_name: str """ _attribute_map = { - "code": {"key": "code", "type": "str"}, - "message": {"key": "message", "type": "str"}, - "target": {"key": "target", "type": "str"}, - "details": {"key": "details", "type": "[ErrorResponseBody]"}, + "certificate_name": {"key": "certificateName", "type": "str"}, + } + + def __init__(self, *, certificate_name: Optional[str] = None, **kwargs: Any) -> None: + """ + :keyword certificate_name: Name of the certificate. + :paramtype certificate_name: str + """ + super().__init__(**kwargs) + self.certificate_name = certificate_name + + +class DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration( + _serialization.Model +): # pylint: disable=name-too-long + """The availability group configuration specification for a distributed availability group. + + :ivar availability_group: The azure resource identifier for the availability group. + :vartype availability_group: str + :ivar listener_url: The listener URL of the availability group. + :vartype listener_url: str + :ivar availability_mode: The availability mode of the availability group. Known values are: + "SYNCHRONOUS_COMMIT" and "ASYNCHRONOUS_COMMIT". + :vartype availability_mode: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerAvailabilityMode + :ivar failover_mode: The failover mode of the availability group. Known values are: + "AUTOMATIC", "MANUAL", "EXTERNAL", and "NONE". + :vartype failover_mode: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerFailoverMode + :ivar seeding_mode: The seeding mode of the availability group. Known values are: "AUTOMATIC" + and "MANUAL". + :vartype seeding_mode: str or ~azure.mgmt.azurearcdata.models.SeedingMode + :ivar certificate_configuration: The certificate configuration for the availability group. + :vartype certificate_configuration: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateAvailabilityGroupCertificateConfiguration + """ + + _attribute_map = { + "availability_group": {"key": "availabilityGroup", "type": "str"}, + "listener_url": {"key": "listenerUrl", "type": "str"}, + "availability_mode": {"key": "availabilityMode", "type": "str"}, + "failover_mode": {"key": "failoverMode", "type": "str"}, + "seeding_mode": {"key": "seedingMode", "type": "str"}, + "certificate_configuration": { + "key": "certificateConfiguration", + "type": "DistributedAvailabilityGroupCreateUpdateAvailabilityGroupCertificateConfiguration", + }, + } + + def __init__( + self, + *, + availability_group: Optional[str] = None, + listener_url: Optional[str] = None, + availability_mode: Optional[Union[str, "_models.ArcSqlServerAvailabilityMode"]] = None, + failover_mode: Optional[Union[str, "_models.ArcSqlServerFailoverMode"]] = None, + seeding_mode: Optional[Union[str, "_models.SeedingMode"]] = None, + certificate_configuration: Optional[ + "_models.DistributedAvailabilityGroupCreateUpdateAvailabilityGroupCertificateConfiguration" + ] = None, + **kwargs: Any + ) -> None: + """ + :keyword availability_group: The azure resource identifier for the availability group. + :paramtype availability_group: str + :keyword listener_url: The listener URL of the availability group. + :paramtype listener_url: str + :keyword availability_mode: The availability mode of the availability group. Known values are: + "SYNCHRONOUS_COMMIT" and "ASYNCHRONOUS_COMMIT". + :paramtype availability_mode: str or + ~azure.mgmt.azurearcdata.models.ArcSqlServerAvailabilityMode + :keyword failover_mode: The failover mode of the availability group. Known values are: + "AUTOMATIC", "MANUAL", "EXTERNAL", and "NONE". + :paramtype failover_mode: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerFailoverMode + :keyword seeding_mode: The seeding mode of the availability group. Known values are: + "AUTOMATIC" and "MANUAL". + :paramtype seeding_mode: str or ~azure.mgmt.azurearcdata.models.SeedingMode + :keyword certificate_configuration: The certificate configuration for the availability group. + :paramtype certificate_configuration: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateAvailabilityGroupCertificateConfiguration + """ + super().__init__(**kwargs) + self.availability_group = availability_group + self.listener_url = listener_url + self.availability_mode = availability_mode + self.failover_mode = failover_mode + self.seeding_mode = seeding_mode + self.certificate_configuration = certificate_configuration + + +class DistributedAvailabilityGroupCreateUpdateConfiguration(_serialization.Model): # pylint: disable=name-too-long + """Options used in creating a distributed availability group. + + :ivar availability_group_name: Name of the availability group. + :vartype availability_group_name: str + :ivar primary_availability_group: The initial primary availability group for the distributed + availability group. + :vartype primary_availability_group: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration + :ivar secondary_availability_group: The initial secondary availability group for the + distributed availability group. + :vartype secondary_availability_group: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration + """ + + _attribute_map = { + "availability_group_name": {"key": "availabilityGroupName", "type": "str"}, + "primary_availability_group": { + "key": "primaryAvailabilityGroup", + "type": "DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration", + }, + "secondary_availability_group": { + "key": "secondaryAvailabilityGroup", + "type": "DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration", + }, + } + + def __init__( + self, + *, + availability_group_name: Optional[str] = None, + primary_availability_group: Optional[ + "_models.DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration" + ] = None, + secondary_availability_group: Optional[ + "_models.DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration" + ] = None, + **kwargs: Any + ) -> None: + """ + :keyword availability_group_name: Name of the availability group. + :paramtype availability_group_name: str + :keyword primary_availability_group: The initial primary availability group for the distributed + availability group. + :paramtype primary_availability_group: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration + :keyword secondary_availability_group: The initial secondary availability group for the + distributed availability group. + :paramtype secondary_availability_group: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateAvailabilityGroupConfiguration + """ + super().__init__(**kwargs) + self.availability_group_name = availability_group_name + self.primary_availability_group = primary_availability_group + self.secondary_availability_group = secondary_availability_group + + +class EntraAuthentication(_serialization.Model): + """Entra Authentication configuration. + + :ivar identity_type: The method used for Entra authentication. Known values are: + "SystemAssignedManagedIdentity" and "UserAssignedManagedIdentity". + :vartype identity_type: str or ~azure.mgmt.azurearcdata.models.IdentityType + :ivar client_id: The client Id of the Managed Identity to query Microsoft Graph API. An empty + string must be used for the system assigned Managed Identity. + :vartype client_id: str + """ + + _attribute_map = { + "identity_type": {"key": "identityType", "type": "str"}, + "client_id": {"key": "clientId", "type": "str"}, } def __init__( self, *, - code: Optional[str] = None, - message: Optional[str] = None, - target: Optional[str] = None, - details: Optional[List["_models.ErrorResponseBody"]] = None, - **kwargs - ): + identity_type: Optional[Union[str, "_models.IdentityType"]] = None, + client_id: Optional[str] = None, + **kwargs: Any + ) -> None: + """ + :keyword identity_type: The method used for Entra authentication. Known values are: + "SystemAssignedManagedIdentity" and "UserAssignedManagedIdentity". + :paramtype identity_type: str or ~azure.mgmt.azurearcdata.models.IdentityType + :keyword client_id: The client Id of the Managed Identity to query Microsoft Graph API. An + empty string must be used for the system assigned Managed Identity. + :paramtype client_id: str + """ + super().__init__(**kwargs) + self.identity_type = identity_type + self.client_id = client_id + + +class ErrorAdditionalInfo(_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: JSON + """ + + _validation = { + "type": {"readonly": True}, + "info": {"readonly": True}, + } + + _attribute_map = { + "type": {"key": "type", "type": "str"}, + "info": {"key": "info", "type": "object"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.type: Optional[str] = None + self.info: Optional[JSON] = None + + +class ErrorDetail(_serialization.Model): + """The error detail. + + 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.azurearcdata.models.ErrorDetail] + :ivar additional_info: The error additional info. + :vartype additional_info: list[~azure.mgmt.azurearcdata.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": "[ErrorDetail]"}, + "additional_info": {"key": "additionalInfo", "type": "[ErrorAdditionalInfo]"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.code: Optional[str] = None + self.message: Optional[str] = None + self.target: Optional[str] = None + self.details: Optional[List["_models.ErrorDetail"]] = None + self.additional_info: Optional[List["_models.ErrorAdditionalInfo"]] = None + + +class ErrorResponse(_serialization.Model): + """Common error response for all Azure Resource Manager APIs to return error details for failed + operations. (This also follows the OData error response format.). + + :ivar error: The error object. + :vartype error: ~azure.mgmt.azurearcdata.models.ErrorDetail + """ + + _attribute_map = { + "error": {"key": "error", "type": "ErrorDetail"}, + } + + def __init__(self, *, error: Optional["_models.ErrorDetail"] = None, **kwargs: Any) -> None: """ - :keyword code: An identifier for the error. Codes are invariant and are intended to be consumed - programmatically. - :paramtype code: str - :keyword message: A message describing the error, intended to be suitable for display in a user - interface. - :paramtype message: str - :keyword target: The target of the particular error. For example, the name of the property in - error. - :paramtype target: str - :keyword details: A list of additional details about the error. - :paramtype details: list[~azure.mgmt.azurearcdata.models.ErrorResponseBody] + :keyword error: The error object. + :paramtype error: ~azure.mgmt.azurearcdata.models.ErrorDetail """ super().__init__(**kwargs) - self.code = code - self.message = message - self.target = target - self.details = details + self.error = error class ExtendedLocation(_serialization.Model): @@ -1017,8 +2335,8 @@ def __init__( *, name: Optional[str] = None, type: Optional[Union[str, "_models.ExtendedLocationTypes"]] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword name: The name of the extended location. :paramtype name: str @@ -1030,832 +2348,1052 @@ def __init__( self.type = type -class K8SResourceRequirements(_serialization.Model): - """The kubernetes resource limits and requests used to restrict or reserve resource usage. +class FailoverCluster(_serialization.Model): + """Failover Cluster Instance properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: The GUID of the SQL Server's underlying Failover Cluster. + :vartype id: str + :ivar network_name: The network name to connect to the SQL FCI. + :vartype network_name: str + :ivar sql_instance_ids: The ARM IDs of the Arc SQL Server resources, belonging to the current + server's Failover cluster. + :vartype sql_instance_ids: list[str] + :ivar host_names: The host names which are part of the SQL FCI resource group. + :vartype host_names: list[str] + :ivar host_ip_addresses: The IP addresses and subnet masks associated with the SQL Failover + Cluster Instance on this host. + :vartype host_ip_addresses: list[~azure.mgmt.azurearcdata.models.HostIPAddressInformation] + """ + + _validation = { + "id": {"readonly": True}, + "network_name": {"readonly": True}, + "sql_instance_ids": {"readonly": True}, + "host_names": {"readonly": True}, + "host_ip_addresses": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "network_name": {"key": "networkName", "type": "str"}, + "sql_instance_ids": {"key": "sqlInstanceIds", "type": "[str]"}, + "host_names": {"key": "hostNames", "type": "[str]"}, + "host_ip_addresses": {"key": "hostIPAddresses", "type": "[HostIPAddressInformation]"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.id: Optional[str] = None + self.network_name: Optional[str] = None + self.sql_instance_ids: Optional[List[str]] = None + self.host_names: Optional[List[str]] = None + self.host_ip_addresses: Optional[List["_models.HostIPAddressInformation"]] = None + + +class FailoverGroupListResult(_serialization.Model): + """A list of failover groups. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Array of failover group results. + :vartype value: list[~azure.mgmt.azurearcdata.models.FailoverGroupResource] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ + + _validation = { + "value": {"readonly": True}, + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[FailoverGroupResource]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.value: Optional[List["_models.FailoverGroupResource"]] = None + self.next_link: Optional[str] = None + + +class FailoverGroupProperties(_serialization.Model): + """The properties of a failover group resource. + + 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 server. :ivar additional_properties: Unmatched properties from the message are deserialized to this collection. - :vartype additional_properties: dict[str, JSON] - :ivar requests: Requests for a kubernetes resource type (e.g 'cpu', 'memory'). The 'cpu' - request must be less than or equal to 'cpu' limit. Default 'cpu' is 2, minimum is 1. Default - 'memory' is '4Gi', minimum is '2Gi. If sku.tier is GeneralPurpose, maximum 'cpu' is 24 and - maximum 'memory' is '128Gi'. - :vartype requests: dict[str, str] - :ivar limits: Limits for a kubernetes resource type (e.g 'cpu', 'memory'). The 'cpu' request - must be less than or equal to 'cpu' limit. Default 'cpu' is 2, minimum is 1. Default 'memory' - is '4Gi', minimum is '2Gi. If sku.tier is GeneralPurpose, maximum 'cpu' is 24 and maximum - 'memory' is '128Gi'. - :vartype limits: dict[str, str] + :vartype additional_properties: dict[str, any] + :ivar provisioning_state: The provisioning state of the failover group resource. Known values + are: "Succeeded", "Failed", "Canceled", and "Accepted". + :vartype provisioning_state: str or ~azure.mgmt.azurearcdata.models.ProvisioningState + :ivar partner_managed_instance_id: The resource ID of the partner SQL managed instance. + Required. + :vartype partner_managed_instance_id: str + :ivar spec: The specifications of the failover group resource. Required. + :vartype spec: ~azure.mgmt.azurearcdata.models.FailoverGroupSpec + :ivar status: The status of the failover group custom resource. + :vartype status: JSON """ + _validation = { + "provisioning_state": {"readonly": True}, + "partner_managed_instance_id": {"required": True}, + "spec": {"required": True}, + } + _attribute_map = { "additional_properties": {"key": "", "type": "{object}"}, - "requests": {"key": "requests", "type": "{str}"}, - "limits": {"key": "limits", "type": "{str}"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "partner_managed_instance_id": {"key": "partnerManagedInstanceId", "type": "str"}, + "spec": {"key": "spec", "type": "FailoverGroupSpec"}, + "status": {"key": "status", "type": "object"}, } def __init__( self, *, - additional_properties: Optional[Dict[str, JSON]] = None, - requests: Optional[Dict[str, str]] = None, - limits: Optional[Dict[str, str]] = None, - **kwargs - ): + partner_managed_instance_id: str, + spec: "_models.FailoverGroupSpec", + additional_properties: Optional[Dict[str, Any]] = None, + status: Optional[JSON] = None, + **kwargs: Any + ) -> None: """ :keyword additional_properties: Unmatched properties from the message are deserialized to this collection. - :paramtype additional_properties: dict[str, JSON] - :keyword requests: Requests for a kubernetes resource type (e.g 'cpu', 'memory'). The 'cpu' - request must be less than or equal to 'cpu' limit. Default 'cpu' is 2, minimum is 1. Default - 'memory' is '4Gi', minimum is '2Gi. If sku.tier is GeneralPurpose, maximum 'cpu' is 24 and - maximum 'memory' is '128Gi'. - :paramtype requests: dict[str, str] - :keyword limits: Limits for a kubernetes resource type (e.g 'cpu', 'memory'). The 'cpu' request - must be less than or equal to 'cpu' limit. Default 'cpu' is 2, minimum is 1. Default 'memory' - is '4Gi', minimum is '2Gi. If sku.tier is GeneralPurpose, maximum 'cpu' is 24 and maximum - 'memory' is '128Gi'. - :paramtype limits: dict[str, str] + :paramtype additional_properties: dict[str, any] + :keyword partner_managed_instance_id: The resource ID of the partner SQL managed instance. + Required. + :paramtype partner_managed_instance_id: str + :keyword spec: The specifications of the failover group resource. Required. + :paramtype spec: ~azure.mgmt.azurearcdata.models.FailoverGroupSpec + :keyword status: The status of the failover group custom resource. + :paramtype status: JSON """ super().__init__(**kwargs) self.additional_properties = additional_properties - self.requests = requests - self.limits = limits + self.provisioning_state: Optional[Union[str, "_models.ProvisioningState"]] = None + self.partner_managed_instance_id = partner_managed_instance_id + self.spec = spec + self.status = status -class K8SScheduling(_serialization.Model): - """The kubernetes scheduling information. +class FailoverGroupResource(ProxyResource): + """A failover group resource. - :ivar additional_properties: Unmatched properties from the message are deserialized to this - collection. - :vartype additional_properties: dict[str, JSON] - :ivar default: The kubernetes scheduling options. It describes restrictions used to help - Kubernetes select appropriate nodes to host the database service. - :vartype default: ~azure.mgmt.azurearcdata.models.K8SSchedulingOptions + 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 server. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData + :ivar properties: null. Required. + :vartype properties: ~azure.mgmt.azurearcdata.models.FailoverGroupProperties """ + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + "properties": {"required": True}, + } + _attribute_map = { - "additional_properties": {"key": "", "type": "{object}"}, - "default": {"key": "default", "type": "K8SSchedulingOptions"}, + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "properties": {"key": "properties", "type": "FailoverGroupProperties"}, } - def __init__( - self, - *, - additional_properties: Optional[Dict[str, JSON]] = None, - default: Optional["_models.K8SSchedulingOptions"] = None, - **kwargs - ): + def __init__(self, *, properties: "_models.FailoverGroupProperties", **kwargs: Any) -> None: """ - :keyword additional_properties: Unmatched properties from the message are deserialized to this - collection. - :paramtype additional_properties: dict[str, JSON] - :keyword default: The kubernetes scheduling options. It describes restrictions used to help - Kubernetes select appropriate nodes to host the database service. - :paramtype default: ~azure.mgmt.azurearcdata.models.K8SSchedulingOptions + :keyword properties: null. Required. + :paramtype properties: ~azure.mgmt.azurearcdata.models.FailoverGroupProperties """ super().__init__(**kwargs) - self.additional_properties = additional_properties - self.default = default + self.properties = properties -class K8SSchedulingOptions(_serialization.Model): - """The kubernetes scheduling options. It describes restrictions used to help Kubernetes select appropriate nodes to host the database service. +class FailoverGroupSpec(_serialization.Model): + """The specifications of the failover group resource. + + All required parameters must be populated in order to send to server. :ivar additional_properties: Unmatched properties from the message are deserialized to this collection. - :vartype additional_properties: dict[str, JSON] - :ivar resources: The kubernetes resource limits and requests used to restrict or reserve - resource usage. - :vartype resources: ~azure.mgmt.azurearcdata.models.K8SResourceRequirements + :vartype additional_properties: dict[str, any] + :ivar shared_name: The shared name of the failover group for this SQL managed instance. Both + SQL managed instance and its partner have to use the same shared name. + :vartype shared_name: str + :ivar source_mi: The name of the SQL managed instance with this failover group role. + :vartype source_mi: str + :ivar partner_mi: The name of the partner SQL managed instance. + :vartype partner_mi: str + :ivar partner_mirroring_url: The mirroring endpoint URL of the partner SQL managed instance. + :vartype partner_mirroring_url: str + :ivar partner_mirroring_cert: The mirroring endpoint public certificate for the partner SQL + managed instance. Only PEM format is supported. + :vartype partner_mirroring_cert: str + :ivar partner_sync_mode: The partner sync mode of the SQL managed instance. Known values are: + "async", "sync", and "async". + :vartype partner_sync_mode: str or ~azure.mgmt.azurearcdata.models.FailoverGroupPartnerSyncMode + :ivar role: The role of the SQL managed instance in this failover group. Known values are: + "primary", "secondary", "force-primary-allow-data-loss", and "force-secondary". + :vartype role: str or ~azure.mgmt.azurearcdata.models.InstanceFailoverGroupRole """ + _validation = { + "role": {"required": True}, + } + _attribute_map = { "additional_properties": {"key": "", "type": "{object}"}, - "resources": {"key": "resources", "type": "K8SResourceRequirements"}, + "shared_name": {"key": "sharedName", "type": "str"}, + "source_mi": {"key": "sourceMI", "type": "str"}, + "partner_mi": {"key": "partnerMI", "type": "str"}, + "partner_mirroring_url": {"key": "partnerMirroringURL", "type": "str"}, + "partner_mirroring_cert": {"key": "partnerMirroringCert", "type": "str"}, + "partner_sync_mode": {"key": "partnerSyncMode", "type": "str"}, + "role": {"key": "role", "type": "str"}, } def __init__( self, *, - additional_properties: Optional[Dict[str, JSON]] = None, - resources: Optional["_models.K8SResourceRequirements"] = None, - **kwargs - ): + role: Union[str, "_models.InstanceFailoverGroupRole"] = "primary", + additional_properties: Optional[Dict[str, Any]] = None, + shared_name: Optional[str] = None, + source_mi: Optional[str] = None, + partner_mi: Optional[str] = None, + partner_mirroring_url: Optional[str] = None, + partner_mirroring_cert: Optional[str] = None, + partner_sync_mode: Union[str, "_models.FailoverGroupPartnerSyncMode"] = "async", + **kwargs: Any + ) -> None: """ :keyword additional_properties: Unmatched properties from the message are deserialized to this collection. - :paramtype additional_properties: dict[str, JSON] - :keyword resources: The kubernetes resource limits and requests used to restrict or reserve - resource usage. - :paramtype resources: ~azure.mgmt.azurearcdata.models.K8SResourceRequirements + :paramtype additional_properties: dict[str, any] + :keyword shared_name: The shared name of the failover group for this SQL managed instance. Both + SQL managed instance and its partner have to use the same shared name. + :paramtype shared_name: str + :keyword source_mi: The name of the SQL managed instance with this failover group role. + :paramtype source_mi: str + :keyword partner_mi: The name of the partner SQL managed instance. + :paramtype partner_mi: str + :keyword partner_mirroring_url: The mirroring endpoint URL of the partner SQL managed instance. + :paramtype partner_mirroring_url: str + :keyword partner_mirroring_cert: The mirroring endpoint public certificate for the partner SQL + managed instance. Only PEM format is supported. + :paramtype partner_mirroring_cert: str + :keyword partner_sync_mode: The partner sync mode of the SQL managed instance. Known values + are: "async", "sync", and "async". + :paramtype partner_sync_mode: str or + ~azure.mgmt.azurearcdata.models.FailoverGroupPartnerSyncMode + :keyword role: The role of the SQL managed instance in this failover group. Known values are: + "primary", "secondary", "force-primary-allow-data-loss", and "force-secondary". + :paramtype role: str or ~azure.mgmt.azurearcdata.models.InstanceFailoverGroupRole """ super().__init__(**kwargs) self.additional_properties = additional_properties - self.resources = resources + self.shared_name = shared_name + self.source_mi = source_mi + self.partner_mi = partner_mi + self.partner_mirroring_url = partner_mirroring_url + self.partner_mirroring_cert = partner_mirroring_cert + self.partner_sync_mode = partner_sync_mode + self.role = role -class KeytabInformation(_serialization.Model): - """Keytab used for authenticate with Active Directory. +class FailoverMiLinkResourceId(_serialization.Model): + """The azure resource identifier for the Sql Managed Instance. - :ivar keytab: A base64-encoded keytab. - :vartype keytab: str + :ivar managed_instance_id: Azure resource id for the sql managed instance. + :vartype managed_instance_id: str """ _attribute_map = { - "keytab": {"key": "keytab", "type": "str"}, + "managed_instance_id": {"key": "managedInstanceId", "type": "str"}, } - def __init__(self, *, keytab: Optional[str] = None, **kwargs): + def __init__(self, *, managed_instance_id: Optional[str] = None, **kwargs: Any) -> None: """ - :keyword keytab: A base64-encoded keytab. - :paramtype keytab: str + :keyword managed_instance_id: Azure resource id for the sql managed instance. + :paramtype managed_instance_id: str """ super().__init__(**kwargs) - self.keytab = keytab + self.managed_instance_id = managed_instance_id -class LogAnalyticsWorkspaceConfig(_serialization.Model): - """Log analytics workspace id and primary key. +class HostIPAddressInformation(_serialization.Model): + """IP address and subnet mask. - :ivar workspace_id: Azure Log Analytics workspace ID. - :vartype workspace_id: str - :ivar primary_key: Primary key of the workspace. - :vartype primary_key: str + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar ip_address: IP address. + :vartype ip_address: str + :ivar subnet_mask: Subnet mask. + :vartype subnet_mask: str """ - _attribute_map = { - "workspace_id": {"key": "workspaceId", "type": "str"}, - "primary_key": {"key": "primaryKey", "type": "str"}, + _validation = { + "ip_address": {"readonly": True}, + "subnet_mask": {"readonly": True}, } - def __init__(self, *, workspace_id: Optional[str] = None, primary_key: Optional[str] = None, **kwargs): - """ - :keyword workspace_id: Azure Log Analytics workspace ID. - :paramtype workspace_id: str - :keyword primary_key: Primary key of the workspace. - :paramtype primary_key: str - """ - super().__init__(**kwargs) - self.workspace_id = workspace_id - self.primary_key = primary_key + _attribute_map = { + "ip_address": {"key": "ipAddress", "type": "str"}, + "subnet_mask": {"key": "subnetMask", "type": "str"}, + } + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.ip_address: Optional[str] = None + self.subnet_mask: Optional[str] = None -class OnPremiseProperty(_serialization.Model): - """Properties from the Kubernetes data controller. - All required parameters must be populated in order to send to Azure. +class K8SActiveDirectory(_serialization.Model): + """The kubernetes active directory information. - :ivar id: A globally unique ID identifying the associated Kubernetes cluster. Required. - :vartype id: str - :ivar public_signing_key: Certificate that contains the Kubernetes cluster public key used to - verify signing. Required. - :vartype public_signing_key: str - :ivar signing_certificate_thumbprint: Unique thumbprint returned to customer to verify the - certificate being uploaded. - :vartype signing_certificate_thumbprint: str + :ivar connector: + :vartype connector: ~azure.mgmt.azurearcdata.models.K8SActiveDirectoryConnector + :ivar account_name: Account name for AAD. + :vartype account_name: str + :ivar keytab_secret: Keytab secret used to authenticate with Active Directory. + :vartype keytab_secret: str + :ivar encryption_types: An array of encryption types. + :vartype encryption_types: list[str] """ - _validation = { - "id": {"required": True}, - "public_signing_key": {"required": True}, - } - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "public_signing_key": {"key": "publicSigningKey", "type": "str"}, - "signing_certificate_thumbprint": {"key": "signingCertificateThumbprint", "type": "str"}, + "connector": {"key": "connector", "type": "K8SActiveDirectoryConnector"}, + "account_name": {"key": "accountName", "type": "str"}, + "keytab_secret": {"key": "keytabSecret", "type": "str"}, + "encryption_types": {"key": "encryptionTypes", "type": "[str]"}, } def __init__( self, *, - id: str, # pylint: disable=redefined-builtin - public_signing_key: str, - signing_certificate_thumbprint: Optional[str] = None, - **kwargs - ): + connector: Optional["_models.K8SActiveDirectoryConnector"] = None, + account_name: Optional[str] = None, + keytab_secret: Optional[str] = None, + encryption_types: Optional[List[str]] = None, + **kwargs: Any + ) -> None: """ - :keyword id: A globally unique ID identifying the associated Kubernetes cluster. Required. - :paramtype id: str - :keyword public_signing_key: Certificate that contains the Kubernetes cluster public key used - to verify signing. Required. - :paramtype public_signing_key: str - :keyword signing_certificate_thumbprint: Unique thumbprint returned to customer to verify the - certificate being uploaded. - :paramtype signing_certificate_thumbprint: str + :keyword connector: + :paramtype connector: ~azure.mgmt.azurearcdata.models.K8SActiveDirectoryConnector + :keyword account_name: Account name for AAD. + :paramtype account_name: str + :keyword keytab_secret: Keytab secret used to authenticate with Active Directory. + :paramtype keytab_secret: str + :keyword encryption_types: An array of encryption types. + :paramtype encryption_types: list[str] """ super().__init__(**kwargs) - self.id = id - self.public_signing_key = public_signing_key - self.signing_certificate_thumbprint = signing_certificate_thumbprint - + self.connector = connector + self.account_name = account_name + self.keytab_secret = keytab_secret + self.encryption_types = encryption_types -class Operation(_serialization.Model): - """Azure Data Services on Azure Arc operation definition. - - 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. +class K8SActiveDirectoryConnector(_serialization.Model): + """K8SActiveDirectoryConnector. - :ivar name: The name of the operation being performed on this particular object. Required. + :ivar name: Name of the connector. :vartype name: str - :ivar display: The localized display information for this particular operation / action. - Required. - :vartype display: ~azure.mgmt.azurearcdata.models.OperationDisplay - :ivar origin: The intended executor of the operation. Known values are: "user" and "system". - :vartype origin: str or ~azure.mgmt.azurearcdata.models.OperationOrigin - :ivar is_data_action: Indicates whether the operation is a data action. Required. - :vartype is_data_action: bool - :ivar properties: Additional descriptions for the operation. - :vartype properties: dict[str, JSON] + :ivar namespace: Name space of the connector. + :vartype namespace: str """ - _validation = { - "name": {"required": True}, - "display": {"required": True}, - "origin": {"readonly": True}, - "is_data_action": {"required": True}, - "properties": {"readonly": True}, - } - _attribute_map = { "name": {"key": "name", "type": "str"}, - "display": {"key": "display", "type": "OperationDisplay"}, - "origin": {"key": "origin", "type": "str"}, - "is_data_action": {"key": "isDataAction", "type": "bool"}, - "properties": {"key": "properties", "type": "{object}"}, + "namespace": {"key": "namespace", "type": "str"}, } - def __init__(self, *, name: str, display: "_models.OperationDisplay", is_data_action: bool, **kwargs): + def __init__(self, *, name: Optional[str] = None, namespace: Optional[str] = None, **kwargs: Any) -> None: """ - :keyword name: The name of the operation being performed on this particular object. Required. + :keyword name: Name of the connector. :paramtype name: str - :keyword display: The localized display information for this particular operation / action. - Required. - :paramtype display: ~azure.mgmt.azurearcdata.models.OperationDisplay - :keyword is_data_action: Indicates whether the operation is a data action. Required. - :paramtype is_data_action: bool + :keyword namespace: Name space of the connector. + :paramtype namespace: str """ super().__init__(**kwargs) self.name = name - self.display = display - self.origin = None - self.is_data_action = is_data_action - self.properties = None - + self.namespace = namespace -class OperationDisplay(_serialization.Model): - """Display metadata associated with the operation. - All required parameters must be populated in order to send to Azure. +class K8SNetworkSettings(_serialization.Model): + """The kubernetes network settings information. - :ivar provider: The localized friendly form of the resource provider name. Required. - :vartype provider: str - :ivar resource: The localized friendly form of the resource type related to this - action/operation. Required. - :vartype resource: str - :ivar operation: The localized friendly name for the operation. Required. - :vartype operation: str - :ivar description: The localized friendly description for the operation. Required. - :vartype description: str + :ivar forceencryption: If 1, then SQL Server forces all connections to be encrypted. By + default, this option is 0. + :vartype forceencryption: int + :ivar tlsciphers: Specifies which ciphers are allowed by SQL Server for TLS. + :vartype tlsciphers: str + :ivar tlsprotocols: A comma-separated list of which TLS protocols are allowed by SQL Server. + :vartype tlsprotocols: str """ - _validation = { - "provider": {"required": True}, - "resource": {"required": True}, - "operation": {"required": True}, - "description": {"required": True}, - } - _attribute_map = { - "provider": {"key": "provider", "type": "str"}, - "resource": {"key": "resource", "type": "str"}, - "operation": {"key": "operation", "type": "str"}, - "description": {"key": "description", "type": "str"}, + "forceencryption": {"key": "forceencryption", "type": "int"}, + "tlsciphers": {"key": "tlsciphers", "type": "str"}, + "tlsprotocols": {"key": "tlsprotocols", "type": "str"}, } - def __init__(self, *, provider: str, resource: str, operation: str, description: str, **kwargs): + def __init__( + self, + *, + forceencryption: Optional[int] = None, + tlsciphers: Optional[str] = None, + tlsprotocols: Optional[str] = None, + **kwargs: Any + ) -> None: """ - :keyword provider: The localized friendly form of the resource provider name. Required. - :paramtype provider: str - :keyword resource: The localized friendly form of the resource type related to this - action/operation. Required. - :paramtype resource: str - :keyword operation: The localized friendly name for the operation. Required. - :paramtype operation: str - :keyword description: The localized friendly description for the operation. Required. - :paramtype description: str + :keyword forceencryption: If 1, then SQL Server forces all connections to be encrypted. By + default, this option is 0. + :paramtype forceencryption: int + :keyword tlsciphers: Specifies which ciphers are allowed by SQL Server for TLS. + :paramtype tlsciphers: str + :keyword tlsprotocols: A comma-separated list of which TLS protocols are allowed by SQL Server. + :paramtype tlsprotocols: str """ super().__init__(**kwargs) - self.provider = provider - self.resource = resource - self.operation = operation - self.description = description + self.forceencryption = forceencryption + self.tlsciphers = tlsciphers + self.tlsprotocols = tlsprotocols -class OperationListResult(_serialization.Model): - """Result of the request to list Azure Data Services on Azure Arc operations. - - Variables are only populated by the server, and will be ignored when sending a request. +class K8SResourceRequirements(_serialization.Model): + """The kubernetes resource limits and requests used to restrict or reserve resource usage. - :ivar value: Array of results. - :vartype value: list[~azure.mgmt.azurearcdata.models.Operation] - :ivar next_link: Link to retrieve next page of results. - :vartype next_link: str + :ivar additional_properties: Unmatched properties from the message are deserialized to this + collection. + :vartype additional_properties: dict[str, any] + :ivar requests: Requests for a kubernetes resource type (e.g 'cpu', 'memory'). The 'cpu' + request must be less than or equal to 'cpu' limit. Default 'cpu' is 2, minimum is 1. Default + 'memory' is '4Gi', minimum is '2Gi. If sku.tier is GeneralPurpose, maximum 'cpu' is 24 and + maximum 'memory' is '128Gi'. + :vartype requests: dict[str, str] + :ivar limits: Limits for a kubernetes resource type (e.g 'cpu', 'memory'). The 'cpu' request + must be less than or equal to 'cpu' limit. Default 'cpu' is 2, minimum is 1. Default 'memory' + is '4Gi', minimum is '2Gi. If sku.tier is GeneralPurpose, maximum 'cpu' is 24 and maximum + 'memory' is '128Gi'. + :vartype limits: dict[str, str] """ - _validation = { - "value": {"readonly": True}, - "next_link": {"readonly": True}, - } - _attribute_map = { - "value": {"key": "value", "type": "[Operation]"}, - "next_link": {"key": "nextLink", "type": "str"}, + "additional_properties": {"key": "", "type": "{object}"}, + "requests": {"key": "requests", "type": "{str}"}, + "limits": {"key": "limits", "type": "{str}"}, } - def __init__(self, **kwargs): - """ """ + def __init__( + self, + *, + additional_properties: Optional[Dict[str, Any]] = None, + requests: Optional[Dict[str, str]] = None, + limits: Optional[Dict[str, str]] = None, + **kwargs: Any + ) -> None: + """ + :keyword additional_properties: Unmatched properties from the message are deserialized to this + collection. + :paramtype additional_properties: dict[str, any] + :keyword requests: Requests for a kubernetes resource type (e.g 'cpu', 'memory'). The 'cpu' + request must be less than or equal to 'cpu' limit. Default 'cpu' is 2, minimum is 1. Default + 'memory' is '4Gi', minimum is '2Gi. If sku.tier is GeneralPurpose, maximum 'cpu' is 24 and + maximum 'memory' is '128Gi'. + :paramtype requests: dict[str, str] + :keyword limits: Limits for a kubernetes resource type (e.g 'cpu', 'memory'). The 'cpu' request + must be less than or equal to 'cpu' limit. Default 'cpu' is 2, minimum is 1. Default 'memory' + is '4Gi', minimum is '2Gi. If sku.tier is GeneralPurpose, maximum 'cpu' is 24 and maximum + 'memory' is '128Gi'. + :paramtype limits: dict[str, str] + """ super().__init__(**kwargs) - self.value = None - self.next_link = None + self.additional_properties = additional_properties + self.requests = requests + self.limits = limits -class PageOfDataControllerResource(_serialization.Model): - """A list of data controllers. +class K8SScheduling(_serialization.Model): + """The kubernetes scheduling information. - :ivar value: Array of results. - :vartype value: list[~azure.mgmt.azurearcdata.models.DataControllerResource] - :ivar next_link: Link to retrieve next page of results. - :vartype next_link: str + :ivar additional_properties: Unmatched properties from the message are deserialized to this + collection. + :vartype additional_properties: dict[str, any] + :ivar default: The kubernetes scheduling options. It describes restrictions used to help + Kubernetes select appropriate nodes to host the database service. + :vartype default: ~azure.mgmt.azurearcdata.models.K8SSchedulingOptions """ _attribute_map = { - "value": {"key": "value", "type": "[DataControllerResource]"}, - "next_link": {"key": "nextLink", "type": "str"}, + "additional_properties": {"key": "", "type": "{object}"}, + "default": {"key": "default", "type": "K8SSchedulingOptions"}, } def __init__( self, *, - value: Optional[List["_models.DataControllerResource"]] = None, - next_link: Optional[str] = None, - **kwargs - ): + additional_properties: Optional[Dict[str, Any]] = None, + default: Optional["_models.K8SSchedulingOptions"] = None, + **kwargs: Any + ) -> None: """ - :keyword value: Array of results. - :paramtype value: list[~azure.mgmt.azurearcdata.models.DataControllerResource] - :keyword next_link: Link to retrieve next page of results. - :paramtype next_link: str + :keyword additional_properties: Unmatched properties from the message are deserialized to this + collection. + :paramtype additional_properties: dict[str, any] + :keyword default: The kubernetes scheduling options. It describes restrictions used to help + Kubernetes select appropriate nodes to host the database service. + :paramtype default: ~azure.mgmt.azurearcdata.models.K8SSchedulingOptions """ super().__init__(**kwargs) - self.value = value - self.next_link = next_link - - -class PostgresInstance(TrackedResource): - """A Postgres Instance. + self.additional_properties = additional_properties + self.default = default - 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. +class K8SSchedulingOptions(_serialization.Model): + """The kubernetes scheduling options. It describes restrictions used to help Kubernetes select + appropriate nodes to host the database service. - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData - :ivar tags: Resource tags. - :vartype tags: dict[str, str] - :ivar location: The geo-location where the resource lives. Required. - :vartype location: str - :ivar extended_location: The extendedLocation of the resource. - :vartype extended_location: ~azure.mgmt.azurearcdata.models.ExtendedLocation - :ivar properties: null. Required. - :vartype properties: ~azure.mgmt.azurearcdata.models.PostgresInstanceProperties - :ivar sku: Resource sku. - :vartype sku: ~azure.mgmt.azurearcdata.models.PostgresInstanceSku + :ivar additional_properties: Unmatched properties from the message are deserialized to this + collection. + :vartype additional_properties: dict[str, any] + :ivar resources: The kubernetes resource limits and requests used to restrict or reserve + resource usage. + :vartype resources: ~azure.mgmt.azurearcdata.models.K8SResourceRequirements """ - _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - "location": {"required": True}, - "properties": {"required": True}, - } - - _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "tags": {"key": "tags", "type": "{str}"}, - "location": {"key": "location", "type": "str"}, - "extended_location": {"key": "extendedLocation", "type": "ExtendedLocation"}, - "properties": {"key": "properties", "type": "PostgresInstanceProperties"}, - "sku": {"key": "sku", "type": "PostgresInstanceSku"}, + _attribute_map = { + "additional_properties": {"key": "", "type": "{object}"}, + "resources": {"key": "resources", "type": "K8SResourceRequirements"}, } def __init__( self, *, - location: str, - properties: "_models.PostgresInstanceProperties", - tags: Optional[Dict[str, str]] = None, - extended_location: Optional["_models.ExtendedLocation"] = None, - sku: Optional["_models.PostgresInstanceSku"] = None, - **kwargs - ): + additional_properties: Optional[Dict[str, Any]] = None, + resources: Optional["_models.K8SResourceRequirements"] = None, + **kwargs: Any + ) -> None: """ - :keyword tags: Resource tags. - :paramtype tags: dict[str, str] - :keyword location: The geo-location where the resource lives. Required. - :paramtype location: str - :keyword extended_location: The extendedLocation of the resource. - :paramtype extended_location: ~azure.mgmt.azurearcdata.models.ExtendedLocation - :keyword properties: null. Required. - :paramtype properties: ~azure.mgmt.azurearcdata.models.PostgresInstanceProperties - :keyword sku: Resource sku. - :paramtype sku: ~azure.mgmt.azurearcdata.models.PostgresInstanceSku + :keyword additional_properties: Unmatched properties from the message are deserialized to this + collection. + :paramtype additional_properties: dict[str, any] + :keyword resources: The kubernetes resource limits and requests used to restrict or reserve + resource usage. + :paramtype resources: ~azure.mgmt.azurearcdata.models.K8SResourceRequirements """ - super().__init__(tags=tags, location=location, **kwargs) - self.extended_location = extended_location - self.properties = properties - self.sku = sku - + super().__init__(**kwargs) + self.additional_properties = additional_properties + self.resources = resources -class PostgresInstanceListResult(_serialization.Model): - """A list of PostgresInstance. - Variables are only populated by the server, and will be ignored when sending a request. +class K8SSecurity(_serialization.Model): + """The kubernetes security information. - :ivar value: Array of results. - :vartype value: list[~azure.mgmt.azurearcdata.models.PostgresInstance] - :ivar next_link: Link to retrieve next page of results. - :vartype next_link: str + :ivar additional_properties: Unmatched properties from the message are deserialized to this + collection. + :vartype additional_properties: dict[str, any] + :ivar admin_login_secret: Admin login secret key. + :vartype admin_login_secret: str + :ivar service_certificate_secret: Service certificate secret used. + :vartype service_certificate_secret: str + :ivar active_directory: The kubernetes active directory information. + :vartype active_directory: ~azure.mgmt.azurearcdata.models.K8SActiveDirectory + :ivar transparent_data_encryption: Transparent data encryption information. + :vartype transparent_data_encryption: + ~azure.mgmt.azurearcdata.models.K8StransparentDataEncryption """ - _validation = { - "value": {"readonly": True}, - "next_link": {"readonly": True}, - } - _attribute_map = { - "value": {"key": "value", "type": "[PostgresInstance]"}, - "next_link": {"key": "nextLink", "type": "str"}, + "additional_properties": {"key": "", "type": "{object}"}, + "admin_login_secret": {"key": "adminLoginSecret", "type": "str"}, + "service_certificate_secret": {"key": "serviceCertificateSecret", "type": "str"}, + "active_directory": {"key": "activeDirectory", "type": "K8SActiveDirectory"}, + "transparent_data_encryption": {"key": "transparentDataEncryption", "type": "K8StransparentDataEncryption"}, } - def __init__(self, **kwargs): - """ """ + def __init__( + self, + *, + additional_properties: Optional[Dict[str, Any]] = None, + admin_login_secret: Optional[str] = None, + service_certificate_secret: Optional[str] = None, + active_directory: Optional["_models.K8SActiveDirectory"] = None, + transparent_data_encryption: Optional["_models.K8StransparentDataEncryption"] = None, + **kwargs: Any + ) -> None: + """ + :keyword additional_properties: Unmatched properties from the message are deserialized to this + collection. + :paramtype additional_properties: dict[str, any] + :keyword admin_login_secret: Admin login secret key. + :paramtype admin_login_secret: str + :keyword service_certificate_secret: Service certificate secret used. + :paramtype service_certificate_secret: str + :keyword active_directory: The kubernetes active directory information. + :paramtype active_directory: ~azure.mgmt.azurearcdata.models.K8SActiveDirectory + :keyword transparent_data_encryption: Transparent data encryption information. + :paramtype transparent_data_encryption: + ~azure.mgmt.azurearcdata.models.K8StransparentDataEncryption + """ super().__init__(**kwargs) - self.value = None - self.next_link = None - + self.additional_properties = additional_properties + self.admin_login_secret = admin_login_secret + self.service_certificate_secret = service_certificate_secret + self.active_directory = active_directory + self.transparent_data_encryption = transparent_data_encryption -class PostgresInstanceProperties(_serialization.Model): - """Postgres Instance properties. - Variables are only populated by the server, and will be ignored when sending a request. +class K8SSettings(_serialization.Model): + """The kubernetes settings information. - :ivar data_controller_id: The data controller id. - :vartype data_controller_id: str - :ivar admin: The instance admin. - :vartype admin: str - :ivar basic_login_information: Username and password for basic authentication. - :vartype basic_login_information: ~azure.mgmt.azurearcdata.models.BasicLoginInformation - :ivar k8_s_raw: The raw kubernetes information. - :vartype k8_s_raw: JSON - :ivar last_uploaded_date: Last uploaded date from Kubernetes cluster. Defaults to current date - time. - :vartype last_uploaded_date: ~datetime.datetime - :ivar provisioning_state: The provisioning state of the Azure Arc-enabled PostgreSQL instance. - :vartype provisioning_state: str + :ivar additional_properties: Unmatched properties from the message are deserialized to this + collection. + :vartype additional_properties: dict[str, any] + :ivar network: The kubernetes network settings information. + :vartype network: ~azure.mgmt.azurearcdata.models.K8SNetworkSettings """ - _validation = { - "provisioning_state": {"readonly": True}, - } - _attribute_map = { - "data_controller_id": {"key": "dataControllerId", "type": "str"}, - "admin": {"key": "admin", "type": "str"}, - "basic_login_information": {"key": "basicLoginInformation", "type": "BasicLoginInformation"}, - "k8_s_raw": {"key": "k8sRaw", "type": "object"}, - "last_uploaded_date": {"key": "lastUploadedDate", "type": "iso-8601"}, - "provisioning_state": {"key": "provisioningState", "type": "str"}, + "additional_properties": {"key": "", "type": "{object}"}, + "network": {"key": "network", "type": "K8SNetworkSettings"}, } def __init__( self, *, - data_controller_id: Optional[str] = None, - admin: Optional[str] = None, - basic_login_information: Optional["_models.BasicLoginInformation"] = None, - k8_s_raw: Optional[JSON] = None, - last_uploaded_date: Optional[datetime.datetime] = None, - **kwargs - ): + additional_properties: Optional[Dict[str, Any]] = None, + network: Optional["_models.K8SNetworkSettings"] = None, + **kwargs: Any + ) -> None: """ - :keyword data_controller_id: The data controller id. - :paramtype data_controller_id: str - :keyword admin: The instance admin. - :paramtype admin: str - :keyword basic_login_information: Username and password for basic authentication. - :paramtype basic_login_information: ~azure.mgmt.azurearcdata.models.BasicLoginInformation - :keyword k8_s_raw: The raw kubernetes information. - :paramtype k8_s_raw: JSON - :keyword last_uploaded_date: Last uploaded date from Kubernetes cluster. Defaults to current - date time. - :paramtype last_uploaded_date: ~datetime.datetime + :keyword additional_properties: Unmatched properties from the message are deserialized to this + collection. + :paramtype additional_properties: dict[str, any] + :keyword network: The kubernetes network settings information. + :paramtype network: ~azure.mgmt.azurearcdata.models.K8SNetworkSettings """ super().__init__(**kwargs) - self.data_controller_id = data_controller_id - self.admin = admin - self.basic_login_information = basic_login_information - self.k8_s_raw = k8_s_raw - self.last_uploaded_date = last_uploaded_date - self.provisioning_state = None + self.additional_properties = additional_properties + self.network = network -class PostgresInstanceSku(CommonSku): - """The resource model definition representing SKU for Azure Database for PostgresSQL - Azure Arc. +class K8StransparentDataEncryption(_serialization.Model): + """Transparent data encryption information. - All required parameters must be populated in order to send to Azure. + :ivar mode: Transparent data encryption mode. Can be Service Managed, Customer managed or + disabled. + :vartype mode: str + :ivar protector_secret: Protector secret for customer managed Transparent data encryption mode. + :vartype protector_secret: str + """ - :ivar name: The name of the SKU. It is typically a letter+number code. Required. - :vartype name: str - :ivar dev: Whether dev/test is enabled. When the dev field is set to true, the resource is used - for dev/test purpose. - :vartype dev: bool - :ivar size: The SKU size. When the name field is the combination of tier and some other value, - this would be the standalone code. - :vartype size: str - :ivar family: If the service has different generations of hardware, for the same SKU, then that - can be captured here. - :vartype family: str - :ivar capacity: If the SKU supports scale out/in then the capacity integer should be included. - If scale out/in is not possible for the resource this may be omitted. - :vartype capacity: int - :ivar tier: This field is required to be implemented by the Resource Provider if the service - has more than one tier. Default value is "Hyperscale". - :vartype tier: str + _attribute_map = { + "mode": {"key": "mode", "type": "str"}, + "protector_secret": {"key": "protectorSecret", "type": "str"}, + } + + def __init__(self, *, mode: Optional[str] = None, protector_secret: Optional[str] = None, **kwargs: Any) -> None: + """ + :keyword mode: Transparent data encryption mode. Can be Service Managed, Customer managed or + disabled. + :paramtype mode: str + :keyword protector_secret: Protector secret for customer managed Transparent data encryption + mode. + :paramtype protector_secret: str + """ + super().__init__(**kwargs) + self.mode = mode + self.protector_secret = protector_secret + + +class KeytabInformation(_serialization.Model): + """Keytab used for authenticate with Active Directory. + + :ivar keytab: A base64-encoded keytab. + :vartype keytab: str """ - _validation = { - "name": {"required": True}, + _attribute_map = { + "keytab": {"key": "keytab", "type": "str"}, } + def __init__(self, *, keytab: Optional[str] = None, **kwargs: Any) -> None: + """ + :keyword keytab: A base64-encoded keytab. + :paramtype keytab: str + """ + super().__init__(**kwargs) + self.keytab = keytab + + +class LogAnalyticsWorkspaceConfig(_serialization.Model): + """Log analytics workspace id and primary key. + + :ivar workspace_id: Azure Log Analytics workspace ID. + :vartype workspace_id: str + :ivar primary_key: Primary key of the workspace. + :vartype primary_key: str + """ + _attribute_map = { - "name": {"key": "name", "type": "str"}, - "dev": {"key": "dev", "type": "bool"}, - "size": {"key": "size", "type": "str"}, - "family": {"key": "family", "type": "str"}, - "capacity": {"key": "capacity", "type": "int"}, - "tier": {"key": "tier", "type": "str"}, + "workspace_id": {"key": "workspaceId", "type": "str"}, + "primary_key": {"key": "primaryKey", "type": "str"}, } - def __init__( - self, - *, - name: str, - dev: bool = True, - size: Optional[str] = None, - family: Optional[str] = None, - capacity: Optional[int] = None, - tier: Literal["Hyperscale"] = "Hyperscale", - **kwargs - ): + def __init__(self, *, workspace_id: Optional[str] = None, primary_key: Optional[str] = None, **kwargs: Any) -> None: """ - :keyword name: The name of the SKU. It is typically a letter+number code. Required. - :paramtype name: str - :keyword dev: Whether dev/test is enabled. When the dev field is set to true, the resource is - used for dev/test purpose. - :paramtype dev: bool - :keyword size: The SKU size. When the name field is the combination of tier and some other - value, this would be the standalone code. - :paramtype size: str - :keyword family: If the service has different generations of hardware, for the same SKU, then - that can be captured here. - :paramtype family: str - :keyword capacity: If the SKU supports scale out/in then the capacity integer should be - included. If scale out/in is not possible for the resource this may be omitted. - :paramtype capacity: int - :keyword tier: This field is required to be implemented by the Resource Provider if the service - has more than one tier. Default value is "Hyperscale". - :paramtype tier: str + :keyword workspace_id: Azure Log Analytics workspace ID. + :paramtype workspace_id: str + :keyword primary_key: Primary key of the workspace. + :paramtype primary_key: str """ - super().__init__(name=name, dev=dev, size=size, family=family, capacity=capacity, **kwargs) - self.tier = tier + super().__init__(**kwargs) + self.workspace_id = workspace_id + self.primary_key = primary_key -class PostgresInstanceUpdate(_serialization.Model): - """An update to a Postgres Instance. +class ManagedInstanceLinkCreateUpdateConfiguration(_serialization.Model): # pylint: disable=name-too-long + """The configuration for the new Managed Instance Link resource. - :ivar tags: Resource tags. - :vartype tags: dict[str, str] - :ivar properties: Postgres Instance properties. - :vartype properties: ~azure.mgmt.azurearcdata.models.PostgresInstanceProperties + :ivar availability_group: The configuration for the SQL Server availability group resource. + :vartype availability_group: + ~azure.mgmt.azurearcdata.models.AvailabilityGroupCreateUpdateConfiguration + :ivar distributed_availability_group: The distributed availability group configuration for the + MI link. + :vartype distributed_availability_group: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateConfiguration + :ivar mi_link_configuration: The MI Link specific distributed availability group configuration. + :vartype mi_link_configuration: ~azure.mgmt.azurearcdata.models.MiLinkCreateUpdateConfiguration """ _attribute_map = { - "tags": {"key": "tags", "type": "{str}"}, - "properties": {"key": "properties", "type": "PostgresInstanceProperties"}, + "availability_group": {"key": "availabilityGroup", "type": "AvailabilityGroupCreateUpdateConfiguration"}, + "distributed_availability_group": { + "key": "distributedAvailabilityGroup", + "type": "DistributedAvailabilityGroupCreateUpdateConfiguration", + }, + "mi_link_configuration": {"key": "miLinkConfiguration", "type": "MiLinkCreateUpdateConfiguration"}, } def __init__( self, *, - tags: Optional[Dict[str, str]] = None, - properties: Optional["_models.PostgresInstanceProperties"] = None, - **kwargs - ): + availability_group: Optional["_models.AvailabilityGroupCreateUpdateConfiguration"] = None, + distributed_availability_group: Optional[ + "_models.DistributedAvailabilityGroupCreateUpdateConfiguration" + ] = None, + mi_link_configuration: Optional["_models.MiLinkCreateUpdateConfiguration"] = None, + **kwargs: Any + ) -> None: """ - :keyword tags: Resource tags. - :paramtype tags: dict[str, str] - :keyword properties: Postgres Instance properties. - :paramtype properties: ~azure.mgmt.azurearcdata.models.PostgresInstanceProperties + :keyword availability_group: The configuration for the SQL Server availability group resource. + :paramtype availability_group: + ~azure.mgmt.azurearcdata.models.AvailabilityGroupCreateUpdateConfiguration + :keyword distributed_availability_group: The distributed availability group configuration for + the MI link. + :paramtype distributed_availability_group: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateConfiguration + :keyword mi_link_configuration: The MI Link specific distributed availability group + configuration. + :paramtype mi_link_configuration: + ~azure.mgmt.azurearcdata.models.MiLinkCreateUpdateConfiguration """ super().__init__(**kwargs) - self.tags = tags - self.properties = properties + self.availability_group = availability_group + self.distributed_availability_group = distributed_availability_group + self.mi_link_configuration = mi_link_configuration -class SqlManagedInstance(TrackedResource): - """A SqlManagedInstance. +class Migration(_serialization.Model): + """Migration related configuration. + + :ivar assessment: Migration assessments related configuration. + :vartype assessment: ~azure.mgmt.azurearcdata.models.MigrationAssessment + """ + + _attribute_map = { + "assessment": {"key": "assessment", "type": "MigrationAssessment"}, + } + + def __init__(self, *, assessment: Optional["_models.MigrationAssessment"] = None, **kwargs: Any) -> None: + """ + :keyword assessment: Migration assessments related configuration. + :paramtype assessment: ~azure.mgmt.azurearcdata.models.MigrationAssessment + """ + super().__init__(**kwargs) + self.assessment = assessment + + +class MigrationAssessment(_serialization.Model): + """The migration assessment related configuration. 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 enabled: Indicates if migration assessment is enabled for this SQL Server instance. + :vartype enabled: bool + :ivar assessment_upload_time: The time when Migration Assessment Report upload was last + performed. + :vartype assessment_upload_time: ~datetime.datetime + :ivar server_assessments: Issues and warnings impacting the migration of SQL Server instance to + particular Azure Migration Target. + :vartype server_assessments: list[~azure.mgmt.azurearcdata.models.ServerAssessmentsItem] + :ivar sku_recommendation_results: SKU Recommendation results for Azure migration targets for + SQL Server. + :vartype sku_recommendation_results: ~azure.mgmt.azurearcdata.models.SkuRecommendationResults + """ - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData - :ivar tags: Resource tags. - :vartype tags: dict[str, str] - :ivar location: The geo-location where the resource lives. Required. - :vartype location: str - :ivar properties: null. Required. - :vartype properties: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceProperties - :ivar extended_location: The extendedLocation of the resource. - :vartype extended_location: ~azure.mgmt.azurearcdata.models.ExtendedLocation - :ivar sku: Resource sku. - :vartype sku: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceSku + _validation = { + "assessment_upload_time": {"readonly": True}, + "server_assessments": {"readonly": True}, + "sku_recommendation_results": {"readonly": True}, + } + + _attribute_map = { + "enabled": {"key": "enabled", "type": "bool"}, + "assessment_upload_time": {"key": "assessmentUploadTime", "type": "iso-8601"}, + "server_assessments": {"key": "serverAssessments", "type": "[ServerAssessmentsItem]"}, + "sku_recommendation_results": {"key": "skuRecommendationResults", "type": "SkuRecommendationResults"}, + } + + def __init__(self, *, enabled: Optional[bool] = None, **kwargs: Any) -> None: + """ + :keyword enabled: Indicates if migration assessment is enabled for this SQL Server instance. + :paramtype enabled: bool + """ + super().__init__(**kwargs) + self.enabled = enabled + self.assessment_upload_time: Optional[datetime.datetime] = None + self.server_assessments: Optional[List["_models.ServerAssessmentsItem"]] = None + self.sku_recommendation_results: Optional["_models.SkuRecommendationResults"] = None + + +class MiLinkCreateUpdateConfiguration(_serialization.Model): + """The MI Link specific configuration. + + :ivar instance_availability_group_name: The name of the availability group to be created on the + Managed Instance. + :vartype instance_availability_group_name: str + """ + + _attribute_map = { + "instance_availability_group_name": {"key": "instanceAvailabilityGroupName", "type": "str"}, + } + + def __init__(self, *, instance_availability_group_name: Optional[str] = None, **kwargs: Any) -> None: + """ + :keyword instance_availability_group_name: The name of the availability group to be created on + the Managed Instance. + :paramtype instance_availability_group_name: str + """ + super().__init__(**kwargs) + self.instance_availability_group_name = instance_availability_group_name + + +class Monitoring(_serialization.Model): + """The monitoring configuration. + + :ivar enabled: Indicates if monitoring is enabled for this SQL Server instance. + :vartype enabled: bool + """ + + _attribute_map = { + "enabled": {"key": "enabled", "type": "bool"}, + } + + def __init__(self, *, enabled: Optional[bool] = None, **kwargs: Any) -> None: + """ + :keyword enabled: Indicates if monitoring is enabled for this SQL Server instance. + :paramtype enabled: bool + """ + super().__init__(**kwargs) + self.enabled = enabled + + +class OnPremiseProperty(_serialization.Model): + """Properties from the Kubernetes data controller. + + All required parameters must be populated in order to send to server. + + :ivar id: A globally unique ID identifying the associated Kubernetes cluster. Required. + :vartype id: str + :ivar public_signing_key: Certificate that contains the Kubernetes cluster public key used to + verify signing. Required. + :vartype public_signing_key: str + :ivar signing_certificate_thumbprint: Unique thumbprint returned to customer to verify the + certificate being uploaded. + :vartype signing_certificate_thumbprint: str """ _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - "location": {"required": True}, - "properties": {"required": True}, + "id": {"required": True}, + "public_signing_key": {"required": True}, } _attribute_map = { "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "tags": {"key": "tags", "type": "{str}"}, - "location": {"key": "location", "type": "str"}, - "properties": {"key": "properties", "type": "SqlManagedInstanceProperties"}, - "extended_location": {"key": "extendedLocation", "type": "ExtendedLocation"}, - "sku": {"key": "sku", "type": "SqlManagedInstanceSku"}, + "public_signing_key": {"key": "publicSigningKey", "type": "str"}, + "signing_certificate_thumbprint": {"key": "signingCertificateThumbprint", "type": "str"}, } def __init__( self, *, - location: str, - properties: "_models.SqlManagedInstanceProperties", - tags: Optional[Dict[str, str]] = None, - extended_location: Optional["_models.ExtendedLocation"] = None, - sku: Optional["_models.SqlManagedInstanceSku"] = None, - **kwargs - ): + id: str, # pylint: disable=redefined-builtin + public_signing_key: str, + signing_certificate_thumbprint: Optional[str] = None, + **kwargs: Any + ) -> None: """ - :keyword tags: Resource tags. - :paramtype tags: dict[str, str] - :keyword location: The geo-location where the resource lives. Required. - :paramtype location: str - :keyword properties: null. Required. - :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceProperties - :keyword extended_location: The extendedLocation of the resource. - :paramtype extended_location: ~azure.mgmt.azurearcdata.models.ExtendedLocation - :keyword sku: Resource sku. - :paramtype sku: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceSku + :keyword id: A globally unique ID identifying the associated Kubernetes cluster. Required. + :paramtype id: str + :keyword public_signing_key: Certificate that contains the Kubernetes cluster public key used + to verify signing. Required. + :paramtype public_signing_key: str + :keyword signing_certificate_thumbprint: Unique thumbprint returned to customer to verify the + certificate being uploaded. + :paramtype signing_certificate_thumbprint: str """ - super().__init__(tags=tags, location=location, **kwargs) - self.properties = properties - self.extended_location = extended_location - self.sku = sku + super().__init__(**kwargs) + self.id = id + self.public_signing_key = public_signing_key + self.signing_certificate_thumbprint = signing_certificate_thumbprint -class SqlManagedInstanceK8SRaw(_serialization.Model): - """The raw kubernetes information. +class Operation(_serialization.Model): + """Azure Data Services on Azure Arc operation definition. - :ivar additional_properties: Unmatched properties from the message are deserialized to this - collection. - :vartype additional_properties: dict[str, JSON] - :ivar spec: The kubernetes spec information. - :vartype spec: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceK8SSpec + 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 server. + + :ivar name: The name of the operation being performed on this particular object. Required. + :vartype name: str + :ivar display: The localized display information for this particular operation / action. + Required. + :vartype display: ~azure.mgmt.azurearcdata.models.OperationDisplay + :ivar origin: The intended executor of the operation. Known values are: "user" and "system". + :vartype origin: str or ~azure.mgmt.azurearcdata.models.OperationOrigin + :ivar is_data_action: Indicates whether the operation is a data action. Required. + :vartype is_data_action: bool + :ivar properties: Additional descriptions for the operation. + :vartype properties: dict[str, any] """ + _validation = { + "name": {"required": True}, + "display": {"required": True}, + "origin": {"readonly": True}, + "is_data_action": {"required": True}, + "properties": {"readonly": True}, + } + _attribute_map = { - "additional_properties": {"key": "", "type": "{object}"}, - "spec": {"key": "spec", "type": "SqlManagedInstanceK8SSpec"}, + "name": {"key": "name", "type": "str"}, + "display": {"key": "display", "type": "OperationDisplay"}, + "origin": {"key": "origin", "type": "str"}, + "is_data_action": {"key": "isDataAction", "type": "bool"}, + "properties": {"key": "properties", "type": "{object}"}, } - def __init__( - self, - *, - additional_properties: Optional[Dict[str, JSON]] = None, - spec: Optional["_models.SqlManagedInstanceK8SSpec"] = None, - **kwargs - ): + def __init__(self, *, name: str, display: "_models.OperationDisplay", is_data_action: bool, **kwargs: Any) -> None: """ - :keyword additional_properties: Unmatched properties from the message are deserialized to this - collection. - :paramtype additional_properties: dict[str, JSON] - :keyword spec: The kubernetes spec information. - :paramtype spec: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceK8SSpec + :keyword name: The name of the operation being performed on this particular object. Required. + :paramtype name: str + :keyword display: The localized display information for this particular operation / action. + Required. + :paramtype display: ~azure.mgmt.azurearcdata.models.OperationDisplay + :keyword is_data_action: Indicates whether the operation is a data action. Required. + :paramtype is_data_action: bool """ super().__init__(**kwargs) - self.additional_properties = additional_properties - self.spec = spec + self.name = name + self.display = display + self.origin: Optional[Union[str, "_models.OperationOrigin"]] = None + self.is_data_action = is_data_action + self.properties: Optional[Dict[str, Any]] = None -class SqlManagedInstanceK8SSpec(_serialization.Model): - """The kubernetes spec information. +class OperationDisplay(_serialization.Model): + """Display metadata associated with the operation. - :ivar additional_properties: Unmatched properties from the message are deserialized to this - collection. - :vartype additional_properties: dict[str, JSON] - :ivar scheduling: The kubernetes scheduling information. - :vartype scheduling: ~azure.mgmt.azurearcdata.models.K8SScheduling - :ivar replicas: This option specifies the number of SQL Managed Instance replicas that will be - deployed in your Kubernetes cluster for high availability purposes. If sku.tier is - BusinessCritical, allowed values are '2' or '3' with default of '3'. If sku.tier is - GeneralPurpose, replicas must be '1'. - :vartype replicas: int + All required parameters must be populated in order to send to server. + + :ivar provider: The localized friendly form of the resource provider name. Required. + :vartype provider: str + :ivar resource: The localized friendly form of the resource type related to this + action/operation. Required. + :vartype resource: str + :ivar operation: The localized friendly name for the operation. Required. + :vartype operation: str + :ivar description: The localized friendly description for the operation. Required. + :vartype description: str """ + _validation = { + "provider": {"required": True}, + "resource": {"required": True}, + "operation": {"required": True}, + "description": {"required": True}, + } + _attribute_map = { - "additional_properties": {"key": "", "type": "{object}"}, - "scheduling": {"key": "scheduling", "type": "K8SScheduling"}, - "replicas": {"key": "replicas", "type": "int"}, + "provider": {"key": "provider", "type": "str"}, + "resource": {"key": "resource", "type": "str"}, + "operation": {"key": "operation", "type": "str"}, + "description": {"key": "description", "type": "str"}, } - def __init__( - self, - *, - additional_properties: Optional[Dict[str, JSON]] = None, - scheduling: Optional["_models.K8SScheduling"] = None, - replicas: Optional[int] = None, - **kwargs - ): + def __init__(self, *, provider: str, resource: str, operation: str, description: str, **kwargs: Any) -> None: """ - :keyword additional_properties: Unmatched properties from the message are deserialized to this - collection. - :paramtype additional_properties: dict[str, JSON] - :keyword scheduling: The kubernetes scheduling information. - :paramtype scheduling: ~azure.mgmt.azurearcdata.models.K8SScheduling - :keyword replicas: This option specifies the number of SQL Managed Instance replicas that will - be deployed in your Kubernetes cluster for high availability purposes. If sku.tier is - BusinessCritical, allowed values are '2' or '3' with default of '3'. If sku.tier is - GeneralPurpose, replicas must be '1'. - :paramtype replicas: int + :keyword provider: The localized friendly form of the resource provider name. Required. + :paramtype provider: str + :keyword resource: The localized friendly form of the resource type related to this + action/operation. Required. + :paramtype resource: str + :keyword operation: The localized friendly name for the operation. Required. + :paramtype operation: str + :keyword description: The localized friendly description for the operation. Required. + :paramtype description: str """ super().__init__(**kwargs) - self.additional_properties = additional_properties - self.scheduling = scheduling - self.replicas = replicas + self.provider = provider + self.resource = resource + self.operation = operation + self.description = description -class SqlManagedInstanceListResult(_serialization.Model): - """A list of SqlManagedInstance. +class OperationListResult(_serialization.Model): + """Result of the request to list Azure Data Services on Azure Arc operations. Variables are only populated by the server, and will be ignored when sending a request. :ivar value: Array of results. - :vartype value: list[~azure.mgmt.azurearcdata.models.SqlManagedInstance] + :vartype value: list[~azure.mgmt.azurearcdata.models.Operation] :ivar next_link: Link to retrieve next page of results. :vartype next_link: str """ @@ -1866,53 +3404,174 @@ class SqlManagedInstanceListResult(_serialization.Model): } _attribute_map = { - "value": {"key": "value", "type": "[SqlManagedInstance]"}, + "value": {"key": "value", "type": "[Operation]"}, "next_link": {"key": "nextLink", "type": "str"}, } - def __init__(self, **kwargs): + def __init__(self, **kwargs: Any) -> None: """ """ super().__init__(**kwargs) - self.value = None - self.next_link = None + self.value: Optional[List["_models.Operation"]] = None + self.next_link: Optional[str] = None -class SqlManagedInstanceProperties(_serialization.Model): # pylint: disable=too-many-instance-attributes - """Properties of sqlManagedInstance. +class PageOfDataControllerResource(_serialization.Model): + """A list of data controllers. - Variables are only populated by the server, and will be ignored when sending a request. + :ivar value: Array of results. + :vartype value: list[~azure.mgmt.azurearcdata.models.DataControllerResource] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ - :ivar data_controller_id: null. - :vartype data_controller_id: str - :ivar admin: The instance admin user. - :vartype admin: str - :ivar start_time: The instance start time. - :vartype start_time: str - :ivar end_time: The instance end time. - :vartype end_time: str - :ivar k8_s_raw: The raw kubernetes information. - :vartype k8_s_raw: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceK8SRaw + _attribute_map = { + "value": {"key": "value", "type": "[DataControllerResource]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__( + self, + *, + value: Optional[List["_models.DataControllerResource"]] = None, + next_link: Optional[str] = None, + **kwargs: Any + ) -> None: + """ + :keyword value: Array of results. + :paramtype value: list[~azure.mgmt.azurearcdata.models.DataControllerResource] + :keyword next_link: Link to retrieve next page of results. + :paramtype next_link: str + """ + super().__init__(**kwargs) + self.value = value + self.next_link = next_link + + +class PostgresInstance(TrackedResource): + """A Postgres Instance. + + 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 server. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar location: The geo-location where the resource lives. Required. + :vartype location: str + :ivar extended_location: The extendedLocation of the resource. + :vartype extended_location: ~azure.mgmt.azurearcdata.models.ExtendedLocation + :ivar properties: null. Required. + :vartype properties: ~azure.mgmt.azurearcdata.models.PostgresInstanceProperties + :ivar sku: Resource sku. + :vartype sku: ~azure.mgmt.azurearcdata.models.PostgresInstanceSku + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + "location": {"required": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "tags": {"key": "tags", "type": "{str}"}, + "location": {"key": "location", "type": "str"}, + "extended_location": {"key": "extendedLocation", "type": "ExtendedLocation"}, + "properties": {"key": "properties", "type": "PostgresInstanceProperties"}, + "sku": {"key": "sku", "type": "PostgresInstanceSku"}, + } + + def __init__( + self, + *, + location: str, + properties: "_models.PostgresInstanceProperties", + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["_models.ExtendedLocation"] = None, + sku: Optional["_models.PostgresInstanceSku"] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword location: The geo-location where the resource lives. Required. + :paramtype location: str + :keyword extended_location: The extendedLocation of the resource. + :paramtype extended_location: ~azure.mgmt.azurearcdata.models.ExtendedLocation + :keyword properties: null. Required. + :paramtype properties: ~azure.mgmt.azurearcdata.models.PostgresInstanceProperties + :keyword sku: Resource sku. + :paramtype sku: ~azure.mgmt.azurearcdata.models.PostgresInstanceSku + """ + super().__init__(tags=tags, location=location, **kwargs) + self.extended_location = extended_location + self.properties = properties + self.sku = sku + + +class PostgresInstanceListResult(_serialization.Model): + """A list of PostgresInstance. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Array of results. + :vartype value: list[~azure.mgmt.azurearcdata.models.PostgresInstance] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ + + _validation = { + "value": {"readonly": True}, + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[PostgresInstance]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.value: Optional[List["_models.PostgresInstance"]] = None + self.next_link: Optional[str] = None + + +class PostgresInstanceProperties(_serialization.Model): + """Postgres Instance properties. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar data_controller_id: The data controller id. + :vartype data_controller_id: str + :ivar admin: The instance admin. + :vartype admin: str :ivar basic_login_information: Username and password for basic authentication. :vartype basic_login_information: ~azure.mgmt.azurearcdata.models.BasicLoginInformation + :ivar k8_s_raw: The raw kubernetes information. + :vartype k8_s_raw: JSON :ivar last_uploaded_date: Last uploaded date from Kubernetes cluster. Defaults to current date time. :vartype last_uploaded_date: ~datetime.datetime - :ivar provisioning_state: The provisioning state of the Arc-enabled SQL Managed Instance - resource. + :ivar provisioning_state: The provisioning state of the Azure Arc-enabled PostgreSQL instance. :vartype provisioning_state: str - :ivar active_directory_information: Active Directory information related to this SQL Managed - Instance. - :vartype active_directory_information: - ~azure.mgmt.azurearcdata.models.ActiveDirectoryInformation - :ivar license_type: The license type to apply for this managed instance. Known values are: - "BasePrice", "LicenseIncluded", and "DisasterRecovery". - :vartype license_type: str or ~azure.mgmt.azurearcdata.models.ArcSqlManagedInstanceLicenseType - :ivar cluster_id: If a CustomLocation is provided, this contains the ARM id of the connected - cluster the custom location belongs to. - :vartype cluster_id: str - :ivar extension_id: If a CustomLocation is provided, this contains the ARM id of the extension - the custom location belongs to. - :vartype extension_id: str """ _validation = { @@ -1922,16 +3581,10 @@ class SqlManagedInstanceProperties(_serialization.Model): # pylint: disable=too _attribute_map = { "data_controller_id": {"key": "dataControllerId", "type": "str"}, "admin": {"key": "admin", "type": "str"}, - "start_time": {"key": "startTime", "type": "str"}, - "end_time": {"key": "endTime", "type": "str"}, - "k8_s_raw": {"key": "k8sRaw", "type": "SqlManagedInstanceK8SRaw"}, "basic_login_information": {"key": "basicLoginInformation", "type": "BasicLoginInformation"}, + "k8_s_raw": {"key": "k8sRaw", "type": "object"}, "last_uploaded_date": {"key": "lastUploadedDate", "type": "iso-8601"}, "provisioning_state": {"key": "provisioningState", "type": "str"}, - "active_directory_information": {"key": "activeDirectoryInformation", "type": "ActiveDirectoryInformation"}, - "license_type": {"key": "licenseType", "type": "str"}, - "cluster_id": {"key": "clusterId", "type": "str"}, - "extension_id": {"key": "extensionId", "type": "str"}, } def __init__( @@ -1939,274 +3592,3410 @@ def __init__( *, data_controller_id: Optional[str] = None, admin: Optional[str] = None, - start_time: Optional[str] = None, - end_time: Optional[str] = None, - k8_s_raw: Optional["_models.SqlManagedInstanceK8SRaw"] = None, basic_login_information: Optional["_models.BasicLoginInformation"] = None, + k8_s_raw: Optional[JSON] = None, last_uploaded_date: Optional[datetime.datetime] = None, - active_directory_information: Optional["_models.ActiveDirectoryInformation"] = None, - license_type: Union[str, "_models.ArcSqlManagedInstanceLicenseType"] = "BasePrice", - cluster_id: Optional[str] = None, - extension_id: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ - :keyword data_controller_id: null. + :keyword data_controller_id: The data controller id. :paramtype data_controller_id: str - :keyword admin: The instance admin user. + :keyword admin: The instance admin. :paramtype admin: str - :keyword start_time: The instance start time. - :paramtype start_time: str - :keyword end_time: The instance end time. - :paramtype end_time: str - :keyword k8_s_raw: The raw kubernetes information. - :paramtype k8_s_raw: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceK8SRaw :keyword basic_login_information: Username and password for basic authentication. :paramtype basic_login_information: ~azure.mgmt.azurearcdata.models.BasicLoginInformation + :keyword k8_s_raw: The raw kubernetes information. + :paramtype k8_s_raw: JSON :keyword last_uploaded_date: Last uploaded date from Kubernetes cluster. Defaults to current date time. :paramtype last_uploaded_date: ~datetime.datetime - :keyword active_directory_information: Active Directory information related to this SQL Managed - Instance. - :paramtype active_directory_information: - ~azure.mgmt.azurearcdata.models.ActiveDirectoryInformation - :keyword license_type: The license type to apply for this managed instance. Known values are: - "BasePrice", "LicenseIncluded", and "DisasterRecovery". - :paramtype license_type: str or - ~azure.mgmt.azurearcdata.models.ArcSqlManagedInstanceLicenseType - :keyword cluster_id: If a CustomLocation is provided, this contains the ARM id of the connected - cluster the custom location belongs to. - :paramtype cluster_id: str - :keyword extension_id: If a CustomLocation is provided, this contains the ARM id of the - extension the custom location belongs to. - :paramtype extension_id: str """ super().__init__(**kwargs) self.data_controller_id = data_controller_id self.admin = admin - self.start_time = start_time - self.end_time = end_time - self.k8_s_raw = k8_s_raw self.basic_login_information = basic_login_information + self.k8_s_raw = k8_s_raw self.last_uploaded_date = last_uploaded_date - self.provisioning_state = None - self.active_directory_information = active_directory_information - self.license_type = license_type - self.cluster_id = cluster_id - self.extension_id = extension_id - + self.provisioning_state: Optional[str] = None -class SqlManagedInstanceSku(_serialization.Model): - """The resource model definition representing SKU for Azure Managed Instance - Azure Arc. - Variables are only populated by the server, and will be ignored when sending a request. +class PostgresInstanceSku(CommonSku): + """The resource model definition representing SKU for Azure Database for PostgresSQL - Azure Arc. - All required parameters must be populated in order to send to Azure. + All required parameters must be populated in order to send to server. - :ivar name: The name of the SKU. Required. Default value is "vCore". + :ivar name: The name of the SKU. It is typically a letter+number code. Required. :vartype name: str - :ivar tier: The pricing tier for the instance. Known values are: "GeneralPurpose" and - "BusinessCritical". - :vartype tier: str or ~azure.mgmt.azurearcdata.models.SqlManagedInstanceSkuTier :ivar dev: Whether dev/test is enabled. When the dev field is set to true, the resource is used for dev/test purpose. :vartype dev: bool :ivar size: The SKU size. When the name field is the combination of tier and some other value, this would be the standalone code. :vartype size: str - :ivar family: The SKU family. + :ivar family: If the service has different generations of hardware, for the same SKU, then that + can be captured here. :vartype family: str - :ivar capacity: The SKU capacity. + :ivar capacity: If the SKU supports scale out/in then the capacity integer should be included. + If scale out/in is not possible for the resource this may be omitted. :vartype capacity: int + :ivar tier: This field is required to be implemented by the Resource Provider if the service + has more than one tier. Default value is "Hyperscale". + :vartype tier: str """ _validation = { - "name": {"required": True, "constant": True}, + "name": {"required": True}, } _attribute_map = { "name": {"key": "name", "type": "str"}, - "tier": {"key": "tier", "type": "str"}, "dev": {"key": "dev", "type": "bool"}, "size": {"key": "size", "type": "str"}, "family": {"key": "family", "type": "str"}, "capacity": {"key": "capacity", "type": "int"}, + "tier": {"key": "tier", "type": "str"}, } - name = "vCore" - def __init__( self, *, - tier: Union[str, "_models.SqlManagedInstanceSkuTier"] = "GeneralPurpose", + name: str, dev: bool = True, size: Optional[str] = None, family: Optional[str] = None, capacity: Optional[int] = None, - **kwargs - ): + tier: Literal["Hyperscale"] = "Hyperscale", + **kwargs: Any + ) -> None: """ - :keyword tier: The pricing tier for the instance. Known values are: "GeneralPurpose" and - "BusinessCritical". - :paramtype tier: str or ~azure.mgmt.azurearcdata.models.SqlManagedInstanceSkuTier + :keyword name: The name of the SKU. It is typically a letter+number code. Required. + :paramtype name: str :keyword dev: Whether dev/test is enabled. When the dev field is set to true, the resource is used for dev/test purpose. :paramtype dev: bool :keyword size: The SKU size. When the name field is the combination of tier and some other value, this would be the standalone code. :paramtype size: str - :keyword family: The SKU family. + :keyword family: If the service has different generations of hardware, for the same SKU, then + that can be captured here. :paramtype family: str - :keyword capacity: The SKU capacity. + :keyword capacity: If the SKU supports scale out/in then the capacity integer should be + included. If scale out/in is not possible for the resource this may be omitted. :paramtype capacity: int + :keyword tier: This field is required to be implemented by the Resource Provider if the service + has more than one tier. Default value is "Hyperscale". + :paramtype tier: str """ - super().__init__(**kwargs) + super().__init__(name=name, dev=dev, size=size, family=family, capacity=capacity, **kwargs) self.tier = tier - self.dev = dev - self.size = size - self.family = family - self.capacity = capacity -class SqlManagedInstanceUpdate(_serialization.Model): - """An update to a SQL Managed Instance. +class PostgresInstanceUpdate(_serialization.Model): + """An update to a Postgres Instance. + + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar properties: Postgres Instance properties. + :vartype properties: ~azure.mgmt.azurearcdata.models.PostgresInstanceProperties + """ + + _attribute_map = { + "tags": {"key": "tags", "type": "{str}"}, + "properties": {"key": "properties", "type": "PostgresInstanceProperties"}, + } + + def __init__( + self, + *, + tags: Optional[Dict[str, str]] = None, + properties: Optional["_models.PostgresInstanceProperties"] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword properties: Postgres Instance properties. + :paramtype properties: ~azure.mgmt.azurearcdata.models.PostgresInstanceProperties + """ + super().__init__(**kwargs) + self.tags = tags + self.properties = properties + + +class ResourceAutoGenerated(_serialization.Model): + """Common fields that are returned in the response for all Azure Resource Manager resources. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar id: Fully qualified resource ID for the resource. E.g. + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.id: Optional[str] = None + self.name: Optional[str] = None + self.type: Optional[str] = None + self.system_data: Optional["_models.SystemData"] = None + + +class SequencerAction(_serialization.Model): + """The sequencer action details. + + :ivar action_id: The unique identifier of the sequencer action. + :vartype action_id: str + :ivar state: The state of the sequencer action. Known values are: "NotStarted", + "WaitingPredecessors", "ExecutingAction", "CreatingSuccessors", and "Completed". + :vartype state: str or ~azure.mgmt.azurearcdata.models.SequencerState + :ivar result: The result of the sequencer action. Known values are: "NotCompleted", + "Succeeded", "Failed", "TimedOut", and "Skipped". + :vartype result: str or ~azure.mgmt.azurearcdata.models.Result + """ + + _attribute_map = { + "action_id": {"key": "actionId", "type": "str"}, + "state": {"key": "state", "type": "str"}, + "result": {"key": "result", "type": "str"}, + } + + def __init__( + self, + *, + action_id: Optional[str] = None, + state: Optional[Union[str, "_models.SequencerState"]] = None, + result: Optional[Union[str, "_models.Result"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword action_id: The unique identifier of the sequencer action. + :paramtype action_id: str + :keyword state: The state of the sequencer action. Known values are: "NotStarted", + "WaitingPredecessors", "ExecutingAction", "CreatingSuccessors", and "Completed". + :paramtype state: str or ~azure.mgmt.azurearcdata.models.SequencerState + :keyword result: The result of the sequencer action. Known values are: "NotCompleted", + "Succeeded", "Failed", "TimedOut", and "Skipped". + :paramtype result: str or ~azure.mgmt.azurearcdata.models.Result + """ + super().__init__(**kwargs) + self.action_id = action_id + self.state = state + self.result = result + + +class ServerAssessmentsItem(_serialization.Model): + """ServerAssessmentsItem. + + :ivar applies_to_migration_target_platform: + :vartype applies_to_migration_target_platform: str + :ivar feature_id: + :vartype feature_id: str + :ivar impacted_objects: + :vartype impacted_objects: + list[~azure.mgmt.azurearcdata.models.ServerAssessmentsPropertiesItemsItem] + :ivar issue_category: + :vartype issue_category: str + :ivar more_information: + :vartype more_information: str + """ + + _attribute_map = { + "applies_to_migration_target_platform": {"key": "appliesToMigrationTargetPlatform", "type": "str"}, + "feature_id": {"key": "featureId", "type": "str"}, + "impacted_objects": {"key": "impactedObjects", "type": "[ServerAssessmentsPropertiesItemsItem]"}, + "issue_category": {"key": "issueCategory", "type": "str"}, + "more_information": {"key": "moreInformation", "type": "str"}, + } + + def __init__( + self, + *, + applies_to_migration_target_platform: Optional[str] = None, + feature_id: Optional[str] = None, + impacted_objects: Optional[List["_models.ServerAssessmentsPropertiesItemsItem"]] = None, + issue_category: Optional[str] = None, + more_information: Optional[str] = None, + **kwargs: Any + ) -> None: + """ + :keyword applies_to_migration_target_platform: + :paramtype applies_to_migration_target_platform: str + :keyword feature_id: + :paramtype feature_id: str + :keyword impacted_objects: + :paramtype impacted_objects: + list[~azure.mgmt.azurearcdata.models.ServerAssessmentsPropertiesItemsItem] + :keyword issue_category: + :paramtype issue_category: str + :keyword more_information: + :paramtype more_information: str + """ + super().__init__(**kwargs) + self.applies_to_migration_target_platform = applies_to_migration_target_platform + self.feature_id = feature_id + self.impacted_objects = impacted_objects + self.issue_category = issue_category + self.more_information = more_information + + +class ServerAssessmentsPropertiesItemsItem(_serialization.Model): + """ServerAssessmentsPropertiesItemsItem. + + :ivar impact_detail: + :vartype impact_detail: str + :ivar name: + :vartype name: str + :ivar object_type: + :vartype object_type: str + """ + + _attribute_map = { + "impact_detail": {"key": "impactDetail", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "object_type": {"key": "objectType", "type": "str"}, + } + + def __init__( + self, + *, + impact_detail: Optional[str] = None, + name: Optional[str] = None, + object_type: Optional[str] = None, + **kwargs: Any + ) -> None: + """ + :keyword impact_detail: + :paramtype impact_detail: str + :keyword name: + :paramtype name: str + :keyword object_type: + :paramtype object_type: str + """ + super().__init__(**kwargs) + self.impact_detail = impact_detail + self.name = name + self.object_type = object_type + + +class SkuRecommendationResults(_serialization.Model): + """SKU Recommendation results for Azure migration targets for SQL Server. + + :ivar azure_sql_database: SKU Recommendation results for Azure SQL Database. + :vartype azure_sql_database: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlDatabase + :ivar azure_sql_managed_instance: SKU Recommendation results for Azure SQL Managed Instance. + :vartype azure_sql_managed_instance: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlManagedInstance + :ivar azure_sql_virtual_machine: SKU Recommendation results for Azure SQL Virtual Machine. + :vartype azure_sql_virtual_machine: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlVirtualMachine + """ + + _attribute_map = { + "azure_sql_database": {"key": "azureSqlDatabase", "type": "SkuRecommendationResultsAzureSqlDatabase"}, + "azure_sql_managed_instance": { + "key": "azureSqlManagedInstance", + "type": "SkuRecommendationResultsAzureSqlManagedInstance", + }, + "azure_sql_virtual_machine": { + "key": "azureSqlVirtualMachine", + "type": "SkuRecommendationResultsAzureSqlVirtualMachine", + }, + } + + def __init__( + self, + *, + azure_sql_database: Optional["_models.SkuRecommendationResultsAzureSqlDatabase"] = None, + azure_sql_managed_instance: Optional["_models.SkuRecommendationResultsAzureSqlManagedInstance"] = None, + azure_sql_virtual_machine: Optional["_models.SkuRecommendationResultsAzureSqlVirtualMachine"] = None, + **kwargs: Any + ) -> None: + """ + :keyword azure_sql_database: SKU Recommendation results for Azure SQL Database. + :paramtype azure_sql_database: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlDatabase + :keyword azure_sql_managed_instance: SKU Recommendation results for Azure SQL Managed Instance. + :paramtype azure_sql_managed_instance: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlManagedInstance + :keyword azure_sql_virtual_machine: SKU Recommendation results for Azure SQL Virtual Machine. + :paramtype azure_sql_virtual_machine: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlVirtualMachine + """ + super().__init__(**kwargs) + self.azure_sql_database = azure_sql_database + self.azure_sql_managed_instance = azure_sql_managed_instance + self.azure_sql_virtual_machine = azure_sql_virtual_machine + + +class SkuRecommendationResultsAzureSqlDatabase(_serialization.Model): + """SKU Recommendation results for Azure SQL Database. + + :ivar recommendation_status: The target recommendation Status for this database. Known values + are: "NotReady", "Ready", and "Unknown". + :vartype recommendation_status: str or ~azure.mgmt.azurearcdata.models.RecommendationStatus + :ivar number_of_server_blocker_issues: Number of blocker issues to fix before migrating to the + target platform. + :vartype number_of_server_blocker_issues: int + :ivar monthly_cost: The Monthly cost of the particular SKU. + :vartype monthly_cost: ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsMonthlyCost + :ivar target_sku: + :vartype target_sku: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlDatabaseTargetSku + """ + + _attribute_map = { + "recommendation_status": {"key": "recommendationStatus", "type": "str"}, + "number_of_server_blocker_issues": {"key": "numberOfServerBlockerIssues", "type": "int"}, + "monthly_cost": {"key": "monthlyCost", "type": "SkuRecommendationResultsMonthlyCost"}, + "target_sku": {"key": "targetSku", "type": "SkuRecommendationResultsAzureSqlDatabaseTargetSku"}, + } + + def __init__( + self, + *, + recommendation_status: Optional[Union[str, "_models.RecommendationStatus"]] = None, + number_of_server_blocker_issues: Optional[int] = None, + monthly_cost: Optional["_models.SkuRecommendationResultsMonthlyCost"] = None, + target_sku: Optional["_models.SkuRecommendationResultsAzureSqlDatabaseTargetSku"] = None, + **kwargs: Any + ) -> None: + """ + :keyword recommendation_status: The target recommendation Status for this database. Known + values are: "NotReady", "Ready", and "Unknown". + :paramtype recommendation_status: str or ~azure.mgmt.azurearcdata.models.RecommendationStatus + :keyword number_of_server_blocker_issues: Number of blocker issues to fix before migrating to + the target platform. + :paramtype number_of_server_blocker_issues: int + :keyword monthly_cost: The Monthly cost of the particular SKU. + :paramtype monthly_cost: ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsMonthlyCost + :keyword target_sku: + :paramtype target_sku: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlDatabaseTargetSku + """ + super().__init__(**kwargs) + self.recommendation_status = recommendation_status + self.number_of_server_blocker_issues = number_of_server_blocker_issues + self.monthly_cost = monthly_cost + self.target_sku = target_sku + + +class SkuRecommendationResultsAzureSqlDatabaseTargetSku(_serialization.Model): # pylint: disable=name-too-long + """SkuRecommendationResultsAzureSqlDatabaseTargetSku. + + :ivar category: + :vartype category: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlDatabaseTargetSkuCategory + """ + + _attribute_map = { + "category": {"key": "category", "type": "SkuRecommendationResultsAzureSqlDatabaseTargetSkuCategory"}, + } + + def __init__( + self, + *, + category: Optional["_models.SkuRecommendationResultsAzureSqlDatabaseTargetSkuCategory"] = None, + **kwargs: Any + ) -> None: + """ + :keyword category: + :paramtype category: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlDatabaseTargetSkuCategory + """ + super().__init__(**kwargs) + self.category = category + + +class SkuRecommendationResultsAzureSqlDatabaseTargetSkuCategory(_serialization.Model): # pylint: disable=name-too-long + """SkuRecommendationResultsAzureSqlDatabaseTargetSkuCategory. + + :ivar compute_tier: The compute tier of the target SKU. + :vartype compute_tier: str + :ivar hardware_type: The hardware type of the target SKU. + :vartype hardware_type: str + :ivar sql_purchasing_model: The SQL purchasing model of the target SKU. + :vartype sql_purchasing_model: str + :ivar sql_service_tier: The SQL service tier of the target SKU. + :vartype sql_service_tier: str + :ivar zone_redundancy_available: Indicates if zone redundancy is available for the target SKU. + :vartype zone_redundancy_available: bool + """ + + _attribute_map = { + "compute_tier": {"key": "computeTier", "type": "str"}, + "hardware_type": {"key": "hardwareType", "type": "str"}, + "sql_purchasing_model": {"key": "sqlPurchasingModel", "type": "str"}, + "sql_service_tier": {"key": "sqlServiceTier", "type": "str"}, + "zone_redundancy_available": {"key": "zoneRedundancyAvailable", "type": "bool"}, + } + + def __init__( + self, + *, + compute_tier: Optional[str] = None, + hardware_type: Optional[str] = None, + sql_purchasing_model: Optional[str] = None, + sql_service_tier: Optional[str] = None, + zone_redundancy_available: Optional[bool] = None, + **kwargs: Any + ) -> None: + """ + :keyword compute_tier: The compute tier of the target SKU. + :paramtype compute_tier: str + :keyword hardware_type: The hardware type of the target SKU. + :paramtype hardware_type: str + :keyword sql_purchasing_model: The SQL purchasing model of the target SKU. + :paramtype sql_purchasing_model: str + :keyword sql_service_tier: The SQL service tier of the target SKU. + :paramtype sql_service_tier: str + :keyword zone_redundancy_available: Indicates if zone redundancy is available for the target + SKU. + :paramtype zone_redundancy_available: bool + """ + super().__init__(**kwargs) + self.compute_tier = compute_tier + self.hardware_type = hardware_type + self.sql_purchasing_model = sql_purchasing_model + self.sql_service_tier = sql_service_tier + self.zone_redundancy_available = zone_redundancy_available + + +class SkuRecommendationResultsAzureSqlManagedInstance(_serialization.Model): # pylint: disable=name-too-long + """SKU Recommendation results for Azure SQL Managed Instance. + + :ivar recommendation_status: The target recommendation Status for this database. Known values + are: "NotReady", "Ready", and "Unknown". + :vartype recommendation_status: str or ~azure.mgmt.azurearcdata.models.RecommendationStatus + :ivar number_of_server_blocker_issues: Number of blocker issues to fix before migrating to the + target platform. + :vartype number_of_server_blocker_issues: int + :ivar monthly_cost: The Monthly cost of the particular SKU. + :vartype monthly_cost: ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsMonthlyCost + :ivar target_sku: + :vartype target_sku: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlManagedInstanceTargetSku + """ + + _attribute_map = { + "recommendation_status": {"key": "recommendationStatus", "type": "str"}, + "number_of_server_blocker_issues": {"key": "numberOfServerBlockerIssues", "type": "int"}, + "monthly_cost": {"key": "monthlyCost", "type": "SkuRecommendationResultsMonthlyCost"}, + "target_sku": {"key": "targetSku", "type": "SkuRecommendationResultsAzureSqlManagedInstanceTargetSku"}, + } + + def __init__( + self, + *, + recommendation_status: Optional[Union[str, "_models.RecommendationStatus"]] = None, + number_of_server_blocker_issues: Optional[int] = None, + monthly_cost: Optional["_models.SkuRecommendationResultsMonthlyCost"] = None, + target_sku: Optional["_models.SkuRecommendationResultsAzureSqlManagedInstanceTargetSku"] = None, + **kwargs: Any + ) -> None: + """ + :keyword recommendation_status: The target recommendation Status for this database. Known + values are: "NotReady", "Ready", and "Unknown". + :paramtype recommendation_status: str or ~azure.mgmt.azurearcdata.models.RecommendationStatus + :keyword number_of_server_blocker_issues: Number of blocker issues to fix before migrating to + the target platform. + :paramtype number_of_server_blocker_issues: int + :keyword monthly_cost: The Monthly cost of the particular SKU. + :paramtype monthly_cost: ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsMonthlyCost + :keyword target_sku: + :paramtype target_sku: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlManagedInstanceTargetSku + """ + super().__init__(**kwargs) + self.recommendation_status = recommendation_status + self.number_of_server_blocker_issues = number_of_server_blocker_issues + self.monthly_cost = monthly_cost + self.target_sku = target_sku + + +class SkuRecommendationResultsAzureSqlManagedInstanceTargetSku(_serialization.Model): # pylint: disable=name-too-long + """SkuRecommendationResultsAzureSqlManagedInstanceTargetSku. + + :ivar category: + :vartype category: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlManagedInstanceTargetSkuCategory + """ + + _attribute_map = { + "category": {"key": "category", "type": "SkuRecommendationResultsAzureSqlManagedInstanceTargetSkuCategory"}, + } + + def __init__( + self, + *, + category: Optional["_models.SkuRecommendationResultsAzureSqlManagedInstanceTargetSkuCategory"] = None, + **kwargs: Any + ) -> None: + """ + :keyword category: + :paramtype category: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlManagedInstanceTargetSkuCategory + """ + super().__init__(**kwargs) + self.category = category + + +class SkuRecommendationResultsAzureSqlManagedInstanceTargetSkuCategory( + _serialization.Model +): # pylint: disable=name-too-long + """SkuRecommendationResultsAzureSqlManagedInstanceTargetSkuCategory. + + :ivar compute_tier: The compute tier of the target SKU. + :vartype compute_tier: str + :ivar hardware_type: The hardware type of the target SKU. + :vartype hardware_type: str + :ivar sql_purchasing_model: The SQL purchasing model of the target SKU. + :vartype sql_purchasing_model: str + :ivar sql_service_tier: The SQL service tier of the target SKU. + :vartype sql_service_tier: str + :ivar zone_redundancy_available: Indicates if zone redundancy is available for the target SKU. + :vartype zone_redundancy_available: bool + """ + + _attribute_map = { + "compute_tier": {"key": "computeTier", "type": "str"}, + "hardware_type": {"key": "hardwareType", "type": "str"}, + "sql_purchasing_model": {"key": "sqlPurchasingModel", "type": "str"}, + "sql_service_tier": {"key": "sqlServiceTier", "type": "str"}, + "zone_redundancy_available": {"key": "zoneRedundancyAvailable", "type": "bool"}, + } + + def __init__( + self, + *, + compute_tier: Optional[str] = None, + hardware_type: Optional[str] = None, + sql_purchasing_model: Optional[str] = None, + sql_service_tier: Optional[str] = None, + zone_redundancy_available: Optional[bool] = None, + **kwargs: Any + ) -> None: + """ + :keyword compute_tier: The compute tier of the target SKU. + :paramtype compute_tier: str + :keyword hardware_type: The hardware type of the target SKU. + :paramtype hardware_type: str + :keyword sql_purchasing_model: The SQL purchasing model of the target SKU. + :paramtype sql_purchasing_model: str + :keyword sql_service_tier: The SQL service tier of the target SKU. + :paramtype sql_service_tier: str + :keyword zone_redundancy_available: Indicates if zone redundancy is available for the target + SKU. + :paramtype zone_redundancy_available: bool + """ + super().__init__(**kwargs) + self.compute_tier = compute_tier + self.hardware_type = hardware_type + self.sql_purchasing_model = sql_purchasing_model + self.sql_service_tier = sql_service_tier + self.zone_redundancy_available = zone_redundancy_available + + +class SkuRecommendationResultsAzureSqlVirtualMachine(_serialization.Model): # pylint: disable=name-too-long + """SKU Recommendation results for Azure SQL Virtual Machine. + + :ivar recommendation_status: The target recommendation Status for this database. Known values + are: "NotReady", "Ready", and "Unknown". + :vartype recommendation_status: str or ~azure.mgmt.azurearcdata.models.RecommendationStatus + :ivar number_of_server_blocker_issues: Number of blocker issues to fix before migrating to the + target platform. + :vartype number_of_server_blocker_issues: int + :ivar monthly_cost: The Monthly cost of the particular SKU. + :vartype monthly_cost: ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsMonthlyCost + :ivar target_sku: + :vartype target_sku: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlVirtualMachineTargetSku + """ + + _attribute_map = { + "recommendation_status": {"key": "recommendationStatus", "type": "str"}, + "number_of_server_blocker_issues": {"key": "numberOfServerBlockerIssues", "type": "int"}, + "monthly_cost": {"key": "monthlyCost", "type": "SkuRecommendationResultsMonthlyCost"}, + "target_sku": {"key": "targetSku", "type": "SkuRecommendationResultsAzureSqlVirtualMachineTargetSku"}, + } + + def __init__( + self, + *, + recommendation_status: Optional[Union[str, "_models.RecommendationStatus"]] = None, + number_of_server_blocker_issues: Optional[int] = None, + monthly_cost: Optional["_models.SkuRecommendationResultsMonthlyCost"] = None, + target_sku: Optional["_models.SkuRecommendationResultsAzureSqlVirtualMachineTargetSku"] = None, + **kwargs: Any + ) -> None: + """ + :keyword recommendation_status: The target recommendation Status for this database. Known + values are: "NotReady", "Ready", and "Unknown". + :paramtype recommendation_status: str or ~azure.mgmt.azurearcdata.models.RecommendationStatus + :keyword number_of_server_blocker_issues: Number of blocker issues to fix before migrating to + the target platform. + :paramtype number_of_server_blocker_issues: int + :keyword monthly_cost: The Monthly cost of the particular SKU. + :paramtype monthly_cost: ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsMonthlyCost + :keyword target_sku: + :paramtype target_sku: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlVirtualMachineTargetSku + """ + super().__init__(**kwargs) + self.recommendation_status = recommendation_status + self.number_of_server_blocker_issues = number_of_server_blocker_issues + self.monthly_cost = monthly_cost + self.target_sku = target_sku + + +class SkuRecommendationResultsAzureSqlVirtualMachineTargetSku(_serialization.Model): # pylint: disable=name-too-long + """SkuRecommendationResultsAzureSqlVirtualMachineTargetSku. + + :ivar category: + :vartype category: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlVirtualMachineTargetSkuCategory + """ + + _attribute_map = { + "category": {"key": "category", "type": "SkuRecommendationResultsAzureSqlVirtualMachineTargetSkuCategory"}, + } + + def __init__( + self, + *, + category: Optional["_models.SkuRecommendationResultsAzureSqlVirtualMachineTargetSkuCategory"] = None, + **kwargs: Any + ) -> None: + """ + :keyword category: + :paramtype category: + ~azure.mgmt.azurearcdata.models.SkuRecommendationResultsAzureSqlVirtualMachineTargetSkuCategory + """ + super().__init__(**kwargs) + self.category = category + + +class SkuRecommendationResultsAzureSqlVirtualMachineTargetSkuCategory( + _serialization.Model +): # pylint: disable=name-too-long + """SkuRecommendationResultsAzureSqlVirtualMachineTargetSkuCategory. + + :ivar available_vm_skus: Available VM SKUs for the Azure SQL Virtual Machine. + :vartype available_vm_skus: list[str] + :ivar virtual_machine_family: The virtual machine family of the target SKU. + :vartype virtual_machine_family: str + """ + + _attribute_map = { + "available_vm_skus": {"key": "availableVmSkus", "type": "[str]"}, + "virtual_machine_family": {"key": "virtualMachineFamily", "type": "str"}, + } + + def __init__( + self, + *, + available_vm_skus: Optional[List[str]] = None, + virtual_machine_family: Optional[str] = None, + **kwargs: Any + ) -> None: + """ + :keyword available_vm_skus: Available VM SKUs for the Azure SQL Virtual Machine. + :paramtype available_vm_skus: list[str] + :keyword virtual_machine_family: The virtual machine family of the target SKU. + :paramtype virtual_machine_family: str + """ + super().__init__(**kwargs) + self.available_vm_skus = available_vm_skus + self.virtual_machine_family = virtual_machine_family + + +class SkuRecommendationResultsMonthlyCost(_serialization.Model): + """The Monthly cost of the particular SKU. + + :ivar compute_cost: Represents the Cost of Compute. + :vartype compute_cost: float + :ivar storage_cost: Represents the Cost of Storage. + :vartype storage_cost: float + :ivar total_cost: Represents the Total Cost. + :vartype total_cost: float + """ + + _attribute_map = { + "compute_cost": {"key": "computeCost", "type": "float"}, + "storage_cost": {"key": "storageCost", "type": "float"}, + "total_cost": {"key": "totalCost", "type": "float"}, + } + + def __init__( + self, + *, + compute_cost: Optional[float] = None, + storage_cost: Optional[float] = None, + total_cost: Optional[float] = None, + **kwargs: Any + ) -> None: + """ + :keyword compute_cost: Represents the Cost of Compute. + :paramtype compute_cost: float + :keyword storage_cost: Represents the Cost of Storage. + :paramtype storage_cost: float + :keyword total_cost: Represents the Total Cost. + :paramtype total_cost: float + """ + super().__init__(**kwargs) + self.compute_cost = compute_cost + self.storage_cost = storage_cost + self.total_cost = total_cost + + +class SkuRecommendationSummary(_serialization.Model): + """The SKU recommendation summary. + + :ivar num_of_blocker_issues: Number of blocker issues to fix before migrating this database to + the target platform. + :vartype num_of_blocker_issues: int + :ivar recommendation_status: The target recommendation Status for this database. Known values + are: "NotReady", "Ready", and "Unknown". + :vartype recommendation_status: str or ~azure.mgmt.azurearcdata.models.RecommendationStatus + """ + + _attribute_map = { + "num_of_blocker_issues": {"key": "numOfBlockerIssues", "type": "int"}, + "recommendation_status": {"key": "recommendationStatus", "type": "str"}, + } + + def __init__( + self, + *, + num_of_blocker_issues: Optional[int] = None, + recommendation_status: Optional[Union[str, "_models.RecommendationStatus"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword num_of_blocker_issues: Number of blocker issues to fix before migrating this database + to the target platform. + :paramtype num_of_blocker_issues: int + :keyword recommendation_status: The target recommendation Status for this database. Known + values are: "NotReady", "Ready", and "Unknown". + :paramtype recommendation_status: str or ~azure.mgmt.azurearcdata.models.RecommendationStatus + """ + super().__init__(**kwargs) + self.num_of_blocker_issues = num_of_blocker_issues + self.recommendation_status = recommendation_status + + +class SqlAvailabilityGroupDatabaseReplicaResourceProperties(_serialization.Model): # pylint: disable=name-too-long + """The properties of Arc Sql availability group database replica resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar database_name: the database name. + :vartype database_name: str + :ivar replica_name: the database replica name. + :vartype replica_name: str + :ivar is_local: Whether the availability database is local. + :vartype is_local: bool + :ivar is_primary_replica: Returns 1 if the replica is primary, or 0 if it is a secondary + replica. + :vartype is_primary_replica: bool + :ivar synchronization_state_description: Description of the data-movement state. + :vartype synchronization_state_description: str + :ivar is_commit_participant: Whether this replica is transaction committer. + :vartype is_commit_participant: bool + :ivar synchronization_health_description: Description of the health of database. + :vartype synchronization_health_description: str + :ivar database_state_description: Description of the database state of the availability + replica. + :vartype database_state_description: str + :ivar is_suspended: Whether this data movement is suspended. + :vartype is_suspended: bool + :ivar suspend_reason_description: Description of the database suspended state reason. + :vartype suspend_reason_description: str + """ + + _validation = { + "replica_name": {"readonly": True}, + "is_local": {"readonly": True}, + "is_primary_replica": {"readonly": True}, + "synchronization_state_description": {"readonly": True}, + "is_commit_participant": {"readonly": True}, + "synchronization_health_description": {"readonly": True}, + "database_state_description": {"readonly": True}, + "is_suspended": {"readonly": True}, + "suspend_reason_description": {"readonly": True}, + } + + _attribute_map = { + "database_name": {"key": "databaseName", "type": "str"}, + "replica_name": {"key": "replicaName", "type": "str"}, + "is_local": {"key": "isLocal", "type": "bool"}, + "is_primary_replica": {"key": "isPrimaryReplica", "type": "bool"}, + "synchronization_state_description": {"key": "synchronizationStateDescription", "type": "str"}, + "is_commit_participant": {"key": "isCommitParticipant", "type": "bool"}, + "synchronization_health_description": {"key": "synchronizationHealthDescription", "type": "str"}, + "database_state_description": {"key": "databaseStateDescription", "type": "str"}, + "is_suspended": {"key": "isSuspended", "type": "bool"}, + "suspend_reason_description": {"key": "suspendReasonDescription", "type": "str"}, + } + + def __init__(self, *, database_name: Optional[str] = None, **kwargs: Any) -> None: + """ + :keyword database_name: the database name. + :paramtype database_name: str + """ + super().__init__(**kwargs) + self.database_name = database_name + self.replica_name: Optional[str] = None + self.is_local: Optional[bool] = None + self.is_primary_replica: Optional[bool] = None + self.synchronization_state_description: Optional[str] = None + self.is_commit_participant: Optional[bool] = None + self.synchronization_health_description: Optional[str] = None + self.database_state_description: Optional[str] = None + self.is_suspended: Optional[bool] = None + self.suspend_reason_description: Optional[str] = None + + +class SqlAvailabilityGroupDhcpListenerProperties(_serialization.Model): # pylint: disable=name-too-long + """The properties of a DHCP Arc Sql availability group listener. + + :ivar dns_name: the DNS name for the listener. + :vartype dns_name: str + :ivar subnet: The IPV4 subnet for the listener. + :vartype subnet: str + :ivar mask: The netmask for the listener. + :vartype mask: str + :ivar port: Network port for the listener. Default is 1433. + :vartype port: int + """ + + _attribute_map = { + "dns_name": {"key": "dnsName", "type": "str"}, + "subnet": {"key": "subnet", "type": "str"}, + "mask": {"key": "mask", "type": "str"}, + "port": {"key": "port", "type": "int"}, + } + + def __init__( + self, + *, + dns_name: Optional[str] = None, + subnet: Optional[str] = None, + mask: Optional[str] = None, + port: Optional[int] = None, + **kwargs: Any + ) -> None: + """ + :keyword dns_name: the DNS name for the listener. + :paramtype dns_name: str + :keyword subnet: The IPV4 subnet for the listener. + :paramtype subnet: str + :keyword mask: The netmask for the listener. + :paramtype mask: str + :keyword port: Network port for the listener. Default is 1433. + :paramtype port: int + """ + super().__init__(**kwargs) + self.dns_name = dns_name + self.subnet = subnet + self.mask = mask + self.port = port + + +class SqlAvailabilityGroupIpV4AddressesAndMasksPropertiesItem(_serialization.Model): # pylint: disable=name-too-long + """SqlAvailabilityGroupIpV4AddressesAndMasksPropertiesItem. + + :ivar ip_address: IPV4 address. + :vartype ip_address: str + :ivar mask: IPV4 netmask. + :vartype mask: str + """ + + _attribute_map = { + "ip_address": {"key": "ipAddress", "type": "str"}, + "mask": {"key": "mask", "type": "str"}, + } + + def __init__(self, *, ip_address: Optional[str] = None, mask: Optional[str] = None, **kwargs: Any) -> None: + """ + :keyword ip_address: IPV4 address. + :paramtype ip_address: str + :keyword mask: IPV4 netmask. + :paramtype mask: str + """ + super().__init__(**kwargs) + self.ip_address = ip_address + self.mask = mask + + +class SqlAvailabilityGroupReplicaResourceProperties(_serialization.Model): # pylint: disable=name-too-long + """The properties of Arc Sql availability group replica resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar replica_id: ID GUID of the availability group. + :vartype replica_id: str + :ivar replica_name: The replica name. + :vartype replica_name: str + :ivar replica_resource_id: Resource id of this replica. This is required for a distributed + availability group, in which case it describes the location of the availability group that + hosts one replica in the DAG. In a non-distributed availability group this field is optional + but can be used to store the Azure resource id for AG. + :vartype replica_resource_id: str + :ivar configure: null. + :vartype configure: ~azure.mgmt.azurearcdata.models.AvailabilityGroupConfigure + :ivar state: null. + :vartype state: ~azure.mgmt.azurearcdata.models.AvailabilityGroupState + """ + + _validation = { + "replica_id": {"readonly": True, "pattern": r"^[A-Za-z0-9]{8}-([A-Za-z0-9]{4}-){3}[A-Za-z0-9]{12}$"}, + } + + _attribute_map = { + "replica_id": {"key": "replicaId", "type": "str"}, + "replica_name": {"key": "replicaName", "type": "str"}, + "replica_resource_id": {"key": "replicaResourceId", "type": "str"}, + "configure": {"key": "configure", "type": "AvailabilityGroupConfigure"}, + "state": {"key": "state", "type": "AvailabilityGroupState"}, + } + + def __init__( + self, + *, + replica_name: Optional[str] = None, + replica_resource_id: Optional[str] = None, + configure: Optional["_models.AvailabilityGroupConfigure"] = None, + state: Optional["_models.AvailabilityGroupState"] = None, + **kwargs: Any + ) -> None: + """ + :keyword replica_name: The replica name. + :paramtype replica_name: str + :keyword replica_resource_id: Resource id of this replica. This is required for a distributed + availability group, in which case it describes the location of the availability group that + hosts one replica in the DAG. In a non-distributed availability group this field is optional + but can be used to store the Azure resource id for AG. + :paramtype replica_resource_id: str + :keyword configure: null. + :paramtype configure: ~azure.mgmt.azurearcdata.models.AvailabilityGroupConfigure + :keyword state: null. + :paramtype state: ~azure.mgmt.azurearcdata.models.AvailabilityGroupState + """ + super().__init__(**kwargs) + self.replica_id: Optional[str] = None + self.replica_name = replica_name + self.replica_resource_id = replica_resource_id + self.configure = configure + self.state = state + + +class SqlAvailabilityGroupStaticIPListenerProperties(_serialization.Model): # pylint: disable=name-too-long + """The properties of a static IP Arc Sql availability group listener. + + :ivar dns_name: the DNS name for the listener. + :vartype dns_name: str + :ivar ip_v4_addresses_and_masks: IP V4 Addresses and masks for the listener. + :vartype ip_v4_addresses_and_masks: + list[~azure.mgmt.azurearcdata.models.SqlAvailabilityGroupIpV4AddressesAndMasksPropertiesItem] + :ivar ip_v6_addresses: IP V6 Addresses for the listener. + :vartype ip_v6_addresses: list[str] + :ivar port: Network port for the listener. Default is 1433. + :vartype port: int + """ + + _attribute_map = { + "dns_name": {"key": "dnsName", "type": "str"}, + "ip_v4_addresses_and_masks": { + "key": "ipV4AddressesAndMasks", + "type": "[SqlAvailabilityGroupIpV4AddressesAndMasksPropertiesItem]", + }, + "ip_v6_addresses": {"key": "ipV6Addresses", "type": "[str]"}, + "port": {"key": "port", "type": "int"}, + } + + def __init__( + self, + *, + dns_name: Optional[str] = None, + ip_v4_addresses_and_masks: Optional[ + List["_models.SqlAvailabilityGroupIpV4AddressesAndMasksPropertiesItem"] + ] = None, + ip_v6_addresses: Optional[List[str]] = None, + port: Optional[int] = None, + **kwargs: Any + ) -> None: + """ + :keyword dns_name: the DNS name for the listener. + :paramtype dns_name: str + :keyword ip_v4_addresses_and_masks: IP V4 Addresses and masks for the listener. + :paramtype ip_v4_addresses_and_masks: + list[~azure.mgmt.azurearcdata.models.SqlAvailabilityGroupIpV4AddressesAndMasksPropertiesItem] + :keyword ip_v6_addresses: IP V6 Addresses for the listener. + :paramtype ip_v6_addresses: list[str] + :keyword port: Network port for the listener. Default is 1433. + :paramtype port: int + """ + super().__init__(**kwargs) + self.dns_name = dns_name + self.ip_v4_addresses_and_masks = ip_v4_addresses_and_masks + self.ip_v6_addresses = ip_v6_addresses + self.port = port + + +class SqlManagedInstance(TrackedResource): + """A SqlManagedInstance. + + 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 server. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar location: The geo-location where the resource lives. Required. + :vartype location: str + :ivar properties: null. Required. + :vartype properties: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceProperties + :ivar extended_location: The extendedLocation of the resource. + :vartype extended_location: ~azure.mgmt.azurearcdata.models.ExtendedLocation + :ivar sku: Resource sku. + :vartype sku: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceSku + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + "location": {"required": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "tags": {"key": "tags", "type": "{str}"}, + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "SqlManagedInstanceProperties"}, + "extended_location": {"key": "extendedLocation", "type": "ExtendedLocation"}, + "sku": {"key": "sku", "type": "SqlManagedInstanceSku"}, + } + + def __init__( + self, + *, + location: str, + properties: "_models.SqlManagedInstanceProperties", + tags: Optional[Dict[str, str]] = None, + extended_location: Optional["_models.ExtendedLocation"] = None, + sku: Optional["_models.SqlManagedInstanceSku"] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword location: The geo-location where the resource lives. Required. + :paramtype location: str + :keyword properties: null. Required. + :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceProperties + :keyword extended_location: The extendedLocation of the resource. + :paramtype extended_location: ~azure.mgmt.azurearcdata.models.ExtendedLocation + :keyword sku: Resource sku. + :paramtype sku: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceSku + """ + super().__init__(tags=tags, location=location, **kwargs) + self.properties = properties + self.extended_location = extended_location + self.sku = sku + + +class SqlManagedInstanceK8SRaw(_serialization.Model): + """The raw kubernetes information. + + :ivar additional_properties: Unmatched properties from the message are deserialized to this + collection. + :vartype additional_properties: dict[str, any] + :ivar spec: The kubernetes spec information. + :vartype spec: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceK8SSpec + """ + + _attribute_map = { + "additional_properties": {"key": "", "type": "{object}"}, + "spec": {"key": "spec", "type": "SqlManagedInstanceK8SSpec"}, + } + + def __init__( + self, + *, + additional_properties: Optional[Dict[str, Any]] = None, + spec: Optional["_models.SqlManagedInstanceK8SSpec"] = None, + **kwargs: Any + ) -> None: + """ + :keyword additional_properties: Unmatched properties from the message are deserialized to this + collection. + :paramtype additional_properties: dict[str, any] + :keyword spec: The kubernetes spec information. + :paramtype spec: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceK8SSpec + """ + super().__init__(**kwargs) + self.additional_properties = additional_properties + self.spec = spec + + +class SqlManagedInstanceK8SSpec(_serialization.Model): + """The kubernetes spec information. + + :ivar additional_properties: Unmatched properties from the message are deserialized to this + collection. + :vartype additional_properties: dict[str, any] + :ivar scheduling: The kubernetes scheduling information. + :vartype scheduling: ~azure.mgmt.azurearcdata.models.K8SScheduling + :ivar replicas: This option specifies the number of SQL Managed Instance replicas that will be + deployed in your Kubernetes cluster for high availability purposes. If sku.tier is + BusinessCritical, allowed values are '2' or '3' with default of '3'. If sku.tier is + GeneralPurpose, replicas must be '1'. + :vartype replicas: int + :ivar security: The kubernetes security information. + :vartype security: ~azure.mgmt.azurearcdata.models.K8SSecurity + :ivar settings: The kubernetes settings information. + :vartype settings: ~azure.mgmt.azurearcdata.models.K8SSettings + """ + + _attribute_map = { + "additional_properties": {"key": "", "type": "{object}"}, + "scheduling": {"key": "scheduling", "type": "K8SScheduling"}, + "replicas": {"key": "replicas", "type": "int"}, + "security": {"key": "security", "type": "K8SSecurity"}, + "settings": {"key": "settings", "type": "K8SSettings"}, + } + + def __init__( + self, + *, + additional_properties: Optional[Dict[str, Any]] = None, + scheduling: Optional["_models.K8SScheduling"] = None, + replicas: Optional[int] = None, + security: Optional["_models.K8SSecurity"] = None, + settings: Optional["_models.K8SSettings"] = None, + **kwargs: Any + ) -> None: + """ + :keyword additional_properties: Unmatched properties from the message are deserialized to this + collection. + :paramtype additional_properties: dict[str, any] + :keyword scheduling: The kubernetes scheduling information. + :paramtype scheduling: ~azure.mgmt.azurearcdata.models.K8SScheduling + :keyword replicas: This option specifies the number of SQL Managed Instance replicas that will + be deployed in your Kubernetes cluster for high availability purposes. If sku.tier is + BusinessCritical, allowed values are '2' or '3' with default of '3'. If sku.tier is + GeneralPurpose, replicas must be '1'. + :paramtype replicas: int + :keyword security: The kubernetes security information. + :paramtype security: ~azure.mgmt.azurearcdata.models.K8SSecurity + :keyword settings: The kubernetes settings information. + :paramtype settings: ~azure.mgmt.azurearcdata.models.K8SSettings + """ + super().__init__(**kwargs) + self.additional_properties = additional_properties + self.scheduling = scheduling + self.replicas = replicas + self.security = security + self.settings = settings + + +class SqlManagedInstanceListResult(_serialization.Model): + """A list of SqlManagedInstance. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Array of results. + :vartype value: list[~azure.mgmt.azurearcdata.models.SqlManagedInstance] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ + + _validation = { + "value": {"readonly": True}, + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[SqlManagedInstance]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.value: Optional[List["_models.SqlManagedInstance"]] = None + self.next_link: Optional[str] = None + + +class SqlManagedInstanceProperties(_serialization.Model): + """Properties of sqlManagedInstance. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar data_controller_id: null. + :vartype data_controller_id: str + :ivar admin: The instance admin user. + :vartype admin: str + :ivar start_time: The instance start time. + :vartype start_time: str + :ivar end_time: The instance end time. + :vartype end_time: str + :ivar k8_s_raw: The raw kubernetes information. + :vartype k8_s_raw: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceK8SRaw + :ivar basic_login_information: Username and password for basic authentication. + :vartype basic_login_information: ~azure.mgmt.azurearcdata.models.BasicLoginInformation + :ivar last_uploaded_date: Last uploaded date from Kubernetes cluster. Defaults to current date + time. + :vartype last_uploaded_date: ~datetime.datetime + :ivar provisioning_state: The provisioning state of the Arc-enabled SQL Managed Instance + resource. + :vartype provisioning_state: str + :ivar active_directory_information: Active Directory information related to this SQL Managed + Instance. + :vartype active_directory_information: + ~azure.mgmt.azurearcdata.models.ActiveDirectoryInformation + :ivar license_type: The license type to apply for this managed instance. Known values are: + "BasePrice", "LicenseIncluded", and "DisasterRecovery". + :vartype license_type: str or ~azure.mgmt.azurearcdata.models.ArcSqlManagedInstanceLicenseType + :ivar cluster_id: If a CustomLocation is provided, this contains the ARM id of the connected + cluster the custom location belongs to. + :vartype cluster_id: str + :ivar extension_id: If a CustomLocation is provided, this contains the ARM id of the extension + the custom location belongs to. + :vartype extension_id: str + """ + + _validation = { + "provisioning_state": {"readonly": True}, + } + + _attribute_map = { + "data_controller_id": {"key": "dataControllerId", "type": "str"}, + "admin": {"key": "admin", "type": "str"}, + "start_time": {"key": "startTime", "type": "str"}, + "end_time": {"key": "endTime", "type": "str"}, + "k8_s_raw": {"key": "k8sRaw", "type": "SqlManagedInstanceK8SRaw"}, + "basic_login_information": {"key": "basicLoginInformation", "type": "BasicLoginInformation"}, + "last_uploaded_date": {"key": "lastUploadedDate", "type": "iso-8601"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "active_directory_information": {"key": "activeDirectoryInformation", "type": "ActiveDirectoryInformation"}, + "license_type": {"key": "licenseType", "type": "str"}, + "cluster_id": {"key": "clusterId", "type": "str"}, + "extension_id": {"key": "extensionId", "type": "str"}, + } + + def __init__( + self, + *, + data_controller_id: Optional[str] = None, + admin: Optional[str] = None, + start_time: Optional[str] = None, + end_time: Optional[str] = None, + k8_s_raw: Optional["_models.SqlManagedInstanceK8SRaw"] = None, + basic_login_information: Optional["_models.BasicLoginInformation"] = None, + last_uploaded_date: Optional[datetime.datetime] = None, + active_directory_information: Optional["_models.ActiveDirectoryInformation"] = None, + license_type: Union[str, "_models.ArcSqlManagedInstanceLicenseType"] = "BasePrice", + cluster_id: Optional[str] = None, + extension_id: Optional[str] = None, + **kwargs: Any + ) -> None: + """ + :keyword data_controller_id: null. + :paramtype data_controller_id: str + :keyword admin: The instance admin user. + :paramtype admin: str + :keyword start_time: The instance start time. + :paramtype start_time: str + :keyword end_time: The instance end time. + :paramtype end_time: str + :keyword k8_s_raw: The raw kubernetes information. + :paramtype k8_s_raw: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceK8SRaw + :keyword basic_login_information: Username and password for basic authentication. + :paramtype basic_login_information: ~azure.mgmt.azurearcdata.models.BasicLoginInformation + :keyword last_uploaded_date: Last uploaded date from Kubernetes cluster. Defaults to current + date time. + :paramtype last_uploaded_date: ~datetime.datetime + :keyword active_directory_information: Active Directory information related to this SQL Managed + Instance. + :paramtype active_directory_information: + ~azure.mgmt.azurearcdata.models.ActiveDirectoryInformation + :keyword license_type: The license type to apply for this managed instance. Known values are: + "BasePrice", "LicenseIncluded", and "DisasterRecovery". + :paramtype license_type: str or + ~azure.mgmt.azurearcdata.models.ArcSqlManagedInstanceLicenseType + :keyword cluster_id: If a CustomLocation is provided, this contains the ARM id of the connected + cluster the custom location belongs to. + :paramtype cluster_id: str + :keyword extension_id: If a CustomLocation is provided, this contains the ARM id of the + extension the custom location belongs to. + :paramtype extension_id: str + """ + super().__init__(**kwargs) + self.data_controller_id = data_controller_id + self.admin = admin + self.start_time = start_time + self.end_time = end_time + self.k8_s_raw = k8_s_raw + self.basic_login_information = basic_login_information + self.last_uploaded_date = last_uploaded_date + self.provisioning_state: Optional[str] = None + self.active_directory_information = active_directory_information + self.license_type = license_type + self.cluster_id = cluster_id + self.extension_id = extension_id + + +class SqlManagedInstanceSku(_serialization.Model): + """The resource model definition representing SKU for Azure Managed Instance - Azure Arc. + + 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 server. + + :ivar name: The name of the SKU. Required. Default value is "vCore". + :vartype name: str + :ivar tier: The pricing tier for the instance. Known values are: "GeneralPurpose" and + "BusinessCritical". + :vartype tier: str or ~azure.mgmt.azurearcdata.models.SqlManagedInstanceSkuTier + :ivar dev: Whether dev/test is enabled. When the dev field is set to true, the resource is used + for dev/test purpose. + :vartype dev: bool + :ivar size: The SKU size. When the name field is the combination of tier and some other value, + this would be the standalone code. + :vartype size: str + :ivar family: The SKU family. + :vartype family: str + :ivar capacity: The SKU capacity. + :vartype capacity: int + """ + + _validation = { + "name": {"required": True, "constant": True}, + } + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "tier": {"key": "tier", "type": "str"}, + "dev": {"key": "dev", "type": "bool"}, + "size": {"key": "size", "type": "str"}, + "family": {"key": "family", "type": "str"}, + "capacity": {"key": "capacity", "type": "int"}, + } + + name = "vCore" + + def __init__( + self, + *, + tier: Union[str, "_models.SqlManagedInstanceSkuTier"] = "GeneralPurpose", + dev: bool = True, + size: Optional[str] = None, + family: Optional[str] = None, + capacity: Optional[int] = None, + **kwargs: Any + ) -> None: + """ + :keyword tier: The pricing tier for the instance. Known values are: "GeneralPurpose" and + "BusinessCritical". + :paramtype tier: str or ~azure.mgmt.azurearcdata.models.SqlManagedInstanceSkuTier + :keyword dev: Whether dev/test is enabled. When the dev field is set to true, the resource is + used for dev/test purpose. + :paramtype dev: bool + :keyword size: The SKU size. When the name field is the combination of tier and some other + value, this would be the standalone code. + :paramtype size: str + :keyword family: The SKU family. + :paramtype family: str + :keyword capacity: The SKU capacity. + :paramtype capacity: int + """ + super().__init__(**kwargs) + self.tier = tier + self.dev = dev + self.size = size + self.family = family + self.capacity = capacity + + +class SqlManagedInstanceUpdate(_serialization.Model): + """An update to a SQL Managed Instance. + + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + """ + + _attribute_map = { + "tags": {"key": "tags", "type": "{str}"}, + } + + def __init__(self, *, tags: Optional[Dict[str, str]] = None, **kwargs: Any) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + """ + super().__init__(**kwargs) + self.tags = tags + + +class SqlServerAvailabilityGroupResource(TrackedResource): + """Arc Sql Server Availability Group. + + 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 server. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar location: The geo-location where the resource lives. Required. + :vartype location: str + :ivar properties: Properties of Arc Sql Server availability group. Required. + :vartype properties: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResourceProperties + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + "location": {"required": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "tags": {"key": "tags", "type": "{str}"}, + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "SqlServerAvailabilityGroupResourceProperties"}, + } + + def __init__( + self, + *, + location: str, + properties: "_models.SqlServerAvailabilityGroupResourceProperties", + tags: Optional[Dict[str, str]] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword location: The geo-location where the resource lives. Required. + :paramtype location: str + :keyword properties: Properties of Arc Sql Server availability group. Required. + :paramtype properties: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResourceProperties + """ + super().__init__(tags=tags, location=location, **kwargs) + self.properties = properties + + +class SqlServerAvailabilityGroupResourceProperties(_serialization.Model): # pylint: disable=name-too-long + """The properties of Arc Sql Server availability group resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar availability_group_id: ID GUID of the availability group. + :vartype availability_group_id: str + :ivar server_name: the SQL server name. + :vartype server_name: str + :ivar instance_name: the SQL Server Instance name. + :vartype instance_name: str + :ivar vm_id: The unique ID of the hybrid machine that this resource belongs to. + :vartype vm_id: str + :ivar collection_timestamp: Timestamp for when the data was collected from the client machine. + :vartype collection_timestamp: ~datetime.datetime + :ivar info: Availability Group Info. + :vartype info: ~azure.mgmt.azurearcdata.models.AvailabilityGroupInfo + :ivar replicas: A list of Availability Group Replicas. + :vartype replicas: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResourcePropertiesReplicas + :ivar databases: A list of Availability Group Database Replicas. + :vartype databases: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResourcePropertiesDatabases + :ivar provisioning_state: The provisioning state of the Arc-enabled SQL Server availability + group resource. + :vartype provisioning_state: str + """ + + _validation = { + "availability_group_id": {"readonly": True, "pattern": r"^[A-Za-z0-9]{8}-([A-Za-z0-9]{4}-){3}[A-Za-z0-9]{12}$"}, + "server_name": {"readonly": True}, + "instance_name": {"readonly": True}, + "vm_id": {"readonly": True}, + "collection_timestamp": {"readonly": True}, + "provisioning_state": {"readonly": True}, + } + + _attribute_map = { + "availability_group_id": {"key": "availabilityGroupId", "type": "str"}, + "server_name": {"key": "serverName", "type": "str"}, + "instance_name": {"key": "instanceName", "type": "str"}, + "vm_id": {"key": "vmId", "type": "str"}, + "collection_timestamp": {"key": "collectionTimestamp", "type": "iso-8601"}, + "info": {"key": "info", "type": "AvailabilityGroupInfo"}, + "replicas": {"key": "replicas", "type": "SqlServerAvailabilityGroupResourcePropertiesReplicas"}, + "databases": {"key": "databases", "type": "SqlServerAvailabilityGroupResourcePropertiesDatabases"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + } + + def __init__( + self, + *, + info: Optional["_models.AvailabilityGroupInfo"] = None, + replicas: Optional["_models.SqlServerAvailabilityGroupResourcePropertiesReplicas"] = None, + databases: Optional["_models.SqlServerAvailabilityGroupResourcePropertiesDatabases"] = None, + **kwargs: Any + ) -> None: + """ + :keyword info: Availability Group Info. + :paramtype info: ~azure.mgmt.azurearcdata.models.AvailabilityGroupInfo + :keyword replicas: A list of Availability Group Replicas. + :paramtype replicas: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResourcePropertiesReplicas + :keyword databases: A list of Availability Group Database Replicas. + :paramtype databases: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResourcePropertiesDatabases + """ + super().__init__(**kwargs) + self.availability_group_id: Optional[str] = None + self.server_name: Optional[str] = None + self.instance_name: Optional[str] = None + self.vm_id: Optional[str] = None + self.collection_timestamp: Optional[datetime.datetime] = None + self.info = info + self.replicas = replicas + self.databases = databases + self.provisioning_state: Optional[str] = None + + +class SqlServerAvailabilityGroupResourcePropertiesDatabases(_serialization.Model): # pylint: disable=name-too-long + """A list of Availability Group Database Replicas. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Array of Availability Group Database Replicas. + :vartype value: + list[~azure.mgmt.azurearcdata.models.SqlAvailabilityGroupDatabaseReplicaResourceProperties] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[SqlAvailabilityGroupDatabaseReplicaResourceProperties]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__( + self, + *, + value: Optional[List["_models.SqlAvailabilityGroupDatabaseReplicaResourceProperties"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword value: Array of Availability Group Database Replicas. + :paramtype value: + list[~azure.mgmt.azurearcdata.models.SqlAvailabilityGroupDatabaseReplicaResourceProperties] + """ + super().__init__(**kwargs) + self.value = value + self.next_link: Optional[str] = None + + +class SqlServerAvailabilityGroupResourcePropertiesReplicas(_serialization.Model): # pylint: disable=name-too-long + """A list of Availability Group Replicas. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Array of Availability Group Replicas. + :vartype value: + list[~azure.mgmt.azurearcdata.models.SqlAvailabilityGroupReplicaResourceProperties] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ + + _validation = { + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[SqlAvailabilityGroupReplicaResourceProperties]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__( + self, *, value: Optional[List["_models.SqlAvailabilityGroupReplicaResourceProperties"]] = None, **kwargs: Any + ) -> None: + """ + :keyword value: Array of Availability Group Replicas. + :paramtype value: + list[~azure.mgmt.azurearcdata.models.SqlAvailabilityGroupReplicaResourceProperties] + """ + super().__init__(**kwargs) + self.value = value + self.next_link: Optional[str] = None + + +class SqlServerAvailabilityGroupUpdate(_serialization.Model): + """An update to availability group resource. + + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar properties: The Server Availability Group's properties. + :vartype properties: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResourceProperties + """ + + _attribute_map = { + "tags": {"key": "tags", "type": "{str}"}, + "properties": {"key": "properties", "type": "SqlServerAvailabilityGroupResourceProperties"}, + } + + def __init__( + self, + *, + tags: Optional[Dict[str, str]] = None, + properties: Optional["_models.SqlServerAvailabilityGroupResourceProperties"] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword properties: The Server Availability Group's properties. + :paramtype properties: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResourceProperties + """ + super().__init__(**kwargs) + self.tags = tags + self.properties = properties + + +class SqlServerDatabaseResource(TrackedResource): + """Arc Sql Server database. + + 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 server. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar location: The geo-location where the resource lives. Required. + :vartype location: str + :ivar properties: Properties of Arc Sql Server database. Required. + :vartype properties: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResourceProperties + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + "location": {"required": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "tags": {"key": "tags", "type": "{str}"}, + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "SqlServerDatabaseResourceProperties"}, + } + + def __init__( + self, + *, + location: str, + properties: "_models.SqlServerDatabaseResourceProperties", + tags: Optional[Dict[str, str]] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword location: The geo-location where the resource lives. Required. + :paramtype location: str + :keyword properties: Properties of Arc Sql Server database. Required. + :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResourceProperties + """ + super().__init__(tags=tags, location=location, **kwargs) + self.properties = properties + + +class SqlServerDatabaseResourceProperties(_serialization.Model): + """The properties of Arc Sql Server database resource. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar collation_name: Collation of the database. + :vartype collation_name: str + :ivar database_creation_date: Creation date of the database. + :vartype database_creation_date: ~datetime.datetime + :ivar compatibility_level: Compatibility level of the database. + :vartype compatibility_level: int + :ivar size_mb: Size of the database. + :vartype size_mb: float + :ivar log_file_size_mb: Total size in MB for the log (ldf) files for this database. + :vartype log_file_size_mb: float + :ivar data_file_size_mb: Total size in MB for the data (mdf and ndf) files for this database. + :vartype data_file_size_mb: float + :ivar space_available_mb: Space left of the database. + :vartype space_available_mb: float + :ivar state: State of the database. Known values are: "Online", "Restoring", "Recovering", + "RecoveryPending", "Suspect", "Emergency", "Offline", "Copying", and "OfflineSecondary". + :vartype state: str or ~azure.mgmt.azurearcdata.models.DatabaseState + :ivar is_read_only: Whether the database is read only or not. + :vartype is_read_only: bool + :ivar recovery_mode: Status of the database. Known values are: "Full", "Bulk-logged", and + "Simple". + :vartype recovery_mode: str or ~azure.mgmt.azurearcdata.models.RecoveryMode + :ivar database_options: List of features that are enabled for the database. + :vartype database_options: + ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResourcePropertiesDatabaseOptions + :ivar backup_information: + :vartype backup_information: + ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResourcePropertiesBackupInformation + :ivar backup_policy: The backup profile for the SQL server. + :vartype backup_policy: ~azure.mgmt.azurearcdata.models.BackupPolicy + :ivar earliest_restore_date: This records the earliest start date and time that restore is + available for this database (ISO8601 format). + :vartype earliest_restore_date: ~datetime.datetime + :ivar create_mode: Database create mode. PointInTimeRestore: Create a database by restoring a + point in time backup of an existing database. sourceDatabaseId and restorePointInTime must be + specified. Known values are: "Default" and "PointInTimeRestore". + :vartype create_mode: str or ~azure.mgmt.azurearcdata.models.DatabaseCreateMode + :ivar source_database_id: The name of the source database associated with create operation of + this database. + :vartype source_database_id: str + :ivar vm_id: The unique ID of the hybrid machine that this resource belongs to. + :vartype vm_id: str + :ivar restore_point_in_time: Conditional. If createMode is PointInTimeRestore, this value is + required. Specifies the point in time (ISO8601 format) of the source database that will be + restored to create the new database. + :vartype restore_point_in_time: ~datetime.datetime + :ivar provisioning_state: The provisioning state of the Arc-enabled SQL Server database + resource. + :vartype provisioning_state: str + :ivar last_database_upload_time: The time when last successful database upload was performed. + :vartype last_database_upload_time: ~datetime.datetime + :ivar migration: Migration related configuration. + :vartype migration: ~azure.mgmt.azurearcdata.models.DataBaseMigration + """ + + _validation = { + "compatibility_level": {"maximum": 200, "minimum": 80}, + "earliest_restore_date": {"readonly": True}, + "vm_id": {"readonly": True}, + "provisioning_state": {"readonly": True}, + "last_database_upload_time": {"readonly": True}, + } + + _attribute_map = { + "collation_name": {"key": "collationName", "type": "str"}, + "database_creation_date": {"key": "databaseCreationDate", "type": "iso-8601"}, + "compatibility_level": {"key": "compatibilityLevel", "type": "int"}, + "size_mb": {"key": "sizeMB", "type": "float"}, + "log_file_size_mb": {"key": "logFileSizeMB", "type": "float"}, + "data_file_size_mb": {"key": "dataFileSizeMB", "type": "float"}, + "space_available_mb": {"key": "spaceAvailableMB", "type": "float"}, + "state": {"key": "state", "type": "str"}, + "is_read_only": {"key": "isReadOnly", "type": "bool"}, + "recovery_mode": {"key": "recoveryMode", "type": "str"}, + "database_options": {"key": "databaseOptions", "type": "SqlServerDatabaseResourcePropertiesDatabaseOptions"}, + "backup_information": { + "key": "backupInformation", + "type": "SqlServerDatabaseResourcePropertiesBackupInformation", + }, + "backup_policy": {"key": "backupPolicy", "type": "BackupPolicy"}, + "earliest_restore_date": {"key": "earliestRestoreDate", "type": "iso-8601"}, + "create_mode": {"key": "createMode", "type": "str"}, + "source_database_id": {"key": "sourceDatabaseId", "type": "str"}, + "vm_id": {"key": "vmId", "type": "str"}, + "restore_point_in_time": {"key": "restorePointInTime", "type": "iso-8601"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "last_database_upload_time": {"key": "lastDatabaseUploadTime", "type": "iso-8601"}, + "migration": {"key": "migration", "type": "DataBaseMigration"}, + } + + def __init__( + self, + *, + collation_name: Optional[str] = None, + database_creation_date: Optional[datetime.datetime] = None, + compatibility_level: Optional[int] = None, + size_mb: Optional[float] = None, + log_file_size_mb: Optional[float] = None, + data_file_size_mb: Optional[float] = None, + space_available_mb: Optional[float] = None, + state: Optional[Union[str, "_models.DatabaseState"]] = None, + is_read_only: Optional[bool] = None, + recovery_mode: Optional[Union[str, "_models.RecoveryMode"]] = None, + database_options: Optional["_models.SqlServerDatabaseResourcePropertiesDatabaseOptions"] = None, + backup_information: Optional["_models.SqlServerDatabaseResourcePropertiesBackupInformation"] = None, + backup_policy: Optional["_models.BackupPolicy"] = None, + create_mode: Optional[Union[str, "_models.DatabaseCreateMode"]] = None, + source_database_id: Optional[str] = None, + restore_point_in_time: Optional[datetime.datetime] = None, + migration: Optional["_models.DataBaseMigration"] = None, + **kwargs: Any + ) -> None: + """ + :keyword collation_name: Collation of the database. + :paramtype collation_name: str + :keyword database_creation_date: Creation date of the database. + :paramtype database_creation_date: ~datetime.datetime + :keyword compatibility_level: Compatibility level of the database. + :paramtype compatibility_level: int + :keyword size_mb: Size of the database. + :paramtype size_mb: float + :keyword log_file_size_mb: Total size in MB for the log (ldf) files for this database. + :paramtype log_file_size_mb: float + :keyword data_file_size_mb: Total size in MB for the data (mdf and ndf) files for this + database. + :paramtype data_file_size_mb: float + :keyword space_available_mb: Space left of the database. + :paramtype space_available_mb: float + :keyword state: State of the database. Known values are: "Online", "Restoring", "Recovering", + "RecoveryPending", "Suspect", "Emergency", "Offline", "Copying", and "OfflineSecondary". + :paramtype state: str or ~azure.mgmt.azurearcdata.models.DatabaseState + :keyword is_read_only: Whether the database is read only or not. + :paramtype is_read_only: bool + :keyword recovery_mode: Status of the database. Known values are: "Full", "Bulk-logged", and + "Simple". + :paramtype recovery_mode: str or ~azure.mgmt.azurearcdata.models.RecoveryMode + :keyword database_options: List of features that are enabled for the database. + :paramtype database_options: + ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResourcePropertiesDatabaseOptions + :keyword backup_information: + :paramtype backup_information: + ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResourcePropertiesBackupInformation + :keyword backup_policy: The backup profile for the SQL server. + :paramtype backup_policy: ~azure.mgmt.azurearcdata.models.BackupPolicy + :keyword create_mode: Database create mode. PointInTimeRestore: Create a database by restoring + a point in time backup of an existing database. sourceDatabaseId and restorePointInTime must be + specified. Known values are: "Default" and "PointInTimeRestore". + :paramtype create_mode: str or ~azure.mgmt.azurearcdata.models.DatabaseCreateMode + :keyword source_database_id: The name of the source database associated with create operation + of this database. + :paramtype source_database_id: str + :keyword restore_point_in_time: Conditional. If createMode is PointInTimeRestore, this value is + required. Specifies the point in time (ISO8601 format) of the source database that will be + restored to create the new database. + :paramtype restore_point_in_time: ~datetime.datetime + :keyword migration: Migration related configuration. + :paramtype migration: ~azure.mgmt.azurearcdata.models.DataBaseMigration + """ + super().__init__(**kwargs) + self.collation_name = collation_name + self.database_creation_date = database_creation_date + self.compatibility_level = compatibility_level + self.size_mb = size_mb + self.log_file_size_mb = log_file_size_mb + self.data_file_size_mb = data_file_size_mb + self.space_available_mb = space_available_mb + self.state = state + self.is_read_only = is_read_only + self.recovery_mode = recovery_mode + self.database_options = database_options + self.backup_information = backup_information + self.backup_policy = backup_policy + self.earliest_restore_date: Optional[datetime.datetime] = None + self.create_mode = create_mode + self.source_database_id = source_database_id + self.vm_id: Optional[str] = None + self.restore_point_in_time = restore_point_in_time + self.provisioning_state: Optional[str] = None + self.last_database_upload_time: Optional[datetime.datetime] = None + self.migration = migration + + +class SqlServerDatabaseResourcePropertiesBackupInformation(_serialization.Model): # pylint: disable=name-too-long + """SqlServerDatabaseResourcePropertiesBackupInformation. + + :ivar last_full_backup: Date time of last full backup. + :vartype last_full_backup: ~datetime.datetime + :ivar last_log_backup: Date time of last log backup. + :vartype last_log_backup: ~datetime.datetime + """ + + _attribute_map = { + "last_full_backup": {"key": "lastFullBackup", "type": "iso-8601"}, + "last_log_backup": {"key": "lastLogBackup", "type": "iso-8601"}, + } + + def __init__( + self, + *, + last_full_backup: Optional[datetime.datetime] = None, + last_log_backup: Optional[datetime.datetime] = None, + **kwargs: Any + ) -> None: + """ + :keyword last_full_backup: Date time of last full backup. + :paramtype last_full_backup: ~datetime.datetime + :keyword last_log_backup: Date time of last log backup. + :paramtype last_log_backup: ~datetime.datetime + """ + super().__init__(**kwargs) + self.last_full_backup = last_full_backup + self.last_log_backup = last_log_backup + + +class SqlServerDatabaseResourcePropertiesDatabaseOptions(_serialization.Model): # pylint: disable=name-too-long + """List of features that are enabled for the database. + + :ivar is_auto_close_on: + :vartype is_auto_close_on: bool + :ivar is_auto_shrink_on: + :vartype is_auto_shrink_on: bool + :ivar is_auto_create_stats_on: + :vartype is_auto_create_stats_on: bool + :ivar is_auto_update_stats_on: + :vartype is_auto_update_stats_on: bool + :ivar is_remote_data_archive_enabled: + :vartype is_remote_data_archive_enabled: bool + :ivar is_memory_optimization_enabled: + :vartype is_memory_optimization_enabled: bool + :ivar is_encrypted: + :vartype is_encrypted: bool + :ivar is_trustworthy_on: + :vartype is_trustworthy_on: bool + """ + + _attribute_map = { + "is_auto_close_on": {"key": "isAutoCloseOn", "type": "bool"}, + "is_auto_shrink_on": {"key": "isAutoShrinkOn", "type": "bool"}, + "is_auto_create_stats_on": {"key": "isAutoCreateStatsOn", "type": "bool"}, + "is_auto_update_stats_on": {"key": "isAutoUpdateStatsOn", "type": "bool"}, + "is_remote_data_archive_enabled": {"key": "isRemoteDataArchiveEnabled", "type": "bool"}, + "is_memory_optimization_enabled": {"key": "isMemoryOptimizationEnabled", "type": "bool"}, + "is_encrypted": {"key": "isEncrypted", "type": "bool"}, + "is_trustworthy_on": {"key": "isTrustworthyOn", "type": "bool"}, + } + + def __init__( + self, + *, + is_auto_close_on: Optional[bool] = None, + is_auto_shrink_on: Optional[bool] = None, + is_auto_create_stats_on: Optional[bool] = None, + is_auto_update_stats_on: Optional[bool] = None, + is_remote_data_archive_enabled: Optional[bool] = None, + is_memory_optimization_enabled: Optional[bool] = None, + is_encrypted: Optional[bool] = None, + is_trustworthy_on: Optional[bool] = None, + **kwargs: Any + ) -> None: + """ + :keyword is_auto_close_on: + :paramtype is_auto_close_on: bool + :keyword is_auto_shrink_on: + :paramtype is_auto_shrink_on: bool + :keyword is_auto_create_stats_on: + :paramtype is_auto_create_stats_on: bool + :keyword is_auto_update_stats_on: + :paramtype is_auto_update_stats_on: bool + :keyword is_remote_data_archive_enabled: + :paramtype is_remote_data_archive_enabled: bool + :keyword is_memory_optimization_enabled: + :paramtype is_memory_optimization_enabled: bool + :keyword is_encrypted: + :paramtype is_encrypted: bool + :keyword is_trustworthy_on: + :paramtype is_trustworthy_on: bool + """ + super().__init__(**kwargs) + self.is_auto_close_on = is_auto_close_on + self.is_auto_shrink_on = is_auto_shrink_on + self.is_auto_create_stats_on = is_auto_create_stats_on + self.is_auto_update_stats_on = is_auto_update_stats_on + self.is_remote_data_archive_enabled = is_remote_data_archive_enabled + self.is_memory_optimization_enabled = is_memory_optimization_enabled + self.is_encrypted = is_encrypted + self.is_trustworthy_on = is_trustworthy_on + + +class SqlServerDatabaseUpdate(_serialization.Model): + """An update to database resource. + + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar properties: The data controller's properties. + :vartype properties: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResourceProperties + """ + + _attribute_map = { + "tags": {"key": "tags", "type": "{str}"}, + "properties": {"key": "properties", "type": "SqlServerDatabaseResourceProperties"}, + } + + def __init__( + self, + *, + tags: Optional[Dict[str, str]] = None, + properties: Optional["_models.SqlServerDatabaseResourceProperties"] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword properties: The data controller's properties. + :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResourceProperties + """ + super().__init__(**kwargs) + self.tags = tags + self.properties = properties + + +class TrackedResourceAutoGenerated(ResourceAutoGenerated): + """The resource model definition for an Azure Resource Manager tracked top level resource which + has 'tags' and a 'location'. + + 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 server. + + :ivar id: Fully qualified resource ID for the resource. E.g. + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar location: The geo-location where the resource lives. Required. + :vartype location: str + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + "location": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "tags": {"key": "tags", "type": "{str}"}, + "location": {"key": "location", "type": "str"}, + } + + def __init__(self, *, location: str, tags: Optional[Dict[str, str]] = None, **kwargs: Any) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword location: The geo-location where the resource lives. Required. + :paramtype location: str + """ + super().__init__(**kwargs) + self.tags = tags + self.location = location + + +class SqlServerEsuLicense(TrackedResourceAutoGenerated): + """Describe SQL Server ESU license resource. + + 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 server. + + :ivar id: Fully qualified resource ID for the resource. E.g. + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}". + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar location: The geo-location where the resource lives. Required. + :vartype location: str + :ivar properties: SQL Server ESU license properties. Required. + :vartype properties: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicenseProperties + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + "location": {"required": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "tags": {"key": "tags", "type": "{str}"}, + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "SqlServerEsuLicenseProperties"}, + } + + def __init__( + self, + *, + location: str, + properties: "_models.SqlServerEsuLicenseProperties", + tags: Optional[Dict[str, str]] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword location: The geo-location where the resource lives. Required. + :paramtype location: str + :keyword properties: SQL Server ESU license properties. Required. + :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicenseProperties + """ + super().__init__(tags=tags, location=location, **kwargs) + self.properties = properties + + +class SqlServerEsuLicenseListResult(_serialization.Model): + """A list of SQL Server ESU licenses. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Array of results. + :vartype value: list[~azure.mgmt.azurearcdata.models.SqlServerEsuLicense] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ + + _validation = { + "value": {"readonly": True}, + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[SqlServerEsuLicense]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.value: Optional[List["_models.SqlServerEsuLicense"]] = None + self.next_link: Optional[str] = None + + +class SqlServerEsuLicenseProperties(_serialization.Model): + """Properties of SQL Server ESU license. + + 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 server. + + :ivar billing_plan: SQL Server ESU license type. Required. Known values are: "PAYG" and "Paid". + :vartype billing_plan: str or ~azure.mgmt.azurearcdata.models.BillingPlan + :ivar version: The SQL Server version the license covers. Required. Known values are: "SQL + Server 2012" and "SQL Server 2014". + :vartype version: str or ~azure.mgmt.azurearcdata.models.Version + :ivar unique_id: The unique ID of this license. This is a GUID-formatted string (e.g. + 00000000-0000-0000-0000-000000000000). + :vartype unique_id: str + :ivar physical_cores: The number of total cores of the license covers. Required. + :vartype physical_cores: int + :ivar activation_state: The activation state of the license. Required. Known values are: + "Inactive", "Active", "Terminated", "Enabled", "Disabled", "Deleted", "Completed", "Faulted", + and "Suspended". + :vartype activation_state: str or ~azure.mgmt.azurearcdata.models.State + :ivar scope_type: The Azure scope to which the license will apply. Required. Known values are: + "Tenant", "Subscription", and "ResourceGroup". + :vartype scope_type: str or ~azure.mgmt.azurearcdata.models.ScopeType + :ivar activated_at: The timestamp of the activation of the SqlServerEsuLicense in ISO 8601 + date-time format. + :vartype activated_at: ~datetime.datetime + :ivar terminated_at: The timestamp of the termination of the SqlServerEsuLicense in ISO 8601 + date-time format. + :vartype terminated_at: ~datetime.datetime + :ivar tenant_id: The tenantId the SQL Server ESU license resource subscription resides in. + :vartype tenant_id: str + """ + + _validation = { + "billing_plan": {"required": True}, + "version": {"required": True}, + "unique_id": {"readonly": True, "pattern": r"^[A-Za-z0-9]{8}-([A-Za-z0-9]{4}-){3}[A-Za-z0-9]{12}$"}, + "physical_cores": {"required": True, "minimum": 16, "multiple": 2}, + "activation_state": {"required": True}, + "scope_type": {"required": True}, + "activated_at": {"readonly": True}, + "terminated_at": {"readonly": True}, + "tenant_id": {"readonly": True}, + } + + _attribute_map = { + "billing_plan": {"key": "billingPlan", "type": "str"}, + "version": {"key": "version", "type": "str"}, + "unique_id": {"key": "uniqueId", "type": "str"}, + "physical_cores": {"key": "physicalCores", "type": "int"}, + "activation_state": {"key": "activationState", "type": "str"}, + "scope_type": {"key": "scopeType", "type": "str"}, + "activated_at": {"key": "activatedAt", "type": "iso-8601"}, + "terminated_at": {"key": "terminatedAt", "type": "iso-8601"}, + "tenant_id": {"key": "tenantId", "type": "str"}, + } + + def __init__( + self, + *, + billing_plan: Union[str, "_models.BillingPlan"], + version: Union[str, "_models.Version"], + physical_cores: int, + activation_state: Union[str, "_models.State"], + scope_type: Union[str, "_models.ScopeType"], + **kwargs: Any + ) -> None: + """ + :keyword billing_plan: SQL Server ESU license type. Required. Known values are: "PAYG" and + "Paid". + :paramtype billing_plan: str or ~azure.mgmt.azurearcdata.models.BillingPlan + :keyword version: The SQL Server version the license covers. Required. Known values are: "SQL + Server 2012" and "SQL Server 2014". + :paramtype version: str or ~azure.mgmt.azurearcdata.models.Version + :keyword physical_cores: The number of total cores of the license covers. Required. + :paramtype physical_cores: int + :keyword activation_state: The activation state of the license. Required. Known values are: + "Inactive", "Active", "Terminated", "Enabled", "Disabled", "Deleted", "Completed", "Faulted", + and "Suspended". + :paramtype activation_state: str or ~azure.mgmt.azurearcdata.models.State + :keyword scope_type: The Azure scope to which the license will apply. Required. Known values + are: "Tenant", "Subscription", and "ResourceGroup". + :paramtype scope_type: str or ~azure.mgmt.azurearcdata.models.ScopeType + """ + super().__init__(**kwargs) + self.billing_plan = billing_plan + self.version = version + self.unique_id: Optional[str] = None + self.physical_cores = physical_cores + self.activation_state = activation_state + self.scope_type = scope_type + self.activated_at: Optional[datetime.datetime] = None + self.terminated_at: Optional[datetime.datetime] = None + self.tenant_id: Optional[str] = None + + +class SqlServerEsuLicenseUpdate(_serialization.Model): + """An update to a SQL Server ESU license resource. + + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar properties: null. + :vartype properties: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicenseUpdateProperties + """ + + _attribute_map = { + "tags": {"key": "tags", "type": "{str}"}, + "properties": {"key": "properties", "type": "SqlServerEsuLicenseUpdateProperties"}, + } + + def __init__( + self, + *, + tags: Optional[Dict[str, str]] = None, + properties: Optional["_models.SqlServerEsuLicenseUpdateProperties"] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword properties: null. + :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicenseUpdateProperties + """ + super().__init__(**kwargs) + self.tags = tags + self.properties = properties + + +class SqlServerEsuLicenseUpdateProperties(_serialization.Model): + """Properties of update SqlServerEsuLicense. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar billing_plan: SQL Server ESU license type. Known values are: "PAYG" and "Paid". + :vartype billing_plan: str or ~azure.mgmt.azurearcdata.models.BillingPlan + :ivar version: The SQL Server version the license covers. Known values are: "SQL Server 2012" + and "SQL Server 2014". + :vartype version: str or ~azure.mgmt.azurearcdata.models.Version + :ivar unique_id: The unique ID of this license. This is a GUID-formatted string (e.g. + 00000000-0000-0000-0000-000000000000). + :vartype unique_id: str + :ivar physical_cores: The number of total cores of the license covers. + :vartype physical_cores: int + :ivar activation_state: The activation state of the license. Known values are: "Inactive", + "Active", "Terminated", "Enabled", "Disabled", "Deleted", "Completed", "Faulted", and + "Suspended". + :vartype activation_state: str or ~azure.mgmt.azurearcdata.models.State + :ivar scope_type: The Azure scope to which the license will apply. Known values are: "Tenant", + "Subscription", and "ResourceGroup". + :vartype scope_type: str or ~azure.mgmt.azurearcdata.models.ScopeType + :ivar activated_at: The timestamp of the activation of the SqlServerEsuLicense in ISO 8601 + date-time format. + :vartype activated_at: ~datetime.datetime + :ivar terminated_at: The timestamp of the termination of the SqlServerEsuLicense in ISO 8601 + date-time format. + :vartype terminated_at: ~datetime.datetime + :ivar tenant_id: The tenantId the SQL Server ESU license resource subscription resides in. + :vartype tenant_id: str + """ + + _validation = { + "unique_id": {"readonly": True, "pattern": r"^[A-Za-z0-9]{8}-([A-Za-z0-9]{4}-){3}[A-Za-z0-9]{12}$"}, + "physical_cores": {"minimum": 16, "multiple": 2}, + "activated_at": {"readonly": True}, + "terminated_at": {"readonly": True}, + "tenant_id": {"readonly": True}, + } + + _attribute_map = { + "billing_plan": {"key": "billingPlan", "type": "str"}, + "version": {"key": "version", "type": "str"}, + "unique_id": {"key": "uniqueId", "type": "str"}, + "physical_cores": {"key": "physicalCores", "type": "int"}, + "activation_state": {"key": "activationState", "type": "str"}, + "scope_type": {"key": "scopeType", "type": "str"}, + "activated_at": {"key": "activatedAt", "type": "iso-8601"}, + "terminated_at": {"key": "terminatedAt", "type": "iso-8601"}, + "tenant_id": {"key": "tenantId", "type": "str"}, + } + + def __init__( + self, + *, + billing_plan: Optional[Union[str, "_models.BillingPlan"]] = None, + version: Optional[Union[str, "_models.Version"]] = None, + physical_cores: Optional[int] = None, + activation_state: Optional[Union[str, "_models.State"]] = None, + scope_type: Optional[Union[str, "_models.ScopeType"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword billing_plan: SQL Server ESU license type. Known values are: "PAYG" and "Paid". + :paramtype billing_plan: str or ~azure.mgmt.azurearcdata.models.BillingPlan + :keyword version: The SQL Server version the license covers. Known values are: "SQL Server + 2012" and "SQL Server 2014". + :paramtype version: str or ~azure.mgmt.azurearcdata.models.Version + :keyword physical_cores: The number of total cores of the license covers. + :paramtype physical_cores: int + :keyword activation_state: The activation state of the license. Known values are: "Inactive", + "Active", "Terminated", "Enabled", "Disabled", "Deleted", "Completed", "Faulted", and + "Suspended". + :paramtype activation_state: str or ~azure.mgmt.azurearcdata.models.State + :keyword scope_type: The Azure scope to which the license will apply. Known values are: + "Tenant", "Subscription", and "ResourceGroup". + :paramtype scope_type: str or ~azure.mgmt.azurearcdata.models.ScopeType + """ + super().__init__(**kwargs) + self.billing_plan = billing_plan + self.version = version + self.unique_id: Optional[str] = None + self.physical_cores = physical_cores + self.activation_state = activation_state + self.scope_type = scope_type + self.activated_at: Optional[datetime.datetime] = None + self.terminated_at: Optional[datetime.datetime] = None + self.tenant_id: Optional[str] = None + + +class SqlServerInstance(TrackedResource): + """A SqlServerInstance. + + 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 server. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar location: The geo-location where the resource lives. Required. + :vartype location: str + :ivar properties: null. + :vartype properties: ~azure.mgmt.azurearcdata.models.SqlServerInstanceProperties + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + "location": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "tags": {"key": "tags", "type": "{str}"}, + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "SqlServerInstanceProperties"}, + } + + def __init__( + self, + *, + location: str, + tags: Optional[Dict[str, str]] = None, + properties: Optional["_models.SqlServerInstanceProperties"] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword location: The geo-location where the resource lives. Required. + :paramtype location: str + :keyword properties: null. + :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlServerInstanceProperties + """ + super().__init__(tags=tags, location=location, **kwargs) + self.properties = properties + + +class SqlServerInstanceJobsStatusRequest(_serialization.Model): + """The request for the status of the jobs running on the SQL Server instance. + + :ivar feature_name: The name of the feature to retrieve the job status for. + :vartype feature_name: str + :ivar job_type: The type of the job to retrieve the status for. + :vartype job_type: str + """ + + _attribute_map = { + "feature_name": {"key": "featureName", "type": "str"}, + "job_type": {"key": "jobType", "type": "str"}, + } + + def __init__(self, *, feature_name: Optional[str] = None, job_type: Optional[str] = None, **kwargs: Any) -> None: + """ + :keyword feature_name: The name of the feature to retrieve the job status for. + :paramtype feature_name: str + :keyword job_type: The type of the job to retrieve the status for. + :paramtype job_type: str + """ + super().__init__(**kwargs) + self.feature_name = feature_name + self.job_type = job_type + + +class SqlServerInstanceJobsStatusResponse(_serialization.Model): + """The response for the status of the jobs running on the SQL Server instance. + + :ivar jobs_status: The list of jobs status running on the SQL Server instance. + :vartype jobs_status: list[~azure.mgmt.azurearcdata.models.SqlServerInstanceJobStatus] + """ + + _attribute_map = { + "jobs_status": {"key": "jobsStatus", "type": "[SqlServerInstanceJobStatus]"}, + } + + def __init__( + self, *, jobs_status: Optional[List["_models.SqlServerInstanceJobStatus"]] = None, **kwargs: Any + ) -> None: + """ + :keyword jobs_status: The list of jobs status running on the SQL Server instance. + :paramtype jobs_status: list[~azure.mgmt.azurearcdata.models.SqlServerInstanceJobStatus] + """ + super().__init__(**kwargs) + self.jobs_status = jobs_status + + +class SqlServerInstanceJobStatus(_serialization.Model): + """The status of the job running on the SQL Server instance. + + :ivar id: The unique identifier of the job. + :vartype id: str + :ivar instance_name: The name of the SQL Server instance. + :vartype instance_name: str + :ivar job_status: The status of the job. Known values are: "NotStarted", "InProgress", + "Succeeded", and "Failed". + :vartype job_status: str or ~azure.mgmt.azurearcdata.models.JobStatus + :ivar job_exception: The exception message if the job failed. + :vartype job_exception: str + :ivar background_job: The background job details. + :vartype background_job: ~azure.mgmt.azurearcdata.models.BackgroundJob + :ivar sequencer_actions: The list of sequencer actions. + :vartype sequencer_actions: list[~azure.mgmt.azurearcdata.models.SequencerAction] + """ + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "instance_name": {"key": "instanceName", "type": "str"}, + "job_status": {"key": "jobStatus", "type": "str"}, + "job_exception": {"key": "jobException", "type": "str"}, + "background_job": {"key": "backgroundJob", "type": "BackgroundJob"}, + "sequencer_actions": {"key": "sequencerActions", "type": "[SequencerAction]"}, + } + + def __init__( + self, + *, + id: Optional[str] = None, # pylint: disable=redefined-builtin + instance_name: Optional[str] = None, + job_status: Optional[Union[str, "_models.JobStatus"]] = None, + job_exception: Optional[str] = None, + background_job: Optional["_models.BackgroundJob"] = None, + sequencer_actions: Optional[List["_models.SequencerAction"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword id: The unique identifier of the job. + :paramtype id: str + :keyword instance_name: The name of the SQL Server instance. + :paramtype instance_name: str + :keyword job_status: The status of the job. Known values are: "NotStarted", "InProgress", + "Succeeded", and "Failed". + :paramtype job_status: str or ~azure.mgmt.azurearcdata.models.JobStatus + :keyword job_exception: The exception message if the job failed. + :paramtype job_exception: str + :keyword background_job: The background job details. + :paramtype background_job: ~azure.mgmt.azurearcdata.models.BackgroundJob + :keyword sequencer_actions: The list of sequencer actions. + :paramtype sequencer_actions: list[~azure.mgmt.azurearcdata.models.SequencerAction] + """ + super().__init__(**kwargs) + self.id = id + self.instance_name = instance_name + self.job_status = job_status + self.job_exception = job_exception + self.background_job = background_job + self.sequencer_actions = sequencer_actions + + +class SqlServerInstanceListResult(_serialization.Model): + """A list of SqlServerInstance. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Array of results. + :vartype value: list[~azure.mgmt.azurearcdata.models.SqlServerInstance] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ + + _validation = { + "value": {"readonly": True}, + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[SqlServerInstance]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.value: Optional[List["_models.SqlServerInstance"]] = None + self.next_link: Optional[str] = None + + +class SqlServerInstanceManagedInstanceLinkAssessment(_serialization.Model): # pylint: disable=name-too-long + """The status of an individual requirement for MI Link. + + :ivar name: The name of the requirement. + :vartype name: str + :ivar category: The category of the requirement. Known values are: "SQLServer", + "ManagedInstance", "ManagedInstanceCrossValidation", "Dag", and "Certificates". + :vartype category: str or ~azure.mgmt.azurearcdata.models.AssessmentCategory + :ivar status: The status of the requirement. Known values are: "Success", "Warning", and + "Failure". + :vartype status: str or ~azure.mgmt.azurearcdata.models.AssessmentStatus + :ivar information: The information text about requirement. + :vartype information: str + :ivar additional_information: Additional details about the check, including any recommended + actions. + :vartype additional_information: str + """ + + _attribute_map = { + "name": {"key": "name", "type": "str"}, + "category": {"key": "category", "type": "str"}, + "status": {"key": "status", "type": "str"}, + "information": {"key": "information", "type": "str"}, + "additional_information": {"key": "additionalInformation", "type": "str"}, + } + + def __init__( + self, + *, + name: Optional[str] = None, + category: Optional[Union[str, "_models.AssessmentCategory"]] = None, + status: Optional[Union[str, "_models.AssessmentStatus"]] = None, + information: Optional[str] = None, + additional_information: Optional[str] = None, + **kwargs: Any + ) -> None: + """ + :keyword name: The name of the requirement. + :paramtype name: str + :keyword category: The category of the requirement. Known values are: "SQLServer", + "ManagedInstance", "ManagedInstanceCrossValidation", "Dag", and "Certificates". + :paramtype category: str or ~azure.mgmt.azurearcdata.models.AssessmentCategory + :keyword status: The status of the requirement. Known values are: "Success", "Warning", and + "Failure". + :paramtype status: str or ~azure.mgmt.azurearcdata.models.AssessmentStatus + :keyword information: The information text about requirement. + :paramtype information: str + :keyword additional_information: Additional details about the check, including any recommended + actions. + :paramtype additional_information: str + """ + super().__init__(**kwargs) + self.name = name + self.category = category + self.status = status + self.information = information + self.additional_information = additional_information + + +class SqlServerInstanceManagedInstanceLinkAssessmentRequest(_serialization.Model): # pylint: disable=name-too-long + """The MI Link assessment request for the SQL Server instance. + + All required parameters must be populated in order to send to server. + + :ivar azure_managed_instance_resource_id: The Azure SQL Managed Instance resource ID to link + with the SQL Server instance. Required. + :vartype azure_managed_instance_resource_id: str + :ivar azure_managed_instance_role: The role of managed instance in a distributed availability + group, can be Primary or Secondary. Known values are: "Primary" and "Secondary". + :vartype azure_managed_instance_role: str or + ~azure.mgmt.azurearcdata.models.AzureManagedInstanceRole + :ivar database_name: The name of the database to be replicated to the Azure SQL Managed + Instance. Required. + :vartype database_name: str + :ivar availability_group_name: The name of the availability group to be used for the database + replication. Required. + :vartype availability_group_name: str + """ + + _validation = { + "azure_managed_instance_resource_id": {"required": True}, + "database_name": {"required": True}, + "availability_group_name": {"required": True}, + } + + _attribute_map = { + "azure_managed_instance_resource_id": {"key": "azureManagedInstanceResourceId", "type": "str"}, + "azure_managed_instance_role": {"key": "azureManagedInstanceRole", "type": "str"}, + "database_name": {"key": "databaseName", "type": "str"}, + "availability_group_name": {"key": "availabilityGroupName", "type": "str"}, + } + + def __init__( + self, + *, + azure_managed_instance_resource_id: str, + database_name: str, + availability_group_name: str, + azure_managed_instance_role: Optional[Union[str, "_models.AzureManagedInstanceRole"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword azure_managed_instance_resource_id: The Azure SQL Managed Instance resource ID to link + with the SQL Server instance. Required. + :paramtype azure_managed_instance_resource_id: str + :keyword azure_managed_instance_role: The role of managed instance in a distributed + availability group, can be Primary or Secondary. Known values are: "Primary" and "Secondary". + :paramtype azure_managed_instance_role: str or + ~azure.mgmt.azurearcdata.models.AzureManagedInstanceRole + :keyword database_name: The name of the database to be replicated to the Azure SQL Managed + Instance. Required. + :paramtype database_name: str + :keyword availability_group_name: The name of the availability group to be used for the + database replication. Required. + :paramtype availability_group_name: str + """ + super().__init__(**kwargs) + self.azure_managed_instance_resource_id = azure_managed_instance_resource_id + self.azure_managed_instance_role = azure_managed_instance_role + self.database_name = database_name + self.availability_group_name = availability_group_name + + +class SqlServerInstanceManagedInstanceLinkAssessmentResponse(_serialization.Model): # pylint: disable=name-too-long + """The response containing the results of the MI Link assessment. + + :ivar assessments: The list of the results for MI Link assessment. + :vartype assessments: + list[~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessment] + """ + + _attribute_map = { + "assessments": {"key": "assessments", "type": "[SqlServerInstanceManagedInstanceLinkAssessment]"}, + } + + def __init__( + self, + *, + assessments: Optional[List["_models.SqlServerInstanceManagedInstanceLinkAssessment"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword assessments: The list of the results for MI Link assessment. + :paramtype assessments: + list[~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessment] + """ + super().__init__(**kwargs) + self.assessments = assessments + + +class SqlServerInstanceProperties(_serialization.Model): + """Properties of SqlServerInstance. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar version: SQL Server version. Known values are: "SQL Server 2012", "SQL Server 2014", "SQL + Server 2016", "SQL Server 2017", "SQL Server 2019", "SQL Server 2022", and "Unknown". + :vartype version: str or ~azure.mgmt.azurearcdata.models.SqlVersion + :ivar edition: SQL Server edition. Known values are: "Evaluation", "Enterprise", "Standard", + "Web", "Developer", "Express", and "Business Intelligence". + :vartype edition: str or ~azure.mgmt.azurearcdata.models.EditionType + :ivar container_resource_id: ARM Resource id of the container resource (Azure Arc for Servers). + :vartype container_resource_id: str + :ivar vm_id: The unique ID of the hybrid machine that this resource belongs to. + :vartype vm_id: str + :ivar create_time: The time when the resource was created. + :vartype create_time: str + :ivar v_core: The number of logical processors used by the SQL Server instance. + :vartype v_core: str + :ivar cores: The number of total cores of the Operating System Environment (OSE) hosting the + SQL Server instance. + :vartype cores: str + :ivar status: The cloud connectivity status. Known values are: "Connected", "Disconnected", + "Registered", and "Unknown". + :vartype status: str or ~azure.mgmt.azurearcdata.models.ConnectionStatus + :ivar patch_level: SQL Server update level. + :vartype patch_level: str + :ivar collation: SQL Server collation. + :vartype collation: str + :ivar db_master_key_exists: Indicates whether database master key exists in SQL Server. + :vartype db_master_key_exists: bool + :ivar is_hadr_enabled: Indicates whether always On availability groups is enabled in SQL + Server. + :vartype is_hadr_enabled: bool + :ivar trace_flags: An array of integers, where each value represents the enabled trace flags in + SQL Server. + :vartype trace_flags: list[int] + :ivar current_version: SQL Server current version. + :vartype current_version: str + :ivar instance_name: SQL Server instance name. + :vartype instance_name: str + :ivar tcp_dynamic_ports: Dynamic TCP ports used by SQL Server. + :vartype tcp_dynamic_ports: str + :ivar tcp_static_ports: Static TCP ports used by SQL Server. + :vartype tcp_static_ports: str + :ivar product_id: SQL Server product ID. + :vartype product_id: str + :ivar license_type: SQL Server license type. Known values are: "Undefined", "Free", "HADR", + "ServerCAL", "LicenseOnly", "PAYG", and "Paid". + :vartype license_type: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerLicenseType + :ivar azure_defender_status_last_updated: Timestamp of last Azure Defender status update. + :vartype azure_defender_status_last_updated: ~datetime.datetime + :ivar azure_defender_status: Status of Azure Defender. Known values are: "Protected", + "Unprotected", and "Unknown". + :vartype azure_defender_status: str or ~azure.mgmt.azurearcdata.models.DefenderStatus + :ivar provisioning_state: The provisioning state of the Arc-enabled SQL Server resource. + :vartype provisioning_state: str + :ivar last_inventory_upload_time: The time when last successful inventory upload was performed. + :vartype last_inventory_upload_time: ~datetime.datetime + :ivar last_usage_upload_time: The time when last successful usage upload was performed. + :vartype last_usage_upload_time: ~datetime.datetime + :ivar host_type: Type of host for Azure Arc SQL Server. Known values are: "Azure Virtual + Machine", "Azure VMWare Virtual Machine", "Azure Kubernetes Service", "AWS VMWare Virtual + Machine", "AWS Kubernetes Service", "GCP VMWare Virtual Machine", "GCP Kubernetes Service", + "Container", "Virtual Machine", "Physical Server", "AWS Virtual Machine", "GCP Virtual + Machine", and "Other". + :vartype host_type: str or ~azure.mgmt.azurearcdata.models.HostType + :ivar always_on_role: The role of the SQL Server, based on availability. Known values are: + "None", "FailoverClusterInstance", "FailoverClusterNode", and "AvailabilityGroupReplica". + :vartype always_on_role: str or ~azure.mgmt.azurearcdata.models.AlwaysOnRole + :ivar database_mirroring_endpoint: Database mirroring endpoint related properties. + :vartype database_mirroring_endpoint: ~azure.mgmt.azurearcdata.models.DBMEndpoint + :ivar failover_cluster: Failover Cluster Instance properties. + :vartype failover_cluster: ~azure.mgmt.azurearcdata.models.FailoverCluster + :ivar backup_policy: The backup profile for the SQL server. + :vartype backup_policy: ~azure.mgmt.azurearcdata.models.BackupPolicy + :ivar upgrade_locked_until: Upgrade Action for this resource is locked until it expires. The + Expiration time indicated by this value. It is not locked when it is empty. + :vartype upgrade_locked_until: ~datetime.datetime + :ivar monitoring: The monitoring configuration. + :vartype monitoring: ~azure.mgmt.azurearcdata.models.Monitoring + :ivar migration: Migration related configuration. + :vartype migration: ~azure.mgmt.azurearcdata.models.Migration + :ivar client_connection: Client connection related configuration. + :vartype client_connection: ~azure.mgmt.azurearcdata.models.ClientConnection + :ivar service_type: Indicates if the resource represents a SQL Server engine or a SQL Server + component service installed on the host. Known values are: "Engine", "SSRS", "SSAS", "SSIS", + and "PBIRS". + :vartype service_type: str or ~azure.mgmt.azurearcdata.models.ServiceType + :ivar max_server_memory_mb: max server memory (MB) value configured for this instance. + :vartype max_server_memory_mb: int + :ivar is_microsoft_pki_cert_trust_configured: Indicates whether Microsoft PKI root-authority + certificate (trusted by Azure) exists in SQL Server and trusted for Azure database.windows.net + domains. + :vartype is_microsoft_pki_cert_trust_configured: bool + :ivar is_digi_cert_pki_cert_trust_configured: Indicates whether DigiCert PKI root-authority + certificate (trusted by Azure) exists in SQL Server and trusted for Azure database.windows.net + domains. + :vartype is_digi_cert_pki_cert_trust_configured: bool + :ivar authentication: Authentication related configuration for the SQL Server Instance. + :vartype authentication: ~azure.mgmt.azurearcdata.models.Authentication + """ + + _validation = { + "container_resource_id": {"readonly": True}, + "vm_id": {"readonly": True}, + "create_time": {"readonly": True}, + "v_core": {"readonly": True}, + "status": {"readonly": True}, + "patch_level": {"readonly": True}, + "collation": {"readonly": True}, + "db_master_key_exists": {"readonly": True}, + "is_hadr_enabled": {"readonly": True}, + "trace_flags": {"readonly": True}, + "current_version": {"readonly": True}, + "tcp_dynamic_ports": {"readonly": True}, + "tcp_static_ports": {"readonly": True}, + "product_id": {"readonly": True}, + "license_type": {"readonly": True}, + "azure_defender_status_last_updated": {"readonly": True}, + "azure_defender_status": {"readonly": True}, + "provisioning_state": {"readonly": True}, + "last_inventory_upload_time": {"readonly": True}, + "last_usage_upload_time": {"readonly": True}, + "always_on_role": {"readonly": True}, + "max_server_memory_mb": {"readonly": True}, + "is_microsoft_pki_cert_trust_configured": {"readonly": True}, + "is_digi_cert_pki_cert_trust_configured": {"readonly": True}, + } + + _attribute_map = { + "version": {"key": "version", "type": "str"}, + "edition": {"key": "edition", "type": "str"}, + "container_resource_id": {"key": "containerResourceId", "type": "str"}, + "vm_id": {"key": "vmId", "type": "str"}, + "create_time": {"key": "createTime", "type": "str"}, + "v_core": {"key": "vCore", "type": "str"}, + "cores": {"key": "cores", "type": "str"}, + "status": {"key": "status", "type": "str"}, + "patch_level": {"key": "patchLevel", "type": "str"}, + "collation": {"key": "collation", "type": "str"}, + "db_master_key_exists": {"key": "dbMasterKeyExists", "type": "bool"}, + "is_hadr_enabled": {"key": "isHadrEnabled", "type": "bool"}, + "trace_flags": {"key": "traceFlags", "type": "[int]"}, + "current_version": {"key": "currentVersion", "type": "str"}, + "instance_name": {"key": "instanceName", "type": "str"}, + "tcp_dynamic_ports": {"key": "tcpDynamicPorts", "type": "str"}, + "tcp_static_ports": {"key": "tcpStaticPorts", "type": "str"}, + "product_id": {"key": "productId", "type": "str"}, + "license_type": {"key": "licenseType", "type": "str"}, + "azure_defender_status_last_updated": {"key": "azureDefenderStatusLastUpdated", "type": "iso-8601"}, + "azure_defender_status": {"key": "azureDefenderStatus", "type": "str"}, + "provisioning_state": {"key": "provisioningState", "type": "str"}, + "last_inventory_upload_time": {"key": "lastInventoryUploadTime", "type": "iso-8601"}, + "last_usage_upload_time": {"key": "lastUsageUploadTime", "type": "iso-8601"}, + "host_type": {"key": "hostType", "type": "str"}, + "always_on_role": {"key": "alwaysOnRole", "type": "str"}, + "database_mirroring_endpoint": {"key": "databaseMirroringEndpoint", "type": "DBMEndpoint"}, + "failover_cluster": {"key": "failoverCluster", "type": "FailoverCluster"}, + "backup_policy": {"key": "backupPolicy", "type": "BackupPolicy"}, + "upgrade_locked_until": {"key": "upgradeLockedUntil", "type": "iso-8601"}, + "monitoring": {"key": "monitoring", "type": "Monitoring"}, + "migration": {"key": "migration", "type": "Migration"}, + "client_connection": {"key": "clientConnection", "type": "ClientConnection"}, + "service_type": {"key": "serviceType", "type": "str"}, + "max_server_memory_mb": {"key": "maxServerMemoryMB", "type": "int"}, + "is_microsoft_pki_cert_trust_configured": {"key": "isMicrosoftPkiCertTrustConfigured", "type": "bool"}, + "is_digi_cert_pki_cert_trust_configured": {"key": "isDigiCertPkiCertTrustConfigured", "type": "bool"}, + "authentication": {"key": "authentication", "type": "Authentication"}, + } + + def __init__( # pylint: disable=too-many-locals + self, + *, + version: Optional[Union[str, "_models.SqlVersion"]] = None, + edition: Optional[Union[str, "_models.EditionType"]] = None, + cores: Optional[str] = None, + instance_name: Optional[str] = None, + host_type: Optional[Union[str, "_models.HostType"]] = None, + database_mirroring_endpoint: Optional["_models.DBMEndpoint"] = None, + failover_cluster: Optional["_models.FailoverCluster"] = None, + backup_policy: Optional["_models.BackupPolicy"] = None, + upgrade_locked_until: Optional[datetime.datetime] = None, + monitoring: Optional["_models.Monitoring"] = None, + migration: Optional["_models.Migration"] = None, + client_connection: Optional["_models.ClientConnection"] = None, + service_type: Optional[Union[str, "_models.ServiceType"]] = None, + authentication: Optional["_models.Authentication"] = None, + **kwargs: Any + ) -> None: + """ + :keyword version: SQL Server version. Known values are: "SQL Server 2012", "SQL Server 2014", + "SQL Server 2016", "SQL Server 2017", "SQL Server 2019", "SQL Server 2022", and "Unknown". + :paramtype version: str or ~azure.mgmt.azurearcdata.models.SqlVersion + :keyword edition: SQL Server edition. Known values are: "Evaluation", "Enterprise", "Standard", + "Web", "Developer", "Express", and "Business Intelligence". + :paramtype edition: str or ~azure.mgmt.azurearcdata.models.EditionType + :keyword cores: The number of total cores of the Operating System Environment (OSE) hosting the + SQL Server instance. + :paramtype cores: str + :keyword instance_name: SQL Server instance name. + :paramtype instance_name: str + :keyword host_type: Type of host for Azure Arc SQL Server. Known values are: "Azure Virtual + Machine", "Azure VMWare Virtual Machine", "Azure Kubernetes Service", "AWS VMWare Virtual + Machine", "AWS Kubernetes Service", "GCP VMWare Virtual Machine", "GCP Kubernetes Service", + "Container", "Virtual Machine", "Physical Server", "AWS Virtual Machine", "GCP Virtual + Machine", and "Other". + :paramtype host_type: str or ~azure.mgmt.azurearcdata.models.HostType + :keyword database_mirroring_endpoint: Database mirroring endpoint related properties. + :paramtype database_mirroring_endpoint: ~azure.mgmt.azurearcdata.models.DBMEndpoint + :keyword failover_cluster: Failover Cluster Instance properties. + :paramtype failover_cluster: ~azure.mgmt.azurearcdata.models.FailoverCluster + :keyword backup_policy: The backup profile for the SQL server. + :paramtype backup_policy: ~azure.mgmt.azurearcdata.models.BackupPolicy + :keyword upgrade_locked_until: Upgrade Action for this resource is locked until it expires. The + Expiration time indicated by this value. It is not locked when it is empty. + :paramtype upgrade_locked_until: ~datetime.datetime + :keyword monitoring: The monitoring configuration. + :paramtype monitoring: ~azure.mgmt.azurearcdata.models.Monitoring + :keyword migration: Migration related configuration. + :paramtype migration: ~azure.mgmt.azurearcdata.models.Migration + :keyword client_connection: Client connection related configuration. + :paramtype client_connection: ~azure.mgmt.azurearcdata.models.ClientConnection + :keyword service_type: Indicates if the resource represents a SQL Server engine or a SQL Server + component service installed on the host. Known values are: "Engine", "SSRS", "SSAS", "SSIS", + and "PBIRS". + :paramtype service_type: str or ~azure.mgmt.azurearcdata.models.ServiceType + :keyword authentication: Authentication related configuration for the SQL Server Instance. + :paramtype authentication: ~azure.mgmt.azurearcdata.models.Authentication + """ + super().__init__(**kwargs) + self.version = version + self.edition = edition + self.container_resource_id: Optional[str] = None + self.vm_id: Optional[str] = None + self.create_time: Optional[str] = None + self.v_core: Optional[str] = None + self.cores = cores + self.status: Optional[Union[str, "_models.ConnectionStatus"]] = None + self.patch_level: Optional[str] = None + self.collation: Optional[str] = None + self.db_master_key_exists: Optional[bool] = None + self.is_hadr_enabled: Optional[bool] = None + self.trace_flags: Optional[List[int]] = None + self.current_version: Optional[str] = None + self.instance_name = instance_name + self.tcp_dynamic_ports: Optional[str] = None + self.tcp_static_ports: Optional[str] = None + self.product_id: Optional[str] = None + self.license_type: Optional[Union[str, "_models.ArcSqlServerLicenseType"]] = None + self.azure_defender_status_last_updated: Optional[datetime.datetime] = None + self.azure_defender_status: Optional[Union[str, "_models.DefenderStatus"]] = None + self.provisioning_state: Optional[str] = None + self.last_inventory_upload_time: Optional[datetime.datetime] = None + self.last_usage_upload_time: Optional[datetime.datetime] = None + self.host_type = host_type + self.always_on_role: Optional[Union[str, "_models.AlwaysOnRole"]] = None + self.database_mirroring_endpoint = database_mirroring_endpoint + self.failover_cluster = failover_cluster + self.backup_policy = backup_policy + self.upgrade_locked_until = upgrade_locked_until + self.monitoring = monitoring + self.migration = migration + self.client_connection = client_connection + self.service_type = service_type + self.max_server_memory_mb: Optional[int] = None + self.is_microsoft_pki_cert_trust_configured: Optional[bool] = None + self.is_digi_cert_pki_cert_trust_configured: Optional[bool] = None + self.authentication = authentication + + +class SqlServerInstanceRunMigrationAssessmentResponse(_serialization.Model): # pylint: disable=name-too-long + """The response for running migration assessment on the SQL Server instance. + + :ivar id: The unique identifier of the job. + :vartype id: str + :ivar instance_name: The name of the SQL Server instance. + :vartype instance_name: str + :ivar job_status: The status of the job. Known values are: "NotStarted", "InProgress", + "Succeeded", and "Failed". + :vartype job_status: str or ~azure.mgmt.azurearcdata.models.JobStatus + :ivar job_exception: The exception message if the job failed. + :vartype job_exception: str + :ivar background_job: The background job details. + :vartype background_job: ~azure.mgmt.azurearcdata.models.BackgroundJob + :ivar sequencer_actions: The list of sequencer actions. + :vartype sequencer_actions: list[~azure.mgmt.azurearcdata.models.SequencerAction] + """ + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "instance_name": {"key": "instanceName", "type": "str"}, + "job_status": {"key": "jobStatus", "type": "str"}, + "job_exception": {"key": "jobException", "type": "str"}, + "background_job": {"key": "backgroundJob", "type": "BackgroundJob"}, + "sequencer_actions": {"key": "sequencerActions", "type": "[SequencerAction]"}, + } + + def __init__( + self, + *, + id: Optional[str] = None, # pylint: disable=redefined-builtin + instance_name: Optional[str] = None, + job_status: Optional[Union[str, "_models.JobStatus"]] = None, + job_exception: Optional[str] = None, + background_job: Optional["_models.BackgroundJob"] = None, + sequencer_actions: Optional[List["_models.SequencerAction"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword id: The unique identifier of the job. + :paramtype id: str + :keyword instance_name: The name of the SQL Server instance. + :paramtype instance_name: str + :keyword job_status: The status of the job. Known values are: "NotStarted", "InProgress", + "Succeeded", and "Failed". + :paramtype job_status: str or ~azure.mgmt.azurearcdata.models.JobStatus + :keyword job_exception: The exception message if the job failed. + :paramtype job_exception: str + :keyword background_job: The background job details. + :paramtype background_job: ~azure.mgmt.azurearcdata.models.BackgroundJob + :keyword sequencer_actions: The list of sequencer actions. + :paramtype sequencer_actions: list[~azure.mgmt.azurearcdata.models.SequencerAction] + """ + super().__init__(**kwargs) + self.id = id + self.instance_name = instance_name + self.job_status = job_status + self.job_exception = job_exception + self.background_job = background_job + self.sequencer_actions = sequencer_actions + + +class SqlServerInstanceTelemetryColumn(_serialization.Model): + """The telemetry column for the SQL Server instance. - :ivar tags: Resource tags. - :vartype tags: dict[str, str] + :ivar name: The name of the telemetry column. + :vartype name: str + :ivar type: The type of the telemetry column. Known values are: "bool", "datetime", "int", + "long", "double", "string", "guid", "timespan", and "int". + :vartype type: str or ~azure.mgmt.azurearcdata.models.SqlServerInstanceTelemetryColumnType """ _attribute_map = { - "tags": {"key": "tags", "type": "{str}"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, } - def __init__(self, *, tags: Optional[Dict[str, str]] = None, **kwargs): + def __init__( + self, + *, + name: Optional[str] = None, + type: Optional[Union[str, "_models.SqlServerInstanceTelemetryColumnType"]] = None, + **kwargs: Any + ) -> None: """ - :keyword tags: Resource tags. - :paramtype tags: dict[str, str] + :keyword name: The name of the telemetry column. + :paramtype name: str + :keyword type: The type of the telemetry column. Known values are: "bool", "datetime", "int", + "long", "double", "string", "guid", "timespan", and "int". + :paramtype type: str or ~azure.mgmt.azurearcdata.models.SqlServerInstanceTelemetryColumnType """ super().__init__(**kwargs) - self.tags = tags - - -class SqlServerInstance(TrackedResource): - """A SqlServerInstance. - - Variables are only populated by the server, and will be ignored when sending a request. + self.name = name + self.type = type - All required parameters must be populated in order to send to Azure. - :ivar id: Fully qualified resource ID for the resource. Ex - - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. - :vartype id: str - :ivar name: The name of the resource. - :vartype name: str - :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or - "Microsoft.Storage/storageAccounts". - :vartype type: str - :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy - information. - :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData - :ivar tags: Resource tags. - :vartype tags: dict[str, str] - :ivar location: The geo-location where the resource lives. Required. - :vartype location: str - :ivar properties: null. - :vartype properties: ~azure.mgmt.azurearcdata.models.SqlServerInstanceProperties +class SqlServerInstanceTelemetryRequest(_serialization.Model): + """The Arc SQL Server instance telemetry retrieval request. + + All required parameters must be populated in order to send to server. + + :ivar dataset_name: The name of the telemetry dataset to retrieve. Required. + :vartype dataset_name: str + :ivar start_time: The start time for the time range to fetch telemetry for. If not specified, + the current time minus 1 hour is used. + :vartype start_time: ~datetime.datetime + :ivar end_time: The end time for the time range to fetch telemetry for. If not specified, the + current time is used. + :vartype end_time: ~datetime.datetime + :ivar interval: The time granularity to fetch telemetry for. This is an ISO8601 duration. + Examples: PT15M, PT1H, P1D. + :vartype interval: ~datetime.timedelta + :ivar aggregation_type: The aggregation type to use for the numerical columns in the dataset. + Known values are: "Average", "Minimum", "Maximum", "Sum", and "Count". + :vartype aggregation_type: str or ~azure.mgmt.azurearcdata.models.AggregationType + :ivar database_names: The list of database names to return telemetry for. If not specified, + telemetry for all databases will be aggregated and returned. + :vartype database_names: list[str] """ _validation = { - "id": {"readonly": True}, - "name": {"readonly": True}, - "type": {"readonly": True}, - "system_data": {"readonly": True}, - "location": {"required": True}, + "dataset_name": {"required": True}, } _attribute_map = { - "id": {"key": "id", "type": "str"}, - "name": {"key": "name", "type": "str"}, - "type": {"key": "type", "type": "str"}, - "system_data": {"key": "systemData", "type": "SystemData"}, - "tags": {"key": "tags", "type": "{str}"}, - "location": {"key": "location", "type": "str"}, - "properties": {"key": "properties", "type": "SqlServerInstanceProperties"}, + "dataset_name": {"key": "datasetName", "type": "str"}, + "start_time": {"key": "startTime", "type": "iso-8601"}, + "end_time": {"key": "endTime", "type": "iso-8601"}, + "interval": {"key": "interval", "type": "duration"}, + "aggregation_type": {"key": "aggregationType", "type": "str"}, + "database_names": {"key": "databaseNames", "type": "[str]"}, } def __init__( self, *, - location: str, - tags: Optional[Dict[str, str]] = None, - properties: Optional["_models.SqlServerInstanceProperties"] = None, - **kwargs - ): + dataset_name: str, + start_time: Optional[datetime.datetime] = None, + end_time: Optional[datetime.datetime] = None, + interval: datetime.timedelta = "PT1H", + aggregation_type: Union[str, "_models.AggregationType"] = "Average", + database_names: Optional[List[str]] = None, + **kwargs: Any + ) -> None: """ - :keyword tags: Resource tags. - :paramtype tags: dict[str, str] - :keyword location: The geo-location where the resource lives. Required. - :paramtype location: str - :keyword properties: null. - :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlServerInstanceProperties + :keyword dataset_name: The name of the telemetry dataset to retrieve. Required. + :paramtype dataset_name: str + :keyword start_time: The start time for the time range to fetch telemetry for. If not + specified, the current time minus 1 hour is used. + :paramtype start_time: ~datetime.datetime + :keyword end_time: The end time for the time range to fetch telemetry for. If not specified, + the current time is used. + :paramtype end_time: ~datetime.datetime + :keyword interval: The time granularity to fetch telemetry for. This is an ISO8601 duration. + Examples: PT15M, PT1H, P1D. + :paramtype interval: ~datetime.timedelta + :keyword aggregation_type: The aggregation type to use for the numerical columns in the + dataset. Known values are: "Average", "Minimum", "Maximum", "Sum", and "Count". + :paramtype aggregation_type: str or ~azure.mgmt.azurearcdata.models.AggregationType + :keyword database_names: The list of database names to return telemetry for. If not specified, + telemetry for all databases will be aggregated and returned. + :paramtype database_names: list[str] """ - super().__init__(tags=tags, location=location, **kwargs) - self.properties = properties + super().__init__(**kwargs) + self.dataset_name = dataset_name + self.start_time = start_time + self.end_time = end_time + self.interval = interval + self.aggregation_type = aggregation_type + self.database_names = database_names -class SqlServerInstanceListResult(_serialization.Model): - """A list of SqlServerInstance. +class SqlServerInstanceTelemetryResponse(_serialization.Model): + """A section of the telemetry response for the SQL Server instance. Variables are only populated by the server, and will be ignored when sending a request. - :ivar value: Array of results. - :vartype value: list[~azure.mgmt.azurearcdata.models.SqlServerInstance] - :ivar next_link: Link to retrieve next page of results. + All required parameters must be populated in order to send to server. + + :ivar columns: The columns of the result telemetry table for the SQL Server instance. Required. + :vartype columns: list[~azure.mgmt.azurearcdata.models.SqlServerInstanceTelemetryColumn] + :ivar rows: A list of rows from the result telemetry table for the SQL Server instance. + Required. + :vartype rows: list[list[str]] + :ivar next_link: The link to the next section of rows of the telemetry response for the SQL + Server instance. Null if no more sections are available. :vartype next_link: str """ _validation = { - "value": {"readonly": True}, + "columns": {"required": True}, + "rows": {"required": True}, "next_link": {"readonly": True}, } _attribute_map = { - "value": {"key": "value", "type": "[SqlServerInstance]"}, + "columns": {"key": "columns", "type": "[SqlServerInstanceTelemetryColumn]"}, + "rows": {"key": "rows", "type": "[[str]]"}, "next_link": {"key": "nextLink", "type": "str"}, } - def __init__(self, **kwargs): - """ """ + def __init__( + self, *, columns: List["_models.SqlServerInstanceTelemetryColumn"], rows: List[List[str]], **kwargs: Any + ) -> None: + """ + :keyword columns: The columns of the result telemetry table for the SQL Server instance. + Required. + :paramtype columns: list[~azure.mgmt.azurearcdata.models.SqlServerInstanceTelemetryColumn] + :keyword rows: A list of rows from the result telemetry table for the SQL Server instance. + Required. + :paramtype rows: list[list[str]] + """ super().__init__(**kwargs) - self.value = None - self.next_link = None + self.columns = columns + self.rows = rows + self.next_link: Optional[str] = None -class SqlServerInstanceProperties(_serialization.Model): # pylint: disable=too-many-instance-attributes - """Properties of SqlServerInstance. +class SqlServerInstanceUpdate(_serialization.Model): + """An update to a SQL Server Instance. - Variables are only populated by the server, and will be ignored when sending a request. + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar properties: null. + :vartype properties: ~azure.mgmt.azurearcdata.models.SqlServerInstanceUpdateProperties + """ + + _attribute_map = { + "tags": {"key": "tags", "type": "{str}"}, + "properties": {"key": "properties", "type": "SqlServerInstanceUpdateProperties"}, + } - All required parameters must be populated in order to send to Azure. + def __init__( + self, + *, + tags: Optional[Dict[str, str]] = None, + properties: Optional["_models.SqlServerInstanceUpdateProperties"] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword properties: null. + :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlServerInstanceUpdateProperties + """ + super().__init__(**kwargs) + self.tags = tags + self.properties = properties + + +class SqlServerInstanceUpdateProperties(_serialization.Model): + """Properties of update SqlServerInstance. + + Variables are only populated by the server, and will be ignored when sending a request. :ivar version: SQL Server version. Known values are: "SQL Server 2012", "SQL Server 2014", "SQL Server 2016", "SQL Server 2017", "SQL Server 2019", "SQL Server 2022", and "Unknown". :vartype version: str or ~azure.mgmt.azurearcdata.models.SqlVersion :ivar edition: SQL Server edition. Known values are: "Evaluation", "Enterprise", "Standard", - "Web", "Developer", and "Express". + "Web", "Developer", "Express", and "Business Intelligence". :vartype edition: str or ~azure.mgmt.azurearcdata.models.EditionType :ivar container_resource_id: ARM Resource id of the container resource (Azure Arc for Servers). - Required. :vartype container_resource_id: str + :ivar vm_id: The unique ID of the hybrid machine that this resource belongs to. + :vartype vm_id: str :ivar create_time: The time when the resource was created. :vartype create_time: str :ivar v_core: The number of logical processors used by the SQL Server instance. :vartype v_core: str - :ivar status: The cloud connectivity status. Required. Known values are: "Connected", - "Disconnected", "Registered", and "Unknown". + :ivar cores: The number of total cores of the Operating System Environment (OSE) hosting the + SQL Server instance. + :vartype cores: str + :ivar status: The cloud connectivity status. Known values are: "Connected", "Disconnected", + "Registered", and "Unknown". :vartype status: str or ~azure.mgmt.azurearcdata.models.ConnectionStatus :ivar patch_level: SQL Server update level. :vartype patch_level: str :ivar collation: SQL Server collation. :vartype collation: str + :ivar db_master_key_exists: Indicates whether database master key exists in SQL Server. + :vartype db_master_key_exists: bool + :ivar is_hadr_enabled: Indicates whether always On availability groups is enabled in SQL + Server. + :vartype is_hadr_enabled: bool + :ivar trace_flags: An array of integers, where each value represents the enabled trace flags in + SQL Server. + :vartype trace_flags: list[int] :ivar current_version: SQL Server current version. :vartype current_version: str :ivar instance_name: SQL Server instance name. @@ -2227,30 +7016,78 @@ class SqlServerInstanceProperties(_serialization.Model): # pylint: disable=too- :vartype azure_defender_status: str or ~azure.mgmt.azurearcdata.models.DefenderStatus :ivar provisioning_state: The provisioning state of the Arc-enabled SQL Server resource. :vartype provisioning_state: str + :ivar last_inventory_upload_time: The time when last successful inventory upload was performed. + :vartype last_inventory_upload_time: ~datetime.datetime + :ivar last_usage_upload_time: The time when last successful usage upload was performed. + :vartype last_usage_upload_time: ~datetime.datetime :ivar host_type: Type of host for Azure Arc SQL Server. Known values are: "Azure Virtual Machine", "Azure VMWare Virtual Machine", "Azure Kubernetes Service", "AWS VMWare Virtual Machine", "AWS Kubernetes Service", "GCP VMWare Virtual Machine", "GCP Kubernetes Service", "Container", "Virtual Machine", "Physical Server", "AWS Virtual Machine", "GCP Virtual Machine", and "Other". :vartype host_type: str or ~azure.mgmt.azurearcdata.models.HostType + :ivar always_on_role: The role of the SQL Server, based on availability. Known values are: + "None", "FailoverClusterInstance", "FailoverClusterNode", and "AvailabilityGroupReplica". + :vartype always_on_role: str or ~azure.mgmt.azurearcdata.models.AlwaysOnRole + :ivar failover_cluster: Failover Cluster Instance properties. + :vartype failover_cluster: ~azure.mgmt.azurearcdata.models.FailoverCluster + :ivar backup_policy: The backup profile for the SQL server. + :vartype backup_policy: ~azure.mgmt.azurearcdata.models.BackupPolicy + :ivar upgrade_locked_until: Upgrade Action for this resource is locked until it expires. The + Expiration time indicated by this value. It is not locked when it is empty. + :vartype upgrade_locked_until: ~datetime.datetime + :ivar monitoring: The monitoring configuration. + :vartype monitoring: ~azure.mgmt.azurearcdata.models.Monitoring + :ivar migration: Migration related configuration. + :vartype migration: ~azure.mgmt.azurearcdata.models.Migration + :ivar client_connection: Client connection related configuration. + :vartype client_connection: ~azure.mgmt.azurearcdata.models.ClientConnection + :ivar service_type: Indicates if the resource represents a SQL Server engine or a SQL Server + component service installed on the host. Known values are: "Engine", "SSRS", "SSAS", "SSIS", + and "PBIRS". + :vartype service_type: str or ~azure.mgmt.azurearcdata.models.ServiceType + :ivar authentication: Authentication related configuration for the SQL Server Instance. + :vartype authentication: ~azure.mgmt.azurearcdata.models.Authentication """ _validation = { - "container_resource_id": {"required": True}, + "container_resource_id": {"readonly": True}, + "vm_id": {"readonly": True}, "create_time": {"readonly": True}, - "status": {"required": True}, + "v_core": {"readonly": True}, + "status": {"readonly": True}, + "patch_level": {"readonly": True}, + "collation": {"readonly": True}, + "db_master_key_exists": {"readonly": True}, + "is_hadr_enabled": {"readonly": True}, + "trace_flags": {"readonly": True}, + "current_version": {"readonly": True}, + "tcp_dynamic_ports": {"readonly": True}, + "tcp_static_ports": {"readonly": True}, + "product_id": {"readonly": True}, + "license_type": {"readonly": True}, + "azure_defender_status_last_updated": {"readonly": True}, + "azure_defender_status": {"readonly": True}, "provisioning_state": {"readonly": True}, + "last_inventory_upload_time": {"readonly": True}, + "last_usage_upload_time": {"readonly": True}, + "always_on_role": {"readonly": True}, } _attribute_map = { "version": {"key": "version", "type": "str"}, "edition": {"key": "edition", "type": "str"}, "container_resource_id": {"key": "containerResourceId", "type": "str"}, + "vm_id": {"key": "vmId", "type": "str"}, "create_time": {"key": "createTime", "type": "str"}, "v_core": {"key": "vCore", "type": "str"}, + "cores": {"key": "cores", "type": "str"}, "status": {"key": "status", "type": "str"}, "patch_level": {"key": "patchLevel", "type": "str"}, "collation": {"key": "collation", "type": "str"}, + "db_master_key_exists": {"key": "dbMasterKeyExists", "type": "bool"}, + "is_hadr_enabled": {"key": "isHadrEnabled", "type": "bool"}, + "trace_flags": {"key": "traceFlags", "type": "[int]"}, "current_version": {"key": "currentVersion", "type": "str"}, "instance_name": {"key": "instanceName", "type": "str"}, "tcp_dynamic_ports": {"key": "tcpDynamicPorts", "type": "str"}, @@ -2260,113 +7097,404 @@ class SqlServerInstanceProperties(_serialization.Model): # pylint: disable=too- "azure_defender_status_last_updated": {"key": "azureDefenderStatusLastUpdated", "type": "iso-8601"}, "azure_defender_status": {"key": "azureDefenderStatus", "type": "str"}, "provisioning_state": {"key": "provisioningState", "type": "str"}, + "last_inventory_upload_time": {"key": "lastInventoryUploadTime", "type": "iso-8601"}, + "last_usage_upload_time": {"key": "lastUsageUploadTime", "type": "iso-8601"}, "host_type": {"key": "hostType", "type": "str"}, + "always_on_role": {"key": "alwaysOnRole", "type": "str"}, + "failover_cluster": {"key": "failoverCluster", "type": "FailoverCluster"}, + "backup_policy": {"key": "backupPolicy", "type": "BackupPolicy"}, + "upgrade_locked_until": {"key": "upgradeLockedUntil", "type": "iso-8601"}, + "monitoring": {"key": "monitoring", "type": "Monitoring"}, + "migration": {"key": "migration", "type": "Migration"}, + "client_connection": {"key": "clientConnection", "type": "ClientConnection"}, + "service_type": {"key": "serviceType", "type": "str"}, + "authentication": {"key": "authentication", "type": "Authentication"}, } - def __init__( + def __init__( # pylint: disable=too-many-locals self, *, - container_resource_id: str, - status: Union[str, "_models.ConnectionStatus"], version: Optional[Union[str, "_models.SqlVersion"]] = None, edition: Optional[Union[str, "_models.EditionType"]] = None, - v_core: Optional[str] = None, - patch_level: Optional[str] = None, - collation: Optional[str] = None, - current_version: Optional[str] = None, + cores: Optional[str] = None, instance_name: Optional[str] = None, - tcp_dynamic_ports: Optional[str] = None, - tcp_static_ports: Optional[str] = None, - product_id: Optional[str] = None, - license_type: Optional[Union[str, "_models.ArcSqlServerLicenseType"]] = None, - azure_defender_status_last_updated: Optional[datetime.datetime] = None, - azure_defender_status: Optional[Union[str, "_models.DefenderStatus"]] = None, host_type: Optional[Union[str, "_models.HostType"]] = None, - **kwargs - ): + failover_cluster: Optional["_models.FailoverCluster"] = None, + backup_policy: Optional["_models.BackupPolicy"] = None, + upgrade_locked_until: Optional[datetime.datetime] = None, + monitoring: Optional["_models.Monitoring"] = None, + migration: Optional["_models.Migration"] = None, + client_connection: Optional["_models.ClientConnection"] = None, + service_type: Optional[Union[str, "_models.ServiceType"]] = None, + authentication: Optional["_models.Authentication"] = None, + **kwargs: Any + ) -> None: """ :keyword version: SQL Server version. Known values are: "SQL Server 2012", "SQL Server 2014", "SQL Server 2016", "SQL Server 2017", "SQL Server 2019", "SQL Server 2022", and "Unknown". :paramtype version: str or ~azure.mgmt.azurearcdata.models.SqlVersion :keyword edition: SQL Server edition. Known values are: "Evaluation", "Enterprise", "Standard", - "Web", "Developer", and "Express". + "Web", "Developer", "Express", and "Business Intelligence". :paramtype edition: str or ~azure.mgmt.azurearcdata.models.EditionType - :keyword container_resource_id: ARM Resource id of the container resource (Azure Arc for - Servers). Required. - :paramtype container_resource_id: str - :keyword v_core: The number of logical processors used by the SQL Server instance. - :paramtype v_core: str - :keyword status: The cloud connectivity status. Required. Known values are: "Connected", - "Disconnected", "Registered", and "Unknown". - :paramtype status: str or ~azure.mgmt.azurearcdata.models.ConnectionStatus - :keyword patch_level: SQL Server update level. - :paramtype patch_level: str - :keyword collation: SQL Server collation. - :paramtype collation: str - :keyword current_version: SQL Server current version. - :paramtype current_version: str + :keyword cores: The number of total cores of the Operating System Environment (OSE) hosting the + SQL Server instance. + :paramtype cores: str :keyword instance_name: SQL Server instance name. :paramtype instance_name: str - :keyword tcp_dynamic_ports: Dynamic TCP ports used by SQL Server. - :paramtype tcp_dynamic_ports: str - :keyword tcp_static_ports: Static TCP ports used by SQL Server. - :paramtype tcp_static_ports: str - :keyword product_id: SQL Server product ID. - :paramtype product_id: str - :keyword license_type: SQL Server license type. Known values are: "Undefined", "Free", "HADR", - "ServerCAL", "LicenseOnly", "PAYG", and "Paid". - :paramtype license_type: str or ~azure.mgmt.azurearcdata.models.ArcSqlServerLicenseType - :keyword azure_defender_status_last_updated: Timestamp of last Azure Defender status update. - :paramtype azure_defender_status_last_updated: ~datetime.datetime - :keyword azure_defender_status: Status of Azure Defender. Known values are: "Protected", - "Unprotected", and "Unknown". - :paramtype azure_defender_status: str or ~azure.mgmt.azurearcdata.models.DefenderStatus :keyword host_type: Type of host for Azure Arc SQL Server. Known values are: "Azure Virtual Machine", "Azure VMWare Virtual Machine", "Azure Kubernetes Service", "AWS VMWare Virtual Machine", "AWS Kubernetes Service", "GCP VMWare Virtual Machine", "GCP Kubernetes Service", "Container", "Virtual Machine", "Physical Server", "AWS Virtual Machine", "GCP Virtual Machine", and "Other". :paramtype host_type: str or ~azure.mgmt.azurearcdata.models.HostType + :keyword failover_cluster: Failover Cluster Instance properties. + :paramtype failover_cluster: ~azure.mgmt.azurearcdata.models.FailoverCluster + :keyword backup_policy: The backup profile for the SQL server. + :paramtype backup_policy: ~azure.mgmt.azurearcdata.models.BackupPolicy + :keyword upgrade_locked_until: Upgrade Action for this resource is locked until it expires. The + Expiration time indicated by this value. It is not locked when it is empty. + :paramtype upgrade_locked_until: ~datetime.datetime + :keyword monitoring: The monitoring configuration. + :paramtype monitoring: ~azure.mgmt.azurearcdata.models.Monitoring + :keyword migration: Migration related configuration. + :paramtype migration: ~azure.mgmt.azurearcdata.models.Migration + :keyword client_connection: Client connection related configuration. + :paramtype client_connection: ~azure.mgmt.azurearcdata.models.ClientConnection + :keyword service_type: Indicates if the resource represents a SQL Server engine or a SQL Server + component service installed on the host. Known values are: "Engine", "SSRS", "SSAS", "SSIS", + and "PBIRS". + :paramtype service_type: str or ~azure.mgmt.azurearcdata.models.ServiceType + :keyword authentication: Authentication related configuration for the SQL Server Instance. + :paramtype authentication: ~azure.mgmt.azurearcdata.models.Authentication """ super().__init__(**kwargs) self.version = version self.edition = edition - self.container_resource_id = container_resource_id - self.create_time = None - self.v_core = v_core - self.status = status - self.patch_level = patch_level - self.collation = collation - self.current_version = current_version + self.container_resource_id: Optional[str] = None + self.vm_id: Optional[str] = None + self.create_time: Optional[str] = None + self.v_core: Optional[str] = None + self.cores = cores + self.status: Optional[Union[str, "_models.ConnectionStatus"]] = None + self.patch_level: Optional[str] = None + self.collation: Optional[str] = None + self.db_master_key_exists: Optional[bool] = None + self.is_hadr_enabled: Optional[bool] = None + self.trace_flags: Optional[List[int]] = None + self.current_version: Optional[str] = None self.instance_name = instance_name - self.tcp_dynamic_ports = tcp_dynamic_ports - self.tcp_static_ports = tcp_static_ports - self.product_id = product_id - self.license_type = license_type - self.azure_defender_status_last_updated = azure_defender_status_last_updated - self.azure_defender_status = azure_defender_status - self.provisioning_state = None + self.tcp_dynamic_ports: Optional[str] = None + self.tcp_static_ports: Optional[str] = None + self.product_id: Optional[str] = None + self.license_type: Optional[Union[str, "_models.ArcSqlServerLicenseType"]] = None + self.azure_defender_status_last_updated: Optional[datetime.datetime] = None + self.azure_defender_status: Optional[Union[str, "_models.DefenderStatus"]] = None + self.provisioning_state: Optional[str] = None + self.last_inventory_upload_time: Optional[datetime.datetime] = None + self.last_usage_upload_time: Optional[datetime.datetime] = None self.host_type = host_type + self.always_on_role: Optional[Union[str, "_models.AlwaysOnRole"]] = None + self.failover_cluster = failover_cluster + self.backup_policy = backup_policy + self.upgrade_locked_until = upgrade_locked_until + self.monitoring = monitoring + self.migration = migration + self.client_connection = client_connection + self.service_type = service_type + self.authentication = authentication -class SqlServerInstanceUpdate(_serialization.Model): - """An update to a SQL Server Instance. +class SqlServerLicense(TrackedResource): + """Describe SQL Server license resource. + + 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 server. + + :ivar id: Fully qualified resource ID for the resource. Ex - + /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}. + :vartype id: str + :ivar name: The name of the resource. + :vartype name: str + :ivar type: The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or + "Microsoft.Storage/storageAccounts". + :vartype type: str + :ivar system_data: Azure Resource Manager metadata containing createdBy and modifiedBy + information. + :vartype system_data: ~azure.mgmt.azurearcdata.models.SystemData + :ivar tags: Resource tags. + :vartype tags: dict[str, str] + :ivar location: The geo-location where the resource lives. Required. + :vartype location: str + :ivar properties: SQL Server license properties. Required. + :vartype properties: ~azure.mgmt.azurearcdata.models.SqlServerLicenseProperties + """ + + _validation = { + "id": {"readonly": True}, + "name": {"readonly": True}, + "type": {"readonly": True}, + "system_data": {"readonly": True}, + "location": {"required": True}, + "properties": {"required": True}, + } + + _attribute_map = { + "id": {"key": "id", "type": "str"}, + "name": {"key": "name", "type": "str"}, + "type": {"key": "type", "type": "str"}, + "system_data": {"key": "systemData", "type": "SystemData"}, + "tags": {"key": "tags", "type": "{str}"}, + "location": {"key": "location", "type": "str"}, + "properties": {"key": "properties", "type": "SqlServerLicenseProperties"}, + } + + def __init__( + self, + *, + location: str, + properties: "_models.SqlServerLicenseProperties", + tags: Optional[Dict[str, str]] = None, + **kwargs: Any + ) -> None: + """ + :keyword tags: Resource tags. + :paramtype tags: dict[str, str] + :keyword location: The geo-location where the resource lives. Required. + :paramtype location: str + :keyword properties: SQL Server license properties. Required. + :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlServerLicenseProperties + """ + super().__init__(tags=tags, location=location, **kwargs) + self.properties = properties + + +class SqlServerLicenseListResult(_serialization.Model): + """A list of SQL Server licenses. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar value: Array of results. + :vartype value: list[~azure.mgmt.azurearcdata.models.SqlServerLicense] + :ivar next_link: Link to retrieve next page of results. + :vartype next_link: str + """ + + _validation = { + "value": {"readonly": True}, + "next_link": {"readonly": True}, + } + + _attribute_map = { + "value": {"key": "value", "type": "[SqlServerLicense]"}, + "next_link": {"key": "nextLink", "type": "str"}, + } + + def __init__(self, **kwargs: Any) -> None: + """ """ + super().__init__(**kwargs) + self.value: Optional[List["_models.SqlServerLicense"]] = None + self.next_link: Optional[str] = None + + +class SqlServerLicenseProperties(_serialization.Model): + """Properties of SQL Server License. + + 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 server. + + :ivar billing_plan: SQL Server license type. Required. Known values are: "PAYG" and "Paid". + :vartype billing_plan: str or ~azure.mgmt.azurearcdata.models.BillingPlan + :ivar physical_cores: The number of total cores of the license covers. Required. + :vartype physical_cores: int + :ivar license_category: This property represents the choice between SQL Server Core and ESU + licenses. Required. "Core" + :vartype license_category: str or ~azure.mgmt.azurearcdata.models.LicenseCategory + :ivar activation_state: The activation state of the license. Required. Known values are: + "Activated" and "Deactivated". + :vartype activation_state: str or ~azure.mgmt.azurearcdata.models.ActivationState + :ivar scope_type: The Azure scope to which the license will apply. Required. Known values are: + "Tenant", "Subscription", and "ResourceGroup". + :vartype scope_type: str or ~azure.mgmt.azurearcdata.models.ScopeType + :ivar last_activated_at: The timestamp of the most recent activation of the SqlServerLicense. + :vartype last_activated_at: ~datetime.datetime + :ivar last_deactivated_at: The timestamp of the most recent deactivation of the + SqlServerLicense. + :vartype last_deactivated_at: ~datetime.datetime + :ivar tenant_id: The tenantId the SQL Server license resource subscription resides in. + :vartype tenant_id: str + """ + + _validation = { + "billing_plan": {"required": True}, + "physical_cores": {"required": True, "minimum": 16, "multiple": 2}, + "license_category": {"required": True}, + "activation_state": {"required": True}, + "scope_type": {"required": True}, + "last_activated_at": {"readonly": True}, + "last_deactivated_at": {"readonly": True}, + "tenant_id": {"readonly": True}, + } + + _attribute_map = { + "billing_plan": {"key": "billingPlan", "type": "str"}, + "physical_cores": {"key": "physicalCores", "type": "int"}, + "license_category": {"key": "licenseCategory", "type": "str"}, + "activation_state": {"key": "activationState", "type": "str"}, + "scope_type": {"key": "scopeType", "type": "str"}, + "last_activated_at": {"key": "lastActivatedAt", "type": "iso-8601"}, + "last_deactivated_at": {"key": "lastDeactivatedAt", "type": "iso-8601"}, + "tenant_id": {"key": "tenantId", "type": "str"}, + } + + def __init__( + self, + *, + billing_plan: Union[str, "_models.BillingPlan"], + physical_cores: int, + license_category: Union[str, "_models.LicenseCategory"], + activation_state: Union[str, "_models.ActivationState"], + scope_type: Union[str, "_models.ScopeType"], + **kwargs: Any + ) -> None: + """ + :keyword billing_plan: SQL Server license type. Required. Known values are: "PAYG" and "Paid". + :paramtype billing_plan: str or ~azure.mgmt.azurearcdata.models.BillingPlan + :keyword physical_cores: The number of total cores of the license covers. Required. + :paramtype physical_cores: int + :keyword license_category: This property represents the choice between SQL Server Core and ESU + licenses. Required. "Core" + :paramtype license_category: str or ~azure.mgmt.azurearcdata.models.LicenseCategory + :keyword activation_state: The activation state of the license. Required. Known values are: + "Activated" and "Deactivated". + :paramtype activation_state: str or ~azure.mgmt.azurearcdata.models.ActivationState + :keyword scope_type: The Azure scope to which the license will apply. Required. Known values + are: "Tenant", "Subscription", and "ResourceGroup". + :paramtype scope_type: str or ~azure.mgmt.azurearcdata.models.ScopeType + """ + super().__init__(**kwargs) + self.billing_plan = billing_plan + self.physical_cores = physical_cores + self.license_category = license_category + self.activation_state = activation_state + self.scope_type = scope_type + self.last_activated_at: Optional[datetime.datetime] = None + self.last_deactivated_at: Optional[datetime.datetime] = None + self.tenant_id: Optional[str] = None + + +class SqlServerLicenseUpdate(_serialization.Model): + """An update to a SQL Server license resource. :ivar tags: Resource tags. :vartype tags: dict[str, str] + :ivar properties: null. + :vartype properties: ~azure.mgmt.azurearcdata.models.SqlServerLicenseUpdateProperties """ _attribute_map = { "tags": {"key": "tags", "type": "{str}"}, + "properties": {"key": "properties", "type": "SqlServerLicenseUpdateProperties"}, } - def __init__(self, *, tags: Optional[Dict[str, str]] = None, **kwargs): + def __init__( + self, + *, + tags: Optional[Dict[str, str]] = None, + properties: Optional["_models.SqlServerLicenseUpdateProperties"] = None, + **kwargs: Any + ) -> None: """ :keyword tags: Resource tags. :paramtype tags: dict[str, str] + :keyword properties: null. + :paramtype properties: ~azure.mgmt.azurearcdata.models.SqlServerLicenseUpdateProperties """ super().__init__(**kwargs) self.tags = tags + self.properties = properties + + +class SqlServerLicenseUpdateProperties(_serialization.Model): + """Properties of update SqlServerLicense. + + Variables are only populated by the server, and will be ignored when sending a request. + + :ivar billing_plan: SQL Server license type. Known values are: "PAYG" and "Paid". + :vartype billing_plan: str or ~azure.mgmt.azurearcdata.models.BillingPlan + :ivar physical_cores: The number of total cores of the license covers. + :vartype physical_cores: int + :ivar license_category: This property represents the choice between SQL Server Core and ESU + licenses. "Core" + :vartype license_category: str or ~azure.mgmt.azurearcdata.models.LicenseCategory + :ivar activation_state: The activation state of the license. Known values are: "Activated" and + "Deactivated". + :vartype activation_state: str or ~azure.mgmt.azurearcdata.models.ActivationState + :ivar scope_type: The Azure scope to which the license will apply. Known values are: "Tenant", + "Subscription", and "ResourceGroup". + :vartype scope_type: str or ~azure.mgmt.azurearcdata.models.ScopeType + :ivar last_activated_at: The timestamp of the most recent activation of the SqlServerLicense. + :vartype last_activated_at: ~datetime.datetime + :ivar last_deactivated_at: The timestamp of the most recent deactivation of the + SqlServerLicense. + :vartype last_deactivated_at: ~datetime.datetime + :ivar tenant_id: The tenantId the SQL Server license resource subscription resides in. + :vartype tenant_id: str + """ + + _validation = { + "physical_cores": {"minimum": 16, "multiple": 2}, + "last_activated_at": {"readonly": True}, + "last_deactivated_at": {"readonly": True}, + "tenant_id": {"readonly": True}, + } + + _attribute_map = { + "billing_plan": {"key": "billingPlan", "type": "str"}, + "physical_cores": {"key": "physicalCores", "type": "int"}, + "license_category": {"key": "licenseCategory", "type": "str"}, + "activation_state": {"key": "activationState", "type": "str"}, + "scope_type": {"key": "scopeType", "type": "str"}, + "last_activated_at": {"key": "lastActivatedAt", "type": "iso-8601"}, + "last_deactivated_at": {"key": "lastDeactivatedAt", "type": "iso-8601"}, + "tenant_id": {"key": "tenantId", "type": "str"}, + } + + def __init__( + self, + *, + billing_plan: Optional[Union[str, "_models.BillingPlan"]] = None, + physical_cores: Optional[int] = None, + license_category: Optional[Union[str, "_models.LicenseCategory"]] = None, + activation_state: Optional[Union[str, "_models.ActivationState"]] = None, + scope_type: Optional[Union[str, "_models.ScopeType"]] = None, + **kwargs: Any + ) -> None: + """ + :keyword billing_plan: SQL Server license type. Known values are: "PAYG" and "Paid". + :paramtype billing_plan: str or ~azure.mgmt.azurearcdata.models.BillingPlan + :keyword physical_cores: The number of total cores of the license covers. + :paramtype physical_cores: int + :keyword license_category: This property represents the choice between SQL Server Core and ESU + licenses. "Core" + :paramtype license_category: str or ~azure.mgmt.azurearcdata.models.LicenseCategory + :keyword activation_state: The activation state of the license. Known values are: "Activated" + and "Deactivated". + :paramtype activation_state: str or ~azure.mgmt.azurearcdata.models.ActivationState + :keyword scope_type: The Azure scope to which the license will apply. Known values are: + "Tenant", "Subscription", and "ResourceGroup". + :paramtype scope_type: str or ~azure.mgmt.azurearcdata.models.ScopeType + """ + super().__init__(**kwargs) + self.billing_plan = billing_plan + self.physical_cores = physical_cores + self.license_category = license_category + self.activation_state = activation_state + self.scope_type = scope_type + self.last_activated_at: Optional[datetime.datetime] = None + self.last_deactivated_at: Optional[datetime.datetime] = None + self.tenant_id: Optional[str] = None class SystemData(_serialization.Model): @@ -2406,8 +7534,8 @@ def __init__( last_modified_by: Optional[str] = None, last_modified_by_type: Optional[Union[str, "_models.CreatedByType"]] = None, last_modified_at: Optional[datetime.datetime] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword created_by: The identity that created the resource. :paramtype created_by: str @@ -2433,6 +7561,45 @@ def __init__( self.last_modified_at = last_modified_at +class TargetReadiness(_serialization.Model): + """The target readiness for migration for this database. + + :ivar azure_sql_database: The SKU recommendation summary. + :vartype azure_sql_database: ~azure.mgmt.azurearcdata.models.SkuRecommendationSummary + :ivar azure_sql_managed_instance: The SKU recommendation summary. + :vartype azure_sql_managed_instance: ~azure.mgmt.azurearcdata.models.SkuRecommendationSummary + :ivar azure_sql_virtual_machine: The SKU recommendation summary. + :vartype azure_sql_virtual_machine: ~azure.mgmt.azurearcdata.models.SkuRecommendationSummary + """ + + _attribute_map = { + "azure_sql_database": {"key": "azureSqlDatabase", "type": "SkuRecommendationSummary"}, + "azure_sql_managed_instance": {"key": "azureSqlManagedInstance", "type": "SkuRecommendationSummary"}, + "azure_sql_virtual_machine": {"key": "azureSqlVirtualMachine", "type": "SkuRecommendationSummary"}, + } + + def __init__( + self, + *, + azure_sql_database: Optional["_models.SkuRecommendationSummary"] = None, + azure_sql_managed_instance: Optional["_models.SkuRecommendationSummary"] = None, + azure_sql_virtual_machine: Optional["_models.SkuRecommendationSummary"] = None, + **kwargs: Any + ) -> None: + """ + :keyword azure_sql_database: The SKU recommendation summary. + :paramtype azure_sql_database: ~azure.mgmt.azurearcdata.models.SkuRecommendationSummary + :keyword azure_sql_managed_instance: The SKU recommendation summary. + :paramtype azure_sql_managed_instance: ~azure.mgmt.azurearcdata.models.SkuRecommendationSummary + :keyword azure_sql_virtual_machine: The SKU recommendation summary. + :paramtype azure_sql_virtual_machine: ~azure.mgmt.azurearcdata.models.SkuRecommendationSummary + """ + super().__init__(**kwargs) + self.azure_sql_database = azure_sql_database + self.azure_sql_managed_instance = azure_sql_managed_instance + self.azure_sql_virtual_machine = azure_sql_virtual_machine + + class UploadServicePrincipal(_serialization.Model): """Service principal for uploading billing, metrics and logs. @@ -2461,8 +7628,8 @@ def __init__( tenant_id: Optional[str] = None, authority: Optional[str] = None, client_secret: Optional[str] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword client_id: Client ID of the service principal for uploading data. :paramtype client_id: str @@ -2506,8 +7673,8 @@ def __init__( metrics: Optional[datetime.datetime] = None, logs: Optional[datetime.datetime] = None, usages: Optional[datetime.datetime] = None, - **kwargs - ): + **kwargs: Any + ) -> None: """ :keyword metrics: Last uploaded date for metrics from kubernetes cluster. Defaults to current date time. diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/__init__.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/__init__.py index 86245dd95097..932bd07931c2 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/__init__.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/__init__.py @@ -5,25 +5,41 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- +# pylint: disable=wrong-import-position -from ._operations import Operations -from ._sql_managed_instances_operations import SqlManagedInstancesOperations -from ._sql_server_instances_operations import SqlServerInstancesOperations -from ._data_controllers_operations import DataControllersOperations -from ._active_directory_connectors_operations import ActiveDirectoryConnectorsOperations -from ._postgres_instances_operations import PostgresInstancesOperations +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._patch import * # pylint: disable=unused-wildcard-import + +from ._operations import Operations # type: ignore +from ._sql_managed_instances_operations import SqlManagedInstancesOperations # type: ignore +from ._failover_groups_operations import FailoverGroupsOperations # type: ignore +from ._sql_server_instances_operations import SqlServerInstancesOperations # type: ignore +from ._sql_server_licenses_operations import SqlServerLicensesOperations # type: ignore +from ._data_controllers_operations import DataControllersOperations # type: ignore +from ._active_directory_connectors_operations import ActiveDirectoryConnectorsOperations # type: ignore +from ._postgres_instances_operations import PostgresInstancesOperations # type: ignore +from ._sql_server_availability_groups_operations import SqlServerAvailabilityGroupsOperations # type: ignore +from ._sql_server_databases_operations import SqlServerDatabasesOperations # type: ignore +from ._sql_server_esu_licenses_operations import SqlServerEsuLicensesOperations # type: ignore from ._patch import __all__ as _patch_all -from ._patch import * # pylint: disable=unused-wildcard-import +from ._patch import * from ._patch import patch_sdk as _patch_sdk __all__ = [ "Operations", "SqlManagedInstancesOperations", + "FailoverGroupsOperations", "SqlServerInstancesOperations", + "SqlServerLicensesOperations", "DataControllersOperations", "ActiveDirectoryConnectorsOperations", "PostgresInstancesOperations", + "SqlServerAvailabilityGroupsOperations", + "SqlServerDatabasesOperations", + "SqlServerEsuLicensesOperations", ] -__all__.extend([p for p in _patch_all if p not in __all__]) +__all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore _patch_sdk() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_active_directory_connectors_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_active_directory_connectors_operations.py index 0832fa65bb97..2023126d61c9 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_active_directory_connectors_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_active_directory_connectors_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,36 +6,35 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload +from collections.abc import MutableMapping +from io import IOBase +from typing import Any, Callable, Dict, IO, Iterable, Iterator, Optional, TypeVar, Union, cast, overload import urllib.parse +from azure.core import PipelineClient from azure.core.exceptions import ( ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -49,23 +48,21 @@ def build_list_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "dataControllerName": _SERIALIZER.url("data_controller_name", data_controller_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -86,9 +83,7 @@ def build_create_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -96,7 +91,7 @@ def build_create_request( _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), @@ -106,7 +101,7 @@ def build_create_request( ), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -129,16 +124,14 @@ def build_delete_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), @@ -148,7 +141,7 @@ def build_delete_request( ), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -169,16 +162,14 @@ def build_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), @@ -188,7 +179,7 @@ def build_get_request( ), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -213,10 +204,12 @@ class ActiveDirectoryConnectorsOperations: def __init__(self, *args, **kwargs): input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list( @@ -230,7 +223,6 @@ def list( :type resource_group_name: str :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either ActiveDirectoryConnectorResource or the result of cls(response) :rtype: @@ -240,12 +232,10 @@ def list( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ActiveDirectoryConnectorListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -256,17 +246,15 @@ def list( def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -278,13 +266,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("ActiveDirectoryConnectorListResult", pipeline_response) @@ -294,10 +281,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -310,19 +298,15 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors" - } - def _create_initial( self, resource_group_name: str, data_controller_name: str, active_directory_connector_name: str, - active_directory_connector_resource: Union[_models.ActiveDirectoryConnectorResource, IO], + active_directory_connector_resource: Union[_models.ActiveDirectoryConnectorResource, IO[bytes]], **kwargs: Any - ) -> _models.ActiveDirectoryConnectorResource: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -333,21 +317,19 @@ def _create_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.ActiveDirectoryConnectorResource] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(active_directory_connector_resource, (IO, bytes)): + if isinstance(active_directory_connector_resource, (IOBase, bytes)): _content = active_directory_connector_resource else: _json = self._serialize.body(active_directory_connector_resource, "ActiveDirectoryConnectorResource") - request = build_create_request( + _request = build_create_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, active_directory_connector_name=active_directory_connector_name, @@ -356,39 +338,35 @@ def _create_initial( content_type=content_type, json=_json, content=_content, - template_url=self._create_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 201]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - _create_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}" - } - @overload def begin_create( self, @@ -415,14 +393,6 @@ def begin_create( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 ActiveDirectoryConnectorResource or the result of cls(response) :rtype: @@ -436,7 +406,7 @@ def begin_create( resource_group_name: str, data_controller_name: str, active_directory_connector_name: str, - active_directory_connector_resource: IO, + active_directory_connector_resource: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -451,18 +421,10 @@ def begin_create( Required. :type active_directory_connector_name: str :param active_directory_connector_resource: desc. Required. - :type active_directory_connector_resource: IO + :type active_directory_connector_resource: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 ActiveDirectoryConnectorResource or the result of cls(response) :rtype: @@ -476,7 +438,7 @@ def begin_create( resource_group_name: str, data_controller_name: str, active_directory_connector_name: str, - active_directory_connector_resource: Union[_models.ActiveDirectoryConnectorResource, IO], + active_directory_connector_resource: Union[_models.ActiveDirectoryConnectorResource, IO[bytes]], **kwargs: Any ) -> LROPoller[_models.ActiveDirectoryConnectorResource]: """Creates or replaces an Active Directory connector resource. @@ -488,21 +450,10 @@ def begin_create( :param active_directory_connector_name: The name of the Active Directory connector instance. Required. :type active_directory_connector_name: str - :param active_directory_connector_resource: desc. Is either a model type or a IO type. - Required. + :param active_directory_connector_resource: desc. Is either a ActiveDirectoryConnectorResource + type or a IO[bytes] type. Required. :type active_directory_connector_resource: - ~azure.mgmt.azurearcdata.models.ActiveDirectoryConnectorResource or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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. + ~azure.mgmt.azurearcdata.models.ActiveDirectoryConnectorResource or IO[bytes] :return: An instance of LROPoller that returns either ActiveDirectoryConnectorResource or the result of cls(response) :rtype: @@ -512,9 +463,7 @@ def begin_create( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.ActiveDirectoryConnectorResource] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) @@ -533,12 +482,13 @@ def begin_create( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response) + deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -550,22 +500,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.ActiveDirectoryConnectorResource].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}" - } + return LROPoller[_models.ActiveDirectoryConnectorResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - def _delete_initial( # pylint: disable=inconsistent-return-statements + def _delete_initial( self, resource_group_name: str, data_controller_name: str, active_directory_connector_name: str, **kwargs: Any - ) -> None: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -576,41 +524,43 @@ def _delete_initial( # pylint: disable=inconsistent-return-statements _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) - cls: ClsType[None] = kwargs.pop("cls", None) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, active_directory_connector_name=active_directory_connector_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self._delete_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}" - } + return deserialized # type: ignore @distributed_trace def begin_delete( @@ -625,14 +575,6 @@ def begin_delete( :param active_directory_connector_name: The name of the Active Directory connector instance. Required. :type active_directory_connector_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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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: @@ -640,15 +582,13 @@ def begin_delete( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._delete_initial( # type: ignore + raw_result = self._delete_initial( resource_group_name=resource_group_name, data_controller_name=data_controller_name, active_directory_connector_name=active_directory_connector_name, @@ -658,11 +598,12 @@ def begin_delete( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, None, {}) # type: ignore if polling is True: polling_method: PollingMethod = cast(PollingMethod, ARMPolling(lro_delay, **kwargs)) @@ -671,17 +612,13 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_delete.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}" - } + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore @distributed_trace def get( @@ -696,12 +633,11 @@ def get( :param active_directory_connector_name: The name of the Active Directory connector instance. Required. :type active_directory_connector_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: ActiveDirectoryConnectorResource or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.ActiveDirectoryConnectorResource :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -712,26 +648,23 @@ def get( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.ActiveDirectoryConnectorResource] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, active_directory_connector_name=active_directory_connector_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -741,13 +674,9 @@ def get( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response) + deserialized = self._deserialize("ActiveDirectoryConnectorResource", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}/activeDirectoryConnectors/{activeDirectoryConnectorName}" - } + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_data_controllers_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_data_controllers_operations.py index f888ba16368e..81fb98c11eb6 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_data_controllers_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_data_controllers_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,36 +6,35 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload +from collections.abc import MutableMapping +from io import IOBase +from typing import Any, Callable, Dict, IO, Iterable, Iterator, Optional, TypeVar, Union, cast, overload import urllib.parse +from azure.core import PipelineClient from azure.core.exceptions import ( ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -47,9 +46,7 @@ def build_list_in_subscription_request(subscription_id: str, **kwargs: Any) -> H _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -60,7 +57,7 @@ def build_list_in_subscription_request(subscription_id: str, **kwargs: Any) -> H "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -75,22 +72,20 @@ def build_list_in_group_request(resource_group_name: str, subscription_id: str, _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -107,9 +102,7 @@ def build_put_data_controller_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -117,14 +110,14 @@ def build_put_data_controller_request( _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "dataControllerName": _SERIALIZER.url("data_controller_name", data_controller_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -143,23 +136,21 @@ def build_delete_data_controller_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "dataControllerName": _SERIALIZER.url("data_controller_name", data_controller_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -176,23 +167,21 @@ def build_get_data_controller_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "dataControllerName": _SERIALIZER.url("data_controller_name", data_controller_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -209,9 +198,7 @@ def build_patch_data_controller_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -219,14 +206,14 @@ def build_patch_data_controller_request( _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "dataControllerName": _SERIALIZER.url("data_controller_name", data_controller_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -253,10 +240,12 @@ class DataControllersOperations: def __init__(self, *args, **kwargs): input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list_in_subscription(self, **kwargs: Any) -> Iterable["_models.DataControllerResource"]: @@ -264,7 +253,6 @@ def list_in_subscription(self, **kwargs: Any) -> Iterable["_models.DataControlle List dataController resources in the subscription. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either DataControllerResource or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.DataControllerResource] @@ -273,12 +261,10 @@ def list_in_subscription(self, **kwargs: Any) -> Iterable["_models.DataControlle _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.PageOfDataControllerResource] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -289,15 +275,13 @@ def list_in_subscription(self, **kwargs: Any) -> Iterable["_models.DataControlle def prepare_request(next_link=None): if not next_link: - request = build_list_in_subscription_request( + _request = build_list_in_subscription_request( subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_in_subscription.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -309,13 +293,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("PageOfDataControllerResource", pipeline_response) @@ -325,10 +308,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -341,10 +325,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list_in_subscription.metadata = { - "url": "/subscriptions/{subscriptionId}/providers/Microsoft.AzureArcData/dataControllers" - } - @distributed_trace def list_in_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_models.DataControllerResource"]: """List dataController resources in the resource group. @@ -353,7 +333,6 @@ def list_in_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_m :param resource_group_name: The name of the Azure resource group. Required. :type resource_group_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either DataControllerResource or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.DataControllerResource] @@ -362,12 +341,10 @@ def list_in_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_m _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.PageOfDataControllerResource] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -378,16 +355,14 @@ def list_in_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_m def prepare_request(next_link=None): if not next_link: - request = build_list_in_group_request( + _request = build_list_in_group_request( resource_group_name=resource_group_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_in_group.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -399,13 +374,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("PageOfDataControllerResource", pipeline_response) @@ -415,10 +389,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -431,18 +406,14 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list_in_group.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers" - } - def _put_data_controller_initial( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: Union[_models.DataControllerResource, IO], + data_controller_resource: Union[_models.DataControllerResource, IO[bytes]], **kwargs: Any - ) -> _models.DataControllerResource: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -453,21 +424,19 @@ def _put_data_controller_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.DataControllerResource] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(data_controller_resource, (IO, bytes)): + if isinstance(data_controller_resource, (IOBase, bytes)): _content = data_controller_resource else: _json = self._serialize.body(data_controller_resource, "DataControllerResource") - request = build_put_data_controller_request( + _request = build_put_data_controller_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, subscription_id=self._config.subscription_id, @@ -475,39 +444,35 @@ def _put_data_controller_initial( content_type=content_type, json=_json, content=_content, - template_url=self._put_data_controller_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 201]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("DataControllerResource", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("DataControllerResource", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - _put_data_controller_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } - @overload def begin_put_data_controller( self, @@ -529,14 +494,6 @@ def begin_put_data_controller( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 DataControllerResource or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.DataControllerResource] @@ -548,7 +505,7 @@ def begin_put_data_controller( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: IO, + data_controller_resource: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -560,18 +517,10 @@ def begin_put_data_controller( :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str :param data_controller_resource: desc. Required. - :type data_controller_resource: IO + :type data_controller_resource: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 DataControllerResource or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.DataControllerResource] @@ -583,7 +532,7 @@ def begin_put_data_controller( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: Union[_models.DataControllerResource, IO], + data_controller_resource: Union[_models.DataControllerResource, IO[bytes]], **kwargs: Any ) -> LROPoller[_models.DataControllerResource]: """Creates or replaces a dataController resource. @@ -592,19 +541,10 @@ def begin_put_data_controller( :type resource_group_name: str :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str - :param data_controller_resource: desc. Is either a model type or a IO type. Required. - :type data_controller_resource: ~azure.mgmt.azurearcdata.models.DataControllerResource or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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. + :param data_controller_resource: desc. Is either a DataControllerResource type or a IO[bytes] + type. Required. + :type data_controller_resource: ~azure.mgmt.azurearcdata.models.DataControllerResource or + IO[bytes] :return: An instance of LROPoller that returns either DataControllerResource or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.DataControllerResource] @@ -613,9 +553,7 @@ def begin_put_data_controller( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.DataControllerResource] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) @@ -633,12 +571,13 @@ def begin_put_data_controller( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("DataControllerResource", pipeline_response) + deserialized = self._deserialize("DataControllerResource", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -650,22 +589,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.DataControllerResource].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_put_data_controller.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return LROPoller[_models.DataControllerResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - def _delete_data_controller_initial( # pylint: disable=inconsistent-return-statements + def _delete_data_controller_initial( self, resource_group_name: str, data_controller_name: str, **kwargs: Any - ) -> None: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -676,40 +613,42 @@ def _delete_data_controller_initial( # pylint: disable=inconsistent-return-stat _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) - cls: ClsType[None] = kwargs.pop("cls", None) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_delete_data_controller_request( + _request = build_delete_data_controller_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self._delete_data_controller_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - _delete_data_controller_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return deserialized # type: ignore @distributed_trace def begin_delete_data_controller( @@ -721,14 +660,6 @@ def begin_delete_data_controller( :type resource_group_name: str :param data_controller_name: The name of the data controller. Required. :type data_controller_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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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: @@ -736,15 +667,13 @@ def begin_delete_data_controller( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._delete_data_controller_initial( # type: ignore + raw_result = self._delete_data_controller_initial( resource_group_name=resource_group_name, data_controller_name=data_controller_name, api_version=api_version, @@ -753,11 +682,12 @@ def begin_delete_data_controller( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, None, {}) # type: ignore if polling is True: polling_method: PollingMethod = cast(PollingMethod, ARMPolling(lro_delay, **kwargs)) @@ -766,17 +696,13 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_delete_data_controller.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore @distributed_trace def get_data_controller( @@ -788,12 +714,11 @@ def get_data_controller( :type resource_group_name: str :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: DataControllerResource or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.DataControllerResource :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -804,25 +729,22 @@ def get_data_controller( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.DataControllerResource] = kwargs.pop("cls", None) - request = build_get_data_controller_request( + _request = build_get_data_controller_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get_data_controller.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -832,25 +754,21 @@ def get_data_controller( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("DataControllerResource", pipeline_response) + deserialized = self._deserialize("DataControllerResource", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get_data_controller.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return deserialized # type: ignore def _patch_data_controller_initial( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: Union[_models.DataControllerUpdate, IO], + data_controller_resource: Union[_models.DataControllerUpdate, IO[bytes]], **kwargs: Any - ) -> Optional[_models.DataControllerResource]: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -861,21 +779,19 @@ def _patch_data_controller_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[Optional[_models.DataControllerResource]] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(data_controller_resource, (IO, bytes)): + if isinstance(data_controller_resource, (IOBase, bytes)): _content = data_controller_resource else: _json = self._serialize.body(data_controller_resource, "DataControllerUpdate") - request = build_patch_data_controller_request( + _request = build_patch_data_controller_request( resource_group_name=resource_group_name, data_controller_name=data_controller_name, subscription_id=self._config.subscription_id, @@ -883,36 +799,34 @@ def _patch_data_controller_initial( content_type=content_type, json=_json, content=_content, - template_url=self._patch_data_controller_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = None - if response.status_code == 200: - deserialized = self._deserialize("DataControllerResource", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - _patch_data_controller_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return deserialized # type: ignore @overload def begin_patch_data_controller( @@ -935,14 +849,6 @@ def begin_patch_data_controller( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 DataControllerResource or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.DataControllerResource] @@ -954,7 +860,7 @@ def begin_patch_data_controller( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: IO, + data_controller_resource: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -966,18 +872,10 @@ def begin_patch_data_controller( :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str :param data_controller_resource: The update data controller resource. Required. - :type data_controller_resource: IO + :type data_controller_resource: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 DataControllerResource or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.DataControllerResource] @@ -989,7 +887,7 @@ def begin_patch_data_controller( self, resource_group_name: str, data_controller_name: str, - data_controller_resource: Union[_models.DataControllerUpdate, IO], + data_controller_resource: Union[_models.DataControllerUpdate, IO[bytes]], **kwargs: Any ) -> LROPoller[_models.DataControllerResource]: """Updates a dataController resource. @@ -998,20 +896,10 @@ def begin_patch_data_controller( :type resource_group_name: str :param data_controller_name: The name of the data controller. Required. :type data_controller_name: str - :param data_controller_resource: The update data controller resource. Is either a model type or - a IO type. Required. - :type data_controller_resource: ~azure.mgmt.azurearcdata.models.DataControllerUpdate or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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. + :param data_controller_resource: The update data controller resource. Is either a + DataControllerUpdate type or a IO[bytes] type. Required. + :type data_controller_resource: ~azure.mgmt.azurearcdata.models.DataControllerUpdate or + IO[bytes] :return: An instance of LROPoller that returns either DataControllerResource or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.DataControllerResource] @@ -1020,9 +908,7 @@ def begin_patch_data_controller( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.DataControllerResource] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) @@ -1040,12 +926,13 @@ def begin_patch_data_controller( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("DataControllerResource", pipeline_response) + deserialized = self._deserialize("DataControllerResource", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -1057,14 +944,12 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.DataControllerResource].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_patch_data_controller.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/dataControllers/{dataControllerName}" - } + return LROPoller[_models.DataControllerResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_failover_groups_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_failover_groups_operations.py new file mode 100644 index 000000000000..87727065ba61 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_failover_groups_operations.py @@ -0,0 +1,666 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 collections.abc import MutableMapping +from io import IOBase +from typing import Any, Callable, Dict, IO, Iterable, Iterator, Optional, TypeVar, Union, cast, overload +import urllib.parse + +from azure.core import PipelineClient +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest, HttpResponse +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.arm_polling import ARMPolling + +from .. import models as _models +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + + +def build_list_request( + resource_group_name: str, sql_managed_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}/failoverGroups", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlManagedInstanceName": _SERIALIZER.url("sql_managed_instance_name", sql_managed_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_create_request( + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}/failoverGroups/{failoverGroupName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlManagedInstanceName": _SERIALIZER.url("sql_managed_instance_name", sql_managed_instance_name, "str"), + "failoverGroupName": _SERIALIZER.url("failover_group_name", failover_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_delete_request( + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}/failoverGroups/{failoverGroupName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlManagedInstanceName": _SERIALIZER.url("sql_managed_instance_name", sql_managed_instance_name, "str"), + "failoverGroupName": _SERIALIZER.url("failover_group_name", failover_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_get_request( + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}/failoverGroups/{failoverGroupName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlManagedInstanceName": _SERIALIZER.url("sql_managed_instance_name", sql_managed_instance_name, "str"), + "failoverGroupName": _SERIALIZER.url("failover_group_name", failover_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +class FailoverGroupsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.azurearcdata.AzureArcDataManagementClient`'s + :attr:`failover_groups` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list( + self, resource_group_name: str, sql_managed_instance_name: str, **kwargs: Any + ) -> Iterable["_models.FailoverGroupResource"]: + """List the failover groups associated with the given sql managed instance. + + List the failover groups associated with the given sql managed instance. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :return: An iterator like instance of either FailoverGroupResource or the result of + cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.FailoverGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.FailoverGroupListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + def extract_data(pipeline_response): + deserialized = self._deserialize("FailoverGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + def _create_initial( + self, + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + failover_group_resource: Union[_models.FailoverGroupResource, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(failover_group_resource, (IOBase, bytes)): + _content = failover_group_resource + else: + _json = self._serialize.body(failover_group_resource, "FailoverGroupResource") + + _request = build_create_request( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + failover_group_name=failover_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 201]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_create( + self, + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + failover_group_resource: _models.FailoverGroupResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.FailoverGroupResource]: + """Creates or replaces a failover group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :param failover_group_name: The name of the Failover Group. Required. + :type failover_group_name: str + :param failover_group_resource: desc. Required. + :type failover_group_resource: ~azure.mgmt.azurearcdata.models.FailoverGroupResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either FailoverGroupResource or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.FailoverGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create( + self, + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + failover_group_resource: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.FailoverGroupResource]: + """Creates or replaces a failover group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :param failover_group_name: The name of the Failover Group. Required. + :type failover_group_name: str + :param failover_group_resource: desc. Required. + :type failover_group_resource: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either FailoverGroupResource or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.FailoverGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_create( + self, + resource_group_name: str, + sql_managed_instance_name: str, + failover_group_name: str, + failover_group_resource: Union[_models.FailoverGroupResource, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.FailoverGroupResource]: + """Creates or replaces a failover group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :param failover_group_name: The name of the Failover Group. Required. + :type failover_group_name: str + :param failover_group_resource: desc. Is either a FailoverGroupResource type or a IO[bytes] + type. Required. + :type failover_group_resource: ~azure.mgmt.azurearcdata.models.FailoverGroupResource or + IO[bytes] + :return: An instance of LROPoller that returns either FailoverGroupResource or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.FailoverGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.FailoverGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._create_initial( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + failover_group_name=failover_group_name, + failover_group_resource=failover_group_resource, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("FailoverGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.FailoverGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.FailoverGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _delete_initial( + self, resource_group_name: str, sql_managed_instance_name: str, failover_group_name: str, **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + _request = build_delete_request( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + failover_group_name=failover_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def begin_delete( + self, resource_group_name: str, sql_managed_instance_name: str, failover_group_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes a failover group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :param failover_group_name: The name of the Failover Group. Required. + :type failover_group_name: str + :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: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + failover_group_name=failover_group_name, + api_version=api_version, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + if polling is True: + polling_method: PollingMethod = cast(PollingMethod, ARMPolling(lro_delay, **kwargs)) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + @distributed_trace + def get( + self, resource_group_name: str, sql_managed_instance_name: str, failover_group_name: str, **kwargs: Any + ) -> _models.FailoverGroupResource: + """Retrieves a failover group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_managed_instance_name: Name of SQL Managed Instance. Required. + :type sql_managed_instance_name: str + :param failover_group_name: The name of the Failover Group. Required. + :type failover_group_name: str + :return: FailoverGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.FailoverGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.FailoverGroupResource] = kwargs.pop("cls", None) + + _request = build_get_request( + resource_group_name=resource_group_name, + sql_managed_instance_name=sql_managed_instance_name, + failover_group_name=failover_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("FailoverGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_operations.py index 38e3d4aaf604..a6e2d0ba5bff 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_operations.py @@ -1,4 +1,3 @@ -# pylint: disable=too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,10 +5,11 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys +from collections.abc import MutableMapping from typing import Any, Callable, Dict, Iterable, Optional, TypeVar import urllib.parse +from azure.core import PipelineClient from azure.core.exceptions import ( ClientAuthenticationError, HttpResponseError, @@ -20,20 +20,15 @@ ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -45,9 +40,7 @@ def build_list_request(**kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -76,16 +69,17 @@ class Operations: def __init__(self, *args, **kwargs): input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list(self, **kwargs: Any) -> Iterable["_models.Operation"]: """Lists all of the available Azure Data Services on Azure Arc API operations. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either Operation or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.Operation] :raises ~azure.core.exceptions.HttpResponseError: @@ -93,12 +87,10 @@ def list(self, **kwargs: Any) -> Iterable["_models.Operation"]: _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.OperationListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -109,14 +101,12 @@ def list(self, **kwargs: Any) -> Iterable["_models.Operation"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -128,13 +118,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("OperationListResult", pipeline_response) @@ -144,10 +133,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -159,5 +149,3 @@ def get_next(next_link=None): return pipeline_response return ItemPaged(get_next, extract_data) - - list.metadata = {"url": "/providers/Microsoft.AzureArcData/operations"} diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_postgres_instances_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_postgres_instances_operations.py index a02708bbb26e..fdad8eff4d76 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_postgres_instances_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_postgres_instances_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,36 +6,35 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload +from collections.abc import MutableMapping +from io import IOBase +from typing import Any, Callable, Dict, IO, Iterable, Iterator, Optional, TypeVar, Union, cast, overload import urllib.parse +from azure.core import PipelineClient from azure.core.exceptions import ( ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -47,9 +46,7 @@ def build_list_request(subscription_id: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -60,7 +57,7 @@ def build_list_request(subscription_id: str, **kwargs: Any) -> HttpRequest: "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -75,22 +72,20 @@ def build_list_by_resource_group_request(resource_group_name: str, subscription_ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -107,23 +102,21 @@ def build_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "postgresInstanceName": _SERIALIZER.url("postgres_instance_name", postgres_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -140,9 +133,7 @@ def build_create_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -150,14 +141,14 @@ def build_create_request( _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "postgresInstanceName": _SERIALIZER.url("postgres_instance_name", postgres_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -176,23 +167,21 @@ def build_delete_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "postgresInstanceName": _SERIALIZER.url("postgres_instance_name", postgres_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -209,9 +198,7 @@ def build_update_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -219,14 +206,14 @@ def build_update_request( _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "postgresInstanceName": _SERIALIZER.url("postgres_instance_name", postgres_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -253,10 +240,12 @@ class PostgresInstancesOperations: def __init__(self, *args, **kwargs): input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list(self, **kwargs: Any) -> Iterable["_models.PostgresInstance"]: @@ -264,7 +253,6 @@ def list(self, **kwargs: Any) -> Iterable["_models.PostgresInstance"]: List postgres Instance resources in the subscription. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either PostgresInstance or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.PostgresInstance] :raises ~azure.core.exceptions.HttpResponseError: @@ -272,12 +260,10 @@ def list(self, **kwargs: Any) -> Iterable["_models.PostgresInstance"]: _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.PostgresInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -288,15 +274,13 @@ def list(self, **kwargs: Any) -> Iterable["_models.PostgresInstance"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -308,13 +292,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("PostgresInstanceListResult", pipeline_response) @@ -324,10 +307,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -340,8 +324,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.AzureArcData/postgresInstances"} - @distributed_trace def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_models.PostgresInstance"]: """List postgres Instance resources in the resource group. @@ -350,7 +332,6 @@ def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Ite :param resource_group_name: The name of the Azure resource group. Required. :type resource_group_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either PostgresInstance or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.PostgresInstance] :raises ~azure.core.exceptions.HttpResponseError: @@ -358,12 +339,10 @@ def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Ite _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.PostgresInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -374,16 +353,14 @@ def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Ite def prepare_request(next_link=None): if not next_link: - request = build_list_by_resource_group_request( + _request = build_list_by_resource_group_request( resource_group_name=resource_group_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_resource_group.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -395,13 +372,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("PostgresInstanceListResult", pipeline_response) @@ -411,10 +387,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -427,10 +404,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list_by_resource_group.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances" - } - @distributed_trace def get(self, resource_group_name: str, postgres_instance_name: str, **kwargs: Any) -> _models.PostgresInstance: """Retrieves a postgres Instance resource. @@ -439,12 +412,11 @@ def get(self, resource_group_name: str, postgres_instance_name: str, **kwargs: A :type resource_group_name: str :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: PostgresInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.PostgresInstance :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -455,25 +427,22 @@ def get(self, resource_group_name: str, postgres_instance_name: str, **kwargs: A _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.PostgresInstance] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( resource_group_name=resource_group_name, postgres_instance_name=postgres_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -483,25 +452,21 @@ def get(self, resource_group_name: str, postgres_instance_name: str, **kwargs: A error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("PostgresInstance", pipeline_response) + deserialized = self._deserialize("PostgresInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } + return deserialized # type: ignore def _create_initial( self, resource_group_name: str, postgres_instance_name: str, - resource: Union[_models.PostgresInstance, IO], + resource: Union[_models.PostgresInstance, IO[bytes]], **kwargs: Any - ) -> _models.PostgresInstance: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -512,21 +477,19 @@ def _create_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.PostgresInstance] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(resource, (IO, bytes)): + if isinstance(resource, (IOBase, bytes)): _content = resource else: _json = self._serialize.body(resource, "PostgresInstance") - request = build_create_request( + _request = build_create_request( resource_group_name=resource_group_name, postgres_instance_name=postgres_instance_name, subscription_id=self._config.subscription_id, @@ -534,39 +497,35 @@ def _create_initial( content_type=content_type, json=_json, content=_content, - template_url=self._create_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 201]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("PostgresInstance", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("PostgresInstance", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - _create_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } - @overload def begin_create( self, @@ -588,14 +547,6 @@ def begin_create( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 PostgresInstance or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.PostgresInstance] @@ -607,7 +558,7 @@ def begin_create( self, resource_group_name: str, postgres_instance_name: str, - resource: IO, + resource: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -619,18 +570,10 @@ def begin_create( :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_name: str :param resource: The postgres instance. Required. - :type resource: IO + :type resource: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 PostgresInstance or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.PostgresInstance] @@ -642,7 +585,7 @@ def begin_create( self, resource_group_name: str, postgres_instance_name: str, - resource: Union[_models.PostgresInstance, IO], + resource: Union[_models.PostgresInstance, IO[bytes]], **kwargs: Any ) -> LROPoller[_models.PostgresInstance]: """Creates or replaces a postgres Instance resource. @@ -651,19 +594,9 @@ def begin_create( :type resource_group_name: str :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_name: str - :param resource: The postgres instance. Is either a model type or a IO type. Required. - :type resource: ~azure.mgmt.azurearcdata.models.PostgresInstance or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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. + :param resource: The postgres instance. Is either a PostgresInstance type or a IO[bytes] type. + Required. + :type resource: ~azure.mgmt.azurearcdata.models.PostgresInstance or IO[bytes] :return: An instance of LROPoller that returns either PostgresInstance or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.PostgresInstance] @@ -672,9 +605,7 @@ def begin_create( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.PostgresInstance] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) @@ -692,12 +623,13 @@ def begin_create( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("PostgresInstance", pipeline_response) + deserialized = self._deserialize("PostgresInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -709,22 +641,18 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.PostgresInstance].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } + return LROPoller[_models.PostgresInstance]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - def _delete_initial( # pylint: disable=inconsistent-return-statements - self, resource_group_name: str, postgres_instance_name: str, **kwargs: Any - ) -> None: - error_map = { + def _delete_initial(self, resource_group_name: str, postgres_instance_name: str, **kwargs: Any) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -735,40 +663,42 @@ def _delete_initial( # pylint: disable=inconsistent-return-statements _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) - cls: ClsType[None] = kwargs.pop("cls", None) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( resource_group_name=resource_group_name, postgres_instance_name=postgres_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self._delete_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } + return deserialized # type: ignore @distributed_trace def begin_delete(self, resource_group_name: str, postgres_instance_name: str, **kwargs: Any) -> LROPoller[None]: @@ -778,14 +708,6 @@ def begin_delete(self, resource_group_name: str, postgres_instance_name: str, ** :type resource_group_name: str :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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: @@ -793,15 +715,13 @@ def begin_delete(self, resource_group_name: str, postgres_instance_name: str, ** _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._delete_initial( # type: ignore + raw_result = self._delete_initial( resource_group_name=resource_group_name, postgres_instance_name=postgres_instance_name, api_version=api_version, @@ -810,11 +730,12 @@ def begin_delete(self, resource_group_name: str, postgres_instance_name: str, ** params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, None, {}) # type: ignore if polling is True: polling_method: PollingMethod = cast(PollingMethod, ARMPolling(lro_delay, **kwargs)) @@ -823,17 +744,13 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_delete.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore @overload def update( @@ -856,7 +773,6 @@ def update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: PostgresInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.PostgresInstance :raises ~azure.core.exceptions.HttpResponseError: @@ -867,7 +783,7 @@ def update( self, resource_group_name: str, postgres_instance_name: str, - parameters: IO, + parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -879,11 +795,10 @@ def update( :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_name: str :param parameters: The Postgres Instance. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: PostgresInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.PostgresInstance :raises ~azure.core.exceptions.HttpResponseError: @@ -894,7 +809,7 @@ def update( self, resource_group_name: str, postgres_instance_name: str, - parameters: Union[_models.PostgresInstanceUpdate, IO], + parameters: Union[_models.PostgresInstanceUpdate, IO[bytes]], **kwargs: Any ) -> _models.PostgresInstance: """Updates a postgres Instance resource. @@ -903,17 +818,14 @@ def update( :type resource_group_name: str :param postgres_instance_name: Name of Postgres Instance. Required. :type postgres_instance_name: str - :param parameters: The Postgres Instance. Is either a model type or a IO type. Required. - :type parameters: ~azure.mgmt.azurearcdata.models.PostgresInstanceUpdate or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + :param parameters: The Postgres Instance. Is either a PostgresInstanceUpdate type or a + IO[bytes] type. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.PostgresInstanceUpdate or IO[bytes] :return: PostgresInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.PostgresInstance :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -924,21 +836,19 @@ def update( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.PostgresInstance] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(parameters, (IO, bytes)): + if isinstance(parameters, (IOBase, bytes)): _content = parameters else: _json = self._serialize.body(parameters, "PostgresInstanceUpdate") - request = build_update_request( + _request = build_update_request( resource_group_name=resource_group_name, postgres_instance_name=postgres_instance_name, subscription_id=self._config.subscription_id, @@ -946,15 +856,14 @@ def update( content_type=content_type, json=_json, content=_content, - template_url=self.update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -964,13 +873,9 @@ def update( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("PostgresInstance", pipeline_response) + deserialized = self._deserialize("PostgresInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/postgresInstances/{postgresInstanceName}" - } + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_managed_instances_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_managed_instances_operations.py index d9f16dea0afe..933bf60ef586 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_managed_instances_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_managed_instances_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,36 +6,35 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload +from collections.abc import MutableMapping +from io import IOBase +from typing import Any, Callable, Dict, IO, Iterable, Iterator, Optional, TypeVar, Union, cast, overload import urllib.parse +from azure.core import PipelineClient from azure.core.exceptions import ( ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -47,9 +46,7 @@ def build_list_request(subscription_id: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -60,7 +57,7 @@ def build_list_request(subscription_id: str, **kwargs: Any) -> HttpRequest: "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -75,22 +72,20 @@ def build_list_by_resource_group_request(resource_group_name: str, subscription_ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -107,23 +102,21 @@ def build_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "sqlManagedInstanceName": _SERIALIZER.url("sql_managed_instance_name", sql_managed_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -140,9 +133,7 @@ def build_create_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -150,14 +141,14 @@ def build_create_request( _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "sqlManagedInstanceName": _SERIALIZER.url("sql_managed_instance_name", sql_managed_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -176,23 +167,21 @@ def build_delete_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "sqlManagedInstanceName": _SERIALIZER.url("sql_managed_instance_name", sql_managed_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -209,9 +198,7 @@ def build_update_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -219,14 +206,14 @@ def build_update_request( _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "sqlManagedInstanceName": _SERIALIZER.url("sql_managed_instance_name", sql_managed_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -253,10 +240,12 @@ class SqlManagedInstancesOperations: def __init__(self, *args, **kwargs): input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list(self, **kwargs: Any) -> Iterable["_models.SqlManagedInstance"]: @@ -264,7 +253,6 @@ def list(self, **kwargs: Any) -> Iterable["_models.SqlManagedInstance"]: List sqlManagedInstance resources in the subscription. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either SqlManagedInstance or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.SqlManagedInstance] :raises ~azure.core.exceptions.HttpResponseError: @@ -272,12 +260,10 @@ def list(self, **kwargs: Any) -> Iterable["_models.SqlManagedInstance"]: _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlManagedInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -288,15 +274,13 @@ def list(self, **kwargs: Any) -> Iterable["_models.SqlManagedInstance"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -308,13 +292,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("SqlManagedInstanceListResult", pipeline_response) @@ -324,10 +307,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -340,8 +324,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.AzureArcData/sqlManagedInstances"} - @distributed_trace def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_models.SqlManagedInstance"]: """List sqlManagedInstance resources in the resource group. @@ -350,7 +332,6 @@ def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Ite :param resource_group_name: The name of the Azure resource group. Required. :type resource_group_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either SqlManagedInstance or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.SqlManagedInstance] :raises ~azure.core.exceptions.HttpResponseError: @@ -358,12 +339,10 @@ def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Ite _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlManagedInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -374,16 +353,14 @@ def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Ite def prepare_request(next_link=None): if not next_link: - request = build_list_by_resource_group_request( + _request = build_list_by_resource_group_request( resource_group_name=resource_group_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_resource_group.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -395,13 +372,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("SqlManagedInstanceListResult", pipeline_response) @@ -411,10 +387,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -427,10 +404,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list_by_resource_group.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances" - } - @distributed_trace def get( self, resource_group_name: str, sql_managed_instance_name: str, **kwargs: Any @@ -441,12 +414,11 @@ def get( :type resource_group_name: str :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: SqlManagedInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.SqlManagedInstance :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -457,25 +429,22 @@ def get( _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlManagedInstance] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( resource_group_name=resource_group_name, sql_managed_instance_name=sql_managed_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -485,25 +454,21 @@ def get( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("SqlManagedInstance", pipeline_response) + deserialized = self._deserialize("SqlManagedInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } + return deserialized # type: ignore def _create_initial( self, resource_group_name: str, sql_managed_instance_name: str, - sql_managed_instance: Union[_models.SqlManagedInstance, IO], + sql_managed_instance: Union[_models.SqlManagedInstance, IO[bytes]], **kwargs: Any - ) -> _models.SqlManagedInstance: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -514,21 +479,19 @@ def _create_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.SqlManagedInstance] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(sql_managed_instance, (IO, bytes)): + if isinstance(sql_managed_instance, (IOBase, bytes)): _content = sql_managed_instance else: _json = self._serialize.body(sql_managed_instance, "SqlManagedInstance") - request = build_create_request( + _request = build_create_request( resource_group_name=resource_group_name, sql_managed_instance_name=sql_managed_instance_name, subscription_id=self._config.subscription_id, @@ -536,39 +499,35 @@ def _create_initial( content_type=content_type, json=_json, content=_content, - template_url=self._create_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 201]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("SqlManagedInstance", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("SqlManagedInstance", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - _create_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } - @overload def begin_create( self, @@ -590,14 +549,6 @@ def begin_create( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 SqlManagedInstance or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlManagedInstance] @@ -609,7 +560,7 @@ def begin_create( self, resource_group_name: str, sql_managed_instance_name: str, - sql_managed_instance: IO, + sql_managed_instance: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -621,18 +572,10 @@ def begin_create( :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_name: str :param sql_managed_instance: The SQL Managed Instance to be created or updated. Required. - :type sql_managed_instance: IO + :type sql_managed_instance: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 SqlManagedInstance or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlManagedInstance] @@ -644,7 +587,7 @@ def begin_create( self, resource_group_name: str, sql_managed_instance_name: str, - sql_managed_instance: Union[_models.SqlManagedInstance, IO], + sql_managed_instance: Union[_models.SqlManagedInstance, IO[bytes]], **kwargs: Any ) -> LROPoller[_models.SqlManagedInstance]: """Creates or replaces a SQL Managed Instance resource. @@ -654,19 +597,8 @@ def begin_create( :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_name: str :param sql_managed_instance: The SQL Managed Instance to be created or updated. Is either a - model type or a IO type. Required. - :type sql_managed_instance: ~azure.mgmt.azurearcdata.models.SqlManagedInstance or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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. + SqlManagedInstance type or a IO[bytes] type. Required. + :type sql_managed_instance: ~azure.mgmt.azurearcdata.models.SqlManagedInstance or IO[bytes] :return: An instance of LROPoller that returns either SqlManagedInstance or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlManagedInstance] @@ -675,9 +607,7 @@ def begin_create( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.SqlManagedInstance] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) @@ -695,12 +625,13 @@ def begin_create( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("SqlManagedInstance", pipeline_response) + deserialized = self._deserialize("SqlManagedInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -712,22 +643,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.SqlManagedInstance].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } + return LROPoller[_models.SqlManagedInstance]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - def _delete_initial( # pylint: disable=inconsistent-return-statements + def _delete_initial( self, resource_group_name: str, sql_managed_instance_name: str, **kwargs: Any - ) -> None: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -738,40 +667,42 @@ def _delete_initial( # pylint: disable=inconsistent-return-statements _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) - cls: ClsType[None] = kwargs.pop("cls", None) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( resource_group_name=resource_group_name, sql_managed_instance_name=sql_managed_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self._delete_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } + return deserialized # type: ignore @distributed_trace def begin_delete(self, resource_group_name: str, sql_managed_instance_name: str, **kwargs: Any) -> LROPoller[None]: @@ -781,14 +712,6 @@ def begin_delete(self, resource_group_name: str, sql_managed_instance_name: str, :type resource_group_name: str :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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: @@ -796,15 +719,13 @@ def begin_delete(self, resource_group_name: str, sql_managed_instance_name: str, _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._delete_initial( # type: ignore + raw_result = self._delete_initial( resource_group_name=resource_group_name, sql_managed_instance_name=sql_managed_instance_name, api_version=api_version, @@ -813,11 +734,12 @@ def begin_delete(self, resource_group_name: str, sql_managed_instance_name: str, params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, None, {}) # type: ignore if polling is True: polling_method: PollingMethod = cast(PollingMethod, ARMPolling(lro_delay, **kwargs)) @@ -826,17 +748,13 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_delete.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore @overload def update( @@ -859,7 +777,6 @@ def update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: SqlManagedInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.SqlManagedInstance :raises ~azure.core.exceptions.HttpResponseError: @@ -870,7 +787,7 @@ def update( self, resource_group_name: str, sql_managed_instance_name: str, - parameters: IO, + parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -882,11 +799,10 @@ def update( :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_name: str :param parameters: The SQL Managed Instance. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: SqlManagedInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.SqlManagedInstance :raises ~azure.core.exceptions.HttpResponseError: @@ -897,7 +813,7 @@ def update( self, resource_group_name: str, sql_managed_instance_name: str, - parameters: Union[_models.SqlManagedInstanceUpdate, IO], + parameters: Union[_models.SqlManagedInstanceUpdate, IO[bytes]], **kwargs: Any ) -> _models.SqlManagedInstance: """Updates a SQL Managed Instance resource. @@ -906,17 +822,14 @@ def update( :type resource_group_name: str :param sql_managed_instance_name: Name of SQL Managed Instance. Required. :type sql_managed_instance_name: str - :param parameters: The SQL Managed Instance. Is either a model type or a IO type. Required. - :type parameters: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceUpdate or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response + :param parameters: The SQL Managed Instance. Is either a SqlManagedInstanceUpdate type or a + IO[bytes] type. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlManagedInstanceUpdate or IO[bytes] :return: SqlManagedInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.SqlManagedInstance :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -927,21 +840,19 @@ def update( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.SqlManagedInstance] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(parameters, (IO, bytes)): + if isinstance(parameters, (IOBase, bytes)): _content = parameters else: _json = self._serialize.body(parameters, "SqlManagedInstanceUpdate") - request = build_update_request( + _request = build_update_request( resource_group_name=resource_group_name, sql_managed_instance_name=sql_managed_instance_name, subscription_id=self._config.subscription_id, @@ -949,15 +860,14 @@ def update( content_type=content_type, json=_json, content=_content, - template_url=self.update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -967,13 +877,9 @@ def update( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("SqlManagedInstance", pipeline_response) + deserialized = self._deserialize("SqlManagedInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlManagedInstances/{sqlManagedInstanceName}" - } + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_availability_groups_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_availability_groups_operations.py new file mode 100644 index 000000000000..b4ce3b76b27b --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_availability_groups_operations.py @@ -0,0 +1,2502 @@ +# pylint: disable=line-too-long,useless-suppression,too-many-lines +# 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 collections.abc import MutableMapping +from io import IOBase +from typing import Any, Callable, Dict, IO, Iterable, Iterator, Optional, TypeVar, Union, cast, overload +import urllib.parse + +from azure.core import PipelineClient +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest, HttpResponse +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.arm_polling import ARMPolling + +from .. import models as _models +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + + +def build_create_request( + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups/{availabilityGroupName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "availabilityGroupName": _SERIALIZER.url("availability_group_name", availability_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_delete_request( + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups/{availabilityGroupName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "availabilityGroupName": _SERIALIZER.url("availability_group_name", availability_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_get_request( + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups/{availabilityGroupName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "availabilityGroupName": _SERIALIZER.url("availability_group_name", availability_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_update_request( + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups/{availabilityGroupName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "availabilityGroupName": _SERIALIZER.url("availability_group_name", availability_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_detail_view_request( + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups/{availabilityGroupName}/getDetailView", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "availabilityGroupName": _SERIALIZER.url("availability_group_name", availability_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_failover_request( + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups/{availabilityGroupName}/failover", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "availabilityGroupName": _SERIALIZER.url("availability_group_name", availability_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_force_failover_allow_data_loss_request( # pylint: disable=name-too-long + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups/{availabilityGroupName}/forceFailoverAllowDataLoss", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "availabilityGroupName": _SERIALIZER.url("availability_group_name", availability_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_create_availability_group_request( + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/createAvailabilityGroup", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_create_distributed_availability_group_request( # pylint: disable=name-too-long + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/createDistributedAvailabilityGroup", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_create_managed_instance_link_request( # pylint: disable=name-too-long + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/createManagedInstanceLink", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url( + "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 + ), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_add_databases_request( + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups/{availabilityGroupName}/addDatabases", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "availabilityGroupName": _SERIALIZER.url("availability_group_name", availability_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_failover_mi_link_request( + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups/{availabilityGroupName}/failoverMiLink", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url( + "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 + ), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "availabilityGroupName": _SERIALIZER.url("availability_group_name", availability_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_remove_databases_request( + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + subscription_id: str, + **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups/{availabilityGroupName}/removeDatabases", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "availabilityGroupName": _SERIALIZER.url("availability_group_name", availability_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_list_request( + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/availabilityGroups", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +class SqlServerAvailabilityGroupsOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.azurearcdata.AzureArcDataManagementClient`'s + :attr:`sql_server_availability_groups` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @overload + def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_resource: _models.SqlServerAvailabilityGroupResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Creates or replaces an Arc Sql Server Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_resource: The request body for availability group + resource. Required. + :type sql_server_availability_group_resource: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_resource: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Creates or replaces an Arc Sql Server Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_resource: The request body for availability group + resource. Required. + :type sql_server_availability_group_resource: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_resource: Union[_models.SqlServerAvailabilityGroupResource, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Creates or replaces an Arc Sql Server Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_resource: The request body for availability group + resource. Is either a SqlServerAvailabilityGroupResource type or a IO[bytes] type. Required. + :type sql_server_availability_group_resource: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource or IO[bytes] + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_availability_group_resource, (IOBase, bytes)): + _content = sql_server_availability_group_resource + else: + _json = self._serialize.body(sql_server_availability_group_resource, "SqlServerAvailabilityGroupResource") + + _request = build_create_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _delete_initial( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + _request = build_delete_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def begin_delete( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes an Arc Sql Server availability group resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :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: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + api_version=api_version, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + if polling is True: + polling_method: PollingMethod = cast(PollingMethod, ARMPolling(lro_delay, **kwargs)) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + @distributed_trace + def get( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Retrieves an Arc Sql Server availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + _request = build_get_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _update_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_update: Union[_models.SqlServerAvailabilityGroupUpdate, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_availability_group_update, (IOBase, bytes)): + _content = sql_server_availability_group_update + else: + _json = self._serialize.body(sql_server_availability_group_update, "SqlServerAvailabilityGroupUpdate") + + _request = build_update_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_update: _models.SqlServerAvailabilityGroupUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Updates an existing Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_update: The requested server availability group resource + state. Required. + :type sql_server_availability_group_update: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupUpdate + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_update: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Updates an existing Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_update: The requested server availability group resource + state. Required. + :type sql_server_availability_group_update: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + sql_server_availability_group_update: Union[_models.SqlServerAvailabilityGroupUpdate, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Updates an existing Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param sql_server_availability_group_update: The requested server availability group resource + state. Is either a SqlServerAvailabilityGroupUpdate type or a IO[bytes] type. Required. + :type sql_server_availability_group_update: + ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupUpdate or IO[bytes] + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._update_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + sql_server_availability_group_update=sql_server_availability_group_update, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.SqlServerAvailabilityGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.SqlServerAvailabilityGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @distributed_trace + def detail_view( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Retrieves detailed properties of the Availability Group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + _request = build_detail_view_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def failover( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request manual failover of the availability group to this server. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + _request = build_failover_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def force_failover_allow_data_loss( + self, resource_group_name: str, sql_server_instance_name: str, availability_group_name: str, **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request forced failover of the availability group to this server. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + _request = build_force_failover_allow_data_loss_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _create_availability_group_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_ag_configuration: Union[_models.AvailabilityGroupCreateUpdateConfiguration, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(create_ag_configuration, (IOBase, bytes)): + _content = create_ag_configuration + else: + _json = self._serialize.body(create_ag_configuration, "AvailabilityGroupCreateUpdateConfiguration") + + _request = build_create_availability_group_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_create_availability_group( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_ag_configuration: _models.AvailabilityGroupCreateUpdateConfiguration, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_ag_configuration: The configuration for the new SQL Server availability group + resource. Required. + :type create_ag_configuration: + ~azure.mgmt.azurearcdata.models.AvailabilityGroupCreateUpdateConfiguration + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_availability_group( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_ag_configuration: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_ag_configuration: The configuration for the new SQL Server availability group + resource. Required. + :type create_ag_configuration: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_create_availability_group( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_ag_configuration: Union[_models.AvailabilityGroupCreateUpdateConfiguration, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_ag_configuration: The configuration for the new SQL Server availability group + resource. Is either a AvailabilityGroupCreateUpdateConfiguration type or a IO[bytes] type. + Required. + :type create_ag_configuration: + ~azure.mgmt.azurearcdata.models.AvailabilityGroupCreateUpdateConfiguration or IO[bytes] + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._create_availability_group_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + create_ag_configuration=create_ag_configuration, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.SqlServerAvailabilityGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.SqlServerAvailabilityGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _create_distributed_availability_group_initial( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + create_dag_configuration: Union[_models.DistributedAvailabilityGroupCreateUpdateConfiguration, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(create_dag_configuration, (IOBase, bytes)): + _content = create_dag_configuration + else: + _json = self._serialize.body( + create_dag_configuration, "DistributedAvailabilityGroupCreateUpdateConfiguration" + ) + + _request = build_create_distributed_availability_group_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_create_distributed_availability_group( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + create_dag_configuration: _models.DistributedAvailabilityGroupCreateUpdateConfiguration, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server distributed availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_dag_configuration: The configuration for the new SQL Server availability group + resource. Required. + :type create_dag_configuration: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateConfiguration + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_distributed_availability_group( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + create_dag_configuration: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server distributed availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_dag_configuration: The configuration for the new SQL Server availability group + resource. Required. + :type create_dag_configuration: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_create_distributed_availability_group( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + create_dag_configuration: Union[_models.DistributedAvailabilityGroupCreateUpdateConfiguration, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create a SQL Server distributed availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_dag_configuration: The configuration for the new SQL Server availability group + resource. Is either a DistributedAvailabilityGroupCreateUpdateConfiguration type or a IO[bytes] + type. Required. + :type create_dag_configuration: + ~azure.mgmt.azurearcdata.models.DistributedAvailabilityGroupCreateUpdateConfiguration or + IO[bytes] + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._create_distributed_availability_group_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + create_dag_configuration=create_dag_configuration, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.SqlServerAvailabilityGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.SqlServerAvailabilityGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _create_managed_instance_link_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_managed_instance_link_configuration: Union[ + _models.ManagedInstanceLinkCreateUpdateConfiguration, IO[bytes] + ], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(create_managed_instance_link_configuration, (IOBase, bytes)): + _content = create_managed_instance_link_configuration + else: + _json = self._serialize.body( + create_managed_instance_link_configuration, "ManagedInstanceLinkCreateUpdateConfiguration" + ) + + _request = build_create_managed_instance_link_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_create_managed_instance_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_managed_instance_link_configuration: _models.ManagedInstanceLinkCreateUpdateConfiguration, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create an Managed Instance Link. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_managed_instance_link_configuration: The configuration for the new Managed + Instance Link resource. Required. + :type create_managed_instance_link_configuration: + ~azure.mgmt.azurearcdata.models.ManagedInstanceLinkCreateUpdateConfiguration + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_create_managed_instance_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_managed_instance_link_configuration: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create an Managed Instance Link. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_managed_instance_link_configuration: The configuration for the new Managed + Instance Link resource. Required. + :type create_managed_instance_link_configuration: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_create_managed_instance_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + create_managed_instance_link_configuration: Union[ + _models.ManagedInstanceLinkCreateUpdateConfiguration, IO[bytes] + ], + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Create an Managed Instance Link. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param create_managed_instance_link_configuration: The configuration for the new Managed + Instance Link resource. Is either a ManagedInstanceLinkCreateUpdateConfiguration type or a + IO[bytes] type. Required. + :type create_managed_instance_link_configuration: + ~azure.mgmt.azurearcdata.models.ManagedInstanceLinkCreateUpdateConfiguration or IO[bytes] + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._create_managed_instance_link_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + create_managed_instance_link_configuration=create_managed_instance_link_configuration, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.SqlServerAvailabilityGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.SqlServerAvailabilityGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @overload + def add_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: _models.Databases, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request adding database(s) to an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to add to the SQL Server availability group resource. + Required. + :type databases: ~azure.mgmt.azurearcdata.models.Databases + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def add_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request adding database(s) to an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to add to the SQL Server availability group resource. + Required. + :type databases: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def add_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: Union[_models.Databases, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request adding database(s) to an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to add to the SQL Server availability group resource. Is + either a Databases type or a IO[bytes] type. Required. + :type databases: ~azure.mgmt.azurearcdata.models.Databases or IO[bytes] + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(databases, (IOBase, bytes)): + _content = databases + else: + _json = self._serialize.body(databases, "Databases") + + _request = build_add_databases_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _failover_mi_link_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + managed_instance_resource_id: Union[_models.FailoverMiLinkResourceId, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(managed_instance_resource_id, (IOBase, bytes)): + _content = managed_instance_resource_id + else: + _json = self._serialize.body(managed_instance_resource_id, "FailoverMiLinkResourceId") + + _request = build_failover_mi_link_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_failover_mi_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + managed_instance_resource_id: _models.FailoverMiLinkResourceId, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Request failover of Arc Sql Server to Azure Managed Instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param managed_instance_resource_id: The azure resource identifier for the Sql Managed + Instance. Required. + :type managed_instance_resource_id: ~azure.mgmt.azurearcdata.models.FailoverMiLinkResourceId + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_failover_mi_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + managed_instance_resource_id: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Request failover of Arc Sql Server to Azure Managed Instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param managed_instance_resource_id: The azure resource identifier for the Sql Managed + Instance. Required. + :type managed_instance_resource_id: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_failover_mi_link( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + managed_instance_resource_id: Union[_models.FailoverMiLinkResourceId, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.SqlServerAvailabilityGroupResource]: + """Request failover of Arc Sql Server to Azure Managed Instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param managed_instance_resource_id: The azure resource identifier for the Sql Managed + Instance. Is either a FailoverMiLinkResourceId type or a IO[bytes] type. Required. + :type managed_instance_resource_id: ~azure.mgmt.azurearcdata.models.FailoverMiLinkResourceId or + IO[bytes] + :return: An instance of LROPoller that returns either SqlServerAvailabilityGroupResource or the + result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._failover_mi_link_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + managed_instance_resource_id=managed_instance_resource_id, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.SqlServerAvailabilityGroupResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.SqlServerAvailabilityGroupResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @overload + def remove_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: _models.Databases, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request removing database(s) from an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to remove from the SQL Server availability group resource. + Required. + :type databases: ~azure.mgmt.azurearcdata.models.Databases + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def remove_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request removing database(s) from an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to remove from the SQL Server availability group resource. + Required. + :type databases: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def remove_databases( + self, + resource_group_name: str, + sql_server_instance_name: str, + availability_group_name: str, + databases: Union[_models.Databases, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerAvailabilityGroupResource: + """Request removing database(s) from an existing availability group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param availability_group_name: Name of SQL Availability Group. Required. + :type availability_group_name: str + :param databases: The database names to remove from the SQL Server availability group resource. + Is either a Databases type or a IO[bytes] type. Required. + :type databases: ~azure.mgmt.azurearcdata.models.Databases or IO[bytes] + :return: SqlServerAvailabilityGroupResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerAvailabilityGroupResource] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(databases, (IOBase, bytes)): + _content = databases + else: + _json = self._serialize.body(databases, "Databases") + + _request = build_remove_databases_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + availability_group_name=availability_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerAvailabilityGroupResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def list( + self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any + ) -> Iterable["_models.SqlServerAvailabilityGroupResource"]: + """List the availability group associated with the given Arc Sql Server. + + List the availability group associated with the given Arc Sql Server. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :return: An iterator like instance of either SqlServerAvailabilityGroupResource or the result + of cls(response) + :rtype: + ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.SqlServerAvailabilityGroupResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.ArcSqlServerAvailabilityGroupListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ArcSqlServerAvailabilityGroupListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_databases_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_databases_operations.py new file mode 100644 index 000000000000..8cdaafbd9d95 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_databases_operations.py @@ -0,0 +1,839 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 collections.abc import MutableMapping +from io import IOBase +from typing import Any, Callable, Dict, IO, Iterable, Iterator, Optional, TypeVar, Union, cast, overload +import urllib.parse + +from azure.core import PipelineClient +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.polling import LROPoller, NoPolling, PollingMethod +from azure.core.rest import HttpRequest, HttpResponse +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat +from azure.mgmt.core.polling.arm_polling import ARMPolling + +from .. import models as _models +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + + +def build_create_request( + resource_group_name: str, sql_server_instance_name: str, database_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/databases/{databaseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "databaseName": _SERIALIZER.url("database_name", database_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_delete_request( + resource_group_name: str, sql_server_instance_name: str, database_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/databases/{databaseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "databaseName": _SERIALIZER.url("database_name", database_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_get_request( + resource_group_name: str, sql_server_instance_name: str, database_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/databases/{databaseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "databaseName": _SERIALIZER.url("database_name", database_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_update_request( + resource_group_name: str, sql_server_instance_name: str, database_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/databases/{databaseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + "databaseName": _SERIALIZER.url("database_name", database_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_list_request( + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/databases", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +class SqlServerDatabasesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.azurearcdata.AzureArcDataManagementClient`'s + :attr:`sql_server_databases` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @overload + def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_resource: _models.SqlServerDatabaseResource, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerDatabaseResource: + """Creates or replaces an Arc Sql Server Database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_resource: The request body for database resource. Required. + :type sql_server_database_resource: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerDatabaseResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_resource: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerDatabaseResource: + """Creates or replaces an Arc Sql Server Database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_resource: The request body for database resource. Required. + :type sql_server_database_resource: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerDatabaseResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_resource: Union[_models.SqlServerDatabaseResource, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerDatabaseResource: + """Creates or replaces an Arc Sql Server Database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_resource: The request body for database resource. Is either a + SqlServerDatabaseResource type or a IO[bytes] type. Required. + :type sql_server_database_resource: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + or IO[bytes] + :return: SqlServerDatabaseResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerDatabaseResource] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_database_resource, (IOBase, bytes)): + _content = sql_server_database_resource + else: + _json = self._serialize.body(sql_server_database_resource, "SqlServerDatabaseResource") + + _request = build_create_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerDatabaseResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _delete_initial( + self, resource_group_name: str, sql_server_instance_name: str, database_name: str, **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + _request = build_delete_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def begin_delete( + self, resource_group_name: str, sql_server_instance_name: str, database_name: str, **kwargs: Any + ) -> LROPoller[None]: + """Deletes an Arc Sql Server database resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :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: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._delete_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + api_version=api_version, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + if polling is True: + polling_method: PollingMethod = cast(PollingMethod, ARMPolling(lro_delay, **kwargs)) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[None].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore + + @distributed_trace + def get( + self, resource_group_name: str, sql_server_instance_name: str, database_name: str, **kwargs: Any + ) -> _models.SqlServerDatabaseResource: + """Retrieves an Arc Sql Server database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :return: SqlServerDatabaseResource or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerDatabaseResource] = kwargs.pop("cls", None) + + _request = build_get_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerDatabaseResource", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _update_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_update: Union[_models.SqlServerDatabaseUpdate, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_database_update, (IOBase, bytes)): + _content = sql_server_database_update + else: + _json = self._serialize.body(sql_server_database_update, "SqlServerDatabaseUpdate") + + _request = build_update_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_update: _models.SqlServerDatabaseUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerDatabaseResource]: + """Updates an existing database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_update: The requested database resource state. Required. + :type sql_server_database_update: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseUpdate + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerDatabaseResource or the result + of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_update: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerDatabaseResource]: + """Updates an existing database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_update: The requested database resource state. Required. + :type sql_server_database_update: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either SqlServerDatabaseResource or the result + of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_update( + self, + resource_group_name: str, + sql_server_instance_name: str, + database_name: str, + sql_server_database_update: Union[_models.SqlServerDatabaseUpdate, IO[bytes]], + **kwargs: Any + ) -> LROPoller[_models.SqlServerDatabaseResource]: + """Updates an existing database. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param database_name: Name of the database. Required. + :type database_name: str + :param sql_server_database_update: The requested database resource state. Is either a + SqlServerDatabaseUpdate type or a IO[bytes] type. Required. + :type sql_server_database_update: ~azure.mgmt.azurearcdata.models.SqlServerDatabaseUpdate or + IO[bytes] + :return: An instance of LROPoller that returns either SqlServerDatabaseResource or the result + of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerDatabaseResource] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._update_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + database_name=database_name, + sql_server_database_update=sql_server_database_update, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerDatabaseResource", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.SqlServerDatabaseResource].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.SqlServerDatabaseResource]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @distributed_trace + def list( + self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any + ) -> Iterable["_models.SqlServerDatabaseResource"]: + """List the databases associated with the given Arc Sql Server. + + List the databases associated with the given Arc Sql Server. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :return: An iterator like instance of either SqlServerDatabaseResource or the result of + cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.SqlServerDatabaseResource] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.ArcSqlServerDatabaseListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + def extract_data(pipeline_response): + deserialized = self._deserialize("ArcSqlServerDatabaseListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_esu_licenses_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_esu_licenses_operations.py new file mode 100644 index 000000000000..872a653859ed --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_esu_licenses_operations.py @@ -0,0 +1,796 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 collections.abc import MutableMapping +from io import IOBase +from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, overload +import urllib.parse + +from azure.core import PipelineClient +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.rest import HttpRequest, HttpResponse +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from .. import models as _models +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + + +def build_list_request(subscription_id: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.AzureArcData/sqlServerEsuLicenses" + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_list_by_resource_group_request(resource_group_name: str, subscription_id: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerEsuLicenses", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url( + "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_get_request( + resource_group_name: str, sql_server_esu_license_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerEsuLicenses/{sqlServerEsuLicenseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url( + "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 + ), + "sqlServerEsuLicenseName": _SERIALIZER.url( + "sql_server_esu_license_name", sql_server_esu_license_name, "str", pattern=r"^[-\w\._\(\)]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_create_request( + resource_group_name: str, sql_server_esu_license_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerEsuLicenses/{sqlServerEsuLicenseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url( + "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 + ), + "sqlServerEsuLicenseName": _SERIALIZER.url( + "sql_server_esu_license_name", sql_server_esu_license_name, "str", pattern=r"^[-\w\._\(\)]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_delete_request( + resource_group_name: str, sql_server_esu_license_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerEsuLicenses/{sqlServerEsuLicenseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url( + "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 + ), + "sqlServerEsuLicenseName": _SERIALIZER.url( + "sql_server_esu_license_name", sql_server_esu_license_name, "str", pattern=r"^[-\w\._\(\)]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_update_request( + resource_group_name: str, sql_server_esu_license_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerEsuLicenses/{sqlServerEsuLicenseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url( + "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 + ), + "sqlServerEsuLicenseName": _SERIALIZER.url( + "sql_server_esu_license_name", sql_server_esu_license_name, "str", pattern=r"^[-\w\._\(\)]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs) + + +class SqlServerEsuLicensesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.azurearcdata.AzureArcDataManagementClient`'s + :attr:`sql_server_esu_licenses` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, **kwargs: Any) -> Iterable["_models.SqlServerEsuLicense"]: + """List sqlServerEsuLicense resources in the subscription. + + List sqlServerEsuLicense resources in the subscription. + + :return: An iterator like instance of either SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.SqlServerEsuLicense] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerEsuLicenseListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SqlServerEsuLicenseListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def list_by_resource_group( + self, resource_group_name: str, **kwargs: Any + ) -> Iterable["_models.SqlServerEsuLicense"]: + """List sqlServerEsuLicense resources in the resource group. + + Gets all sqlServerEsuLicenses in a resource group. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :return: An iterator like instance of either SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.SqlServerEsuLicense] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerEsuLicenseListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SqlServerEsuLicenseListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def get( + self, resource_group_name: str, sql_server_esu_license_name: str, **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Retrieves a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerEsuLicense] = kwargs.pop("cls", None) + + _request = build_get_request( + resource_group_name=resource_group_name, + sql_server_esu_license_name=sql_server_esu_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerEsuLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def create( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + sql_server_esu_license: _models.SqlServerEsuLicense, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Creates or replaces a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param sql_server_esu_license: The SQL Server ESU license to be created or updated. Required. + :type sql_server_esu_license: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + sql_server_esu_license: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Creates or replaces a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param sql_server_esu_license: The SQL Server ESU license to be created or updated. Required. + :type sql_server_esu_license: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + sql_server_esu_license: Union[_models.SqlServerEsuLicense, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Creates or replaces a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param sql_server_esu_license: The SQL Server ESU license to be created or updated. Is either a + SqlServerEsuLicense type or a IO[bytes] type. Required. + :type sql_server_esu_license: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense or IO[bytes] + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerEsuLicense] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_esu_license, (IOBase, bytes)): + _content = sql_server_esu_license + else: + _json = self._serialize.body(sql_server_esu_license, "SqlServerEsuLicense") + + _request = build_create_request( + resource_group_name=resource_group_name, + sql_server_esu_license_name=sql_server_esu_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerEsuLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, resource_group_name: str, sql_server_esu_license_name: str, **kwargs: Any + ) -> None: + """Deletes a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :return: None or the result of cls(response) + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_delete_request( + resource_group_name=resource_group_name, + sql_server_esu_license_name=sql_server_esu_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @overload + def update( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + parameters: _models.SqlServerEsuLicenseUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Updates a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param parameters: The SQL Server ESU license. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicenseUpdate + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Updates a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param parameters: The SQL Server ESU license. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def update( + self, + resource_group_name: str, + sql_server_esu_license_name: str, + parameters: Union[_models.SqlServerEsuLicenseUpdate, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerEsuLicense: + """Updates a SQL Server ESU license resource. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_esu_license_name: Name of SQL Server ESU License. Required. + :type sql_server_esu_license_name: str + :param parameters: The SQL Server ESU license. Is either a SqlServerEsuLicenseUpdate type or a + IO[bytes] type. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicenseUpdate or IO[bytes] + :return: SqlServerEsuLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerEsuLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerEsuLicense] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _json = self._serialize.body(parameters, "SqlServerEsuLicenseUpdate") + + _request = build_update_request( + resource_group_name=resource_group_name, + sql_server_esu_license_name=sql_server_esu_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerEsuLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_instances_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_instances_operations.py index 0a442ca6fc69..ff220260aa5a 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_instances_operations.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_instances_operations.py @@ -1,4 +1,4 @@ -# pylint: disable=too-many-lines +# pylint: disable=line-too-long,useless-suppression,too-many-lines # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -6,36 +6,35 @@ # Code generated by Microsoft (R) AutoRest Code Generator. # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- -import sys -from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, cast, overload +from collections.abc import MutableMapping +from io import IOBase +from typing import Any, Callable, Dict, IO, Iterable, Iterator, Optional, TypeVar, Union, cast, overload import urllib.parse +from azure.core import PipelineClient from azure.core.exceptions import ( ClientAuthenticationError, HttpResponseError, ResourceExistsError, ResourceNotFoundError, ResourceNotModifiedError, + StreamClosedError, + StreamConsumedError, map_error, ) from azure.core.paging import ItemPaged from azure.core.pipeline import PipelineResponse -from azure.core.pipeline.transport import HttpResponse from azure.core.polling import LROPoller, NoPolling, PollingMethod -from azure.core.rest import HttpRequest +from azure.core.rest import HttpRequest, HttpResponse from azure.core.tracing.decorator import distributed_trace from azure.core.utils import case_insensitive_dict from azure.mgmt.core.exceptions import ARMErrorFormat from azure.mgmt.core.polling.arm_polling import ARMPolling from .. import models as _models -from .._serialization import Serializer -from .._vendor import _convert_request, _format_url_section +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer -if sys.version_info >= (3, 8): - from typing import Literal # pylint: disable=no-name-in-module, ungrouped-imports -else: - from typing_extensions import Literal # type: ignore # pylint: disable=ungrouped-imports T = TypeVar("T") ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] @@ -47,9 +46,7 @@ def build_list_request(subscription_id: str, **kwargs: Any) -> HttpRequest: _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL @@ -60,7 +57,7 @@ def build_list_request(subscription_id: str, **kwargs: Any) -> HttpRequest: "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -75,22 +72,20 @@ def build_list_by_resource_group_request(resource_group_name: str, subscription_ _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -107,23 +102,21 @@ def build_get_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -140,9 +133,7 @@ def build_create_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -150,14 +141,14 @@ def build_create_request( _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -176,23 +167,21 @@ def build_delete_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) accept = _headers.pop("Accept", "application/json") # Construct URL _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -209,9 +198,7 @@ def build_update_request( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", "2022-03-01-preview") - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) accept = _headers.pop("Accept", "application/json") @@ -219,14 +206,14 @@ def build_update_request( _url = kwargs.pop( "template_url", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}", - ) # pylint: disable=line-too-long + ) path_format_arguments = { "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), } - _url: str = _format_url_section(_url, **path_format_arguments) # type: ignore + _url: str = _url.format(**path_format_arguments) # type: ignore # Construct parameters _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") @@ -239,6 +226,203 @@ def build_update_request( return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs) +def build_get_telemetry_request( + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/getTelemetry", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_run_migration_assessment_request( + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/runMigrationAssessment", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_get_jobs_status_request( + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/getJobsStatus", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_pre_upgrade_request( + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/preUpgrade", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_post_upgrade_request( + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/postUpgrade", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_run_managed_instance_link_assessment_request( # pylint: disable=name-too-long + resource_group_name: str, sql_server_instance_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}/runManagedInstanceLinkAssessment", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url( + "resource_group_name", resource_group_name, "str", max_length=90, min_length=1 + ), + "sqlServerInstanceName": _SERIALIZER.url("sql_server_instance_name", sql_server_instance_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="POST", url=_url, params=_params, headers=_headers, **kwargs) + + class SqlServerInstancesOperations: """ .. warning:: @@ -253,10 +437,12 @@ class SqlServerInstancesOperations: def __init__(self, *args, **kwargs): input_args = list(args) - self._client = input_args.pop(0) if input_args else kwargs.pop("client") - self._config = input_args.pop(0) if input_args else kwargs.pop("config") - self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer") - self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer") + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") @distributed_trace def list(self, **kwargs: Any) -> Iterable["_models.SqlServerInstance"]: @@ -264,7 +450,6 @@ def list(self, **kwargs: Any) -> Iterable["_models.SqlServerInstance"]: List sqlServerInstance resources in the subscription. - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either SqlServerInstance or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.SqlServerInstance] :raises ~azure.core.exceptions.HttpResponseError: @@ -272,12 +457,10 @@ def list(self, **kwargs: Any) -> Iterable["_models.SqlServerInstance"]: _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlServerInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -288,15 +471,13 @@ def list(self, **kwargs: Any) -> Iterable["_models.SqlServerInstance"]: def prepare_request(next_link=None): if not next_link: - request = build_list_request( + _request = build_list_request( subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -308,13 +489,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("SqlServerInstanceListResult", pipeline_response) @@ -324,10 +504,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -340,8 +521,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list.metadata = {"url": "/subscriptions/{subscriptionId}/providers/Microsoft.AzureArcData/sqlServerInstances"} - @distributed_trace def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_models.SqlServerInstance"]: """List sqlServerInstance resources in the resource group. @@ -350,7 +529,6 @@ def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Ite :param resource_group_name: The name of the Azure resource group. Required. :type resource_group_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: An iterator like instance of either SqlServerInstance or the result of cls(response) :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.SqlServerInstance] :raises ~azure.core.exceptions.HttpResponseError: @@ -358,12 +536,10 @@ def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Ite _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlServerInstanceListResult] = kwargs.pop("cls", None) - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -374,16 +550,14 @@ def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Ite def prepare_request(next_link=None): if not next_link: - request = build_list_by_resource_group_request( + _request = build_list_by_resource_group_request( resource_group_name=resource_group_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.list_by_resource_group.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) else: # make call to next link with the client's api-version @@ -395,13 +569,12 @@ def prepare_request(next_link=None): } ) _next_request_params["api-version"] = self._config.api_version - request = HttpRequest( + _request = HttpRequest( "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) - request.method = "GET" - return request + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request def extract_data(pipeline_response): deserialized = self._deserialize("SqlServerInstanceListResult", pipeline_response) @@ -411,10 +584,11 @@ def extract_data(pipeline_response): return deserialized.next_link or None, iter(list_of_elem) def get_next(next_link=None): - request = prepare_request(next_link) + _request = prepare_request(next_link) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -427,10 +601,6 @@ def get_next(next_link=None): return ItemPaged(get_next, extract_data) - list_by_resource_group.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances" - } - @distributed_trace def get(self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any) -> _models.SqlServerInstance: """Retrieves a SQL Server Instance resource. @@ -439,12 +609,11 @@ def get(self, resource_group_name: str, sql_server_instance_name: str, **kwargs: :type resource_group_name: str :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_name: str - :keyword callable cls: A custom type or function that will be passed the direct response :return: SqlServerInstance or the result of cls(response) :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -455,25 +624,22 @@ def get(self, resource_group_name: str, sql_server_instance_name: str, **kwargs: _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) - request = build_get_request( + _request = build_get_request( resource_group_name=resource_group_name, sql_server_instance_name=sql_server_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self.get.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -483,25 +649,21 @@ def get(self, resource_group_name: str, sql_server_instance_name: str, **kwargs: error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("SqlServerInstance", pipeline_response) + deserialized = self._deserialize("SqlServerInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) - - return deserialized + return cls(pipeline_response, deserialized, {}) # type: ignore - get.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } + return deserialized # type: ignore def _create_initial( self, resource_group_name: str, sql_server_instance_name: str, - sql_server_instance: Union[_models.SqlServerInstance, IO], + sql_server_instance: Union[_models.SqlServerInstance, IO[bytes]], **kwargs: Any - ) -> _models.SqlServerInstance: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -512,21 +674,19 @@ def _create_initial( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(sql_server_instance, (IO, bytes)): + if isinstance(sql_server_instance, (IOBase, bytes)): _content = sql_server_instance else: _json = self._serialize.body(sql_server_instance, "SqlServerInstance") - request = build_create_request( + _request = build_create_request( resource_group_name=resource_group_name, sql_server_instance_name=sql_server_instance_name, subscription_id=self._config.subscription_id, @@ -534,39 +694,35 @@ def _create_initial( content_type=content_type, json=_json, content=_content, - template_url=self._create_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 201]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - if response.status_code == 200: - deserialized = self._deserialize("SqlServerInstance", pipeline_response) - - if response.status_code == 201: - deserialized = self._deserialize("SqlServerInstance", pipeline_response) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) if cls: return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized # type: ignore - _create_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } - @overload def begin_create( self, @@ -588,14 +744,6 @@ def begin_create( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 SqlServerInstance or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] @@ -607,7 +755,7 @@ def begin_create( self, resource_group_name: str, sql_server_instance_name: str, - sql_server_instance: IO, + sql_server_instance: IO[bytes], *, content_type: str = "application/json", **kwargs: Any @@ -619,18 +767,10 @@ def begin_create( :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_name: str :param sql_server_instance: The SQL Server Instance to be created or updated. Required. - :type sql_server_instance: IO + :type sql_server_instance: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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 SqlServerInstance or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] @@ -642,7 +782,7 @@ def begin_create( self, resource_group_name: str, sql_server_instance_name: str, - sql_server_instance: Union[_models.SqlServerInstance, IO], + sql_server_instance: Union[_models.SqlServerInstance, IO[bytes]], **kwargs: Any ) -> LROPoller[_models.SqlServerInstance]: """Creates or replaces a SQL Server Instance resource. @@ -651,20 +791,9 @@ def begin_create( :type resource_group_name: str :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_name: str - :param sql_server_instance: The SQL Server Instance to be created or updated. Is either a model - type or a IO type. Required. - :type sql_server_instance: ~azure.mgmt.azurearcdata.models.SqlServerInstance or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: 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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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. + :param sql_server_instance: The SQL Server Instance to be created or updated. Is either a + SqlServerInstance type or a IO[bytes] type. Required. + :type sql_server_instance: ~azure.mgmt.azurearcdata.models.SqlServerInstance or IO[bytes] :return: An instance of LROPoller that returns either SqlServerInstance or the result of cls(response) :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] @@ -673,9 +802,7 @@ def begin_create( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) @@ -693,12 +820,13 @@ def begin_create( params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): - deserialized = self._deserialize("SqlServerInstance", pipeline_response) + deserialized = self._deserialize("SqlServerInstance", pipeline_response.http_response) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore return deserialized if polling is True: @@ -710,22 +838,20 @@ def get_long_running_output(pipeline_response): else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[_models.SqlServerInstance].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore - - begin_create.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } + return LROPoller[_models.SqlServerInstance]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) - def _delete_initial( # pylint: disable=inconsistent-return-statements + def _delete_initial( self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any - ) -> None: - error_map = { + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -736,40 +862,42 @@ def _delete_initial( # pylint: disable=inconsistent-return-statements _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) - cls: ClsType[None] = kwargs.pop("cls", None) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) - request = build_delete_request( + _request = build_delete_request( resource_group_name=resource_group_name, sql_server_instance_name=sql_server_instance_name, subscription_id=self._config.subscription_id, api_version=api_version, - template_url=self._delete_initial.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + _decompress = kwargs.pop("decompress", True) + _stream = True pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response if response.status_code not in [200, 202, 204]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass map_error(status_code=response.status_code, response=response, error_map=error_map) error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - _delete_initial.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } + return deserialized # type: ignore @distributed_trace def begin_delete(self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any) -> LROPoller[None]: @@ -779,14 +907,6 @@ def begin_delete(self, resource_group_name: str, sql_server_instance_name: str, :type resource_group_name: str :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_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: By default, your polling method will be ARMPolling. Pass in False for this - operation to not poll, or pass in your own initialized polling object for a 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: @@ -794,15 +914,13 @@ def begin_delete(self, resource_group_name: str, sql_server_instance_name: str, _headers = kwargs.pop("headers", {}) or {} _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) cls: ClsType[None] = kwargs.pop("cls", None) polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) cont_token: Optional[str] = kwargs.pop("continuation_token", None) if cont_token is None: - raw_result = self._delete_initial( # type: ignore + raw_result = self._delete_initial( resource_group_name=resource_group_name, sql_server_instance_name=sql_server_instance_name, api_version=api_version, @@ -811,11 +929,12 @@ def begin_delete(self, resource_group_name: str, sql_server_instance_name: str, params=_params, **kwargs ) + raw_result.http_response.read() # type: ignore kwargs.pop("error_map", None) def get_long_running_output(pipeline_response): # pylint: disable=inconsistent-return-statements if cls: - return cls(pipeline_response, None, {}) + return cls(pipeline_response, None, {}) # type: ignore if polling is True: polling_method: PollingMethod = cast(PollingMethod, ARMPolling(lro_delay, **kwargs)) @@ -824,20 +943,87 @@ def get_long_running_output(pipeline_response): # pylint: disable=inconsistent- else: polling_method = polling if cont_token: - return LROPoller.from_continuation_token( + return LROPoller[None].from_continuation_token( polling_method=polling_method, continuation_token=cont_token, client=self._client, deserialization_callback=get_long_running_output, ) - return LROPoller(self._client, raw_result, get_long_running_output, polling_method) # type: ignore + return LROPoller[None](self._client, raw_result, get_long_running_output, polling_method) # type: ignore - begin_delete.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } + def _update_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + parameters: Union[_models.SqlServerInstanceUpdate, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _json = self._serialize.body(parameters, "SqlServerInstanceUpdate") + + _request = build_update_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore @overload - def update( + def begin_update( self, resource_group_name: str, sql_server_instance_name: str, @@ -845,7 +1031,7 @@ def update( *, content_type: str = "application/json", **kwargs: Any - ) -> _models.SqlServerInstance: + ) -> LROPoller[_models.SqlServerInstance]: """Updates a SQL Server Instance resource. :param resource_group_name: The name of the Azure resource group. Required. @@ -857,22 +1043,22 @@ def update( :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SqlServerInstance or the result of cls(response) - :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance + :return: An instance of LROPoller that returns either SqlServerInstance or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] :raises ~azure.core.exceptions.HttpResponseError: """ @overload - def update( + def begin_update( self, resource_group_name: str, sql_server_instance_name: str, - parameters: IO, + parameters: IO[bytes], *, content_type: str = "application/json", **kwargs: Any - ) -> _models.SqlServerInstance: + ) -> LROPoller[_models.SqlServerInstance]: """Updates a SQL Server Instance resource. :param resource_group_name: The name of the Azure resource group. Required. @@ -880,41 +1066,95 @@ def update( :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_name: str :param parameters: The SQL Server Instance. Required. - :type parameters: IO + :type parameters: IO[bytes] :keyword content_type: Body Parameter content-type. Content type parameter for binary body. Default value is "application/json". :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SqlServerInstance or the result of cls(response) - :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance + :return: An instance of LROPoller that returns either SqlServerInstance or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] :raises ~azure.core.exceptions.HttpResponseError: """ @distributed_trace - def update( + def begin_update( self, resource_group_name: str, sql_server_instance_name: str, - parameters: Union[_models.SqlServerInstanceUpdate, IO], + parameters: Union[_models.SqlServerInstanceUpdate, IO[bytes]], **kwargs: Any - ) -> _models.SqlServerInstance: + ) -> LROPoller[_models.SqlServerInstance]: """Updates a SQL Server Instance resource. :param resource_group_name: The name of the Azure resource group. Required. :type resource_group_name: str :param sql_server_instance_name: Name of SQL Server Instance. Required. :type sql_server_instance_name: str - :param parameters: The SQL Server Instance. Is either a model type or a IO type. Required. - :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerInstanceUpdate or IO - :keyword content_type: Body Parameter content-type. Known values are: 'application/json'. - Default value is None. - :paramtype content_type: str - :keyword callable cls: A custom type or function that will be passed the direct response - :return: SqlServerInstance or the result of cls(response) - :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance + :param parameters: The SQL Server Instance. Is either a SqlServerInstanceUpdate type or a + IO[bytes] type. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerInstanceUpdate or IO[bytes] + :return: An instance of LROPoller that returns either SqlServerInstance or the result of + cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstance] :raises ~azure.core.exceptions.HttpResponseError: """ - error_map = { + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._update_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + parameters=parameters, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize("SqlServerInstance", pipeline_response.http_response) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.SqlServerInstance].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.SqlServerInstance]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + def _get_telemetry_initial( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_telemetry_request: Union[_models.SqlServerInstanceTelemetryRequest, IO[bytes]], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { 401: ClientAuthenticationError, 404: ResourceNotFoundError, 409: ResourceExistsError, @@ -925,21 +1165,19 @@ def update( _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) - api_version: Literal["2022-03-01-preview"] = kwargs.pop( - "api_version", _params.pop("api-version", self._config.api_version) - ) + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) - cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) content_type = content_type or "application/json" _json = None _content = None - if isinstance(parameters, (IO, bytes)): - _content = parameters + if isinstance(sql_server_instance_telemetry_request, (IOBase, bytes)): + _content = sql_server_instance_telemetry_request else: - _json = self._serialize.body(parameters, "SqlServerInstanceUpdate") + _json = self._serialize.body(sql_server_instance_telemetry_request, "SqlServerInstanceTelemetryRequest") - request = build_update_request( + _request = build_get_telemetry_request( resource_group_name=resource_group_name, sql_server_instance_name=sql_server_instance_name, subscription_id=self._config.subscription_id, @@ -947,15 +1185,285 @@ def update( content_type=content_type, json=_json, content=_content, - template_url=self.update.metadata["url"], headers=_headers, params=_params, ) - request = _convert_request(request) - request.url = self._client.format_url(request.url) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_get_telemetry( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_telemetry_request: _models.SqlServerInstanceTelemetryRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[Iterable[List[str]]]: + """Retrieves SQL Server instance telemetry. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_telemetry_request: Contains the parameters to get SQL Server + instance telemetry. Required. + :type sql_server_instance_telemetry_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceTelemetryRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns an iterator like instance of either + SqlServerInstanceTelemetryResponse or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.core.paging.ItemPaged[list[str]]] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_get_telemetry( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_telemetry_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[Iterable[List[str]]]: + """Retrieves SQL Server instance telemetry. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_telemetry_request: Contains the parameters to get SQL Server + instance telemetry. Required. + :type sql_server_instance_telemetry_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns an iterator like instance of either + SqlServerInstanceTelemetryResponse or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.core.paging.ItemPaged[list[str]]] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_get_telemetry( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_telemetry_request: Union[_models.SqlServerInstanceTelemetryRequest, IO[bytes]], + **kwargs: Any + ) -> LROPoller[Iterable[List[str]]]: + """Retrieves SQL Server instance telemetry. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_telemetry_request: Contains the parameters to get SQL Server + instance telemetry. Is either a SqlServerInstanceTelemetryRequest type or a IO[bytes] type. + Required. + :type sql_server_instance_telemetry_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceTelemetryRequest or IO[bytes] + :return: An instance of LROPoller that returns an iterator like instance of either + SqlServerInstanceTelemetryResponse or the result of cls(response) + :rtype: ~azure.core.polling.LROPoller[~azure.core.paging.ItemPaged[list[str]]] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerInstanceTelemetryResponse] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_instance_telemetry_request, (IOBase, bytes)): + _content = sql_server_instance_telemetry_request + else: + _json = self._serialize.body(sql_server_instance_telemetry_request, "SqlServerInstanceTelemetryRequest") + + def prepare_request(next_link=None): + if not next_link: + + _request = build_get_telemetry_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SqlServerInstanceTelemetryResponse", pipeline_response.http_response) + list_of_elem = deserialized.rows + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._get_telemetry_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + sql_server_instance_telemetry_request=sql_server_instance_telemetry_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + def internal_get_next(next_link=None): + if next_link is None: + return pipeline_response + return get_next(next_link) + + return ItemPaged(internal_get_next, extract_data) + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[Iterable[List[str]]].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[Iterable[List[str]]]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) + + @distributed_trace + def run_migration_assessment( + self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any + ) -> _models.SqlServerInstanceRunMigrationAssessmentResponse: + """Runs migration assessment for SQL Server instance. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :return: SqlServerInstanceRunMigrationAssessmentResponse or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstanceRunMigrationAssessmentResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerInstanceRunMigrationAssessmentResponse] = kwargs.pop("cls", None) + + _request = build_run_migration_assessment_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + _stream = False pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access - request, stream=False, **kwargs + _request, stream=_stream, **kwargs ) response = pipeline_response.http_response @@ -965,13 +1473,486 @@ def update( error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) - deserialized = self._deserialize("SqlServerInstance", pipeline_response) + deserialized = self._deserialize( + "SqlServerInstanceRunMigrationAssessmentResponse", pipeline_response.http_response + ) if cls: - return cls(pipeline_response, deserialized, {}) + return cls(pipeline_response, deserialized, {}) # type: ignore - return deserialized + return deserialized # type: ignore - update.metadata = { - "url": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerInstances/{sqlServerInstanceName}" - } + @overload + def get_jobs_status( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_jobs_status_request: Optional[_models.SqlServerInstanceJobsStatusRequest] = None, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerInstanceJobsStatusResponse: + """Gets jobs status details for sql arc resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_jobs_status_request: Contains the parameters to get SQL Server + instance agent jobs status. Default value is None. + :type sql_server_instance_jobs_status_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceJobsStatusRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerInstanceJobsStatusResponse or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstanceJobsStatusResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def get_jobs_status( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_jobs_status_request: Optional[IO[bytes]] = None, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerInstanceJobsStatusResponse: + """Gets jobs status details for sql arc resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_jobs_status_request: Contains the parameters to get SQL Server + instance agent jobs status. Default value is None. + :type sql_server_instance_jobs_status_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerInstanceJobsStatusResponse or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstanceJobsStatusResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def get_jobs_status( + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_jobs_status_request: Optional[ + Union[_models.SqlServerInstanceJobsStatusRequest, IO[bytes]] + ] = None, + **kwargs: Any + ) -> _models.SqlServerInstanceJobsStatusResponse: + """Gets jobs status details for sql arc resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_jobs_status_request: Contains the parameters to get SQL Server + instance agent jobs status. Is either a SqlServerInstanceJobsStatusRequest type or a IO[bytes] + type. Default value is None. + :type sql_server_instance_jobs_status_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceJobsStatusRequest or IO[bytes] + :return: SqlServerInstanceJobsStatusResponse or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstanceJobsStatusResponse + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerInstanceJobsStatusResponse] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_instance_jobs_status_request, (IOBase, bytes)): + _content = sql_server_instance_jobs_status_request + else: + if sql_server_instance_jobs_status_request is not None: + _json = self._serialize.body( + sql_server_instance_jobs_status_request, "SqlServerInstanceJobsStatusRequest" + ) + else: + _json = None + + _request = build_get_jobs_status_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerInstanceJobsStatusResponse", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def pre_upgrade( + self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any + ) -> _models.SqlServerInstance: + """Request Upgrade Permission before upgrading. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :return: SqlServerInstance or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) + + _request = build_pre_upgrade_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerInstance", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def post_upgrade( + self, resource_group_name: str, sql_server_instance_name: str, **kwargs: Any + ) -> _models.SqlServerInstance: + """Clean up after upgrading. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :return: SqlServerInstance or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerInstance + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerInstance] = kwargs.pop("cls", None) + + _request = build_post_upgrade_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerInstance", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + def _run_managed_instance_link_assessment_initial( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_managed_instance_link_assessment_request: Union[ + _models.SqlServerInstanceManagedInstanceLinkAssessmentRequest, IO[bytes] + ], + **kwargs: Any + ) -> Iterator[bytes]: + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[Iterator[bytes]] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_instance_managed_instance_link_assessment_request, (IOBase, bytes)): + _content = sql_server_instance_managed_instance_link_assessment_request + else: + _json = self._serialize.body( + sql_server_instance_managed_instance_link_assessment_request, + "SqlServerInstanceManagedInstanceLinkAssessmentRequest", + ) + + _request = build_run_managed_instance_link_assessment_request( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _decompress = kwargs.pop("decompress", True) + _stream = True + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **kwargs + ) + + response = pipeline_response.http_response + + if response.status_code not in [200, 202]: + try: + response.read() # Load the body in memory and close the socket + except (StreamConsumedError, StreamClosedError): + pass + map_error(status_code=response.status_code, response=response, error_map=error_map) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + response_headers = {} + if response.status_code == 202: + response_headers["Retry-After"] = self._deserialize("int", response.headers.get("Retry-After")) + response_headers["Location"] = self._deserialize("str", response.headers.get("Location")) + response_headers["Azure-AsyncOperation"] = self._deserialize( + "str", response.headers.get("Azure-AsyncOperation") + ) + + deserialized = response.stream_download(self._client._pipeline, decompress=_decompress) + + if cls: + return cls(pipeline_response, deserialized, response_headers) # type: ignore + + return deserialized # type: ignore + + @overload + def begin_run_managed_instance_link_assessment( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_managed_instance_link_assessment_request: _models.SqlServerInstanceManagedInstanceLinkAssessmentRequest, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse]: + """Runs Managed Instance Link assessment for SQL Server instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_managed_instance_link_assessment_request: Contains the parameters to + run SQL Server instance MI link assessment. Required. + :type sql_server_instance_managed_instance_link_assessment_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessmentRequest + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + SqlServerInstanceManagedInstanceLinkAssessmentResponse or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessmentResponse] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def begin_run_managed_instance_link_assessment( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_managed_instance_link_assessment_request: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> LROPoller[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse]: + """Runs Managed Instance Link assessment for SQL Server instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_managed_instance_link_assessment_request: Contains the parameters to + run SQL Server instance MI link assessment. Required. + :type sql_server_instance_managed_instance_link_assessment_request: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: An instance of LROPoller that returns either + SqlServerInstanceManagedInstanceLinkAssessmentResponse or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessmentResponse] + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def begin_run_managed_instance_link_assessment( # pylint: disable=name-too-long + self, + resource_group_name: str, + sql_server_instance_name: str, + sql_server_instance_managed_instance_link_assessment_request: Union[ + _models.SqlServerInstanceManagedInstanceLinkAssessmentRequest, IO[bytes] + ], + **kwargs: Any + ) -> LROPoller[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse]: + """Runs Managed Instance Link assessment for SQL Server instance. + + :param resource_group_name: The name of the resource group. The name is case insensitive. + Required. + :type resource_group_name: str + :param sql_server_instance_name: Name of SQL Server Instance. Required. + :type sql_server_instance_name: str + :param sql_server_instance_managed_instance_link_assessment_request: Contains the parameters to + run SQL Server instance MI link assessment. Is either a + SqlServerInstanceManagedInstanceLinkAssessmentRequest type or a IO[bytes] type. Required. + :type sql_server_instance_managed_instance_link_assessment_request: + ~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessmentRequest or + IO[bytes] + :return: An instance of LROPoller that returns either + SqlServerInstanceManagedInstanceLinkAssessmentResponse or the result of cls(response) + :rtype: + ~azure.core.polling.LROPoller[~azure.mgmt.azurearcdata.models.SqlServerInstanceManagedInstanceLinkAssessmentResponse] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse] = kwargs.pop("cls", None) + polling: Union[bool, PollingMethod] = kwargs.pop("polling", True) + lro_delay = kwargs.pop("polling_interval", self._config.polling_interval) + cont_token: Optional[str] = kwargs.pop("continuation_token", None) + if cont_token is None: + raw_result = self._run_managed_instance_link_assessment_initial( + resource_group_name=resource_group_name, + sql_server_instance_name=sql_server_instance_name, + sql_server_instance_managed_instance_link_assessment_request=sql_server_instance_managed_instance_link_assessment_request, + api_version=api_version, + content_type=content_type, + cls=lambda x, y, z: x, + headers=_headers, + params=_params, + **kwargs + ) + raw_result.http_response.read() # type: ignore + kwargs.pop("error_map", None) + + def get_long_running_output(pipeline_response): + deserialized = self._deserialize( + "SqlServerInstanceManagedInstanceLinkAssessmentResponse", pipeline_response.http_response + ) + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + return deserialized + + if polling is True: + polling_method: PollingMethod = cast( + PollingMethod, ARMPolling(lro_delay, lro_options={"final-state-via": "azure-async-operation"}, **kwargs) + ) + elif polling is False: + polling_method = cast(PollingMethod, NoPolling()) + else: + polling_method = polling + if cont_token: + return LROPoller[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse].from_continuation_token( + polling_method=polling_method, + continuation_token=cont_token, + client=self._client, + deserialization_callback=get_long_running_output, + ) + return LROPoller[_models.SqlServerInstanceManagedInstanceLinkAssessmentResponse]( + self._client, raw_result, get_long_running_output, polling_method # type: ignore + ) diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_licenses_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_licenses_operations.py new file mode 100644 index 000000000000..b530f725beec --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/azure/mgmt/azurearcdata/operations/_sql_server_licenses_operations.py @@ -0,0 +1,773 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 collections.abc import MutableMapping +from io import IOBase +from typing import Any, Callable, Dict, IO, Iterable, Optional, TypeVar, Union, overload +import urllib.parse + +from azure.core import PipelineClient +from azure.core.exceptions import ( + ClientAuthenticationError, + HttpResponseError, + ResourceExistsError, + ResourceNotFoundError, + ResourceNotModifiedError, + map_error, +) +from azure.core.paging import ItemPaged +from azure.core.pipeline import PipelineResponse +from azure.core.rest import HttpRequest, HttpResponse +from azure.core.tracing.decorator import distributed_trace +from azure.core.utils import case_insensitive_dict +from azure.mgmt.core.exceptions import ARMErrorFormat + +from .. import models as _models +from .._configuration import AzureArcDataManagementClientConfiguration +from .._utils.serialization import Deserializer, Serializer + +T = TypeVar("T") +ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]] + +_SERIALIZER = Serializer() +_SERIALIZER.client_side_validation = False + + +def build_list_request(subscription_id: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", "/subscriptions/{subscriptionId}/providers/Microsoft.AzureArcData/sqlServerLicenses" + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_list_by_resource_group_request(resource_group_name: str, subscription_id: str, **kwargs: Any) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerLicenses", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_get_request( + resource_group_name: str, sql_server_license_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerLicenses/{sqlServerLicenseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerLicenseName": _SERIALIZER.url( + "sql_server_license_name", sql_server_license_name, "str", pattern=r"^[-\w\._\(\)]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_create_request( + resource_group_name: str, sql_server_license_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerLicenses/{sqlServerLicenseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerLicenseName": _SERIALIZER.url( + "sql_server_license_name", sql_server_license_name, "str", pattern=r"^[-\w\._\(\)]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PUT", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_delete_request( + resource_group_name: str, sql_server_license_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerLicenses/{sqlServerLicenseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerLicenseName": _SERIALIZER.url( + "sql_server_license_name", sql_server_license_name, "str", pattern=r"^[-\w\._\(\)]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="DELETE", url=_url, params=_params, headers=_headers, **kwargs) + + +def build_update_request( + resource_group_name: str, sql_server_license_name: str, subscription_id: str, **kwargs: Any +) -> HttpRequest: + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", "2025-03-01-preview")) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + accept = _headers.pop("Accept", "application/json") + + # Construct URL + _url = kwargs.pop( + "template_url", + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AzureArcData/sqlServerLicenses/{sqlServerLicenseName}", + ) + path_format_arguments = { + "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str"), + "resourceGroupName": _SERIALIZER.url("resource_group_name", resource_group_name, "str"), + "sqlServerLicenseName": _SERIALIZER.url( + "sql_server_license_name", sql_server_license_name, "str", pattern=r"^[-\w\._\(\)]+$" + ), + } + + _url: str = _url.format(**path_format_arguments) # type: ignore + + # Construct parameters + _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str") + + # Construct headers + if content_type is not None: + _headers["Content-Type"] = _SERIALIZER.header("content_type", content_type, "str") + _headers["Accept"] = _SERIALIZER.header("accept", accept, "str") + + return HttpRequest(method="PATCH", url=_url, params=_params, headers=_headers, **kwargs) + + +class SqlServerLicensesOperations: + """ + .. warning:: + **DO NOT** instantiate this class directly. + + Instead, you should access the following operations through + :class:`~azure.mgmt.azurearcdata.AzureArcDataManagementClient`'s + :attr:`sql_server_licenses` attribute. + """ + + models = _models + + def __init__(self, *args, **kwargs): + input_args = list(args) + self._client: PipelineClient = input_args.pop(0) if input_args else kwargs.pop("client") + self._config: AzureArcDataManagementClientConfiguration = ( + input_args.pop(0) if input_args else kwargs.pop("config") + ) + self._serialize: Serializer = input_args.pop(0) if input_args else kwargs.pop("serializer") + self._deserialize: Deserializer = input_args.pop(0) if input_args else kwargs.pop("deserializer") + + @distributed_trace + def list(self, **kwargs: Any) -> Iterable["_models.SqlServerLicense"]: + """List sqlServerLicense resources in the subscription. + + List sqlServerLicense resources in the subscription. + + :return: An iterator like instance of either SqlServerLicense or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.SqlServerLicense] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerLicenseListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_request( + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SqlServerLicenseListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def list_by_resource_group(self, resource_group_name: str, **kwargs: Any) -> Iterable["_models.SqlServerLicense"]: + """List sqlServerLicense resources in the resource group. + + Gets all sqlServerLicenses in a resource group. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :return: An iterator like instance of either SqlServerLicense or the result of cls(response) + :rtype: ~azure.core.paging.ItemPaged[~azure.mgmt.azurearcdata.models.SqlServerLicense] + :raises ~azure.core.exceptions.HttpResponseError: + """ + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerLicenseListResult] = kwargs.pop("cls", None) + + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + def prepare_request(next_link=None): + if not next_link: + + _request = build_list_by_resource_group_request( + resource_group_name=resource_group_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + else: + # make call to next link with the client's api-version + _parsed_next_link = urllib.parse.urlparse(next_link) + _next_request_params = case_insensitive_dict( + { + key: [urllib.parse.quote(v) for v in value] + for key, value in urllib.parse.parse_qs(_parsed_next_link.query).items() + } + ) + _next_request_params["api-version"] = self._config.api_version + _request = HttpRequest( + "GET", urllib.parse.urljoin(next_link, _parsed_next_link.path), params=_next_request_params + ) + _request.url = self._client.format_url(_request.url) + _request.method = "GET" + return _request + + def extract_data(pipeline_response): + deserialized = self._deserialize("SqlServerLicenseListResult", pipeline_response) + list_of_elem = deserialized.value + if cls: + list_of_elem = cls(list_of_elem) # type: ignore + return deserialized.next_link or None, iter(list_of_elem) + + def get_next(next_link=None): + _request = prepare_request(next_link) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + return pipeline_response + + return ItemPaged(get_next, extract_data) + + @distributed_trace + def get(self, resource_group_name: str, sql_server_license_name: str, **kwargs: Any) -> _models.SqlServerLicense: + """Retrieves a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[_models.SqlServerLicense] = kwargs.pop("cls", None) + + _request = build_get_request( + resource_group_name=resource_group_name, + sql_server_license_name=sql_server_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @overload + def create( + self, + resource_group_name: str, + sql_server_license_name: str, + sql_server_license: _models.SqlServerLicense, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerLicense: + """Creates or replaces a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param sql_server_license: The SQL Server license to be created or updated. Required. + :type sql_server_license: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def create( + self, + resource_group_name: str, + sql_server_license_name: str, + sql_server_license: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerLicense: + """Creates or replaces a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param sql_server_license: The SQL Server license to be created or updated. Required. + :type sql_server_license: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def create( + self, + resource_group_name: str, + sql_server_license_name: str, + sql_server_license: Union[_models.SqlServerLicense, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerLicense: + """Creates or replaces a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param sql_server_license: The SQL Server license to be created or updated. Is either a + SqlServerLicense type or a IO[bytes] type. Required. + :type sql_server_license: ~azure.mgmt.azurearcdata.models.SqlServerLicense or IO[bytes] + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerLicense] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(sql_server_license, (IOBase, bytes)): + _content = sql_server_license + else: + _json = self._serialize.body(sql_server_license, "SqlServerLicense") + + _request = build_create_request( + resource_group_name=resource_group_name, + sql_server_license_name=sql_server_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore + + @distributed_trace + def delete( # pylint: disable=inconsistent-return-statements + self, resource_group_name: str, sql_server_license_name: str, **kwargs: Any + ) -> None: + """Deletes a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :return: None or the result of cls(response) + :rtype: None + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = kwargs.pop("headers", {}) or {} + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + cls: ClsType[None] = kwargs.pop("cls", None) + + _request = build_delete_request( + resource_group_name=resource_group_name, + sql_server_license_name=sql_server_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + if cls: + return cls(pipeline_response, None, {}) # type: ignore + + @overload + def update( + self, + resource_group_name: str, + sql_server_license_name: str, + parameters: _models.SqlServerLicenseUpdate, + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerLicense: + """Updates a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param parameters: The SQL Server license. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerLicenseUpdate + :keyword content_type: Body Parameter content-type. Content type parameter for JSON body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @overload + def update( + self, + resource_group_name: str, + sql_server_license_name: str, + parameters: IO[bytes], + *, + content_type: str = "application/json", + **kwargs: Any + ) -> _models.SqlServerLicense: + """Updates a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param parameters: The SQL Server license. Required. + :type parameters: IO[bytes] + :keyword content_type: Body Parameter content-type. Content type parameter for binary body. + Default value is "application/json". + :paramtype content_type: str + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + + @distributed_trace + def update( + self, + resource_group_name: str, + sql_server_license_name: str, + parameters: Union[_models.SqlServerLicenseUpdate, IO[bytes]], + **kwargs: Any + ) -> _models.SqlServerLicense: + """Updates a SQL Server license resource. + + :param resource_group_name: The name of the Azure resource group. Required. + :type resource_group_name: str + :param sql_server_license_name: Name of SQL Server License. Required. + :type sql_server_license_name: str + :param parameters: The SQL Server license. Is either a SqlServerLicenseUpdate type or a + IO[bytes] type. Required. + :type parameters: ~azure.mgmt.azurearcdata.models.SqlServerLicenseUpdate or IO[bytes] + :return: SqlServerLicense or the result of cls(response) + :rtype: ~azure.mgmt.azurearcdata.models.SqlServerLicense + :raises ~azure.core.exceptions.HttpResponseError: + """ + error_map: MutableMapping = { + 401: ClientAuthenticationError, + 404: ResourceNotFoundError, + 409: ResourceExistsError, + 304: ResourceNotModifiedError, + } + error_map.update(kwargs.pop("error_map", {}) or {}) + + _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {}) + _params = case_insensitive_dict(kwargs.pop("params", {}) or {}) + + api_version: str = kwargs.pop("api_version", _params.pop("api-version", self._config.api_version)) + content_type: Optional[str] = kwargs.pop("content_type", _headers.pop("Content-Type", None)) + cls: ClsType[_models.SqlServerLicense] = kwargs.pop("cls", None) + + content_type = content_type or "application/json" + _json = None + _content = None + if isinstance(parameters, (IOBase, bytes)): + _content = parameters + else: + _json = self._serialize.body(parameters, "SqlServerLicenseUpdate") + + _request = build_update_request( + resource_group_name=resource_group_name, + sql_server_license_name=sql_server_license_name, + subscription_id=self._config.subscription_id, + api_version=api_version, + content_type=content_type, + json=_json, + content=_content, + headers=_headers, + params=_params, + ) + _request.url = self._client.format_url(_request.url) + + _stream = False + pipeline_response: PipelineResponse = self._client._pipeline.run( # pylint: disable=protected-access + _request, stream=_stream, **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) + error = self._deserialize.failsafe_deserialize(_models.ErrorResponse, pipeline_response) + raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) + + deserialized = self._deserialize("SqlServerLicense", pipeline_response.http_response) + + if cls: + return cls(pipeline_response, deserialized, {}) # type: ignore + + return deserialized # type: ignore diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/add_databases_to_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/add_databases_to_availability_group.py new file mode 100644 index 000000000000..eae1dd74d5f8 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/add_databases_to_availability_group.py @@ -0,0 +1,45 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python add_databases_to_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.add_databases( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + availability_group_name="testAG", + databases={"values": ["db1", "db2", "db3"]}, + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/AddDatabasesToAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_active_directory_connector.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_active_directory_connector.py index 992c02d65a25..e29168a2cae6 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_active_directory_connector.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_active_directory_connector.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -59,6 +61,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/CreateOrUpdateActiveDirectoryConnector.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdateActiveDirectoryConnector.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_arc_sql_server_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_arc_sql_server_availability_group.py new file mode 100644 index 000000000000..c79d7b8b9cec --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_arc_sql_server_availability_group.py @@ -0,0 +1,79 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python create_or_update_arc_sql_server_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.create( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + availability_group_name="testAG", + sql_server_availability_group_resource={ + "location": "southeastasia", + "properties": { + "databases": {"value": [{"databaseName": "db1"}, {"databaseName": "db2"}]}, + "info": { + "basicFeatures": False, + "dbFailover": True, + "dtcSupport": False, + "failureConditionLevel": 3, + "healthCheckTimeout": 30000, + "isContained": False, + "isDistributed": False, + "replicationPartnerType": None, + "requiredSynchronizedSecondariesToCommit": 0, + "secondaryRecoveryHealthDescription": None, + }, + "replicas": { + "value": [ + { + "configure": { + "backupPriority": 50, + "endpointUrl": "TCP://mytest60-0.mytest60-svc:5022", + "readOnlyRoutingUrl": None, + "readWriteRoutingUrl": None, + "replicaCreateDate": None, + "replicaModifyDate": None, + "sessionTimeout": 10, + }, + "replicaName": "testSqlServer\\INST1", + } + ] + }, + }, + "tags": {"mytag": "myval"}, + }, + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdateArcSqlServerAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_arc_sql_server_database.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_arc_sql_server_database.py new file mode 100644 index 000000000000..6812c618b810 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_arc_sql_server_database.py @@ -0,0 +1,83 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python create_or_update_arc_sql_server_database.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_databases.create( + resource_group_name="testrg", + sql_server_instance_name="testSqlServerInstance", + database_name="testdb", + sql_server_database_resource={ + "location": "southeastasia", + "properties": { + "backupInformation": { + "lastFullBackup": "2022-05-05T16:26:33.883Z", + "lastLogBackup": "2022-05-10T16:26:33.883Z", + }, + "backupPolicy": { + "differentialBackupHours": 12, + "fullBackupDays": 1, + "retentionPeriodDays": 1, + "transactionLogBackupMinutes": 30, + }, + "collationName": "SQL_Latin1_General_CP1_CI_AS", + "compatibilityLevel": 150, + "createMode": "PointInTimeRestore", + "dataFileSizeMB": 80, + "databaseCreationDate": "2022-04-05T16:26:33.883Z", + "databaseOptions": { + "isAutoCloseOn": True, + "isAutoCreateStatsOn": True, + "isAutoShrinkOn": True, + "isAutoUpdateStatsOn": True, + "isEncrypted": True, + "isMemoryOptimizationEnabled": True, + "isRemoteDataArchiveEnabled": True, + "isTrustworthyOn": True, + }, + "isReadOnly": True, + "logFileSizeMB": 70, + "recoveryMode": "Full", + "restorePointInTime": "2022-05-05T16:26:33.883Z", + "sizeMB": 150, + "sourceDatabaseId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.AzureArcData/testSqlServerInstance/testsqlManagedInstance/databases/MyDatabase", + "spaceAvailableMB": 100, + "state": "Online", + }, + "tags": {"mytag": "myval"}, + }, + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdateArcSqlServerDatabase.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_data_controller.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_data_controller.py index 748fb8eabae1..c89cc2a90b34 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_data_controller.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_data_controller.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -71,6 +73,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/CreateOrUpdateDataController.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdateDataController.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_failover_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_failover_group.py new file mode 100644 index 000000000000..d834466509e1 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_failover_group.py @@ -0,0 +1,50 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python create_or_update_failover_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.failover_groups.begin_create( + resource_group_name="testrg", + sql_managed_instance_name="testSqlManagedInstance", + failover_group_name="testFailoverGroupName", + failover_group_resource={ + "properties": { + "partnerManagedInstanceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.AzureArcData/sqlManagedInstances/partnerMI", + "spec": {"partnerSyncMode": "async", "role": "primary"}, + } + }, + ).result() + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdateFailoverGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_managed_instance_link.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_managed_instance_link.py new file mode 100644 index 000000000000..cd9f7f0127ac --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_managed_instance_link.py @@ -0,0 +1,76 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python create_or_update_managed_instance_link.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.begin_create_managed_instance_link( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + create_managed_instance_link_configuration={ + "availabilityGroup": { + "availabilityGroupName": "myNewAg", + "databases": ["database1"], + "replicas": [ + { + "availabilityMode": "SYNCHRONOUS_COMMIT", + "endpointUrl": "TCP://testSqlServer_INST1.testSqlserverDomain:5022", + "failoverMode": "AUTOMATIC", + "secondaryRoleAllowConnections": "ALL", + "seedingMode": "AUTOMATIC", + } + ], + }, + "distributedAvailabilityGroup": { + "availabilityGroupName": "myNewDag", + "primaryAvailabilityGroup": { + "availabilityGroup": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.AzureArcData/sqlServerInstances/testSqlServer_INST1/availabilityGroups/testAG1", + "availabilityMode": "ASYNCHRONOUS_COMMIT", + "certificateConfiguration": {"certificateName": "myCert"}, + "failoverMode": "MANUAL", + "listenerUrl": "TCP://testAG1.contoso.com:5022", + "seedingMode": "AUTOMATIC", + }, + "secondaryAvailabilityGroup": { + "availabilityGroup": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Sql/managedInstances/testcl", + "availabilityMode": "ASYNCHRONOUS_COMMIT", + "failoverMode": "NONE", + "seedingMode": "AUTOMATIC", + }, + }, + "miLinkConfiguration": {"instanceAvailabilityGroupName": "testAG2"}, + }, + ).result() + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdateManagedInstanceLink.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_postgres_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_postgres_instance.py index 7119b1f25104..22b4080a6dc4 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_postgres_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_postgres_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -83,6 +85,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/CreateOrUpdatePostgresInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdatePostgresInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_managed_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_managed_instance.py index e061afe5d2fb..41e4a267d7f0 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_managed_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_managed_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -57,6 +59,24 @@ def main(): } } }, + "security": { + "activeDirectory": { + "accountName": "Account name", + "connector": {"name": "Name of connector", "namespace": "Namespace of connector"}, + "encryptionTypes": ["Encryption type item1, Encryption type item2,..."], + "keytabSecret": "Key tab secret of account", + }, + "adminLoginSecret": "test-sql-login-secret", + "serviceCertificateSecret": "Service Certificate Secret", + "transparentDataEncryption": {"mode": "SystemManaged"}, + }, + "settings": { + "network": { + "forceencryption": 0, + "tlsciphers": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384", + "tlsprotocols": "1.2", + } + }, }, }, "licenseType": "LicenseIncluded", @@ -69,6 +89,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/CreateOrUpdateSqlManagedInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdateSqlManagedInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_esu_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_esu_license.py new file mode 100644 index 000000000000..44ac6e3b170d --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_esu_license.py @@ -0,0 +1,54 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python create_or_update_sql_server_esu_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_esu_licenses.create( + resource_group_name="testrg", + sql_server_esu_license_name="testsqlServerEsuLicense", + sql_server_esu_license={ + "location": "northeurope", + "properties": { + "activationState": "Inactive", + "billingPlan": "PAYG", + "physicalCores": 24, + "scopeType": "Subscription", + "version": "SQL Server 2012", + }, + "tags": {"mytag": "myval"}, + }, + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdateSqlServerEsuLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_instance.py index d4a8a27b399c..8292ac2c9afc 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -35,21 +37,30 @@ def main(): sql_server_instance={ "location": "northeurope", "properties": { - "azureDefenderStatus": "Protected", - "azureDefenderStatusLastUpdated": "2020-01-02T17:18:19.1234567Z", - "collation": "collation", - "containerResourceId": "Resource id of hosting Arc Machine", - "currentVersion": "2012", + "authentication": { + "mode": "Windows", + "sqlServerEntraIdentity": [ + { + "clientId": "00000000-1111-2222-3333-444444444444", + "identityType": "UserAssignedManagedIdentity", + }, + {"clientId": "", "identityType": "SystemAssignedManagedIdentity"}, + ], + }, + "backupPolicy": { + "differentialBackupHours": 12, + "fullBackupDays": 1, + "retentionPeriodDays": 1, + "transactionLogBackupMinutes": 30, + }, + "clientConnection": {"enabled": False}, + "cores": "4", "edition": "Developer", "hostType": "Physical Server", "instanceName": "name of instance", - "licenseType": "Free", - "patchLevel": "patchlevel", - "productId": "sql id", - "status": "Registered", - "tcpDynamicPorts": "1433", - "tcpStaticPorts": "1433", - "vCore": "4", + "migration": {"assessment": {"enabled": False}}, + "monitoring": {"enabled": False}, + "serviceType": "Engine", "version": "SQL Server 2012", }, "tags": {"mytag": "myval"}, @@ -58,6 +69,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/CreateOrUpdateSqlServerInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdateSqlServerInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_license.py new file mode 100644 index 000000000000..5825d9df4b74 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_or_update_sql_server_license.py @@ -0,0 +1,54 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python create_or_update_sql_server_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_licenses.create( + resource_group_name="testrg", + sql_server_license_name="testsqlServerLicense", + sql_server_license={ + "location": "northeurope", + "properties": { + "activationState": "Deactivated", + "billingPlan": "PAYG", + "licenseCategory": "Core", + "physicalCores": 24, + "scopeType": "Subscription", + }, + "tags": {"mytag": "myval"}, + }, + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateOrUpdateSqlServerLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_sql_server_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_sql_server_availability_group.py new file mode 100644 index 000000000000..daaeb39a8bb1 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_sql_server_availability_group.py @@ -0,0 +1,94 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python create_sql_server_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.begin_create_availability_group( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + create_ag_configuration={ + "automatedBackupPreference": "SECONDARY", + "availabilityGroupName": "myNewAg", + "clusterType": "WSFC", + "databases": ["database1", "database2"], + "dbFailover": "ON", + "dtcSupport": "NONE", + "failureConditionLevel": 3, + "healthCheckTimeout": 30000, + "listener": { + "dnsName": "myNewAgListener", + "ipV4AddressesAndMasks": [ + {"ipAddress": "192.1.168.5", "mask": "255.255.255.0"}, + {"ipAddress": "10.1.168.5", "mask": "255.255.255.0"}, + ], + "port": 1433, + }, + "replicas": [ + { + "availabilityMode": "SYNCHRONOUS_COMMIT", + "backupPriority": 50, + "endpointConnectLogin": "NT Server\\MSSSQLSERVER", + "endpointName": "inst1DBMEndpoint", + "endpointUrl": "TCP://testSqlServer_INST1.testSqlserverDomain:5022", + "failoverMode": "AUTOMATIC", + "primaryRoleAllowConnections": "ALL", + "primaryRoleReadOnlyRoutingList": None, + "secondaryRoleAllowConnections": "ALL", + "secondaryRoleReadOnlyRoutingUrl": None, + "seedingMode": "AUTOMATIC", + "serverInstance": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.AzureArcData/sqlServerInstances/testSqlServer_INST1/", + "sessionTimeout": 10, + }, + { + "availabilityMode": "SYNCHRONOUS_COMMIT", + "backupPriority": 50, + "endpointConnectLogin": "NT Server\\MSSSQLSERVER", + "endpointName": "inst2DBMEndpoint", + "endpointUrl": "TCP://testSqlServer_INST2.testSqlserverDomain:5022", + "failoverMode": "AUTOMATIC", + "primaryRoleAllowConnections": "ALL", + "primaryRoleReadOnlyRoutingList": None, + "secondaryRoleAllowConnections": "ALL", + "secondaryRoleReadOnlyRoutingUrl": None, + "seedingMode": "AUTOMATIC", + "serverInstance": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.AzureArcData/sqlServerInstances/testSqlServer_INST2/", + "sessionTimeout": 10, + }, + ], + "requiredSynchronizedSecondariesToCommit": 0, + }, + ).result() + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateSqlServerAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_sql_server_distributed_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_sql_server_distributed_availability_group.py new file mode 100644 index 000000000000..085d5f34343e --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/create_sql_server_distributed_availability_group.py @@ -0,0 +1,62 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python create_sql_server_distributed_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.begin_create_distributed_availability_group( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + create_dag_configuration={ + "availabilityGroupName": "myNewDag", + "primaryAvailabilityGroup": { + "availabilityGroup": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.AzureArcData/sqlServerInstances/testSqlServer_INST1/availabilityGroups/testAG1", + "availabilityMode": "ASYNCHRONOUS_COMMIT", + "certificateConfiguration": {"certificateName": "myCert"}, + "failoverMode": "MANUAL", + "listenerUrl": "TCP://testAG1.contoso.com:5022", + "seedingMode": "AUTOMATIC", + }, + "secondaryAvailabilityGroup": { + "availabilityGroup": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.AzureArcData/sqlServerInstances/testSqlServer_INST2/availabilityGroups/testAG2", + "availabilityMode": "ASYNCHRONOUS_COMMIT", + "certificateConfiguration": {"certificateName": "myCert"}, + "failoverMode": "MANUAL", + "listenerUrl": "TCP://testAG2.contoso.com:5022", + "seedingMode": "AUTOMATIC", + }, + }, + ).result() + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/CreateSqlServerDistributedAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_active_directory_connector.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_active_directory_connector.py index 2eeb1ba06e8c..2d8dde5f4d54 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_active_directory_connector.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_active_directory_connector.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -29,14 +31,13 @@ def main(): subscription_id="00000000-1111-2222-3333-444444444444", ) - response = client.active_directory_connectors.begin_delete( + client.active_directory_connectors.begin_delete( resource_group_name="testrg", data_controller_name="testdataController", active_directory_connector_name="testADConnector", ).result() - print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/DeleteActiveDirectoryConnector.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/DeleteActiveDirectoryConnector.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_arc_sql_server_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_arc_sql_server_availability_group.py new file mode 100644 index 000000000000..99d59d8c7220 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_arc_sql_server_availability_group.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python delete_arc_sql_server_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + client.sql_server_availability_groups.begin_delete( + resource_group_name="testrg", + sql_server_instance_name="testsqlInstanceAvailabilityGroup", + availability_group_name="testAG", + ).result() + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/DeleteArcSqlServerAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_arc_sql_server_database.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_arc_sql_server_database.py new file mode 100644 index 000000000000..f7587bc25d02 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_arc_sql_server_database.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python delete_arc_sql_server_database.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + client.sql_server_databases.begin_delete( + resource_group_name="testrg", + sql_server_instance_name="testsqlManagedInstance", + database_name="testdb", + ).result() + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/DeleteArcSqlServerDatabase.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_data_controller.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_data_controller.py index a4cb8fcbea06..306f3d1852e2 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_data_controller.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_data_controller.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -29,13 +31,12 @@ def main(): subscription_id="00000000-1111-2222-3333-444444444444", ) - response = client.data_controllers.begin_delete_data_controller( + client.data_controllers.begin_delete_data_controller( resource_group_name="testrg", data_controller_name="testdataController", ).result() - print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/DeleteDataController.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/DeleteDataController.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_failover_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_failover_group.py new file mode 100644 index 000000000000..6fc35f5afa58 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_failover_group.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python delete_failover_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + client.failover_groups.begin_delete( + resource_group_name="testrg", + sql_managed_instance_name="testSqlManagedInstance", + failover_group_name="testFailoverGroupName", + ).result() + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/DeleteFailoverGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_postgres_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_postgres_instance.py index 93e3462283c4..c8e79827d3ea 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_postgres_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_postgres_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -29,13 +31,12 @@ def main(): subscription_id="00000000-1111-2222-3333-444444444444", ) - response = client.postgres_instances.begin_delete( + client.postgres_instances.begin_delete( resource_group_name="testrg", postgres_instance_name="testpostgresInstance", ).result() - print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/DeletePostgresInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/DeletePostgresInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_managed_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_managed_instance.py index 756198983e48..fd984eed9bd4 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_managed_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_managed_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -29,13 +31,12 @@ def main(): subscription_id="00000000-1111-2222-3333-444444444444", ) - response = client.sql_managed_instances.begin_delete( + client.sql_managed_instances.begin_delete( resource_group_name="testrg", sql_managed_instance_name="testsqlManagedInstance", ).result() - print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/DeleteSqlManagedInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/DeleteSqlManagedInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_esu_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_esu_license.py new file mode 100644 index 000000000000..ce4b1497fdb1 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_esu_license.py @@ -0,0 +1,42 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python delete_sql_server_esu_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + client.sql_server_esu_licenses.delete( + resource_group_name="testrg", + sql_server_esu_license_name="testsqlServerEsuLicense", + ) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/DeleteSqlServerEsuLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_instance.py index f40d9fa71235..edc772f9214f 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -29,13 +31,12 @@ def main(): subscription_id="00000000-1111-2222-3333-444444444444", ) - response = client.sql_server_instances.begin_delete( + client.sql_server_instances.begin_delete( resource_group_name="testrg", sql_server_instance_name="testsqlServerInstance", ).result() - print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/DeleteSqlServerInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/DeleteSqlServerInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_license.py new file mode 100644 index 000000000000..b660ef8ab26a --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/delete_sql_server_license.py @@ -0,0 +1,42 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python delete_sql_server_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + client.sql_server_licenses.delete( + resource_group_name="testrg", + sql_server_license_name="testsqlServerLicense", + ) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/DeleteSqlServerLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/failover_arc_sql_server_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/failover_arc_sql_server_availability_group.py new file mode 100644 index 000000000000..65440abac806 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/failover_arc_sql_server_availability_group.py @@ -0,0 +1,44 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python failover_arc_sql_server_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.failover( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + availability_group_name="testAG", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/FailoverArcSqlServerAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/failover_mi_link.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/failover_mi_link.py new file mode 100644 index 000000000000..f49418af697a --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/failover_mi_link.py @@ -0,0 +1,47 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python failover_mi_link.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.begin_failover_mi_link( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + availability_group_name="testDAG", + managed_instance_resource_id={ + "managedInstanceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Sql/managedInstances/testcl" + }, + ).result() + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/failoverMiLink.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/force_failover_arc_sql_server_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/force_failover_arc_sql_server_availability_group.py new file mode 100644 index 000000000000..2c9a55ed4a4b --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/force_failover_arc_sql_server_availability_group.py @@ -0,0 +1,44 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python force_failover_arc_sql_server_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.force_failover_allow_data_loss( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + availability_group_name="testAG", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ForceFailoverArcSqlServerAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_active_directory_connector.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_active_directory_connector.py index 5b95f948a52e..b64ecaf4d113 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_active_directory_connector.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_active_directory_connector.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -37,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/GetActiveDirectoryConnector.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetActiveDirectoryConnector.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_arc_sql_server_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_arc_sql_server_availability_group.py new file mode 100644 index 000000000000..ef44ae963ddd --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_arc_sql_server_availability_group.py @@ -0,0 +1,44 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python get_arc_sql_server_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.get( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + availability_group_name="testAG", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetArcSqlServerAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_arc_sql_server_database.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_arc_sql_server_database.py new file mode 100644 index 000000000000..628e3dff4da5 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_arc_sql_server_database.py @@ -0,0 +1,44 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python get_arc_sql_server_database.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_databases.get( + resource_group_name="testrg", + sql_server_instance_name="testSqlServerInstance", + database_name="testdb", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetArcSqlServerDatabase.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_data_controller.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_data_controller.py index d998f7445f5b..7347f9df01f2 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_data_controller.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_data_controller.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -36,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/GetDataController.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetDataController.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_failover_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_failover_group.py new file mode 100644 index 000000000000..2f5add995a9f --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_failover_group.py @@ -0,0 +1,44 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python get_failover_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.failover_groups.get( + resource_group_name="testrg", + sql_managed_instance_name="testSqlManagedInstance", + failover_group_name="testFailoverGroupName", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetFailoverGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_postgres_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_postgres_instance.py index 368cace719b0..478c58efc882 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_postgres_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_postgres_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -36,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/GetPostgresInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetPostgresInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_managed_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_managed_instance.py index 9a8917c8d85c..7eb67dff1c0d 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_managed_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_managed_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -36,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/GetSqlManagedInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetSqlManagedInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_esu_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_esu_license.py new file mode 100644 index 000000000000..2aca6c1ceda2 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_esu_license.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python get_sql_server_esu_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_esu_licenses.get( + resource_group_name="testrg", + sql_server_esu_license_name="testsqlServerEsuLicense", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetSqlServerEsuLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance.py index dc2feeb0fbf9..2045006d4ae6 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -36,6 +38,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/GetSqlServerInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetSqlServerInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_jobs_status.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_jobs_status.py new file mode 100644 index 000000000000..58d62275d4bc --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_jobs_status.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python get_sql_server_instance_jobs_status.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_instances.get_jobs_status( + resource_group_name="testrg", + sql_server_instance_name="testsqlserver", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetSqlServerInstanceJobsStatus.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_managed_instance_link_assessment.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_managed_instance_link_assessment.py new file mode 100644 index 000000000000..0de02aded9e6 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_managed_instance_link_assessment.py @@ -0,0 +1,49 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python get_sql_server_instance_managed_instance_link_assessment.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_instances.begin_run_managed_instance_link_assessment( + resource_group_name="testrg", + sql_server_instance_name="testsqlserver", + sql_server_instance_managed_instance_link_assessment_request={ + "availabilityGroupName": "AG_testdb", + "azureManagedInstanceResourceId": "/subscriptions/00000000-1111-2222-3333-444444444444/resourceGroups/testrg/providers/Microsoft.Sql/managedInstances/testmi", + "azureManagedInstanceRole": "Secondary", + "databaseName": "testdb", + }, + ).result() + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetSqlServerInstanceManagedInstanceLinkAssessment.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_telemetry.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_telemetry.py new file mode 100644 index 000000000000..b56e7e9567fa --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_instance_telemetry.py @@ -0,0 +1,48 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python get_sql_server_instance_telemetry.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_instances.begin_get_telemetry( + resource_group_name="testrg", + sql_server_instance_name="testsqlserver", + sql_server_instance_telemetry_request={ + "datasetName": "sqlserver_storage_io", + "startTime": "2023-09-30T00:00:00Z", + }, + ).result() + for item in response: + print(item) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetSqlServerInstanceTelemetry.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_license.py new file mode 100644 index 000000000000..fe064a0d074e --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/get_sql_server_license.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python get_sql_server_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_licenses.get( + resource_group_name="testrg", + sql_server_license_name="testsqlServerLicense", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/GetSqlServerLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_data_controller_active_directory_connector.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_data_controller_active_directory_connector.py index 29057515c196..cf7d77acabe1 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_data_controller_active_directory_connector.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_data_controller_active_directory_connector.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -37,6 +39,6 @@ def main(): print(item) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/ListByDataControllerActiveDirectoryConnector.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListByDataControllerActiveDirectoryConnector.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_data_controller.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_data_controller.py index 07dc6bb3a06a..3e5ae8f5e6e9 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_data_controller.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_data_controller.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -36,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/ListByResourceGroupDataController.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListByResourceGroupDataController.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_postgres_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_postgres_instance.py index f6a56e784bf8..232206be39d6 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_postgres_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_postgres_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -36,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/ListByResourceGroupPostgresInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListByResourceGroupPostgresInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_managed_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_managed_instance.py index 503d98ee4dc2..6374d150d7e9 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_managed_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_managed_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -36,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/ListByResourceGroupSqlManagedInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListByResourceGroupSqlManagedInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_esu_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_esu_license.py new file mode 100644 index 000000000000..98ce441a13c4 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_esu_license.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python list_by_resource_group_sql_server_esu_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_esu_licenses.list_by_resource_group( + resource_group_name="testrg", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListByResourceGroupSqlServerEsuLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_instance.py index b93b9e7e405f..b821947a9147 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -36,6 +38,6 @@ def main(): print(item) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/ListByResourceGroupSqlServerInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListByResourceGroupSqlServerInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_license.py new file mode 100644 index 000000000000..1a5fe593ea2d --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_resource_group_sql_server_license.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python list_by_resource_group_sql_server_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_licenses.list_by_resource_group( + resource_group_name="testrg", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListByResourceGroupSqlServerLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_managed_instance_failover_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_managed_instance_failover_group.py new file mode 100644 index 000000000000..ff51aef5e863 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_managed_instance_failover_group.py @@ -0,0 +1,44 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python list_by_sql_managed_instance_failover_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.failover_groups.list( + resource_group_name="testrg", + sql_managed_instance_name="testSqlManagedInstance", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListBySqlManagedInstanceFailoverGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_server_instance_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_server_instance_availability_group.py new file mode 100644 index 000000000000..c8bae71b8748 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_server_instance_availability_group.py @@ -0,0 +1,44 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python list_by_sql_server_instance_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.list( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListBySqlServerInstanceAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_server_instance_database.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_server_instance_database.py new file mode 100644 index 000000000000..54a0c1647730 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_by_sql_server_instance_database.py @@ -0,0 +1,44 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python list_by_sql_server_instance_database.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_databases.list( + resource_group_name="testrg", + sql_server_instance_name="testSqlServerInstance", + ) + for item in response: + print(item) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListBySqlServerInstanceDatabase.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_operation.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_operation.py index 267aa2de8d4d..62bc3be294aa 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_operation.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_operation.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -34,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/ListOperation.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListOperation.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_data_controller.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_data_controller.py index 3d30832d330b..8d2b4c0abc78 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_data_controller.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_data_controller.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -34,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/ListSubscriptionDataController.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListSubscriptionDataController.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_postgres_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_postgres_instance.py index b38cb284be5e..34055d74d15e 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_postgres_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_postgres_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -34,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/ListSubscriptionPostgresInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListSubscriptionPostgresInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_managed_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_managed_instance.py index ce26408e3a9b..684e9e96d671 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_managed_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_managed_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -34,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/ListSubscriptionSqlManagedInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListSubscriptionSqlManagedInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_esu_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_esu_license.py new file mode 100644 index 000000000000..d7b7abfbcf10 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_esu_license.py @@ -0,0 +1,41 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python list_subscription_sql_server_esu_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_esu_licenses.list() + for item in response: + print(item) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListSubscriptionSqlServerEsuLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_instance.py index 7f853dc2e8dd..22f92119533c 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -34,6 +36,6 @@ def main(): print(item) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/ListSubscriptionSqlServerInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListSubscriptionSqlServerInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_license.py new file mode 100644 index 000000000000..803f39e79523 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/list_subscription_sql_server_license.py @@ -0,0 +1,41 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python list_subscription_sql_server_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_licenses.list() + for item in response: + print(item) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ListSubscriptionSqlServerLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/post_upgrade_sql_server_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/post_upgrade_sql_server_instance.py new file mode 100644 index 000000000000..30a6761f7410 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/post_upgrade_sql_server_instance.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python post_upgrade_sql_server_instance.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_instances.post_upgrade( + resource_group_name="testrg", + sql_server_instance_name="testsqlServerInstance", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/PostUpgradeSqlServerInstance.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/pre_upgrade_sql_server_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/pre_upgrade_sql_server_instance.py new file mode 100644 index 000000000000..d54c936e4052 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/pre_upgrade_sql_server_instance.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python pre_upgrade_sql_server_instance.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_instances.pre_upgrade( + resource_group_name="testrg", + sql_server_instance_name="testsqlServerInstance", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/PreUpgradeSqlServerInstance.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/remove_databases_from_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/remove_databases_from_availability_group.py new file mode 100644 index 000000000000..d008db5480a0 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/remove_databases_from_availability_group.py @@ -0,0 +1,45 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python remove_databases_from_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.remove_databases( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + availability_group_name="testAG", + databases={"values": ["db1"]}, + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/RemoveDatabasesFromAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/run_migration_assessment_sql_server_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/run_migration_assessment_sql_server_instance.py new file mode 100644 index 000000000000..d1ca12241cd1 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/run_migration_assessment_sql_server_instance.py @@ -0,0 +1,43 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python run_migration_assessment_sql_server_instance.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_instances.run_migration_assessment( + resource_group_name="testrg", + sql_server_instance_name="testsqlserver", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/RunMigrationAssessmentSqlServerInstance.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_arc_sql_server_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_arc_sql_server_availability_group.py new file mode 100644 index 000000000000..4b7cca2deb11 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_arc_sql_server_availability_group.py @@ -0,0 +1,45 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python update_arc_sql_server_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.begin_update( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + availability_group_name="testAG", + sql_server_availability_group_update={"tags": {"mytag": "myval1"}}, + ).result() + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/UpdateArcSqlServerAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_data_controller.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_data_controller.py index a768debee900..02ea78d013a5 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_data_controller.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_data_controller.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -37,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/UpdateDataController.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/UpdateDataController.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_postgres_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_postgres_instance.py index fc9d0a052b94..1b59f9126f1e 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_postgres_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_postgres_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -37,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/UpdatePostgresInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/UpdatePostgresInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_managed_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_managed_instance.py index fddb55392d48..0baca0b1638c 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_managed_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_managed_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -37,6 +39,6 @@ def main(): print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/UpdateSqlManagedInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/UpdateSqlManagedInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_database.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_database.py new file mode 100644 index 000000000000..b9445707ab19 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_database.py @@ -0,0 +1,45 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python update_sql_server_database.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_databases.begin_update( + resource_group_name="testrg", + sql_server_instance_name="testsqlManagedInstance", + database_name="testdb", + sql_server_database_update={"tags": {"mytag": "myval1"}}, + ).result() + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/UpdateSqlServerDatabase.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_esu_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_esu_license.py new file mode 100644 index 000000000000..a6d23ec09258 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_esu_license.py @@ -0,0 +1,47 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python update_sql_server_esu_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_esu_licenses.update( + resource_group_name="testrg", + sql_server_esu_license_name="testsqlServerEsuLicense", + parameters={ + "properties": {"activationState": "Active", "billingPlan": "Paid", "physicalCores": 28}, + "tags": {"mytag": "myval"}, + }, + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/UpdateSqlServerEsuLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_instance.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_instance.py index 0a002fe12522..67098d0e65f9 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_instance.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_instance.py @@ -1,3 +1,4 @@ +# pylint: disable=line-too-long,useless-suppression # coding=utf-8 # -------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. @@ -7,6 +8,7 @@ # -------------------------------------------------------------------------- from azure.identity import DefaultAzureCredential + from azure.mgmt.azurearcdata import AzureArcDataManagementClient """ @@ -29,14 +31,14 @@ def main(): subscription_id="00000000-1111-2222-3333-444444444444", ) - response = client.sql_server_instances.update( + response = client.sql_server_instances.begin_update( resource_group_name="testrg", sql_server_instance_name="testsqlServerInstance", parameters={"tags": {"mytag": "myval"}}, - ) + ).result() print(response) -# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2022-03-01-preview/examples/UpdateSqlServerInstance.json +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/UpdateSqlServerInstance.json if __name__ == "__main__": main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_license.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_license.py new file mode 100644 index 000000000000..bd8277a36f36 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/update_sql_server_license.py @@ -0,0 +1,44 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python update_sql_server_license.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_licenses.update( + resource_group_name="testrg", + sql_server_license_name="testsqlServerLicense", + parameters={"tags": {"mytag": "myval"}}, + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/UpdateSqlServerLicense.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/view_arc_sql_server_availability_group.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/view_arc_sql_server_availability_group.py new file mode 100644 index 000000000000..76e12216cd4f --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_samples/view_arc_sql_server_availability_group.py @@ -0,0 +1,44 @@ +# pylint: disable=line-too-long,useless-suppression +# 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 azure.identity import DefaultAzureCredential + +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +""" +# PREREQUISITES + pip install azure-identity + pip install azure-mgmt-azurearcdata +# USAGE + python view_arc_sql_server_availability_group.py + + Before run the sample, please set the values of the client ID, tenant ID and client secret + of the AAD application as environment variables: AZURE_CLIENT_ID, AZURE_TENANT_ID, + AZURE_CLIENT_SECRET. For more info about how to get the value, please see: + https://docs.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal +""" + + +def main(): + client = AzureArcDataManagementClient( + credential=DefaultAzureCredential(), + subscription_id="00000000-1111-2222-3333-444444444444", + ) + + response = client.sql_server_availability_groups.detail_view( + resource_group_name="testrg", + sql_server_instance_name="testSqlServer_INST1", + availability_group_name="testAG", + ) + print(response) + + +# x-ms-original-file: specification/azurearcdata/resource-manager/Microsoft.AzureArcData/preview/2025-03-01-preview/examples/ViewArcSqlServerAvailabilityGroup.json +if __name__ == "__main__": + main() diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/conftest.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/conftest.py new file mode 100644 index 000000000000..870836644fdb --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/conftest.py @@ -0,0 +1,41 @@ +# 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 os +import pytest +from dotenv import load_dotenv +from devtools_testutils import ( + test_proxy, + add_general_regex_sanitizer, + add_body_key_sanitizer, + add_header_regex_sanitizer, +) + +load_dotenv() + + +# For security, please avoid record sensitive identity information in recordings +@pytest.fixture(scope="session", autouse=True) +def add_sanitizers(test_proxy): + azurearcdatamanagement_subscription_id = os.environ.get( + "AZURE_SUBSCRIPTION_ID", "00000000-0000-0000-0000-000000000000" + ) + azurearcdatamanagement_tenant_id = os.environ.get("AZURE_TENANT_ID", "00000000-0000-0000-0000-000000000000") + azurearcdatamanagement_client_id = os.environ.get("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000") + azurearcdatamanagement_client_secret = os.environ.get("AZURE_CLIENT_SECRET", "00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer( + regex=azurearcdatamanagement_subscription_id, value="00000000-0000-0000-0000-000000000000" + ) + add_general_regex_sanitizer(regex=azurearcdatamanagement_tenant_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer(regex=azurearcdatamanagement_client_id, value="00000000-0000-0000-0000-000000000000") + add_general_regex_sanitizer( + regex=azurearcdatamanagement_client_secret, value="00000000-0000-0000-0000-000000000000" + ) + + add_header_regex_sanitizer(key="Set-Cookie", value="[set-cookie;]") + add_header_regex_sanitizer(key="Cookie", value="cookie;") + add_body_key_sanitizer(json_path="$..access_token", value="access_token") diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_active_directory_connectors_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_active_directory_connectors_operations.py new file mode 100644 index 000000000000..c68d797cc6df --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_active_directory_connectors_operations.py @@ -0,0 +1,106 @@ +# 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 pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementActiveDirectoryConnectorsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_active_directory_connectors_list(self, resource_group): + response = self.client.active_directory_connectors.list( + resource_group_name=resource_group.name, + data_controller_name="str", + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_active_directory_connectors_begin_create(self, resource_group): + response = self.client.active_directory_connectors.begin_create( + resource_group_name=resource_group.name, + data_controller_name="str", + active_directory_connector_name="str", + active_directory_connector_resource={ + "properties": { + "spec": { + "activeDirectory": { + "realm": "str", + "domainControllers": { + "primaryDomainController": {"hostname": "str"}, + "secondaryDomainControllers": [{"hostname": "str"}], + }, + "netbiosDomainName": "str", + "ouDistinguishedName": "str", + "serviceAccountProvisioning": "manual", + }, + "dns": { + "nameserverIPAddresses": ["str"], + "domainName": "str", + "preferK8sDnsForPtrLookups": True, + "replicas": 1, + }, + }, + "domainServiceAccountLoginInformation": {"password": "str", "username": "str"}, + "provisioningState": "str", + "status": {"lastUpdateTime": "str", "observedGeneration": 0, "state": "str"}, + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_active_directory_connectors_begin_delete(self, resource_group): + response = self.client.active_directory_connectors.begin_delete( + resource_group_name=resource_group.name, + data_controller_name="str", + active_directory_connector_name="str", + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_active_directory_connectors_get(self, resource_group): + response = self.client.active_directory_connectors.get( + resource_group_name=resource_group.name, + data_controller_name="str", + active_directory_connector_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_active_directory_connectors_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_active_directory_connectors_operations_async.py new file mode 100644 index 000000000000..6ba2f8cb62f9 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_active_directory_connectors_operations_async.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. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementActiveDirectoryConnectorsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_active_directory_connectors_list(self, resource_group): + response = self.client.active_directory_connectors.list( + resource_group_name=resource_group.name, + data_controller_name="str", + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_active_directory_connectors_begin_create(self, resource_group): + response = await ( + await self.client.active_directory_connectors.begin_create( + resource_group_name=resource_group.name, + data_controller_name="str", + active_directory_connector_name="str", + active_directory_connector_resource={ + "properties": { + "spec": { + "activeDirectory": { + "realm": "str", + "domainControllers": { + "primaryDomainController": {"hostname": "str"}, + "secondaryDomainControllers": [{"hostname": "str"}], + }, + "netbiosDomainName": "str", + "ouDistinguishedName": "str", + "serviceAccountProvisioning": "manual", + }, + "dns": { + "nameserverIPAddresses": ["str"], + "domainName": "str", + "preferK8sDnsForPtrLookups": True, + "replicas": 1, + }, + }, + "domainServiceAccountLoginInformation": {"password": "str", "username": "str"}, + "provisioningState": "str", + "status": {"lastUpdateTime": "str", "observedGeneration": 0, "state": "str"}, + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_active_directory_connectors_begin_delete(self, resource_group): + response = await ( + await self.client.active_directory_connectors.begin_delete( + resource_group_name=resource_group.name, + data_controller_name="str", + active_directory_connector_name="str", + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_active_directory_connectors_get(self, resource_group): + response = await self.client.active_directory_connectors.get( + resource_group_name=resource_group.name, + data_controller_name="str", + active_directory_connector_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_data_controllers_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_data_controllers_operations.py new file mode 100644 index 000000000000..c3c163b77ed0 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_data_controllers_operations.py @@ -0,0 +1,163 @@ +# 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 pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementDataControllersOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_data_controllers_list_in_subscription(self, resource_group): + response = self.client.data_controllers.list_in_subscription( + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_data_controllers_list_in_group(self, resource_group): + response = self.client.data_controllers.list_in_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_data_controllers_begin_put_data_controller(self, resource_group): + response = self.client.data_controllers.begin_put_data_controller( + resource_group_name=resource_group.name, + data_controller_name="str", + data_controller_resource={ + "location": "str", + "properties": { + "basicLoginInformation": {"password": "str", "username": "str"}, + "clusterId": "str", + "extensionId": "str", + "infrastructure": "other", + "k8sRaw": {}, + "lastUploadedDate": "2020-02-20 00:00:00", + "logAnalyticsWorkspaceConfig": {"primaryKey": "str", "workspaceId": "str"}, + "logsDashboardCredential": {"password": "str", "username": "str"}, + "metricsDashboardCredential": {"password": "str", "username": "str"}, + "onPremiseProperty": { + "id": "str", + "publicSigningKey": "str", + "signingCertificateThumbprint": "str", + }, + "provisioningState": "str", + "uploadServicePrincipal": { + "authority": "str", + "clientId": "str", + "clientSecret": "str", + "tenantId": "str", + }, + "uploadWatermark": { + "logs": "2020-02-20 00:00:00", + "metrics": "2020-02-20 00:00:00", + "usages": "2020-02-20 00:00:00", + }, + }, + "extendedLocation": {"name": "str", "type": "str"}, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_data_controllers_begin_delete_data_controller(self, resource_group): + response = self.client.data_controllers.begin_delete_data_controller( + resource_group_name=resource_group.name, + data_controller_name="str", + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_data_controllers_get_data_controller(self, resource_group): + response = self.client.data_controllers.get_data_controller( + resource_group_name=resource_group.name, + data_controller_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_data_controllers_begin_patch_data_controller(self, resource_group): + response = self.client.data_controllers.begin_patch_data_controller( + resource_group_name=resource_group.name, + data_controller_name="str", + data_controller_resource={ + "properties": { + "basicLoginInformation": {"password": "str", "username": "str"}, + "clusterId": "str", + "extensionId": "str", + "infrastructure": "other", + "k8sRaw": {}, + "lastUploadedDate": "2020-02-20 00:00:00", + "logAnalyticsWorkspaceConfig": {"primaryKey": "str", "workspaceId": "str"}, + "logsDashboardCredential": {"password": "str", "username": "str"}, + "metricsDashboardCredential": {"password": "str", "username": "str"}, + "onPremiseProperty": { + "id": "str", + "publicSigningKey": "str", + "signingCertificateThumbprint": "str", + }, + "provisioningState": "str", + "uploadServicePrincipal": { + "authority": "str", + "clientId": "str", + "clientSecret": "str", + "tenantId": "str", + }, + "uploadWatermark": { + "logs": "2020-02-20 00:00:00", + "metrics": "2020-02-20 00:00:00", + "usages": "2020-02-20 00:00:00", + }, + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_data_controllers_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_data_controllers_operations_async.py new file mode 100644 index 000000000000..08722f6171ac --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_data_controllers_operations_async.py @@ -0,0 +1,170 @@ +# 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 pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementDataControllersOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_data_controllers_list_in_subscription(self, resource_group): + response = self.client.data_controllers.list_in_subscription( + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_data_controllers_list_in_group(self, resource_group): + response = self.client.data_controllers.list_in_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_data_controllers_begin_put_data_controller(self, resource_group): + response = await ( + await self.client.data_controllers.begin_put_data_controller( + resource_group_name=resource_group.name, + data_controller_name="str", + data_controller_resource={ + "location": "str", + "properties": { + "basicLoginInformation": {"password": "str", "username": "str"}, + "clusterId": "str", + "extensionId": "str", + "infrastructure": "other", + "k8sRaw": {}, + "lastUploadedDate": "2020-02-20 00:00:00", + "logAnalyticsWorkspaceConfig": {"primaryKey": "str", "workspaceId": "str"}, + "logsDashboardCredential": {"password": "str", "username": "str"}, + "metricsDashboardCredential": {"password": "str", "username": "str"}, + "onPremiseProperty": { + "id": "str", + "publicSigningKey": "str", + "signingCertificateThumbprint": "str", + }, + "provisioningState": "str", + "uploadServicePrincipal": { + "authority": "str", + "clientId": "str", + "clientSecret": "str", + "tenantId": "str", + }, + "uploadWatermark": { + "logs": "2020-02-20 00:00:00", + "metrics": "2020-02-20 00:00:00", + "usages": "2020-02-20 00:00:00", + }, + }, + "extendedLocation": {"name": "str", "type": "str"}, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_data_controllers_begin_delete_data_controller(self, resource_group): + response = await ( + await self.client.data_controllers.begin_delete_data_controller( + resource_group_name=resource_group.name, + data_controller_name="str", + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_data_controllers_get_data_controller(self, resource_group): + response = await self.client.data_controllers.get_data_controller( + resource_group_name=resource_group.name, + data_controller_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_data_controllers_begin_patch_data_controller(self, resource_group): + response = await ( + await self.client.data_controllers.begin_patch_data_controller( + resource_group_name=resource_group.name, + data_controller_name="str", + data_controller_resource={ + "properties": { + "basicLoginInformation": {"password": "str", "username": "str"}, + "clusterId": "str", + "extensionId": "str", + "infrastructure": "other", + "k8sRaw": {}, + "lastUploadedDate": "2020-02-20 00:00:00", + "logAnalyticsWorkspaceConfig": {"primaryKey": "str", "workspaceId": "str"}, + "logsDashboardCredential": {"password": "str", "username": "str"}, + "metricsDashboardCredential": {"password": "str", "username": "str"}, + "onPremiseProperty": { + "id": "str", + "publicSigningKey": "str", + "signingCertificateThumbprint": "str", + }, + "provisioningState": "str", + "uploadServicePrincipal": { + "authority": "str", + "clientId": "str", + "clientSecret": "str", + "tenantId": "str", + }, + "uploadWatermark": { + "logs": "2020-02-20 00:00:00", + "metrics": "2020-02-20 00:00:00", + "usages": "2020-02-20 00:00:00", + }, + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_failover_groups_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_failover_groups_operations.py new file mode 100644 index 000000000000..1b1d94d4f49a --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_failover_groups_operations.py @@ -0,0 +1,97 @@ +# 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 pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementFailoverGroupsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_failover_groups_list(self, resource_group): + response = self.client.failover_groups.list( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_failover_groups_begin_create(self, resource_group): + response = self.client.failover_groups.begin_create( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + failover_group_name="str", + failover_group_resource={ + "properties": { + "partnerManagedInstanceId": "str", + "spec": { + "role": "primary", + "partnerMI": "str", + "partnerMirroringCert": "str", + "partnerMirroringURL": "str", + "partnerSyncMode": "async", + "sharedName": "str", + "sourceMI": "str", + }, + "provisioningState": "str", + "status": {}, + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_failover_groups_begin_delete(self, resource_group): + response = self.client.failover_groups.begin_delete( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + failover_group_name="str", + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_failover_groups_get(self, resource_group): + response = self.client.failover_groups.get( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + failover_group_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_failover_groups_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_failover_groups_operations_async.py new file mode 100644 index 000000000000..b7d8a7331c6c --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_failover_groups_operations_async.py @@ -0,0 +1,102 @@ +# 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 pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementFailoverGroupsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_failover_groups_list(self, resource_group): + response = self.client.failover_groups.list( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_failover_groups_begin_create(self, resource_group): + response = await ( + await self.client.failover_groups.begin_create( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + failover_group_name="str", + failover_group_resource={ + "properties": { + "partnerManagedInstanceId": "str", + "spec": { + "role": "primary", + "partnerMI": "str", + "partnerMirroringCert": "str", + "partnerMirroringURL": "str", + "partnerSyncMode": "async", + "sharedName": "str", + "sourceMI": "str", + }, + "provisioningState": "str", + "status": {}, + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_failover_groups_begin_delete(self, resource_group): + response = await ( + await self.client.failover_groups.begin_delete( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + failover_group_name="str", + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_failover_groups_get(self, resource_group): + response = await self.client.failover_groups.get( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + failover_group_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_operations.py new file mode 100644 index 000000000000..8c6f8a1086a1 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_operations.py @@ -0,0 +1,29 @@ +# 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 pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_operations_list(self, resource_group): + response = self.client.operations.list( + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_operations_async.py new file mode 100644 index 000000000000..77666fe91e43 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_operations_async.py @@ -0,0 +1,30 @@ +# 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 pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_operations_list(self, resource_group): + response = self.client.operations.list( + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_postgres_instances_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_postgres_instances_operations.py new file mode 100644 index 000000000000..e70c90813a7a --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_postgres_instances_operations.py @@ -0,0 +1,131 @@ +# 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 pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementPostgresInstancesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_postgres_instances_list(self, resource_group): + response = self.client.postgres_instances.list( + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_postgres_instances_list_by_resource_group(self, resource_group): + response = self.client.postgres_instances.list_by_resource_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_postgres_instances_get(self, resource_group): + response = self.client.postgres_instances.get( + resource_group_name=resource_group.name, + postgres_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_postgres_instances_begin_create(self, resource_group): + response = self.client.postgres_instances.begin_create( + resource_group_name=resource_group.name, + postgres_instance_name="str", + resource={ + "location": "str", + "properties": { + "admin": "str", + "basicLoginInformation": {"password": "str", "username": "str"}, + "dataControllerId": "str", + "k8sRaw": {}, + "lastUploadedDate": "2020-02-20 00:00:00", + "provisioningState": "str", + }, + "extendedLocation": {"name": "str", "type": "str"}, + "id": "str", + "name": "str", + "sku": { + "name": "str", + "capacity": 0, + "dev": True, + "family": "str", + "size": "str", + "tier": "Hyperscale", + }, + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_postgres_instances_begin_delete(self, resource_group): + response = self.client.postgres_instances.begin_delete( + resource_group_name=resource_group.name, + postgres_instance_name="str", + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_postgres_instances_update(self, resource_group): + response = self.client.postgres_instances.update( + resource_group_name=resource_group.name, + postgres_instance_name="str", + parameters={ + "properties": { + "admin": "str", + "basicLoginInformation": {"password": "str", "username": "str"}, + "dataControllerId": "str", + "k8sRaw": {}, + "lastUploadedDate": "2020-02-20 00:00:00", + "provisioningState": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_postgres_instances_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_postgres_instances_operations_async.py new file mode 100644 index 000000000000..87d086a222e4 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_postgres_instances_operations_async.py @@ -0,0 +1,136 @@ +# 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 pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementPostgresInstancesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_postgres_instances_list(self, resource_group): + response = self.client.postgres_instances.list( + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_postgres_instances_list_by_resource_group(self, resource_group): + response = self.client.postgres_instances.list_by_resource_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_postgres_instances_get(self, resource_group): + response = await self.client.postgres_instances.get( + resource_group_name=resource_group.name, + postgres_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_postgres_instances_begin_create(self, resource_group): + response = await ( + await self.client.postgres_instances.begin_create( + resource_group_name=resource_group.name, + postgres_instance_name="str", + resource={ + "location": "str", + "properties": { + "admin": "str", + "basicLoginInformation": {"password": "str", "username": "str"}, + "dataControllerId": "str", + "k8sRaw": {}, + "lastUploadedDate": "2020-02-20 00:00:00", + "provisioningState": "str", + }, + "extendedLocation": {"name": "str", "type": "str"}, + "id": "str", + "name": "str", + "sku": { + "name": "str", + "capacity": 0, + "dev": True, + "family": "str", + "size": "str", + "tier": "Hyperscale", + }, + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_postgres_instances_begin_delete(self, resource_group): + response = await ( + await self.client.postgres_instances.begin_delete( + resource_group_name=resource_group.name, + postgres_instance_name="str", + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_postgres_instances_update(self, resource_group): + response = await self.client.postgres_instances.update( + resource_group_name=resource_group.name, + postgres_instance_name="str", + parameters={ + "properties": { + "admin": "str", + "basicLoginInformation": {"password": "str", "username": "str"}, + "dataControllerId": "str", + "k8sRaw": {}, + "lastUploadedDate": "2020-02-20 00:00:00", + "provisioningState": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_managed_instances_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_managed_instances_operations.py new file mode 100644 index 000000000000..a55247921fa6 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_managed_instances_operations.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. +# -------------------------------------------------------------------------- +import pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlManagedInstancesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_managed_instances_list(self, resource_group): + response = self.client.sql_managed_instances.list( + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_managed_instances_list_by_resource_group(self, resource_group): + response = self.client.sql_managed_instances.list_by_resource_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_managed_instances_get(self, resource_group): + response = self.client.sql_managed_instances.get( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_managed_instances_begin_create(self, resource_group): + response = self.client.sql_managed_instances.begin_create( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + sql_managed_instance={ + "location": "str", + "properties": { + "activeDirectoryInformation": {"keytabInformation": {"keytab": "str"}}, + "admin": "str", + "basicLoginInformation": {"password": "str", "username": "str"}, + "clusterId": "str", + "dataControllerId": "str", + "endTime": "str", + "extensionId": "str", + "k8sRaw": { + "spec": { + "replicas": 0, + "scheduling": { + "default": {"resources": {"limits": {"str": "str"}, "requests": {"str": "str"}}} + }, + "security": { + "activeDirectory": { + "accountName": "str", + "connector": {"name": "str", "namespace": "str"}, + "encryptionTypes": ["str"], + "keytabSecret": "str", + }, + "adminLoginSecret": "str", + "serviceCertificateSecret": "str", + "transparentDataEncryption": {"mode": "str", "protectorSecret": "str"}, + }, + "settings": {"network": {"forceencryption": 0, "tlsciphers": "str", "tlsprotocols": "str"}}, + } + }, + "lastUploadedDate": "2020-02-20 00:00:00", + "licenseType": "BasePrice", + "provisioningState": "str", + "startTime": "str", + }, + "extendedLocation": {"name": "str", "type": "str"}, + "id": "str", + "name": "str", + "sku": { + "name": "vCore", + "capacity": 0, + "dev": True, + "family": "str", + "size": "str", + "tier": "GeneralPurpose", + }, + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_managed_instances_begin_delete(self, resource_group): + response = self.client.sql_managed_instances.begin_delete( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_managed_instances_update(self, resource_group): + response = self.client.sql_managed_instances.update( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + parameters={"tags": {"str": "str"}}, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_managed_instances_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_managed_instances_operations_async.py new file mode 100644 index 000000000000..5bb3fbd8a466 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_managed_instances_operations_async.py @@ -0,0 +1,153 @@ +# 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 pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlManagedInstancesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_managed_instances_list(self, resource_group): + response = self.client.sql_managed_instances.list( + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_managed_instances_list_by_resource_group(self, resource_group): + response = self.client.sql_managed_instances.list_by_resource_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_managed_instances_get(self, resource_group): + response = await self.client.sql_managed_instances.get( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_managed_instances_begin_create(self, resource_group): + response = await ( + await self.client.sql_managed_instances.begin_create( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + sql_managed_instance={ + "location": "str", + "properties": { + "activeDirectoryInformation": {"keytabInformation": {"keytab": "str"}}, + "admin": "str", + "basicLoginInformation": {"password": "str", "username": "str"}, + "clusterId": "str", + "dataControllerId": "str", + "endTime": "str", + "extensionId": "str", + "k8sRaw": { + "spec": { + "replicas": 0, + "scheduling": { + "default": {"resources": {"limits": {"str": "str"}, "requests": {"str": "str"}}} + }, + "security": { + "activeDirectory": { + "accountName": "str", + "connector": {"name": "str", "namespace": "str"}, + "encryptionTypes": ["str"], + "keytabSecret": "str", + }, + "adminLoginSecret": "str", + "serviceCertificateSecret": "str", + "transparentDataEncryption": {"mode": "str", "protectorSecret": "str"}, + }, + "settings": { + "network": {"forceencryption": 0, "tlsciphers": "str", "tlsprotocols": "str"} + }, + } + }, + "lastUploadedDate": "2020-02-20 00:00:00", + "licenseType": "BasePrice", + "provisioningState": "str", + "startTime": "str", + }, + "extendedLocation": {"name": "str", "type": "str"}, + "id": "str", + "name": "str", + "sku": { + "name": "vCore", + "capacity": 0, + "dev": True, + "family": "str", + "size": "str", + "tier": "GeneralPurpose", + }, + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_managed_instances_begin_delete(self, resource_group): + response = await ( + await self.client.sql_managed_instances.begin_delete( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_managed_instances_update(self, resource_group): + response = await self.client.sql_managed_instances.update( + resource_group_name=resource_group.name, + sql_managed_instance_name="str", + parameters={"tags": {"str": "str"}}, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_availability_groups_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_availability_groups_operations.py new file mode 100644 index 000000000000..ac6fa0a104cc --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_availability_groups_operations.py @@ -0,0 +1,513 @@ +# 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 pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlServerAvailabilityGroupsOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_create(self, resource_group): + response = self.client.sql_server_availability_groups.create( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + sql_server_availability_group_resource={ + "location": "str", + "properties": { + "availabilityGroupId": "str", + "collectionTimestamp": "2020-02-20 00:00:00", + "databases": { + "nextLink": "str", + "value": [ + { + "databaseName": "str", + "databaseStateDescription": "str", + "isCommitParticipant": bool, + "isLocal": bool, + "isPrimaryReplica": bool, + "isSuspended": bool, + "replicaName": "str", + "suspendReasonDescription": "str", + "synchronizationHealthDescription": "str", + "synchronizationStateDescription": "str", + } + ], + }, + "info": { + "automatedBackupPreferenceDescription": "str", + "basicFeatures": bool, + "clusterTypeDescription": "str", + "dbFailover": bool, + "dtcSupport": bool, + "failureConditionLevel": 0, + "healthCheckTimeout": 0, + "isContained": bool, + "isDistributed": bool, + "listener": { + "dnsName": "str", + "ipV4AddressesAndMasks": [{"ipAddress": "str", "mask": "str"}], + "ipV6Addresses": ["str"], + "port": 0, + }, + "primaryRecoveryHealthDescription": "str", + "primaryReplica": "str", + "replicationPartnerType": "str", + "requiredSynchronizedSecondariesToCommit": 0, + "secondaryRecoveryHealthDescription": "str", + "synchronizationHealthDescription": "str", + "version": 0, + }, + "instanceName": "str", + "provisioningState": "str", + "replicas": { + "nextLink": "str", + "value": [ + { + "configure": { + "availabilityMode": "str", + "availabilityModeDescription": "str", + "backupPriority": 0, + "certificateName": "str", + "endpointAuthenticationMode": "str", + "endpointConnectLogin": "str", + "endpointName": "str", + "endpointUrl": "str", + "failoverMode": "str", + "failoverModeDescription": "str", + "primaryAllowConnections": "str", + "primaryRoleAllowConnectionsDescription": "str", + "readOnlyRoutingUrl": "str", + "readWriteRoutingUrl": "str", + "replicaCreateDate": "2020-02-20 00:00:00", + "replicaModifyDate": "2020-02-20 00:00:00", + "secondaryAllowConnections": "str", + "secondaryRoleAllowConnectionsDescription": "str", + "seedingMode": "str", + "seedingModeDescription": "str", + "sessionTimeout": 0, + }, + "replicaId": "str", + "replicaName": "str", + "replicaResourceId": "str", + "state": { + "availabilityGroupReplicaRole": "str", + "connectedStateDescription": "str", + "lastConnectErrorDescription": "str", + "lastConnectErrorTimestamp": "2020-02-20 00:00:00", + "operationalStateDescription": "str", + "recoveryHealthDescription": "str", + "synchronizationHealthDescription": "str", + }, + } + ], + }, + "serverName": "str", + "vmId": "str", + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_begin_delete(self, resource_group): + response = self.client.sql_server_availability_groups.begin_delete( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_get(self, resource_group): + response = self.client.sql_server_availability_groups.get( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_begin_update(self, resource_group): + response = self.client.sql_server_availability_groups.begin_update( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + sql_server_availability_group_update={ + "properties": { + "availabilityGroupId": "str", + "collectionTimestamp": "2020-02-20 00:00:00", + "databases": { + "nextLink": "str", + "value": [ + { + "databaseName": "str", + "databaseStateDescription": "str", + "isCommitParticipant": bool, + "isLocal": bool, + "isPrimaryReplica": bool, + "isSuspended": bool, + "replicaName": "str", + "suspendReasonDescription": "str", + "synchronizationHealthDescription": "str", + "synchronizationStateDescription": "str", + } + ], + }, + "info": { + "automatedBackupPreferenceDescription": "str", + "basicFeatures": bool, + "clusterTypeDescription": "str", + "dbFailover": bool, + "dtcSupport": bool, + "failureConditionLevel": 0, + "healthCheckTimeout": 0, + "isContained": bool, + "isDistributed": bool, + "listener": { + "dnsName": "str", + "ipV4AddressesAndMasks": [{"ipAddress": "str", "mask": "str"}], + "ipV6Addresses": ["str"], + "port": 0, + }, + "primaryRecoveryHealthDescription": "str", + "primaryReplica": "str", + "replicationPartnerType": "str", + "requiredSynchronizedSecondariesToCommit": 0, + "secondaryRecoveryHealthDescription": "str", + "synchronizationHealthDescription": "str", + "version": 0, + }, + "instanceName": "str", + "provisioningState": "str", + "replicas": { + "nextLink": "str", + "value": [ + { + "configure": { + "availabilityMode": "str", + "availabilityModeDescription": "str", + "backupPriority": 0, + "certificateName": "str", + "endpointAuthenticationMode": "str", + "endpointConnectLogin": "str", + "endpointName": "str", + "endpointUrl": "str", + "failoverMode": "str", + "failoverModeDescription": "str", + "primaryAllowConnections": "str", + "primaryRoleAllowConnectionsDescription": "str", + "readOnlyRoutingUrl": "str", + "readWriteRoutingUrl": "str", + "replicaCreateDate": "2020-02-20 00:00:00", + "replicaModifyDate": "2020-02-20 00:00:00", + "secondaryAllowConnections": "str", + "secondaryRoleAllowConnectionsDescription": "str", + "seedingMode": "str", + "seedingModeDescription": "str", + "sessionTimeout": 0, + }, + "replicaId": "str", + "replicaName": "str", + "replicaResourceId": "str", + "state": { + "availabilityGroupReplicaRole": "str", + "connectedStateDescription": "str", + "lastConnectErrorDescription": "str", + "lastConnectErrorTimestamp": "2020-02-20 00:00:00", + "operationalStateDescription": "str", + "recoveryHealthDescription": "str", + "synchronizationHealthDescription": "str", + }, + } + ], + }, + "serverName": "str", + "vmId": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_detail_view(self, resource_group): + response = self.client.sql_server_availability_groups.detail_view( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_failover(self, resource_group): + response = self.client.sql_server_availability_groups.failover( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_force_failover_allow_data_loss(self, resource_group): + response = self.client.sql_server_availability_groups.force_failover_allow_data_loss( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_begin_create_availability_group(self, resource_group): + response = self.client.sql_server_availability_groups.begin_create_availability_group( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + create_ag_configuration={ + "automatedBackupPreference": "str", + "availabilityGroupName": "str", + "clusterType": "str", + "databases": ["str"], + "dbFailover": "str", + "dtcSupport": "str", + "failureConditionLevel": 0, + "healthCheckTimeout": 0, + "listener": { + "dnsName": "str", + "ipV4AddressesAndMasks": [{"ipAddress": "str", "mask": "str"}], + "ipV6Addresses": ["str"], + "port": 0, + }, + "replicas": [ + { + "availabilityMode": "str", + "backupPriority": 0, + "certificateName": "str", + "endpointAuthenticationMode": "str", + "endpointConnectLogin": "str", + "endpointName": "str", + "endpointUrl": "str", + "failoverMode": "str", + "primaryRoleAllowConnections": "str", + "primaryRoleReadOnlyRoutingList": ["str"], + "secondaryRoleAllowConnections": "str", + "secondaryRoleReadOnlyRoutingUrl": "str", + "seedingMode": "str", + "serverInstance": "str", + "sessionTimeout": 0, + } + ], + "requiredSynchronizedSecondariesToCommit": 0, + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_begin_create_distributed_availability_group(self, resource_group): + response = self.client.sql_server_availability_groups.begin_create_distributed_availability_group( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + create_dag_configuration={ + "availabilityGroupName": "str", + "primaryAvailabilityGroup": { + "availabilityGroup": "str", + "availabilityMode": "str", + "certificateConfiguration": {"certificateName": "str"}, + "failoverMode": "str", + "listenerUrl": "str", + "seedingMode": "str", + }, + "secondaryAvailabilityGroup": { + "availabilityGroup": "str", + "availabilityMode": "str", + "certificateConfiguration": {"certificateName": "str"}, + "failoverMode": "str", + "listenerUrl": "str", + "seedingMode": "str", + }, + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_begin_create_managed_instance_link(self, resource_group): + response = self.client.sql_server_availability_groups.begin_create_managed_instance_link( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + create_managed_instance_link_configuration={ + "availabilityGroup": { + "automatedBackupPreference": "str", + "availabilityGroupName": "str", + "clusterType": "str", + "databases": ["str"], + "dbFailover": "str", + "dtcSupport": "str", + "failureConditionLevel": 0, + "healthCheckTimeout": 0, + "listener": { + "dnsName": "str", + "ipV4AddressesAndMasks": [{"ipAddress": "str", "mask": "str"}], + "ipV6Addresses": ["str"], + "port": 0, + }, + "replicas": [ + { + "availabilityMode": "str", + "backupPriority": 0, + "certificateName": "str", + "endpointAuthenticationMode": "str", + "endpointConnectLogin": "str", + "endpointName": "str", + "endpointUrl": "str", + "failoverMode": "str", + "primaryRoleAllowConnections": "str", + "primaryRoleReadOnlyRoutingList": ["str"], + "secondaryRoleAllowConnections": "str", + "secondaryRoleReadOnlyRoutingUrl": "str", + "seedingMode": "str", + "serverInstance": "str", + "sessionTimeout": 0, + } + ], + "requiredSynchronizedSecondariesToCommit": 0, + }, + "distributedAvailabilityGroup": { + "availabilityGroupName": "str", + "primaryAvailabilityGroup": { + "availabilityGroup": "str", + "availabilityMode": "str", + "certificateConfiguration": {"certificateName": "str"}, + "failoverMode": "str", + "listenerUrl": "str", + "seedingMode": "str", + }, + "secondaryAvailabilityGroup": { + "availabilityGroup": "str", + "availabilityMode": "str", + "certificateConfiguration": {"certificateName": "str"}, + "failoverMode": "str", + "listenerUrl": "str", + "seedingMode": "str", + }, + }, + "miLinkConfiguration": {"instanceAvailabilityGroupName": "str"}, + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_add_databases(self, resource_group): + response = self.client.sql_server_availability_groups.add_databases( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + databases={"values": ["str"]}, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_begin_failover_mi_link(self, resource_group): + response = self.client.sql_server_availability_groups.begin_failover_mi_link( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + managed_instance_resource_id={"managedInstanceId": "str"}, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_remove_databases(self, resource_group): + response = self.client.sql_server_availability_groups.remove_databases( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + databases={"values": ["str"]}, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_availability_groups_list(self, resource_group): + response = self.client.sql_server_availability_groups.list( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_availability_groups_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_availability_groups_operations_async.py new file mode 100644 index 000000000000..b64ecaa66149 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_availability_groups_operations_async.py @@ -0,0 +1,526 @@ +# 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 pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlServerAvailabilityGroupsOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_create(self, resource_group): + response = await self.client.sql_server_availability_groups.create( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + sql_server_availability_group_resource={ + "location": "str", + "properties": { + "availabilityGroupId": "str", + "collectionTimestamp": "2020-02-20 00:00:00", + "databases": { + "nextLink": "str", + "value": [ + { + "databaseName": "str", + "databaseStateDescription": "str", + "isCommitParticipant": bool, + "isLocal": bool, + "isPrimaryReplica": bool, + "isSuspended": bool, + "replicaName": "str", + "suspendReasonDescription": "str", + "synchronizationHealthDescription": "str", + "synchronizationStateDescription": "str", + } + ], + }, + "info": { + "automatedBackupPreferenceDescription": "str", + "basicFeatures": bool, + "clusterTypeDescription": "str", + "dbFailover": bool, + "dtcSupport": bool, + "failureConditionLevel": 0, + "healthCheckTimeout": 0, + "isContained": bool, + "isDistributed": bool, + "listener": { + "dnsName": "str", + "ipV4AddressesAndMasks": [{"ipAddress": "str", "mask": "str"}], + "ipV6Addresses": ["str"], + "port": 0, + }, + "primaryRecoveryHealthDescription": "str", + "primaryReplica": "str", + "replicationPartnerType": "str", + "requiredSynchronizedSecondariesToCommit": 0, + "secondaryRecoveryHealthDescription": "str", + "synchronizationHealthDescription": "str", + "version": 0, + }, + "instanceName": "str", + "provisioningState": "str", + "replicas": { + "nextLink": "str", + "value": [ + { + "configure": { + "availabilityMode": "str", + "availabilityModeDescription": "str", + "backupPriority": 0, + "certificateName": "str", + "endpointAuthenticationMode": "str", + "endpointConnectLogin": "str", + "endpointName": "str", + "endpointUrl": "str", + "failoverMode": "str", + "failoverModeDescription": "str", + "primaryAllowConnections": "str", + "primaryRoleAllowConnectionsDescription": "str", + "readOnlyRoutingUrl": "str", + "readWriteRoutingUrl": "str", + "replicaCreateDate": "2020-02-20 00:00:00", + "replicaModifyDate": "2020-02-20 00:00:00", + "secondaryAllowConnections": "str", + "secondaryRoleAllowConnectionsDescription": "str", + "seedingMode": "str", + "seedingModeDescription": "str", + "sessionTimeout": 0, + }, + "replicaId": "str", + "replicaName": "str", + "replicaResourceId": "str", + "state": { + "availabilityGroupReplicaRole": "str", + "connectedStateDescription": "str", + "lastConnectErrorDescription": "str", + "lastConnectErrorTimestamp": "2020-02-20 00:00:00", + "operationalStateDescription": "str", + "recoveryHealthDescription": "str", + "synchronizationHealthDescription": "str", + }, + } + ], + }, + "serverName": "str", + "vmId": "str", + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_begin_delete(self, resource_group): + response = await ( + await self.client.sql_server_availability_groups.begin_delete( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_get(self, resource_group): + response = await self.client.sql_server_availability_groups.get( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_begin_update(self, resource_group): + response = await ( + await self.client.sql_server_availability_groups.begin_update( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + sql_server_availability_group_update={ + "properties": { + "availabilityGroupId": "str", + "collectionTimestamp": "2020-02-20 00:00:00", + "databases": { + "nextLink": "str", + "value": [ + { + "databaseName": "str", + "databaseStateDescription": "str", + "isCommitParticipant": bool, + "isLocal": bool, + "isPrimaryReplica": bool, + "isSuspended": bool, + "replicaName": "str", + "suspendReasonDescription": "str", + "synchronizationHealthDescription": "str", + "synchronizationStateDescription": "str", + } + ], + }, + "info": { + "automatedBackupPreferenceDescription": "str", + "basicFeatures": bool, + "clusterTypeDescription": "str", + "dbFailover": bool, + "dtcSupport": bool, + "failureConditionLevel": 0, + "healthCheckTimeout": 0, + "isContained": bool, + "isDistributed": bool, + "listener": { + "dnsName": "str", + "ipV4AddressesAndMasks": [{"ipAddress": "str", "mask": "str"}], + "ipV6Addresses": ["str"], + "port": 0, + }, + "primaryRecoveryHealthDescription": "str", + "primaryReplica": "str", + "replicationPartnerType": "str", + "requiredSynchronizedSecondariesToCommit": 0, + "secondaryRecoveryHealthDescription": "str", + "synchronizationHealthDescription": "str", + "version": 0, + }, + "instanceName": "str", + "provisioningState": "str", + "replicas": { + "nextLink": "str", + "value": [ + { + "configure": { + "availabilityMode": "str", + "availabilityModeDescription": "str", + "backupPriority": 0, + "certificateName": "str", + "endpointAuthenticationMode": "str", + "endpointConnectLogin": "str", + "endpointName": "str", + "endpointUrl": "str", + "failoverMode": "str", + "failoverModeDescription": "str", + "primaryAllowConnections": "str", + "primaryRoleAllowConnectionsDescription": "str", + "readOnlyRoutingUrl": "str", + "readWriteRoutingUrl": "str", + "replicaCreateDate": "2020-02-20 00:00:00", + "replicaModifyDate": "2020-02-20 00:00:00", + "secondaryAllowConnections": "str", + "secondaryRoleAllowConnectionsDescription": "str", + "seedingMode": "str", + "seedingModeDescription": "str", + "sessionTimeout": 0, + }, + "replicaId": "str", + "replicaName": "str", + "replicaResourceId": "str", + "state": { + "availabilityGroupReplicaRole": "str", + "connectedStateDescription": "str", + "lastConnectErrorDescription": "str", + "lastConnectErrorTimestamp": "2020-02-20 00:00:00", + "operationalStateDescription": "str", + "recoveryHealthDescription": "str", + "synchronizationHealthDescription": "str", + }, + } + ], + }, + "serverName": "str", + "vmId": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_detail_view(self, resource_group): + response = await self.client.sql_server_availability_groups.detail_view( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_failover(self, resource_group): + response = await self.client.sql_server_availability_groups.failover( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_force_failover_allow_data_loss(self, resource_group): + response = await self.client.sql_server_availability_groups.force_failover_allow_data_loss( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_begin_create_availability_group(self, resource_group): + response = await ( + await self.client.sql_server_availability_groups.begin_create_availability_group( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + create_ag_configuration={ + "automatedBackupPreference": "str", + "availabilityGroupName": "str", + "clusterType": "str", + "databases": ["str"], + "dbFailover": "str", + "dtcSupport": "str", + "failureConditionLevel": 0, + "healthCheckTimeout": 0, + "listener": { + "dnsName": "str", + "ipV4AddressesAndMasks": [{"ipAddress": "str", "mask": "str"}], + "ipV6Addresses": ["str"], + "port": 0, + }, + "replicas": [ + { + "availabilityMode": "str", + "backupPriority": 0, + "certificateName": "str", + "endpointAuthenticationMode": "str", + "endpointConnectLogin": "str", + "endpointName": "str", + "endpointUrl": "str", + "failoverMode": "str", + "primaryRoleAllowConnections": "str", + "primaryRoleReadOnlyRoutingList": ["str"], + "secondaryRoleAllowConnections": "str", + "secondaryRoleReadOnlyRoutingUrl": "str", + "seedingMode": "str", + "serverInstance": "str", + "sessionTimeout": 0, + } + ], + "requiredSynchronizedSecondariesToCommit": 0, + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_begin_create_distributed_availability_group(self, resource_group): + response = await ( + await self.client.sql_server_availability_groups.begin_create_distributed_availability_group( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + create_dag_configuration={ + "availabilityGroupName": "str", + "primaryAvailabilityGroup": { + "availabilityGroup": "str", + "availabilityMode": "str", + "certificateConfiguration": {"certificateName": "str"}, + "failoverMode": "str", + "listenerUrl": "str", + "seedingMode": "str", + }, + "secondaryAvailabilityGroup": { + "availabilityGroup": "str", + "availabilityMode": "str", + "certificateConfiguration": {"certificateName": "str"}, + "failoverMode": "str", + "listenerUrl": "str", + "seedingMode": "str", + }, + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_begin_create_managed_instance_link(self, resource_group): + response = await ( + await self.client.sql_server_availability_groups.begin_create_managed_instance_link( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + create_managed_instance_link_configuration={ + "availabilityGroup": { + "automatedBackupPreference": "str", + "availabilityGroupName": "str", + "clusterType": "str", + "databases": ["str"], + "dbFailover": "str", + "dtcSupport": "str", + "failureConditionLevel": 0, + "healthCheckTimeout": 0, + "listener": { + "dnsName": "str", + "ipV4AddressesAndMasks": [{"ipAddress": "str", "mask": "str"}], + "ipV6Addresses": ["str"], + "port": 0, + }, + "replicas": [ + { + "availabilityMode": "str", + "backupPriority": 0, + "certificateName": "str", + "endpointAuthenticationMode": "str", + "endpointConnectLogin": "str", + "endpointName": "str", + "endpointUrl": "str", + "failoverMode": "str", + "primaryRoleAllowConnections": "str", + "primaryRoleReadOnlyRoutingList": ["str"], + "secondaryRoleAllowConnections": "str", + "secondaryRoleReadOnlyRoutingUrl": "str", + "seedingMode": "str", + "serverInstance": "str", + "sessionTimeout": 0, + } + ], + "requiredSynchronizedSecondariesToCommit": 0, + }, + "distributedAvailabilityGroup": { + "availabilityGroupName": "str", + "primaryAvailabilityGroup": { + "availabilityGroup": "str", + "availabilityMode": "str", + "certificateConfiguration": {"certificateName": "str"}, + "failoverMode": "str", + "listenerUrl": "str", + "seedingMode": "str", + }, + "secondaryAvailabilityGroup": { + "availabilityGroup": "str", + "availabilityMode": "str", + "certificateConfiguration": {"certificateName": "str"}, + "failoverMode": "str", + "listenerUrl": "str", + "seedingMode": "str", + }, + }, + "miLinkConfiguration": {"instanceAvailabilityGroupName": "str"}, + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_add_databases(self, resource_group): + response = await self.client.sql_server_availability_groups.add_databases( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + databases={"values": ["str"]}, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_begin_failover_mi_link(self, resource_group): + response = await ( + await self.client.sql_server_availability_groups.begin_failover_mi_link( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + managed_instance_resource_id={"managedInstanceId": "str"}, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_remove_databases(self, resource_group): + response = await self.client.sql_server_availability_groups.remove_databases( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + availability_group_name="str", + databases={"values": ["str"]}, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_availability_groups_list(self, resource_group): + response = self.client.sql_server_availability_groups.list( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_databases_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_databases_operations.py new file mode 100644 index 000000000000..ccb59ddd3c55 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_databases_operations.py @@ -0,0 +1,215 @@ +# 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 pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlServerDatabasesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_databases_create(self, resource_group): + response = self.client.sql_server_databases.create( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + database_name="str", + sql_server_database_resource={ + "location": "str", + "properties": { + "backupInformation": { + "lastFullBackup": "2020-02-20 00:00:00", + "lastLogBackup": "2020-02-20 00:00:00", + }, + "backupPolicy": { + "differentialBackupHours": 0, + "fullBackupDays": 0, + "retentionPeriodDays": 0, + "transactionLogBackupMinutes": 0, + }, + "collationName": "str", + "compatibilityLevel": 0, + "createMode": "str", + "dataFileSizeMB": 0.0, + "databaseCreationDate": "2020-02-20 00:00:00", + "databaseOptions": { + "isAutoCloseOn": bool, + "isAutoCreateStatsOn": bool, + "isAutoShrinkOn": bool, + "isAutoUpdateStatsOn": bool, + "isEncrypted": bool, + "isMemoryOptimizationEnabled": bool, + "isRemoteDataArchiveEnabled": bool, + "isTrustworthyOn": bool, + }, + "earliestRestoreDate": "2020-02-20 00:00:00", + "isReadOnly": bool, + "lastDatabaseUploadTime": "2020-02-20 00:00:00", + "logFileSizeMB": 0.0, + "migration": { + "assessment": { + "assessmentUploadTime": "2020-02-20 00:00:00", + "databaseAssessments": [ + { + "appliesToMigrationTargetPlatform": "str", + "featureId": "str", + "issueCategory": "str", + "moreInformation": "str", + } + ], + "targetReadiness": { + "azureSqlDatabase": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + "azureSqlManagedInstance": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + "azureSqlVirtualMachine": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + }, + } + }, + "provisioningState": "str", + "recoveryMode": "str", + "restorePointInTime": "2020-02-20 00:00:00", + "sizeMB": 0.0, + "sourceDatabaseId": "str", + "spaceAvailableMB": 0.0, + "state": "str", + "vmId": "str", + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_databases_begin_delete(self, resource_group): + response = self.client.sql_server_databases.begin_delete( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + database_name="str", + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_databases_get(self, resource_group): + response = self.client.sql_server_databases.get( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + database_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_databases_begin_update(self, resource_group): + response = self.client.sql_server_databases.begin_update( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + database_name="str", + sql_server_database_update={ + "properties": { + "backupInformation": { + "lastFullBackup": "2020-02-20 00:00:00", + "lastLogBackup": "2020-02-20 00:00:00", + }, + "backupPolicy": { + "differentialBackupHours": 0, + "fullBackupDays": 0, + "retentionPeriodDays": 0, + "transactionLogBackupMinutes": 0, + }, + "collationName": "str", + "compatibilityLevel": 0, + "createMode": "str", + "dataFileSizeMB": 0.0, + "databaseCreationDate": "2020-02-20 00:00:00", + "databaseOptions": { + "isAutoCloseOn": bool, + "isAutoCreateStatsOn": bool, + "isAutoShrinkOn": bool, + "isAutoUpdateStatsOn": bool, + "isEncrypted": bool, + "isMemoryOptimizationEnabled": bool, + "isRemoteDataArchiveEnabled": bool, + "isTrustworthyOn": bool, + }, + "earliestRestoreDate": "2020-02-20 00:00:00", + "isReadOnly": bool, + "lastDatabaseUploadTime": "2020-02-20 00:00:00", + "logFileSizeMB": 0.0, + "migration": { + "assessment": { + "assessmentUploadTime": "2020-02-20 00:00:00", + "databaseAssessments": [ + { + "appliesToMigrationTargetPlatform": "str", + "featureId": "str", + "issueCategory": "str", + "moreInformation": "str", + } + ], + "targetReadiness": { + "azureSqlDatabase": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + "azureSqlManagedInstance": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + "azureSqlVirtualMachine": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + }, + } + }, + "provisioningState": "str", + "recoveryMode": "str", + "restorePointInTime": "2020-02-20 00:00:00", + "sizeMB": 0.0, + "sourceDatabaseId": "str", + "spaceAvailableMB": 0.0, + "state": "str", + "vmId": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_databases_list(self, resource_group): + response = self.client.sql_server_databases.list( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_databases_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_databases_operations_async.py new file mode 100644 index 000000000000..a3a6496917e7 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_databases_operations_async.py @@ -0,0 +1,220 @@ +# 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 pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlServerDatabasesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_databases_create(self, resource_group): + response = await self.client.sql_server_databases.create( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + database_name="str", + sql_server_database_resource={ + "location": "str", + "properties": { + "backupInformation": { + "lastFullBackup": "2020-02-20 00:00:00", + "lastLogBackup": "2020-02-20 00:00:00", + }, + "backupPolicy": { + "differentialBackupHours": 0, + "fullBackupDays": 0, + "retentionPeriodDays": 0, + "transactionLogBackupMinutes": 0, + }, + "collationName": "str", + "compatibilityLevel": 0, + "createMode": "str", + "dataFileSizeMB": 0.0, + "databaseCreationDate": "2020-02-20 00:00:00", + "databaseOptions": { + "isAutoCloseOn": bool, + "isAutoCreateStatsOn": bool, + "isAutoShrinkOn": bool, + "isAutoUpdateStatsOn": bool, + "isEncrypted": bool, + "isMemoryOptimizationEnabled": bool, + "isRemoteDataArchiveEnabled": bool, + "isTrustworthyOn": bool, + }, + "earliestRestoreDate": "2020-02-20 00:00:00", + "isReadOnly": bool, + "lastDatabaseUploadTime": "2020-02-20 00:00:00", + "logFileSizeMB": 0.0, + "migration": { + "assessment": { + "assessmentUploadTime": "2020-02-20 00:00:00", + "databaseAssessments": [ + { + "appliesToMigrationTargetPlatform": "str", + "featureId": "str", + "issueCategory": "str", + "moreInformation": "str", + } + ], + "targetReadiness": { + "azureSqlDatabase": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + "azureSqlManagedInstance": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + "azureSqlVirtualMachine": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + }, + } + }, + "provisioningState": "str", + "recoveryMode": "str", + "restorePointInTime": "2020-02-20 00:00:00", + "sizeMB": 0.0, + "sourceDatabaseId": "str", + "spaceAvailableMB": 0.0, + "state": "str", + "vmId": "str", + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_databases_begin_delete(self, resource_group): + response = await ( + await self.client.sql_server_databases.begin_delete( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + database_name="str", + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_databases_get(self, resource_group): + response = await self.client.sql_server_databases.get( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + database_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_databases_begin_update(self, resource_group): + response = await ( + await self.client.sql_server_databases.begin_update( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + database_name="str", + sql_server_database_update={ + "properties": { + "backupInformation": { + "lastFullBackup": "2020-02-20 00:00:00", + "lastLogBackup": "2020-02-20 00:00:00", + }, + "backupPolicy": { + "differentialBackupHours": 0, + "fullBackupDays": 0, + "retentionPeriodDays": 0, + "transactionLogBackupMinutes": 0, + }, + "collationName": "str", + "compatibilityLevel": 0, + "createMode": "str", + "dataFileSizeMB": 0.0, + "databaseCreationDate": "2020-02-20 00:00:00", + "databaseOptions": { + "isAutoCloseOn": bool, + "isAutoCreateStatsOn": bool, + "isAutoShrinkOn": bool, + "isAutoUpdateStatsOn": bool, + "isEncrypted": bool, + "isMemoryOptimizationEnabled": bool, + "isRemoteDataArchiveEnabled": bool, + "isTrustworthyOn": bool, + }, + "earliestRestoreDate": "2020-02-20 00:00:00", + "isReadOnly": bool, + "lastDatabaseUploadTime": "2020-02-20 00:00:00", + "logFileSizeMB": 0.0, + "migration": { + "assessment": { + "assessmentUploadTime": "2020-02-20 00:00:00", + "databaseAssessments": [ + { + "appliesToMigrationTargetPlatform": "str", + "featureId": "str", + "issueCategory": "str", + "moreInformation": "str", + } + ], + "targetReadiness": { + "azureSqlDatabase": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + "azureSqlManagedInstance": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + "azureSqlVirtualMachine": {"numOfBlockerIssues": 0, "recommendationStatus": "str"}, + }, + } + }, + "provisioningState": "str", + "recoveryMode": "str", + "restorePointInTime": "2020-02-20 00:00:00", + "sizeMB": 0.0, + "sourceDatabaseId": "str", + "spaceAvailableMB": 0.0, + "state": "str", + "vmId": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_databases_list(self, resource_group): + response = self.client.sql_server_databases.list( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_esu_licenses_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_esu_licenses_operations.py new file mode 100644 index 000000000000..caf263dbc1d1 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_esu_licenses_operations.py @@ -0,0 +1,128 @@ +# 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 pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlServerEsuLicensesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_esu_licenses_list(self, resource_group): + response = self.client.sql_server_esu_licenses.list( + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_esu_licenses_list_by_resource_group(self, resource_group): + response = self.client.sql_server_esu_licenses.list_by_resource_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_esu_licenses_get(self, resource_group): + response = self.client.sql_server_esu_licenses.get( + resource_group_name=resource_group.name, + sql_server_esu_license_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_esu_licenses_create(self, resource_group): + response = self.client.sql_server_esu_licenses.create( + resource_group_name=resource_group.name, + sql_server_esu_license_name="str", + sql_server_esu_license={ + "location": "str", + "properties": { + "activationState": "str", + "billingPlan": "str", + "physicalCores": 0, + "scopeType": "str", + "version": "str", + "activatedAt": "2020-02-20 00:00:00", + "tenantId": "str", + "terminatedAt": "2020-02-20 00:00:00", + "uniqueId": "str", + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_esu_licenses_delete(self, resource_group): + response = self.client.sql_server_esu_licenses.delete( + resource_group_name=resource_group.name, + sql_server_esu_license_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_esu_licenses_update(self, resource_group): + response = self.client.sql_server_esu_licenses.update( + resource_group_name=resource_group.name, + sql_server_esu_license_name="str", + parameters={ + "properties": { + "activatedAt": "2020-02-20 00:00:00", + "activationState": "str", + "billingPlan": "str", + "physicalCores": 0, + "scopeType": "str", + "tenantId": "str", + "terminatedAt": "2020-02-20 00:00:00", + "uniqueId": "str", + "version": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_esu_licenses_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_esu_licenses_operations_async.py new file mode 100644 index 000000000000..6ebc51819a5f --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_esu_licenses_operations_async.py @@ -0,0 +1,129 @@ +# 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 pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlServerEsuLicensesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_esu_licenses_list(self, resource_group): + response = self.client.sql_server_esu_licenses.list( + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_esu_licenses_list_by_resource_group(self, resource_group): + response = self.client.sql_server_esu_licenses.list_by_resource_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_esu_licenses_get(self, resource_group): + response = await self.client.sql_server_esu_licenses.get( + resource_group_name=resource_group.name, + sql_server_esu_license_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_esu_licenses_create(self, resource_group): + response = await self.client.sql_server_esu_licenses.create( + resource_group_name=resource_group.name, + sql_server_esu_license_name="str", + sql_server_esu_license={ + "location": "str", + "properties": { + "activationState": "str", + "billingPlan": "str", + "physicalCores": 0, + "scopeType": "str", + "version": "str", + "activatedAt": "2020-02-20 00:00:00", + "tenantId": "str", + "terminatedAt": "2020-02-20 00:00:00", + "uniqueId": "str", + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_esu_licenses_delete(self, resource_group): + response = await self.client.sql_server_esu_licenses.delete( + resource_group_name=resource_group.name, + sql_server_esu_license_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_esu_licenses_update(self, resource_group): + response = await self.client.sql_server_esu_licenses.update( + resource_group_name=resource_group.name, + sql_server_esu_license_name="str", + parameters={ + "properties": { + "activatedAt": "2020-02-20 00:00:00", + "activationState": "str", + "billingPlan": "str", + "physicalCores": 0, + "scopeType": "str", + "tenantId": "str", + "terminatedAt": "2020-02-20 00:00:00", + "uniqueId": "str", + "version": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_instances_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_instances_operations.py new file mode 100644 index 000000000000..d13fc3ba567b --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_instances_operations.py @@ -0,0 +1,410 @@ +# 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 pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlServerInstancesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_list(self, resource_group): + response = self.client.sql_server_instances.list( + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_list_by_resource_group(self, resource_group): + response = self.client.sql_server_instances.list_by_resource_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_get(self, resource_group): + response = self.client.sql_server_instances.get( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_begin_create(self, resource_group): + response = self.client.sql_server_instances.begin_create( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + sql_server_instance={ + "location": "str", + "id": "str", + "name": "str", + "properties": { + "alwaysOnRole": "str", + "authentication": { + "mode": "str", + "sqlServerEntraIdentity": [{"clientId": "str", "identityType": "str"}], + }, + "azureDefenderStatus": "str", + "azureDefenderStatusLastUpdated": "2020-02-20 00:00:00", + "backupPolicy": { + "differentialBackupHours": 0, + "fullBackupDays": 0, + "retentionPeriodDays": 0, + "transactionLogBackupMinutes": 0, + }, + "clientConnection": {"enabled": bool}, + "collation": "str", + "containerResourceId": "str", + "cores": "str", + "createTime": "str", + "currentVersion": "str", + "databaseMirroringEndpoint": { + "certificateName": "str", + "connectionAuth": "str", + "encryptionAlgorithm": "str", + "endpointName": "str", + "ipAddress": "str", + "isDynamicPort": bool, + "isEncryptionEnabled": bool, + "port": 0, + "role": "str", + }, + "dbMasterKeyExists": bool, + "edition": "str", + "failoverCluster": { + "hostIPAddresses": [{"ipAddress": "str", "subnetMask": "str"}], + "hostNames": ["str"], + "id": "str", + "networkName": "str", + "sqlInstanceIds": ["str"], + }, + "hostType": "str", + "instanceName": "str", + "isDigiCertPkiCertTrustConfigured": bool, + "isHadrEnabled": bool, + "isMicrosoftPkiCertTrustConfigured": bool, + "lastInventoryUploadTime": "2020-02-20 00:00:00", + "lastUsageUploadTime": "2020-02-20 00:00:00", + "licenseType": "str", + "maxServerMemoryMB": 0, + "migration": { + "assessment": { + "assessmentUploadTime": "2020-02-20 00:00:00", + "enabled": bool, + "serverAssessments": [ + { + "appliesToMigrationTargetPlatform": "str", + "featureId": "str", + "impactedObjects": [{"impactDetail": "str", "name": "str", "objectType": "str"}], + "issueCategory": "str", + "moreInformation": "str", + } + ], + "skuRecommendationResults": { + "azureSqlDatabase": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": { + "computeTier": "str", + "hardwareType": "str", + "sqlPurchasingModel": "str", + "sqlServiceTier": "str", + "zoneRedundancyAvailable": bool, + } + }, + }, + "azureSqlManagedInstance": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": { + "computeTier": "str", + "hardwareType": "str", + "sqlPurchasingModel": "str", + "sqlServiceTier": "str", + "zoneRedundancyAvailable": bool, + } + }, + }, + "azureSqlVirtualMachine": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": {"availableVmSkus": ["str"], "virtualMachineFamily": "str"} + }, + }, + }, + } + }, + "monitoring": {"enabled": bool}, + "patchLevel": "str", + "productId": "str", + "provisioningState": "str", + "serviceType": "str", + "status": "str", + "tcpDynamicPorts": "str", + "tcpStaticPorts": "str", + "traceFlags": [0], + "upgradeLockedUntil": "2020-02-20 00:00:00", + "vCore": "str", + "version": "str", + "vmId": "str", + }, + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_begin_delete(self, resource_group): + response = self.client.sql_server_instances.begin_delete( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_begin_update(self, resource_group): + response = self.client.sql_server_instances.begin_update( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + parameters={ + "properties": { + "alwaysOnRole": "str", + "authentication": { + "mode": "str", + "sqlServerEntraIdentity": [{"clientId": "str", "identityType": "str"}], + }, + "azureDefenderStatus": "str", + "azureDefenderStatusLastUpdated": "2020-02-20 00:00:00", + "backupPolicy": { + "differentialBackupHours": 0, + "fullBackupDays": 0, + "retentionPeriodDays": 0, + "transactionLogBackupMinutes": 0, + }, + "clientConnection": {"enabled": bool}, + "collation": "str", + "containerResourceId": "str", + "cores": "str", + "createTime": "str", + "currentVersion": "str", + "dbMasterKeyExists": bool, + "edition": "str", + "failoverCluster": { + "hostIPAddresses": [{"ipAddress": "str", "subnetMask": "str"}], + "hostNames": ["str"], + "id": "str", + "networkName": "str", + "sqlInstanceIds": ["str"], + }, + "hostType": "str", + "instanceName": "str", + "isHadrEnabled": bool, + "lastInventoryUploadTime": "2020-02-20 00:00:00", + "lastUsageUploadTime": "2020-02-20 00:00:00", + "licenseType": "str", + "migration": { + "assessment": { + "assessmentUploadTime": "2020-02-20 00:00:00", + "enabled": bool, + "serverAssessments": [ + { + "appliesToMigrationTargetPlatform": "str", + "featureId": "str", + "impactedObjects": [{"impactDetail": "str", "name": "str", "objectType": "str"}], + "issueCategory": "str", + "moreInformation": "str", + } + ], + "skuRecommendationResults": { + "azureSqlDatabase": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": { + "computeTier": "str", + "hardwareType": "str", + "sqlPurchasingModel": "str", + "sqlServiceTier": "str", + "zoneRedundancyAvailable": bool, + } + }, + }, + "azureSqlManagedInstance": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": { + "computeTier": "str", + "hardwareType": "str", + "sqlPurchasingModel": "str", + "sqlServiceTier": "str", + "zoneRedundancyAvailable": bool, + } + }, + }, + "azureSqlVirtualMachine": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": {"availableVmSkus": ["str"], "virtualMachineFamily": "str"} + }, + }, + }, + } + }, + "monitoring": {"enabled": bool}, + "patchLevel": "str", + "productId": "str", + "provisioningState": "str", + "serviceType": "str", + "status": "str", + "tcpDynamicPorts": "str", + "tcpStaticPorts": "str", + "traceFlags": [0], + "upgradeLockedUntil": "2020-02-20 00:00:00", + "vCore": "str", + "version": "str", + "vmId": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_begin_get_telemetry(self, resource_group): + response = self.client.sql_server_instances.begin_get_telemetry( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + sql_server_instance_telemetry_request={ + "datasetName": "str", + "aggregationType": "Average", + "databaseNames": ["str"], + "endTime": "2020-02-20 00:00:00", + "interval": "PT1H", + "startTime": "2020-02-20 00:00:00", + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_run_migration_assessment(self, resource_group): + response = self.client.sql_server_instances.run_migration_assessment( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_get_jobs_status(self, resource_group): + response = self.client.sql_server_instances.get_jobs_status( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_pre_upgrade(self, resource_group): + response = self.client.sql_server_instances.pre_upgrade( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_post_upgrade(self, resource_group): + response = self.client.sql_server_instances.post_upgrade( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_instances_begin_run_managed_instance_link_assessment(self, resource_group): + response = self.client.sql_server_instances.begin_run_managed_instance_link_assessment( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + sql_server_instance_managed_instance_link_assessment_request={ + "availabilityGroupName": "str", + "azureManagedInstanceResourceId": "str", + "databaseName": "str", + "azureManagedInstanceRole": "str", + }, + api_version="2025-03-01-preview", + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_instances_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_instances_operations_async.py new file mode 100644 index 000000000000..c69134caa3db --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_instances_operations_async.py @@ -0,0 +1,425 @@ +# 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 pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlServerInstancesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_list(self, resource_group): + response = self.client.sql_server_instances.list( + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_list_by_resource_group(self, resource_group): + response = self.client.sql_server_instances.list_by_resource_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_get(self, resource_group): + response = await self.client.sql_server_instances.get( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_begin_create(self, resource_group): + response = await ( + await self.client.sql_server_instances.begin_create( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + sql_server_instance={ + "location": "str", + "id": "str", + "name": "str", + "properties": { + "alwaysOnRole": "str", + "authentication": { + "mode": "str", + "sqlServerEntraIdentity": [{"clientId": "str", "identityType": "str"}], + }, + "azureDefenderStatus": "str", + "azureDefenderStatusLastUpdated": "2020-02-20 00:00:00", + "backupPolicy": { + "differentialBackupHours": 0, + "fullBackupDays": 0, + "retentionPeriodDays": 0, + "transactionLogBackupMinutes": 0, + }, + "clientConnection": {"enabled": bool}, + "collation": "str", + "containerResourceId": "str", + "cores": "str", + "createTime": "str", + "currentVersion": "str", + "databaseMirroringEndpoint": { + "certificateName": "str", + "connectionAuth": "str", + "encryptionAlgorithm": "str", + "endpointName": "str", + "ipAddress": "str", + "isDynamicPort": bool, + "isEncryptionEnabled": bool, + "port": 0, + "role": "str", + }, + "dbMasterKeyExists": bool, + "edition": "str", + "failoverCluster": { + "hostIPAddresses": [{"ipAddress": "str", "subnetMask": "str"}], + "hostNames": ["str"], + "id": "str", + "networkName": "str", + "sqlInstanceIds": ["str"], + }, + "hostType": "str", + "instanceName": "str", + "isDigiCertPkiCertTrustConfigured": bool, + "isHadrEnabled": bool, + "isMicrosoftPkiCertTrustConfigured": bool, + "lastInventoryUploadTime": "2020-02-20 00:00:00", + "lastUsageUploadTime": "2020-02-20 00:00:00", + "licenseType": "str", + "maxServerMemoryMB": 0, + "migration": { + "assessment": { + "assessmentUploadTime": "2020-02-20 00:00:00", + "enabled": bool, + "serverAssessments": [ + { + "appliesToMigrationTargetPlatform": "str", + "featureId": "str", + "impactedObjects": [ + {"impactDetail": "str", "name": "str", "objectType": "str"} + ], + "issueCategory": "str", + "moreInformation": "str", + } + ], + "skuRecommendationResults": { + "azureSqlDatabase": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": { + "computeTier": "str", + "hardwareType": "str", + "sqlPurchasingModel": "str", + "sqlServiceTier": "str", + "zoneRedundancyAvailable": bool, + } + }, + }, + "azureSqlManagedInstance": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": { + "computeTier": "str", + "hardwareType": "str", + "sqlPurchasingModel": "str", + "sqlServiceTier": "str", + "zoneRedundancyAvailable": bool, + } + }, + }, + "azureSqlVirtualMachine": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": {"availableVmSkus": ["str"], "virtualMachineFamily": "str"} + }, + }, + }, + } + }, + "monitoring": {"enabled": bool}, + "patchLevel": "str", + "productId": "str", + "provisioningState": "str", + "serviceType": "str", + "status": "str", + "tcpDynamicPorts": "str", + "tcpStaticPorts": "str", + "traceFlags": [0], + "upgradeLockedUntil": "2020-02-20 00:00:00", + "vCore": "str", + "version": "str", + "vmId": "str", + }, + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_begin_delete(self, resource_group): + response = await ( + await self.client.sql_server_instances.begin_delete( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_begin_update(self, resource_group): + response = await ( + await self.client.sql_server_instances.begin_update( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + parameters={ + "properties": { + "alwaysOnRole": "str", + "authentication": { + "mode": "str", + "sqlServerEntraIdentity": [{"clientId": "str", "identityType": "str"}], + }, + "azureDefenderStatus": "str", + "azureDefenderStatusLastUpdated": "2020-02-20 00:00:00", + "backupPolicy": { + "differentialBackupHours": 0, + "fullBackupDays": 0, + "retentionPeriodDays": 0, + "transactionLogBackupMinutes": 0, + }, + "clientConnection": {"enabled": bool}, + "collation": "str", + "containerResourceId": "str", + "cores": "str", + "createTime": "str", + "currentVersion": "str", + "dbMasterKeyExists": bool, + "edition": "str", + "failoverCluster": { + "hostIPAddresses": [{"ipAddress": "str", "subnetMask": "str"}], + "hostNames": ["str"], + "id": "str", + "networkName": "str", + "sqlInstanceIds": ["str"], + }, + "hostType": "str", + "instanceName": "str", + "isHadrEnabled": bool, + "lastInventoryUploadTime": "2020-02-20 00:00:00", + "lastUsageUploadTime": "2020-02-20 00:00:00", + "licenseType": "str", + "migration": { + "assessment": { + "assessmentUploadTime": "2020-02-20 00:00:00", + "enabled": bool, + "serverAssessments": [ + { + "appliesToMigrationTargetPlatform": "str", + "featureId": "str", + "impactedObjects": [ + {"impactDetail": "str", "name": "str", "objectType": "str"} + ], + "issueCategory": "str", + "moreInformation": "str", + } + ], + "skuRecommendationResults": { + "azureSqlDatabase": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": { + "computeTier": "str", + "hardwareType": "str", + "sqlPurchasingModel": "str", + "sqlServiceTier": "str", + "zoneRedundancyAvailable": bool, + } + }, + }, + "azureSqlManagedInstance": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": { + "computeTier": "str", + "hardwareType": "str", + "sqlPurchasingModel": "str", + "sqlServiceTier": "str", + "zoneRedundancyAvailable": bool, + } + }, + }, + "azureSqlVirtualMachine": { + "monthlyCost": {"computeCost": 0.0, "storageCost": 0.0, "totalCost": 0.0}, + "numberOfServerBlockerIssues": 0, + "recommendationStatus": "str", + "targetSku": { + "category": {"availableVmSkus": ["str"], "virtualMachineFamily": "str"} + }, + }, + }, + } + }, + "monitoring": {"enabled": bool}, + "patchLevel": "str", + "productId": "str", + "provisioningState": "str", + "serviceType": "str", + "status": "str", + "tcpDynamicPorts": "str", + "tcpStaticPorts": "str", + "traceFlags": [0], + "upgradeLockedUntil": "2020-02-20 00:00:00", + "vCore": "str", + "version": "str", + "vmId": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_begin_get_telemetry(self, resource_group): + response = await ( + await self.client.sql_server_instances.begin_get_telemetry( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + sql_server_instance_telemetry_request={ + "datasetName": "str", + "aggregationType": "Average", + "databaseNames": ["str"], + "endTime": "2020-02-20 00:00:00", + "interval": "PT1H", + "startTime": "2020-02-20 00:00:00", + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_run_migration_assessment(self, resource_group): + response = await self.client.sql_server_instances.run_migration_assessment( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_get_jobs_status(self, resource_group): + response = await self.client.sql_server_instances.get_jobs_status( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_pre_upgrade(self, resource_group): + response = await self.client.sql_server_instances.pre_upgrade( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_post_upgrade(self, resource_group): + response = await self.client.sql_server_instances.post_upgrade( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_instances_begin_run_managed_instance_link_assessment(self, resource_group): + response = await ( + await self.client.sql_server_instances.begin_run_managed_instance_link_assessment( + resource_group_name=resource_group.name, + sql_server_instance_name="str", + sql_server_instance_managed_instance_link_assessment_request={ + "availabilityGroupName": "str", + "azureManagedInstanceResourceId": "str", + "databaseName": "str", + "azureManagedInstanceRole": "str", + }, + api_version="2025-03-01-preview", + ) + ).result() # call '.result()' to poll until service return final result + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_licenses_operations.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_licenses_operations.py new file mode 100644 index 000000000000..a54c850c796e --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_licenses_operations.py @@ -0,0 +1,126 @@ +# 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 pytest +from azure.mgmt.azurearcdata import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer, recorded_by_proxy + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlServerLicensesOperations(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_licenses_list(self, resource_group): + response = self.client.sql_server_licenses.list( + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_licenses_list_by_resource_group(self, resource_group): + response = self.client.sql_server_licenses.list_by_resource_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_licenses_get(self, resource_group): + response = self.client.sql_server_licenses.get( + resource_group_name=resource_group.name, + sql_server_license_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_licenses_create(self, resource_group): + response = self.client.sql_server_licenses.create( + resource_group_name=resource_group.name, + sql_server_license_name="str", + sql_server_license={ + "location": "str", + "properties": { + "activationState": "str", + "billingPlan": "str", + "licenseCategory": "str", + "physicalCores": 0, + "scopeType": "str", + "lastActivatedAt": "2020-02-20 00:00:00", + "lastDeactivatedAt": "2020-02-20 00:00:00", + "tenantId": "str", + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_licenses_delete(self, resource_group): + response = self.client.sql_server_licenses.delete( + resource_group_name=resource_group.name, + sql_server_license_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy + def test_sql_server_licenses_update(self, resource_group): + response = self.client.sql_server_licenses.update( + resource_group_name=resource_group.name, + sql_server_license_name="str", + parameters={ + "properties": { + "activationState": "str", + "billingPlan": "str", + "lastActivatedAt": "2020-02-20 00:00:00", + "lastDeactivatedAt": "2020-02-20 00:00:00", + "licenseCategory": "str", + "physicalCores": 0, + "scopeType": "str", + "tenantId": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_licenses_operations_async.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_licenses_operations_async.py new file mode 100644 index 000000000000..2407dc704f31 --- /dev/null +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/generated_tests/test_azure_arc_data_management_sql_server_licenses_operations_async.py @@ -0,0 +1,127 @@ +# 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 pytest +from azure.mgmt.azurearcdata.aio import AzureArcDataManagementClient + +from devtools_testutils import AzureMgmtRecordedTestCase, RandomNameResourceGroupPreparer +from devtools_testutils.aio import recorded_by_proxy_async + +AZURE_LOCATION = "eastus" + + +@pytest.mark.skip("you may need to update the auto-generated test case before run it") +class TestAzureArcDataManagementSqlServerLicensesOperationsAsync(AzureMgmtRecordedTestCase): + def setup_method(self, method): + self.client = self.create_mgmt_client(AzureArcDataManagementClient, is_async=True) + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_licenses_list(self, resource_group): + response = self.client.sql_server_licenses.list( + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_licenses_list_by_resource_group(self, resource_group): + response = self.client.sql_server_licenses.list_by_resource_group( + resource_group_name=resource_group.name, + api_version="2025-03-01-preview", + ) + result = [r async for r in response] + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_licenses_get(self, resource_group): + response = await self.client.sql_server_licenses.get( + resource_group_name=resource_group.name, + sql_server_license_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_licenses_create(self, resource_group): + response = await self.client.sql_server_licenses.create( + resource_group_name=resource_group.name, + sql_server_license_name="str", + sql_server_license={ + "location": "str", + "properties": { + "activationState": "str", + "billingPlan": "str", + "licenseCategory": "str", + "physicalCores": 0, + "scopeType": "str", + "lastActivatedAt": "2020-02-20 00:00:00", + "lastDeactivatedAt": "2020-02-20 00:00:00", + "tenantId": "str", + }, + "id": "str", + "name": "str", + "systemData": { + "createdAt": "2020-02-20 00:00:00", + "createdBy": "str", + "createdByType": "str", + "lastModifiedAt": "2020-02-20 00:00:00", + "lastModifiedBy": "str", + "lastModifiedByType": "str", + }, + "tags": {"str": "str"}, + "type": "str", + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_licenses_delete(self, resource_group): + response = await self.client.sql_server_licenses.delete( + resource_group_name=resource_group.name, + sql_server_license_name="str", + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... + + @RandomNameResourceGroupPreparer(location=AZURE_LOCATION) + @recorded_by_proxy_async + async def test_sql_server_licenses_update(self, resource_group): + response = await self.client.sql_server_licenses.update( + resource_group_name=resource_group.name, + sql_server_license_name="str", + parameters={ + "properties": { + "activationState": "str", + "billingPlan": "str", + "lastActivatedAt": "2020-02-20 00:00:00", + "lastDeactivatedAt": "2020-02-20 00:00:00", + "licenseCategory": "str", + "physicalCores": 0, + "scopeType": "str", + "tenantId": "str", + }, + "tags": {"str": "str"}, + }, + api_version="2025-03-01-preview", + ) + + # please add some check logic here by yourself + # ... diff --git a/sdk/azurearcdata/azure-mgmt-azurearcdata/setup.py b/sdk/azurearcdata/azure-mgmt-azurearcdata/setup.py index c2f506547f1e..cdad9f208070 100644 --- a/sdk/azurearcdata/azure-mgmt-azurearcdata/setup.py +++ b/sdk/azurearcdata/azure-mgmt-azurearcdata/setup.py @@ -1,10 +1,10 @@ #!/usr/bin/env python -#------------------------------------------------------------------------- +# ------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for # license information. -#-------------------------------------------------------------------------- +# -------------------------------------------------------------------------- import re import os.path @@ -16,64 +16,67 @@ PACKAGE_PPRINT_NAME = "Azure Arc Data Management" # a-b-c => a/b/c -package_folder_path = PACKAGE_NAME.replace('-', '/') +package_folder_path = PACKAGE_NAME.replace("-", "/") # a-b-c => a.b.c -namespace_name = PACKAGE_NAME.replace('-', '.') +namespace_name = PACKAGE_NAME.replace("-", ".") # Version extraction inspired from 'requests' -with open(os.path.join(package_folder_path, 'version.py') - if os.path.exists(os.path.join(package_folder_path, 'version.py')) - else os.path.join(package_folder_path, '_version.py'), 'r') as fd: - version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', - fd.read(), re.MULTILINE).group(1) +with open( + os.path.join(package_folder_path, "version.py") + if os.path.exists(os.path.join(package_folder_path, "version.py")) + else os.path.join(package_folder_path, "_version.py"), + "r", +) as fd: + version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1) if not version: - raise RuntimeError('Cannot find version information') + raise RuntimeError("Cannot find version information") -with open('README.md', encoding='utf-8') as f: +with open("README.md", encoding="utf-8") as f: readme = f.read() -with open('CHANGELOG.md', encoding='utf-8') as f: +with open("CHANGELOG.md", encoding="utf-8") as f: changelog = f.read() setup( name=PACKAGE_NAME, version=version, - description='Microsoft Azure {} Client Library for Python'.format(PACKAGE_PPRINT_NAME), - long_description=readme + '\n\n' + changelog, - long_description_content_type='text/markdown', - license='MIT License', - author='Microsoft Corporation', - author_email='azpysdkhelp@microsoft.com', - url='https://github.com/Azure/azure-sdk-for-python', + description="Microsoft Azure {} Client Library for Python".format(PACKAGE_PPRINT_NAME), + long_description=readme + "\n\n" + changelog, + long_description_content_type="text/markdown", + license="MIT License", + author="Microsoft Corporation", + author_email="azpysdkhelp@microsoft.com", + url="https://github.com/Azure/azure-sdk-for-python", keywords="azure, azure sdk", # update with search keywords relevant to the azure service / product classifiers=[ - 'Development Status :: 4 - Beta', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3 :: Only', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', - 'License :: OSI Approved :: MIT License', + "Development Status :: 4 - Beta", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "License :: OSI Approved :: MIT License", ], zip_safe=False, - packages=find_packages(exclude=[ - 'tests', - # Exclude packages that will be covered by PEP420 or nspkg - 'azure', - 'azure.mgmt', - ]), + packages=find_packages( + exclude=[ + "tests", + # Exclude packages that will be covered by PEP420 or nspkg + "azure", + "azure.mgmt", + ] + ), include_package_data=True, package_data={ - 'pytyped': ['py.typed'], + "pytyped": ["py.typed"], }, install_requires=[ - "msrest>=0.7.1", - "azure-common~=1.1", - "azure-mgmt-core>=1.3.2,<2.0.0", - "typing-extensions>=4.3.0; python_version<'3.8.0'", + "isodate>=0.6.1", + "typing-extensions>=4.6.0", + "azure-common>=1.1", + "azure-mgmt-core>=1.5.0", ], - python_requires=">=3.7" + python_requires=">=3.9", )